For earlier blocks, if I hash the raw data of the first transaction in the block, I get back exactly the transaction hash. However, for recent blocks, this seems no longer work. Can someone give a reference for what's changed?

For example, for block 750480, the hash of the first transaction is 3dc939a1eab70f45e346efb20c9891bcf1ae8958d4e3b648547075ec3374029b, and running getrawtransaction on it gives 020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff310390730b04419102632f466f756e6472792055534120506f6f6c202364726f70676f6c642f1f0790e64d4f010000000000ffffffff0247dd5a25000000001976a9145e9b23809261178723055968d134a947f47e799f88ac0000000000000000266a24aa21a9edb983f21b5f1e13865e7d52cf9f670a895b98a06b2c86f6d03a54bc2be7e4e8a70120000000000000000000000000000000000000000000000000000000000000000000000000, but hashing it we get 7650f9bbb05af0e3af00a25851e28a825b1e2fe1cfdcf49a80878678f682ed70.

The BIP144 describes the new format with segwit, but there are extra stuff after the lock time that the document doesn't describe.

UPDATE: This post seems suggesting that segwit part need to be removed before hashing. So I tried hashing the part up to the lock time, but the result still doesn't match.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.