Explore Courses Blog Tutorials Interview Questions
0 votes
in Blockchain by (12.7k points)

I'm using: to import the blockchain into a mysql DB it is almost done after 5 days. So I started looking at the data and didn't see any addresses. I know the BTC client doesn't use those, but it still would be nice to have them in another table. I was looking around at the code and found this:

def hash_to_address(version, hash):

    vh = version + hash

    return base58.b58encode(vh + double_sha256(vh)[:4])


When I run a pubkey_hash through that function I don't get the expected result of an address. For example taking the following pubkey_hash: 62E907B15CBF27D5425399EBF6F0FB50EBB88F18

I should get: 1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

But instead I get: 6GEZdxx5UiTk3U3LaLfsWwRaFAvXEpPNS5R4mqsJDXVJcTNNngTyB5i9S76MLTq

The script I created is:

import util

hash = '62E907B15CBF27D5425399EBF6F0FB50EBB88F18'

print util.hash_to_address("00", hash)

Any ideas or is there something else that would do the same correctly?

Appleman1234 pointed me in the right direction:

import util

hash = '62E907B15CBF27D5425399EBF6F0FB50EBB88F18'

hash = '00' + hash

print "Util: ", util.hash_to_address("", hash.decode('hex'))

1 Answer

0 votes
by (29.5k points)
edited by

The problem you are having is that the hash of the binary string and the hash of its hexadecimal ASCII representation are two different hashs. The reason you don't get the result you expected is due to encoding.

Try using this for python 3:

import util
import binascii
hash = '62e907b15cbf27d5425399ebf6f0fb50ebb88f18'
print util.hash_to_address(binascii.unhexlify("00"), binascii.unhexlify(hash))

The decode and unhexlify functions convert the hexadecimal ASCII representations into binary byte strings.

Give yourself time to explore the Blockchain field properly. Enroll in Blockchain Online Training now.

Browse Categories