You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Note: Taproot descriptors in this chapter and associated demo library are illustrative of the ongoing design intent, but do not represent the final version. The taproot descriptors described below are based on this proposal.
Tapscript is a new Bitcoin output script language which is evaluated when the script path is used during the spending of a Taproot output. With a few noted exceptions (CHECKSIG opcodes), it carries many of the familiar op_codes and evaluation logic which applies to Bitcoin script.
Standard Tapscript Types.
Nonetheless, for most use-cases, a set of standard tapscripts can be described with the following tapscript descriptors. Tapscript descriptors are encapsulated with ts().
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Output descriptor support in Bitcoin Core provides an intuitive language which simplifies how wallets determine which UTXOs they can sign and spend. A descriptor expression today expands to a single output script of a given output.
However, with the introduction of Taproot, a given output can now have multiple spending paths at different heights of the taproot tree. We wish to propose a taproot output descriptor which encapsulates both individual tapscripts and mid-level tapscript descriptors while encoding the intended taptree structure.
Output descriptor support in Bitcoin Core provide an intuitive language which simplifies how wallets determine which UTXOs they can sign and spend. A descriptor expression today expands to a single output script of a given output.
However, with the introduction of Taproot, a given output can now have multiple spending paths at different heights of a taproot tree. We wish to propose a taproot output descriptor which encapsulates both individual tapscripts and mid-level tapscript descriptors whilst encoding the intended taptree structure.
The proposed taproot descriptor design prioritizes:
Taproot outputs can feature complex merkle branches involving multiple participating wallets. We prepose a huffman-encoded taproot output descriptor which allows all participating wallets to solve for all merkle branch spending paths, without imposing any restrictions to possible tree structure and ensuring a unique descriptor-to-output mapping.
The design of the proposed output descriptor is also influenced by the desire to enable higher-level descriptor expressions which may compile to multiple tapscripts of potentially different execution probability.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters