Пример #1
0
def pubkey_to_address(pubkey, isTestnet=False):
    base58_pubkey = TESTNET_MAGIC_BYTE if isTestnet else MAGIC_BYTE
    pubkey_bin = bytes.fromhex(pubkey)
    pub_hash = bitcoin.bin_hash160(pubkey_bin)
    data = bytes([base58_pubkey]) + pub_hash
    checksum = bitcoin.bin_dbl_sha256(data)[0:4]
    return b58encode(data + checksum)
Пример #2
0
def pubkeyhash_to_address(pkey_hash, isTestnet=False, isCold=False):
    if isCold:
        base58_secret = TESTNET_STAKE_MAGIC_BYTE if isTestnet else STAKE_MAGIC_BYTE
    else:
        base58_secret = TESTNET_MAGIC_BYTE if isTestnet else MAGIC_BYTE
    data = bytes([base58_secret]) + pkey_hash
    checksum = bitcoin.bin_dbl_sha256(data)[0:4]
    return b58encode(data + checksum)
Пример #3
0
 def test_decodeEncode(self):
     # get 10 random base58 chars
     text = self.randomB58String(10)
     print("\nRandom Text: %s" % text)
     # decode base58
     decoded_text = b58decode(text)
     print("\nDecoded Text: %s\n" % decoded_text)
     # verify
     self.assertEqual(b58encode(decoded_text), text)
Пример #4
0
 def test_encodeDecode(self):
     # get 32 random bytes
     text = self.randomBytesString(32)
     print("\nRandom Bytes: %s" % text.hex())
     # encode base58
     encoded_text = b58encode(text)
     print("\nEncoded Text: %s\n" % encoded_text)
     # verify
     self.assertEqual(b58decode(encoded_text), text)
Пример #5
0
def generate_privkey(isTestnet=False):
    """
    Based on Andreas Antonopolous work from 'Mastering Bitcoin'.
    """
    base58_secret = TESTNET_WIF_PREFIX if isTestnet else WIF_PREFIX
    valid = False
    privkey = 0
    while not valid:
        privkey = bitcoin.random_key()
        decoded_private_key = bitcoin.decode_privkey(privkey, 'hex')
        valid = 0 < decoded_private_key < bitcoin.N
    data = bytes([base58_secret]) + bytes.fromhex(privkey)
    checksum = bitcoin.bin_dbl_sha256(data)[0:4]
    return b58encode(data + checksum)
Пример #6
0
def pubkeyhash_to_address(pkey_hash, isTestnet=False):
    base58_pubkey = TESTNET_MAGIC_BYTE if isTestnet else MAGIC_BYTE
    data = bytes([base58_pubkey]) + pkey_hash
    checksum = bitcoin.bin_dbl_sha256(data)[0:4]
    return b58encode(data + checksum)
Пример #7
0
def base58fromhex(hexstr, isTestnet):
    base58_secret = TESTNET_WIF_PREFIX if isTestnet else WIF_PREFIX
    data = bytes([base58_secret]) + bytes.fromhex(hexstr)
    checksum = bitcoin.bin_dbl_sha256(data)[0:4]
    return b58encode(data + checksum)