With the recent commotion around transaction malleability, it seems like the Bitcoin developers have been working on a semi-fix for it, called the normalized transaction hash.

It's implemented here in this pull request by sipa.

What is this hash and how is it different from the regular transaction hash? How can it be constructed? How does it try to solve the malleability problem?


2 Answers 2


It is a hash of the transaction without the input scripts. SIGHASH_ALL says all inputs and outputs are included in the hash. These are the areas covered by the standard payment methods and they cannot be modified without invalidating the transaction. One of the problems, though, is that there are other payment methods which do change the inputs and thus the normalized transaction ID would change in those cases. But it does cover the common transactions.


It's the same hash value that is signed by ESDSA (i.e., it's the "e" value used in the calculation of the signature's s value s=(e+dr)/k

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.