How to get Bitcoin address from pubkey_hash?

Question:

I’m using: https://github.com/bitcoin-abe/bitcoin-abe 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])

In: https://github.com/bitcoin-abe/bitcoin-abe/blob/3004fe4bad6f64d4c032c735ee23bf9f052d825b/Abe/util.py

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'))
Asked By: George

||

Answers:

The reason you don’t get the result you expected is due to encoding.

The correct code for Python 2

import util
hash = '62e907b15cbf27d5425399ebf6f0fb50ebb88f18'
print util.hash_to_address("00".decode('hex'), hash.decode('hex'))

The correct code 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.

The problem you were having was that the hash of the binary string and the hash of its hexadecimal ASCII representation are two different hashs.

Answered By: Appleman1234

Can you compile it via javascript, i have problem with address of bitcore-lib-doge package, when i generate a new address then it response a pubkeyhash type for new address, but i can’t compile this via base58 with length is 34, please help me.

Answered By: Oscar Nguyen
Categories: questions Tags: , , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.