2

What can be the contents of an P2TR output script? Is it always OP_1 0x20 <32-bit public key>? Can multisig script be there, and if yes - in what format, and more importantly - how do I convert that script to an address?

1 Answer 1

2

What can be the contents of an P2TR output script? Is it always OP_1 0x20 <32-bit public key>?

A Taproot output contains a 32 byte witness program (a tweaked internal key or an untweaked public key if eschewing the tweak) after OP_1. The OP_1 (01) makes it clear that it is a SegWit v1 output rather than say a SegWit v0 output (00). Any scripts are included in the leaves of the Taproot tree and hashed up to a Merkle root (which tweaks the internal public key) so the witness program can commit to various leaf scripts.

Can multisig script be there, and if yes - in what format?

A multisig script can be in a leaf or multiple leaves of the Taproot tree. Note that a Taproot multisig script uses the opcode OP_CHECKSIGADD rather than OP_CHECKMULTISIG (outlined in BIP 342).

How do I convert that script to an address?

The leaf scripts are hashed within the Taproot (Merkle) tree. The Merkle root then tweaks the internal public key. A breakdown of bech32m (SegWit v1) addresses is here. This tweaked internal public key (or witness program) is directly included within the address.

2
  • 1
    Thanks! Just to confirm - in any case, Taproot (Segwit v1) output is always 32-byte public key, which hides complexity of whatever script might be behind it. This public key is translated into address using bech32m, and that address represents the output.
    – DimaA6_ABC
    Nov 9, 2021 at 12:38
  • Yes, a transaction output is a taproot output if and only if it consists of OP_1 followed by a 32-byte push. Nov 9, 2021 at 16:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.