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 adds a new descriptor with syntax e.g. tr(KEY,{S1,{{S2,S3},S4})
where KEY is a key expression for the internal key and S_i are
script expression for the leaves. They have to be organized in
nested {A,B} groups, with exactly two elements.
tr() only exists at the top level, and inside the script expressions
only pk() scripts are allowed for now.
Copy file name to clipboardExpand all lines: doc/descriptors.md
+13-5Lines changed: 13 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -30,6 +30,7 @@ Output descriptors currently support:
30
30
- Pay-to-witness-pubkey-hash scripts (P2WPKH), through the `wpkh` function.
31
31
- Pay-to-script-hash scripts (P2SH), through the `sh` function.
32
32
- Pay-to-witness-script-hash scripts (P2WSH), through the `wsh` function.
33
+
- Pay-to-taproot outputs (P2TR), through the `tr` function.
33
34
- Multisig scripts, through the `multi` function.
34
35
- Multisig scripts where the public keys are sorted lexicographically, through the `sortedmulti` function.
35
36
- Any type of supported address through the `addr` function.
@@ -54,20 +55,22 @@ Output descriptors currently support:
54
55
-`pkh([d34db33f/44'/0'/0']xpub6ERApfZwUNrhLCkDtcHTcxd75RbzS1ed54G1LkBUHQVHQKqhMkhgbmJbZRkrgZw4koxb5JaHWkY4ALHY2grBGRjaDMzQLcgJvLJuZZvRcEL/1/*)` describes a set of P2PKH outputs, but additionally specifies that the specified xpub is a child of a master with fingerprint `d34db33f`, and derived using path `44'/0'/0'`.
55
56
-`wsh(multi(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where the first multisig key is the *1/0/`i`* child of the first specified xpub and the second multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default).
56
57
-`wsh(sortedmulti(1,xpub661MyMwAqRbcFW31YEwpkMuc5THy2PSt5bDMsktWQcFF8syAmRUapSCGu8ED9W6oDMSgv6Zz8idoc4a6mr8BDzTJY47LJhkJ8UB7WEGuduB/1/0/*,xpub69H7F5d8KSRgmmdJg2KhpAK8SR3DjMwAdkxj3ZuxV27CprR9LgpeyGmXUbC6wb7ERfvrnKZjXoUmmDznezpbZb7ap6r1D3tgFxHmwMkQTPH/0/0/*))` describes a set of *1-of-2* P2WSH multisig outputs where one multisig key is the *1/0/`i`* child of the first specified xpub and the other multisig key is the *0/0/`i`* child of the second specified xpub, and `i` is any number in a configurable range (`0-1000` by default). The order of public keys in the resulting witnessScripts is determined by the lexicographic order of the public keys at that index.
58
+
-`tr(c6047f9441ed7d6d3045406e95c07cd85c778e4b8cef3ca7abac09b95c709ee5,{pk(fff97bd5755eeea420453a14355235d382f6472f8568a18b2f057a1460297556),pk(e493dbf1c10d80f3581e4904930b1404cc6c13900ee0758474fa94abe8c4cd13)})` describes a P2TR output with the `c6...` x-only pubkey as internal key, and two script paths.
57
59
58
60
## Reference
59
61
60
62
Descriptors consist of several types of expressions. The top level expression is either a `SCRIPT`, or `SCRIPT#CHECKSUM` where `CHECKSUM` is an 8-character alphanumeric descriptor checksum.
61
63
62
64
`SCRIPT` expressions:
63
65
-`sh(SCRIPT)` (top level only): P2SH embed the argument.
64
-
-`wsh(SCRIPT)` (not inside another 'wsh'): P2WSH embed the argument.
66
+
-`wsh(SCRIPT)` (top level or inside `sh` only): P2WSH embed the argument.
65
67
-`pk(KEY)` (anywhere): P2PK output for the given public key.
66
-
-`pkh(KEY)` (anywhere): P2PKH output for the given public key (use `addr` if you only know the pubkey hash).
67
-
-`wpkh(KEY)` (not inside `wsh`): P2WPKH output for the given compressed pubkey.
68
+
-`pkh(KEY)` (not inside `tr`): P2PKH output for the given public key (use `addr` if you only know the pubkey hash).
69
+
-`wpkh(KEY)` (top level or inside `sh` only): P2WPKH output for the given compressed pubkey.
68
70
-`combo(KEY)` (top level only): an alias for the collection of `pk(KEY)` and `pkh(KEY)`. If the key is compressed, it also includes `wpkh(KEY)` and `sh(wpkh(KEY))`.
-`sortedmulti(k,KEY_1,KEY_2,...,KEY_n)` (not inside `tr`): k-of-n multisig script with keys sorted lexicographically in the resulting script.
73
+
-`tr(KEY)` or `tr(KEY,TREE)` (top level only): P2TR output with the specified key as internal key, and optionally a tree of script paths.
71
74
-`addr(ADDR)` (top level only): the script which ADDR expands to.
72
75
-`raw(HEX)` (top level only): the script whose hex encoding is HEX.
73
76
@@ -80,12 +83,17 @@ Descriptors consist of several types of expressions. The top level expression is
80
83
- Followed by the actual key, which is either:
81
84
- Hex encoded public keys (either 66 characters starting with `02` or `03` for a compressed pubkey, or 130 characters starting with `04` for an uncompressed pubkey).
82
85
- Inside `wpkh` and `wsh`, only compressed public keys are permitted.
86
+
- Inside `tr`, x-only pubkeys are also permitted (64 hex characters).
83
87
-[WIF](https://en.bitcoin.it/wiki/Wallet_import_format) encoded private keys may be specified instead of the corresponding public key, with the same meaning.
84
88
-`xpub` encoded extended public key or `xprv` encoded extended private key (as defined in [BIP 32](https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki)).
85
89
- Followed by zero or more `/NUM` unhardened and `/NUM'` hardened BIP32 derivation steps.
86
90
- Optionally followed by a single `/*` or `/*'` final step to denote all (direct) unhardened or hardened children.
87
91
- The usage of hardened derivation steps requires providing the private key.
88
92
93
+
`TREE` expressions:
94
+
- any `SCRIPT` expression
95
+
- An open brace `{`, a `TREE` expression, a comma `,`, a `TREE` expression, and a closing brace `}`
96
+
89
97
(Anywhere a `'` suffix is permitted to denote hardened derivation, the suffix `h` can be used instead.)
90
98
91
99
`ADDR` expressions are any type of supported address:
0 commit comments