[BIP] Normalized Transaction IDs



Summary:

In an email conversation, Christian Decker discusses the size of a mapping legacy ID to normalized ID and mentions that it is about 256 MB in size. Although there are more unspent transaction outputs (UTXOs) than transactions, 256 MB seems low for this data. Both IDs can be used in the merkle tree, so using both to address them would work. The id used to sign should be used in the merkle tree, and the hard fork should allow transactions that use the normalized transaction hash. There is no effect on opcodes, and bundling this change with other changes that require a hard-fork may be a good idea. A generic hard-fork rollout mechanism proposal is suggested.The reference client can be updated to use version 2 transactions by default, and if >75% of the transactions by weight are version 2 in blocks 375000 to 385000, then the community is considered to support the hard fork. Devs update the reference client to produce version 4 blocks and version 3 transactions if the community supports the hard fork. If 750 of the last 1000 blocks are version 4 or higher, blocks with transactions of less than version 3 in version 4 blocks are rejected. If 950 of the last 1000 blocks are version 4 or higher, blocks with transactions of less than version 3 in all blocks are rejected. If 990 of the last 1000 blocks are version 4 or higher, version 3 or lower blocks are rejected. Lastly, if 1000 of the last 1000 blocks are version 4 or higher and the difficulty retarget has just happened, the hard fork rule is activated which hard forks legacy nodes off the chain.


Updated on: 2023-06-09T20:58:37.394430+00:00