1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-08-24 18:47:19 +00:00

BIP-110: Add Defined witness versions subsection clarifying the rule 3 P2A exemption

This commit is contained in:
Dathon Ohm
2026-07-29 10:55:08 -06:00
parent 9783d61f1b
commit ae98a6ed47

View File

@@ -24,7 +24,7 @@ Blocks during a temporary, one-year deployment are checked with these additional
# New output scriptPubKeys exceeding 34 bytes are invalid, unless the first opcode is OP_RETURN, in which case up to 83 bytes are valid. # New output scriptPubKeys exceeding 34 bytes are invalid, unless the first opcode is OP_RETURN, in which case up to 83 bytes are valid.
# OP_PUSHDATA* payloads and [[#script-argument-witness-items|script argument witness items]] exceeding 256 bytes are invalid, except for the redeemScript push in BIP16 scriptSigs. # OP_PUSHDATA* payloads and [[#script-argument-witness-items|script argument witness items]] exceeding 256 bytes are invalid, except for the redeemScript push in BIP16 scriptSigs.
# Spending undefined witness (or Tapleaf) versions (ie, not Witness v0/BIP 141, Taproot/BIP 341, or P2A) is invalid. (Creating outputs with undefined witness versions is still valid.) # Spending undefined witness (or Tapleaf) versions (ie, anything not listed under [[#defined-witness-versions|Defined witness versions]] below) is invalid. (Creating outputs with undefined witness versions is still valid.)
# Witness stacks with a Taproot annex are invalid. # Witness stacks with a Taproot annex are invalid.
# Taproot control blocks larger than 257 bytes (a merkle tree with 128 script leaves) are invalid. # Taproot control blocks larger than 257 bytes (a merkle tree with 128 script leaves) are invalid.
# Tapscripts including OP_SUCCESS* opcodes anywhere (even unexecuted) are invalid. # Tapscripts including OP_SUCCESS* opcodes anywhere (even unexecuted) are invalid.
@@ -37,6 +37,15 @@ This grandfathering ensures that no existing coins can be frozen or rendered uns
The new rules apply only to UTXOs created at or after the activation height. The new rules apply only to UTXOs created at or after the activation height.
Once the softfork expires, UTXOs of all heights are once again unrestricted. Once the softfork expires, UTXOs of all heights are once again unrestricted.
<span id="defined-witness-versions"></span>
===Defined witness versions===
For the purposes of rule 3, these are the witness versions (and the one Tapleaf version) that are defined as of this BIP:
* '''Witness v0''' with a 20-byte program (P2WPKH) or a 32-byte program (P2WSH), as defined in [[bip-0141.mediawiki|BIP 141]]. Other v0 program lengths are already invalid under BIP 141 itself.
* '''Witness v1''' with a 32-byte program (Taproot/P2TR), as defined in [[bip-0341.mediawiki|BIP 341]]. In a script path spend, the only defined Tapleaf version is 0xc0 (Tapscript), as defined in [[bip-0342.mediawiki|BIP 342]].
* '''Witness v1''' with the 2-byte program 0x4e73 (P2A), and only when spent with an empty witness stack, as defined in [[bip-0433.mediawiki#specification|BIP 433]].
===GetBlockTemplate=== ===GetBlockTemplate===
This deployment uses the GBT deployment name "reduced_data" as defined in [[bip-0009.mediawiki#getblocktemplate_changes|BIP 9]]. During mandatory signaling, the deployment's bit is included in "vbrequired". This deployment uses the GBT deployment name "reduced_data" as defined in [[bip-0009.mediawiki#getblocktemplate_changes|BIP 9]]. During mandatory signaling, the deployment's bit is included in "vbrequired".