<p>When the soft fork (e.g. Taproot) is activated (assuming it is at some stage) all nodes agree to only verify transactions according to Taproot rules from the point of Taproot activation onwards. No nodes will verify transactions pre-activation according to rules specified at activation. Hence the network will always agree that your transaction following the old Taproot rules was an anyone-can-spend even if a valid or invalid SegWit v1 witness is available.</p>
<p>In contrast, post activation there will be some nodes on the network enforcing the new Taproot rules (running the latest version of Bitcoin Core) and some treating them as anyone-can-spend (running older versions of Bitcoin Core). A transaction broadcast post activation following old Taproot rules (never activated on the network) will be rejected by the nodes enforcing the new Taproot rules. Even though some nodes will treat transactions following the old Taproot rules or the new Taproot rules as anyone-can-spend, only transactions following the new Taproot rules will make it into a mined block accepted by <strong>all</strong> nodes on the network.</p>

CC BY-SA 4.0
2020-10-11T10:37:57.993Z
2020-10-11T10:43:44.493Z
2020-10-11T10:43:44.493Z
Michael Folkson
<blockquote>
<p>Of course Taproot isn't activated at all so all nodes would have treated my transaction as an anyone-can-spend and my transaction would easily have made it into a block.</p>
</blockquote>
<p>No, the new output types for soft forks are constructed in a manner that they are non-standard for old nodes and thus do not get included in the mempool by old nodes, and therefore also not get mined into blocks unless the miner explicitly overrides default behavior.</p>
<p>If a miner includes such a non-standard transaction before the rules are active, it's not a problem since the transaction is valid according to the old rules—otherwise old nodes wouldn't be able to follow the best chain after the rules got activated. The rules go into effect with the activation height and don't apply retroactively.</p>
<p>If a miner does so after the rules are active, they create an invalid block which gets rejected by all nodes enforcing the rules of the freshly activated softfork.</p>

CC BY-SA 4.0
2021-11-16T21:56:43.900Z
2021-11-16T21:56:43.900Z
Murch
<p>This question is similar to this Signet <a href="https://bitcoin.stackexchange.com/questions/98642/can-we-experiment-on-signet-with-multiple-proposed-soft-forks-whilst-maintaining">question</a> on Signet nodes enforcing different Taproot rules (old and new) pre mainnet activation. Instead it is regarding how a valid Taproot spend on mainnet according to old Taproot rules (that were never enforced on mainnet) initially treated as anyone-can-spend by the network, doesn't create a massive re-org when new Taproot rules are activated on mainnet.</p>
<p>For example, let's say I created a UTXO encumbered by Taproot rules as they were specified in July 2020 (before the Taproot BIPs were <a href="https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-August/018081.html" rel="nofollow noreferrer">changed</a> from a squaredness tiebreaker for the R point to an evenness tiebreaker). I managed to spend from this UTXO by following the Taproot rules as they were specified in July 2020. Of course Taproot isn't activated at all so all nodes would have treated my transaction as an anyone-can-spend and my transaction would easily have made it into a block. Now let's say in June 2021 Taproot is activated on mainnet with the new rules as they were specified post August 2020 (with the evenness tiebreaker). What is stopping my transaction from failing verification against the new Taproot rules and creating a massive re-org back to the block that contains my transaction?</p>

<bitcoin-core-development><taproot><soft-fork><signet><anyone-can-spend>
What is stopping a Taproot spend following old Taproot rules (initially treated as anyone-can-spend) pre-activation creating a re-org post activation?
Michael Folkson
# What is stopping a Taproot spend following old Taproot rules (initially treated as anyone-can-spend) pre-activation creating a re-org post activation?

(Asked by: username_0 on 2020-10-11)

This question is similar to this Signet [question](https://bitcoin.stackexchange.com/questions/98642/can-we-experiment-on-signet-with-multiple-proposed-soft-forks-whilst-maintaining) on Signet nodes enforcing different Taproot rules (old and new) pre mainnet activation. Instead it is regarding how a valid Taproot spend on mainnet according to old Taproot rules (that were never enforced on mainnet) initially treated as anyone-can-spend by the network, doesn't create a massive re-org when new Taproot rules are activated on mainnet.

For example, let's say I created a UTXO encumbered by Taproot rules as they were specified in July 2020 (before the Taproot BIPs were [changed](https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2020-August/018081.html) from a squaredness tiebreaker for the R point to an evenness tiebreaker). I managed to spend from this UTXO by following the Taproot rules as they were specified in July 2020. Of course Taproot isn't activated at all so all nodes would have treated my transaction as an anyone-can-spend and my transaction would easily have made it into a block. Now let's say in June 2021 Taproot is activated on mainnet with the new rules as they were specified post August 2020 (with the evenness tiebreaker). What is stopping my transaction from failing verification against the new Taproot rules and creating a massive re-org back to the block that contains my transaction?

**Tags:** bitcoin-core-development, taproot, soft-fork, signet, anyone-can-spend


---

## 2 answers

### Answer by username_0 on 2020-10-11. Score: 0 | Accepted answer

When the soft fork (e.g. Taproot) is activated (assuming it is at some stage) all nodes agree to only verify transactions according to Taproot rules from the point of Taproot activation onwards. No nodes will verify transactions pre-activation according to rules specified at activation. Hence the network will always agree that your transaction following the old Taproot rules was an anyone-can-spend even if a valid or invalid SegWit v1 witness is available.

In contrast, post activation there will be some nodes on the network enforcing the new Taproot rules (running the latest version of Bitcoin Core) and some treating them as anyone-can-spend (running older versions of Bitcoin Core). A transaction broadcast post activation following old Taproot rules (never activated on the network) will be rejected by the nodes enforcing the new Taproot rules. Even though some nodes will treat transactions following the old Taproot rules or the new Taproot rules as anyone-can-spend, only transactions following the new Taproot rules will make it into a mined block accepted by **all** nodes on the network.


---

### Answer by username_1 on 2021-11-16. Score: 1

> Of course Taproot isn't activated at all so all nodes would have treated my transaction as an anyone-can-spend and my transaction would easily have made it into a block.

No, the new output types for soft forks are constructed in a manner that they are non-standard for old nodes and thus do not get included in the mempool by old nodes, and therefore also not get mined into blocks unless the miner explicitly overrides default behavior.

If a miner includes such a non-standard transaction before the rules are active, it's not a problem since the transaction is valid according to the old rules—otherwise old nodes wouldn't be able to follow the best chain after the rules got activated. The rules go into effect with the activation height and don't apply retroactively.

If a miner does so after the rules are active, they create an invalid block which gets rejected by all nodes enforcing the rules of the freshly activated softfork.


---

