bitcoin-dev
Continuing the discussion about noinput / anyprevout
Posted on: October 1, 2019 15:42 UTC
In a Bitcoin development mailing list, ZmnSCPxj proposed the creation of a new opcode, OP_CHECKSIG_WITHOUT_INPUT
, which would ignore any SIGHASH
flags present on a signature.
In response to this proposal, another member suggested that creating a new tapscript public key type might be a more effective solution. This would involve encoding the new code in the following manner: 3301AC [CHECKSIG of public key type 0x01]
or 32B3 [CHECKSIG_WITHOUT_INPUT (replacing NOP4) of key]
. Under tapscript v0, it is possible to reuse the internal Taproot pubkey by giving OP_1
as the public key to OP_CHECKSIG
. The proposal suggests having a similar mechanism for copying the internal Taproot pubkey while also enabling new SIGHASH
flags for a particular script only. This would allow update transactions to use MuSig(A,B,C)
for signing along the "update" path, with unique "state" keys, and cooperative closes would sign using P + h(P | MAST( OPCHECKSIG)) * G
, without revealing that it was a Decker-Russell-Osuntokun output.