This is a subset of #21365, to aide review.
This adds support tr(KEY)
or tr(KEY,SCRIPT)
or tr(KEY,{{S1,{{S2,S3},...}},...})
descriptors, describing Taproot outputs with specified internal key, and optionally any number of scripts, in nested groups of 2 inside {
/}
if there are more than one. While it permits importing tr(KEY)
, anything beyond that is just laying foundations for more features later.
Missing:
- Signing support (see #21365)
- Support for more interesting scripts inside the tree (only
pk(KEY)
is supported for now). In particular, a multisig policy based on the newOP_CHECKSIGADD
opcode would be very useful. - Inferring
tr()
descriptors from outputs (given sufficient information). getaddressinfo
support.- MuSig support. Standardizing that is still an ongoing effort, and is generally kind of useless without corresponding PSBT support.
- Convenient ways of constructing descriptors without spendable internal key (especially ones that arent’t trivially recognizable as such).