Hash Calculator Bitcoin
I'm trying to calculate the hash of transactions in bitcoin blocks, but I'm not getting the right answers.
Here's how I'm attempting to calculate its hash...
Transactions are encoded as:
- a 32 bit 'nVersion'
- a list of input transactions, vin
- a list of output transactions, vout
- a 32 bit 'nLockTime'
For the transaction in the genesis block, these are:
- nVersion: (hex(50*10^8) is 0000012a05f200, and bitcoin puts the bytes in reverse order)
- scriptPubKey: 43:
- nLockTime: .
But the real transaction hash according to blockexplorer.com is 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b.
What am I doing wrong? How can I get to the correct transaction hash?
Here's my working in Python:
> import Crypto.Hash.SHA256 as hash, binascii >> tx = '0000ffffffff4d04ffff00332f4a616e2f436c6c6f72206f6e206272696e6b25636f6e6c6f757462616e6b73ffffffff0100f20afdb0fef1acd6a828e2e0ea1f61deb649f6bc3f4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000' >> len(binascii.unhexlify(tx)) 204 >> hash.new(binascii.unhexlify(tx)).digest.encode('hex_codec') '27362e66e032c731c1c8519f43063fe0e5d070db1c0c3552bb04afa18a31c6bf' >> hash.new(hash.new(binascii.unhexlify(tx)).digest).digest.encode('hex_codec') '3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a'