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)
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)
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)
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)
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)
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)
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)