bitcoin-dev
Anti-transaction replay in a hardfork
Posted on: January 25, 2017 07:05 UTC
In a discussion on the bitcoin-dev mailing list, it was proposed that old-format transactions be made valid only when paired with a fork-only follow-up transaction which is spending at least one (or all) of the outputs of the old-format transaction.
This would introduce new statefulness into the block validation logic but is necessary for maximal fork safety and can be disabled at a later time if deemed no longer necessary. The proposal also suggests that the old network should soft-fork in an identical rule with a follow-up transaction format incompatible with the fork. This would mean that old transactions can not be replayed across forks/networks because they're not valid when stand-alone. Wallet clients would need to be updated or paired with software that intercepts generated transactions and automatically generates the correct follow-up transaction for it (old network only). The rules should be that old-format transactions can't reference new-format transactions, even if only a softfork change differs between the formats to prevent an unnecessary amount of transactions pairs generated by old wallets.