Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pragma solidity ^0.4.2;
- contract bitcoinkeys {
- uint256 constant gx = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798;
- uint256 constant gy = 0x483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8;
- uint256 constant n = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F;
- uint256 constant a = 0;
- uint256 constant b = 7;
- function bitcoinkeys(){}
- // function _add (uint256 x1,uint256 z1, uint256 x2,uint256 z2) private constant returns(uint256 x3,uint256 z3){
- // (x3, z3) = (addmod(mulmod(z2, x1, n), mulmod(x2, z1, n), n), mulmod(z1, z2, n));
- // }
- // function _sub (uint256 x1,uint256 z1, uint256 x2,uint256 z2) private constant returns(uint256 x3,uint256 z3){
- // (x3, z3) = (addmod(mulmod(z2, x1, n),mulmod(n-x2, z1, n), n), mulmod(z1, z2 , n));
- // }
- // function _multiply (uint256 x1,uint256 z1, uint256 x2,uint256 z2) private constant returns(uint256 x3,uint256 z3){
- // (x3, z3) = (mulmod(x1, x2 , n), mulmod(z1, z2 , n));
- // }
- // function _divide (uint256 x1,uint256 z1, uint256 x2,uint256 z2) private constant returns(uint256 x3,uint256 z3){
- // (x3, z3) = (mulmod(x1, z2 , n), mulmod(z1 , x2 , n));
- // }
- // function inv (uint256 a) private constant returns(uint256 invA){
- // uint256 t=0;
- // uint256 newT=1;
- // uint256 r=n;
- // uint256 newR=a;
- // uint256 q;
- // while (newR != 0) {
- // q = r / newR;
- // (t, newT) = (newT, addmod(t , (n - mulmod(q, newT,n)) , n));
- // (r, newR) = (newR, r - q * newR );
- // }
- // return t;
- // }
- // function Add (uint256 x1,uint256 y1,uint256 z1, uint256 x2,uint256 y2,uint256 z2) private constant returns(uint256 x3,uint256 y3,uint256 z3) {
- // uint256 l;
- // uint256 lz;
- // uint256 da;
- // uint256 db;
- // if ((x1==0)&&(y1==0)) {
- // return (x2,y2,z2);
- // }
- // if ((x2==0)&&(y2==0)) {
- // return (x1,y1,z1);
- // }
- // if ((x1==x2)&&(y1==y2)) {
- // (l,lz) = _multiply(x1, z1, x1, z1);
- // (l,lz) = _multiply(l, lz, 3, 1);
- // (l,lz) = _add(l, lz, a, 1);
- // (da,db) = _multiply(y1, z1, 2, 1);
- // }
- // else {
- // (l,lz) = _sub(y2, z2, y1, z1);
- // (da,db) = _sub(x2, z2, x1, z1);
- // }
- // (l, lz) = _divide(l, lz, da, db);
- // (x3, da) = _multiply(l, lz, l, lz);
- // (x3, da) = _sub(x3, da, x1, z1);
- // (x3, da) = _sub(x3, da, x2, z2);
- // (y3, db) = _sub(x1, z1, x3, da);
- // (y3, db) = _multiply(y3, db, l, lz );
- // (y3, db) = _sub(y3, db, y1, z1 );
- // if (da != db) {
- // x3 = mulmod(x3, db, n);
- // y3 = mulmod(y3, da, n);
- // z3 = mulmod(da, db, n);
- // } else {
- // z3 = da;
- // }
- // }
- // function Double(uint256 x1,uint256 y1,uint256 z1) private constant returns(uint256 x3,uint256 y3,uint256 z3){
- // (x3,y3,z3) = Add(x1,y1,z1,x1,y1,z1);
- // }
- // function Mulultiply(uint256 d, uint256 x1,uint256 y1,uint256 z1) private constant returns(uint256 x3,uint256 y3,uint256 z3){
- // uint256 remaining = d;
- // uint256 px = x1;
- // uint256 py = y1;
- // uint256 pz = z1;
- // uint256 acx = 0;
- // uint256 acy = 0;
- // uint256 acz = 1;
- // if (d==0) {
- // return (0,0,1);
- // }
- // while (remaining != 0) {
- // if ((remaining & 1) != 0) {
- // (acx,acy,acz) = Add(acx,acy,acz, px,py,pz);
- // }
- // remaining = remaining / 2;
- // (px,py,pz) = Double(px,py,pz);
- // }
- // (x3,y3,z3) = (acx,acy,acz);
- // }
- // function privkey_to_public(uint256 privKey) private constant returns(uint256 qx, uint256 qy){
- // uint256 x;
- // uint256 y;
- // uint256 z;
- // (x,y,z) = Mulultiply(privKey, gx, gy, 1);
- // z = inv(z);
- // qx = mulmod(x , z ,n);
- // qy = mulmod(y , z ,n);
- // }
- // function randomPriv() private returns (uint256){
- // uint256 lastBlockNumber = block.number - 1;
- // uint256 hashVal = uint256(block.blockhash(lastBlockNumber));
- // return uint256(hashVal) + 1;
- // }
- function dec_hex(uint256 a) public returns(string ans){
- string memory num;
- ans="";
- if(a==0) return "0";
- while(a>0){
- num=hex_val(a%16);
- ans=stringAdd(num,ans);
- a=a/16;
- }
- return ans;
- }
- function hex_dec(string _s) public returns(uint ans){
- ans=0;
- bytes memory s = bytes(_s);
- string memory i_hate_solidity = new string(1);
- bytes memory solidity_is_shit = bytes(i_hate_solidity);
- // for(uint i= s.length-1;i>=0;i=i-1){
- for(uint i= 0;i<s.length;i++){
- solidity_is_shit[0]=s[i];
- ans=ans+ (16**(s.length-1-i))*dec_val(solidity_is_shit);
- }
- }
- function hex_val(uint a) private returns(string){
- if(a==0) return "0";
- if(a==1) return "1";
- if(a==2) return "2";
- if(a==3) return "3";
- if(a==4) return "4";
- if(a==5) return "5";
- if(a==6) return "6";
- if(a==7) return "7";
- if(a==8) return "8";
- if(a==9) return "9";
- if(a==10) return "A";
- if(a==11) return "B";
- if(a==12) return "C";
- if(a==13) return "D";
- if(a==14) return "E";
- if(a==15) return "F";
- }
- function dec_val(bytes a)private returns(uint){
- if(strequal(a,"0")) return 0;
- if(strequal(a,"1")) return 1;
- if(strequal(a,"2")) return 2;
- if(strequal(a,"3")) return 3;
- if(strequal(a,"4")) return 4;
- if(strequal(a,"5")) return 5;
- if(strequal(a,"6")) return 6;
- if(strequal(a,"7")) return 7;
- if(strequal(a,"8")) return 8;
- if(strequal(a,"9")) return 9;
- if(strequal(a,"a")) return 10;
- if(strequal(a,"b")) return 11;
- if(strequal(a,"c")) return 12;
- if(strequal(a,"d")) return 13;
- if(strequal(a,"e")) return 14;
- if(strequal(a,"f")) return 15;
- }
- function strequal(bytes a,string _b) private returns(bool){
- bytes memory b = bytes(_b);
- if(a[0]==b[0]) return true;
- return false;
- }
- function stringAdd(string _a,string _b) private returns(string){
- bytes memory a = bytes(_a);
- bytes memory b = bytes(_b);
- string memory _ab = new string(a.length + b.length);
- bytes memory ab = bytes(_ab);
- uint k = 0;
- for (uint i = 0; i < a.length; i++) ab[k++] = a[i];
- for (i = 0; i < b.length; i++) ab[k++] = b[i];
- return string(ab);
- }
- // function randomKeys() public constant returns(string , string , string){
- // var privkey=randomPriv();
- // var (pubkeyX,pubkeyY) = privkey_to_public(privkey);
- // return (dex_hex(privkey), dex_hex(pubkeyX), dex_hex(pubkeyY));
- // }
- function randomaddress() public constant returns (bytes32){
- // string memory privkey="18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725";
- // string memory pubkeyX="50863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B2352";
- // string memory pubkeyY="2CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6";
- // var pubkey=stringAdd(pubkeyX,pubkeyY);
- // pubkey=stringAdd("04",pubkey);
- var addr1=sha256("0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6");
- // var addr2=ripemd160(addr1);
- return addr1;
- //var addr3=bytesAdd("00",(addr2));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement