With bitcoin-cli, I successfully spent (broadcast, was accepted by the regtest node and then mined) a tx spending two 1-of-2 script-path multisig outputs.
The spent prevout descriptors were:
tr(<unspendable_bip341_key>,multi_a(1,<even-parity-33-byte-key1>,<odd-parity-33-byte-key2>))
After the spending transaction was mined into a block, I viewed the multisig script: bitcoin-cli -regtest decodescript <tapscript>
where <tapscript>
was the penultimate element of the input witness stack. I got:
{
"asm": "<x-only-32-bytes-of-key1> OP_CHECKSIG <x-only-32-bytes-of-key2> OP_CHECKSIGADD 1 OP_NUMEQUAL",
"desc": "raw(<hex>)#<checksum>",
"type": "nonstandard"
}
My questions are:
- Apparently, it's expected that the parity (first
0x02
or0x03
) byte is dropped from the 33 byte keys that I put in the descriptors, when I created the output. The keys become 32-byte x-only keys. When spending and verifying this, how does it recover the parity information, it appears to be lost in the decoded tapscript? - Why does
decodescript
returnnonstandard
? My core version is v0.25, and the spent prevout was created by its bitcon-cli. btcdeb
refuses to validate this script. This could be due tobtcdeb
being on the v0.24 still, however.