bitcoin-dev
Anti-transaction replay in a hardfork
Posted on: January 25, 2017 01:22 UTC
On January 24, 2017, a proposal was made on the Bitcoin-Dev mailing list regarding transaction protection from anti-replay in the event of a hardfork.
The proposal stated that transactions created before the proposal would not be protected and needed to be accepted by any potential hardforks to maximize their value. To achieve this, old-format transactions could be made valid only when paired with a fork-only follow-up transaction. This introduces new statefulness into the block validation logic, but it is necessary for maximal fork safety. Meanwhile, the old network should soft-fork in an identical rule with a follow-up transaction format incompatible with the fork. This means that old transactions cannot be replayed across forks/networks because they are not valid when stand-alone. Wallet clients 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 state that old-format transactions cannot reference new-format transactions, even if only a softfork change differs between the formats. This prevents an unnecessary amount of transaction pairs generated by old wallets. Therefore, old outputs can be spent, but not new ones.