How are taproot scripts represented normally?


I am fairly accustomed to the opcode type of writing down scripts. I can perceive the stack-based language nature of bitcoin script the place you possibly can write down totally different script spend paths by way of ifs like this:

   <3, publicKey1, publicKey2, publicKey3, 2, ...> OP_CHECKMULTISIGVERIFY
   <3, publicKey1, publicKey2, publicKey3, 1, ...> OP_CHECKMULTISIGVERIFY

which might then be executed with a scriptSig like "ignored" key1Sig 1 or "ignored" key2Sig 0.

Nevertheless, I do not know a great way to jot down down spend paths for taproot. Eg, if I wish to say have a key spend-path utilizing a threshold signature, and I would like 3 script spend-paths, one among which has two nested script spend-paths, what’s a great way to signify that. Or slightly, how has that been represented prior to now? And the way does a transaction spending an output choose which taproot script spend-path it desires to make use of? Within the present script, one of many if branches is chosen with both 1 or 0 pushed onto the stack by way of the scriptSig. In Taproot, how is the spend path chosen?

Supply hyperlink

Leave a reply