From this link What are the keys used in the blockchain levelDB (ie what are the key:value pairs)?, to get the block hash I use the obfuscation key and xor it with the result I get from the db. So I look up the block hash I got on blockchain.com, but the block hash doesn't exist. So I check if I'm xoring right by using the website http://xor.pw/#. My xored value matched the website.
Then I look back to the example on How does Bitcoin read from/write to LevelDB and xored their example
26c326d7353661dc7005d274976f458691f24f0f05d141335f4ad5927e41
and 27c78118b731610527c78118b731610527c78118b731610527c78118b731
on http://xor.pw/#
and I got 104a7cf820700d957c2536c205e2483b635ce17b2e02036788d548ac970
not 01028820010b2a00367244680f6da18acd861a08f0a89cb3b49ab50e
.
Me and and the website can't get the same result and be wrong right? What am I missing?
import plyvel
def get_xor_key(o_key, result):
xor_key = ''
while len(xor_key) < len(result):
if len(xor_key) + len(o_key) <= len(result): xor_key += o_key
else: xor_key += o_key[:len(result)-len(xor_key)]
return xor_key
def xor_two_str(s, t): return hex(int(s, 16) ^ int(t, 16))
db = plyvel.DB('/home/chris/.bitcoin/chainstate')
o_key = db.get(b'\x0e\x00obfuscate_key')
print('o_key', o_key.encode('hex')) # my o_key is 0899b9c2314a85c9b6
result = db.get(b'B')
result_hex = result.encode('hex')
print('result_hex', result_hex) # b6c9854a31c2b999b6da5ee266a8047f3c8c5fc82479ab03af9272a3a57372a2
xor_key = get_xor_key(o_key, result)
xored = xor_two_str(xor_key.encode('hex'), result_hex)
block_hash = xored[2:-1].decode('hex')[::-1].encode('hex')
print(block_hash) # 870b3cd33974701cfceb9c5bffa0b2b6b9c66e0a9de0a3b56617389267caebaa
26c326d7353661dc7005d274976f458691f24f0f05d141335f4ad5927e41
xor27c78118b731610527c78118b731610527c78118b731610527c78118b731
is equal to104a7cf820700d957c2536c205e2483b635ce17b2e02036788d548ac970
and not01028820010b2a00367244680f6da18acd861a08f0a89cb3b49ab50e
?0104a7cf820700d957c2536c205e2483b635ce17b2e02036788d548ac970
. However, I don't understand either where the010288...
answer comes from. It's not even the right number of bytes.