This is a sub-feature taken out of the original proposal for ephemeral anchors #30239
This PR makes spending of OP_1 <0x4e73>
(i.e. bc1pfeessrawgf
) standard. Creation of this output type is already standard.
Any future witness output types are considered relay-standard to create, but not to spend. This preserves upgrade hooks, such as a completely new output type for a softfork such as BIP341. It also gives us a bit of room to use a new output type for policy uses.
This particular sized witness program has no other known use-cases (https://bitcoin.stackexchange.com/a/110664/17078), s it affords insufficient cryptographic security for a secure commitment to data, such as a script or a public key. This makes this type of output “keyless”, or unauthenticated.
As a witness program, the scriptSig
of the input MUST be blank, by BIP141. This helps ensure txid-stability of the spending transaction, which may be required for smart contracting wallets. If we do not use segwit, a miner can simply insert an OP_NOP
in the scriptSig
without effecting the result of program execution.
An additional relay restriction is to disallow non-empty witness data, which an adversary may use to penalize the “honest” transactor when RBF’ing the transaction due to the incremental fee requirement of RBF rules.
The intended use-case for this output type is to “anchor” the transaction with a spending child to bring exogenous CPFP fees into the transaction package, encouraging the inclusion of the package in a block. The minimal size of creation and spending of this output makes it an attractive contrast to outputs like p2sh(OP_TRUE)
and p2wsh(OP_TRUE)
which
are significantly larger in vbyte terms.
Combined with TRUC transactions which limits the size of child transactions significantly, this is an attractive option for presigned transactions that need to be fee-bumped after the fact.