Exemplo n.º 1
0
    def generate(cls, xprv=None, prv=None, seed=None, child=None, username=None):
        mnemonic = Mnemonic('english')
        # generate 12 word mnemonic seed
        if not seed and not xprv and not prv:
            seed = mnemonic.generate(256)
        private_key = None
        if seed:
            # create bitcoin wallet
            entropy = mnemonic.to_entropy(seed)
            key = BIP32Key.fromEntropy(entropy)
            private_key = key.PrivateKey().hex()
            extended_key = key.ExtendedKey()
        else:
            raise Exception('No Seed')
        if prv:
            private_key = PrivateKey.from_hex(bytes.fromhex(prv)).to_hex()
            extended_key = ''

        if xprv:
            key = BIP32Key.fromExtendedKey(xprv)
            private_key = key.PrivateKey().hex()
            extended_key = key.ExtendedKey()
        
        if xprv and child:
            for x in child:
                key = key.ChildKey(int(x))
                private_key = key.PrivateKey().hex()

        if not private_key:
            raise Exception('No key')

        return cls({
            "seed": seed or '',
            "xprv": extended_key or '',
            "private_key": private_key,
            "wif": cls.generate_wif(private_key),
            "public_key": PublicKey.from_point(key.K.pubkey.point.x(), key.K.pubkey.point.y()).format().hex(),
            "address": str(key.Address()),
            "serve_host": "0.0.0.0",
            "serve_port": 8000,
            "use_pnp": True,
            "ssl": False,
            "origin": '',
            "polling": 0,
            "post_peer": False,
            # "public_ip": "",  # TODO
            "peer_host": "",
            "peer_port": 8000,
            "web_server_host": "0.0.0.0",
            "web_server_port": 5000,
            "peer": "http://localhost:8000",
            "callbackurl": "http://0.0.0.0:5000/create-relationship",
            "fcm_key": "",
            "database": "yadacoin",
            "site_database": "yadacoinsite",
            "mongodb_host": "localhost",
            "mixpanel": "",
            "username": username or '',
            "network": "mainnet"
        })
Exemplo n.º 2
0
def verify_range_proof_fast(public_key, A, B, A0_s, A1_s, B0_s, B1_s, c0, c1,
                            r0_ss, r1_ss):
    try:
        n = 2**hash_length
        r0_ss_ = long_to_bytes(r0_ss)
        c0_ = long_to_bytes(c0)
        r1_ss_ = long_to_bytes(r1_ss)
        c1_ = long_to_bytes(c1)

        base_ = PublicKey.from_point(base.x, base.y)
        public_key_ = PublicKey.from_point(public_key.x, public_key.y)
        A0_s_ = PublicKey.from_point(A0_s[0], A0_s[1])
        A_ = PublicKey.from_point(A[0], A[1])
        A1_s_ = PublicKey.from_point(A1_s[0], A1_s[1])
        B0_s_ = PublicKey.from_point(B0_s[0], B0_s[1])
        B_ = PublicKey.from_point(B[0], B[1])
        B1_s_ = PublicKey.from_point(B1_s[0], B1_s[1])

        b0 = (base_.multiply(r0_ss_) == A0_s_.combine(
            [A0_s_, A_.multiply(c0_)]))
        b1 = (base_.multiply(r1_ss_) == A1_s_.combine(
            [A1_s_, A_.multiply(c1_)]))
        b2 = (public_key_.multiply(r0_ss_) == B0_s_.combine(
            [B0_s_, B_.multiply(c0_)]))
        b3 = (public_key_.multiply(r1_ss_) == B1_s_.combine([
            B1_s_,
            base_.combine([B_, PublicKey.from_point(base.x,
                                                    p - base.y)]).multiply(c1_)
        ]))
        c = hash_points(
            [public_key,
             P(A), P(B),
             P(A0_s),
             P(B0_s),
             P(A1_s),
             P(B1_s)])
        b4 = ((c0 + c1) % n == c)
        return b0 and b1 and b2 and b3 and b4
    except:
        return False
Exemplo n.º 3
0
    def generate(cls,
                 xprv=None,
                 prv=None,
                 seed=None,
                 child=None,
                 username=None,
                 mongodb_host=None,
                 db_name=None):
        mnemonic = Mnemonic('english')
        # generate 12 word mnemonic seed
        if not seed and not xprv and not prv:
            seed = mnemonic.generate(256)
        private_key = None
        if seed:
            # create new wallet
            entropy = mnemonic.to_entropy(seed)
            key = BIP32Key.fromEntropy(entropy)
            private_key = key.PrivateKey().hex()
            extended_key = key.ExtendedKey()
            public_key = PublicKey.from_point(
                key.K.pubkey.point.x(), key.K.pubkey.point.y()).format().hex()
            address = str(key.Address())

        if prv:
            key = PrivateKey.from_hex(prv)
            private_key = key.to_hex()
            extended_key = ''
            public_key = key.public_key.format().hex()
            address = str(
                P2PKHBitcoinAddress.from_pubkey(bytes.fromhex(public_key)))

        if xprv:
            key = BIP32Key.fromExtendedKey(xprv)
            private_key = key.PrivateKey().hex()
            extended_key = key.ExtendedKey()
            public_key = PublicKey.from_point(
                key.K.pubkey.point.x(), key.K.pubkey.point.y()).format().hex()
            address = str(key.Address())

        if xprv and child:
            for x in child:
                key = key.ChildKey(int(x))
                private_key = key.PrivateKey().hex()
                public_key = PublicKey.from_point(
                    key.K.pubkey.point.x(),
                    key.K.pubkey.point.y()).format().hex()
                address = str(key.Address())

        if not private_key:
            raise Exception('No key')

        try:
            u = UPnP(None, None, 200, 0)
            u.discover()
            u.selectigd()
            peer_host = u.externalipaddress()
        except:
            try:
                import urllib.request
                peer_host = urllib.request.urlopen(
                    'https://ident.me').read().decode('utf8')
            except:
                peer_host = ''

        return cls({
            "modes": ['node', 'web', 'pool'],
            "root_app": '',
            "seed": seed or '',
            "xprv": extended_key or '',
            "private_key": private_key,
            "wif": cls.generate_wif(private_key),
            "public_key": public_key,
            "address": address,
            "api_whitelist": [],
            "serve_host": "0.0.0.0",
            "serve_port": 8001,
            "use_pnp": False,
            "ssl": False,
            "origin": '',
            "sia_api_key": '',
            "post_peer": False,
            "peer_host": peer_host,
            "peer_port": 8000,
            "peer_type": "user",
            "peer": "http://localhost:8000",
            "callbackurl": "http://0.0.0.0:8001/create-relationship",
            "jwt_public_key": None,
            "fcm_key": "",
            "database": db_name or "yadacoin",
            "site_database": db_name + "site" if db_name else "yadacoinsite",
            "mongodb_host": mongodb_host or "localhost",
            "mixpanel": "",
            "username": username or '',
            "network": "mainnet",
            "wallet_host_port": 'http://localhost:8001',
            "credits_per_share": 5,
            "shares_required": False,
            "pool_payout": False,
            "pool_take": .01,
            "payout_frequency": 6
        })
Exemplo n.º 4
0
    modulo = gmpy2.mpz(modulo)
    order = gmpy2.mpz(order)
    Gx = gmpy2.mpz(Gx)
    Gy = gmpy2.mpz(Gy)


class Point:
    def __init__(self, x=0, y=0):  # Affine
        #def __init__(self, x=0, y=0, z=1):	# Jacobian
        self.x = x
        self.y = y
        #self.z = 1			# Jacobian


if (not flag_gmpy2) and flag_coincurve:
    Gp = PublicKey.from_point(Gx, Gy)  # basePoint
    #Gp = PublicKey.from_valid_secret(int_to_bytes_padded(1)) # basePoint
else:
    Gp = Point(Gx, Gy)
    Zp = Point(0, 0)  # zero-point, infinite in real x,y - plane

#######################
# math, raw python


# from arulberoECC library
# more fastest
def invert(b, p=modulo):
    u, v = b % p, p
    x1, x2 = 1, 0
    while u != 1: