I am currently trying myself in parsing the blockchain using pyblockchain. My problem is that I am not able to encode the
scriptPubKey correctly - although I don't know what I could possibly do wrong.
Below you can see how I traverse the blockchain:
from blockchain.reader import BlockchainFileReader import hashlib import base58 block_reader = BlockchainFileReader('/media/Data/btc/blocks/blk00325.dat') count = 0 for block in block_reader: count +=1 for t in block.transactions: for outp in t.outputs: addr = base58.b58encode(outp.script_pub_key) if addr.startswith('1'): print(addr) if count >= 5: break
If I, in my Jupyter notebook, take a look at
outp, I'll find for
outp.script_pub_key >> b'v\xa9\x14\x1e\xbev\x83\xceJd\xad\xc9\x17\xe9\xb1\x93\x7f\x12&Q\xcb\xab\xa1\x88\xac'
base58.b58encode(outp.script_pub_key) >> 'pkJBVCg6k54E7ZiP7cvxbCvtN9aY9zEcgK'
and this is not a valid bitcoin address.
Apparently, bitcoin addresses are supposed to be encoded i Base58Check - however, that does not work either:
base58.b58encode_check(outp.script_pub_key) >> '6PSJQapdQn8VeG9SBuZdH8q2ysyP4ND6dmspzLZb'
So what am I doing wrong here?