[BIP] Normalized Transaction IDs



Summary:

Christian Decker proposed a BIP to normalize transaction IDs in order to address transaction malleability and facilitate higher level protocols. The normalized transaction ID is an alias used in parallel to the current (legacy) transaction IDs to address outputs in transactions. It is calculated by removing (zeroing) the scriptSig before computing the hash, which ensures that only data whose integrity is also guaranteed by the signatures influences the hash. When validating a client supporting this BIP would use both the normalized tx ID as well as the legacy tx ID when validating transactions. Luke-Jr suggests that instead of referring to previous transactions by a normalised hash, it makes better sense to simply change the outpoints in the signed data and allow nodes to hotfix dependent transactions when/if they are malleated. Furthermore, the approach of using a hash of scriptPubKey in the input rather than an outpoint also solves dependencies in the face of intentional malleability (respending with a higher fee, or CoinJoin, for a few examples). Luke Jr. says that these aren't barriers to making the proposal or being assigned a BIP number if you want to go forward with that, but you may wish to reconsider spending time on it. Christian Decker's proposal requires a hardfork, which he believes will not be problematic, given that hardforks are no longer dreaded. He left out the details of how the hardfork is to be done, as it does not matter, and they may have a good mechanism to apply a bunch of hardforks concurrently in the future.


Updated on: 2023-06-09T20:57:04.001880+00:00