aboutsummaryrefslogtreecommitdiff
path: root/doc/descriptors.md
AgeCommit message (Collapse)Author
2022-08-25doc: add `{import,list}descriptors` to list of descriptor RPCsSebastian Falbesoner
2022-07-19Add rawtr() descriptor for P2TR with unknown tweakPieter Wuille
2022-03-04Merge bitcoin/bitcoin#24043: Add (sorted)multi_a descriptor for k-of-n ↵Andrew Chow
multisig inside tr 4828d53eccd52a67631c64cef0ba7df90dff138d Add (sorted)multi_a descriptors to doc/descriptors.md (Pieter Wuille) b5f33ac1f82aea290b4653af36ac2ad1bf1cce7b Simplify wallet_taproot.py functional test (Pieter Wuille) eb0667ea96d52db9135514a5e95ab943f6abd8a6 Add tests for (sorted)multi_a derivation/signing (Pieter Wuille) c17c6aa08df81aa0086d80b50187c8cd60ecc222 Add signing support for (sorted)multi_a scripts (Pieter Wuille) 3eed6fca57d1fa7544f372e6e7de0a9ae1b5715a Add multi_a descriptor inference (Pieter Wuille) 79728c4a3d8a74f276daf1e72abbdecdab85a5d8 Add (sorted)multi_a descriptor and script derivation (Pieter Wuille) 25e95f9ff89a97b87ce218f28274c3c821b2d54d Merge/generalize IsValidMultisigKeyCount/GetMultisigKeyCount (Pieter Wuille) Pull request description: This adds a new `multi_a(k,key_1,key_2,...,key_n)` (and corresponding `sortedmulti_a`) descriptor for k-of-n policies inside `tr()`. Semantically it is very similar to the existing `multi()` descriptor, but with the following changes: * The corresponding script is `<key1> OP_CHECKSIG <key2> OP_CHECKSIGADD <key3> OP_CHECKSIGADD ... <key_n> OP_CHECKSIGADD <k> OP_NUMEQUAL`, rather than the traditional `OP_CHECKMULTISIG`-based script, making it usable inside the `tr()` descriptor. * The keys can optionally be specified in x-only notation. * Both the number of keys and the threshold can be as high as 999; this is the limit due to the consensus stacksize=1000 limit I expect that this functionality will later be replaced with a miniscript-based implementation, but I don't think it's necessary to wait for that. Limitations: * The wallet code will for not estimate witness size incorrectly for script path spends, which may result in a (dramatic) fee underpayment with large multi_a scripts. * The multi_a script construction is (slightly) suboptimal for n-of-n (where a `<key1> OP_CHECKSIGVERIFY ... <key_n-1> OP_CHECKSIGVERIFY <key_n> OP_CHECKSIG` would be better). Such a construction is not included here. ACKs for top commit: achow101: ACK 4828d53eccd52a67631c64cef0ba7df90dff138d gruve-p: ACK https://github.com/bitcoin/bitcoin/pull/24043/commits/4828d53eccd52a67631c64cef0ba7df90dff138d sanket1729: code review ACK 4828d53eccd52a67631c64cef0ba7df90dff138d darosior: Code review ACK 4828d53eccd52a67631c64cef0ba7df90dff138d Tree-SHA512: 5dcd434b79585f0ff830f7d501d27df5e346f5749f47a3109ec309ebf2cbbad0e1da541eec654026d911ab67fd7cf7793fab0f765628d68d81b96ef2a4d234ce
2022-02-07docs: Move explanation of hardened key syntax closer to KEY sectionBitcoin Hodler
Before 7cedafc5412857404e9a6c3450b100cb8ee4081a added the TREE section, this line appeared right after the KEY section. It doesn't really fit in its former location since it's the KEY section that discusses derivation path syntax, not the TREE section.
2022-01-12Add (sorted)multi_a descriptors to doc/descriptors.mdPieter Wuille
2021-10-18Merge bitcoin/bitcoin#22067: Test and document a basic M-of-N multisig using ↵W. J. van der Laan
descriptor wallets and PSBTs 9de0d94508828f5fdfaf688ccda5a91d38b32c58 doc: add disclaimer highlighting shortcomings of the basic multisig example (Michael Dietz) f9479e4626f6b5126ff8cdab3a7e718c609429ef test, doc: basic M-of-N multisig minor cleanup and clarifications (Michael Dietz) e05cd0546a155afcd45c43ce730c4abecd40dfed doc: add another signing flow for multisig with descriptor wallets and PSBTs (Michael Dietz) 17dd6573008c8aca9fc0da9419225c85a4f94330 doc: M-of-N multisig using descriptor wallets and PSBTs, as well as a signing flow (Michael Dietz) 1f20501efce041d34e63ab9a11359bedf4a82cd5 test: add functional test for multisig flow with descriptor wallets and PSBTs (Michael Dietz) Pull request description: Aims to resolve issue https://github.com/bitcoin/bitcoin/issues/21278. I try to follow the steps laanwj outlined there exactly, with the exception of using `combinepsbt` instead of `joinpsbts`. I wrote a functional test to make sure it works as expected before doing the docs, and figured it would also be a good source of documentation. So I kept the test as simple as possible and didn't go crazy with edge-cases and various checks. I do have a lot more test-cases I've written that I will follow up with (either in a separate PR or another commit - lmk if you have a preference), but I want to do it in a way that doesn't bloat this test so it remains useful as a quickstart (unless that's a bad idea)? ACKs for top commit: S3RK: Code review ACK 9de0d94. Rspigler's argument convinced me that we should leave the workflow with two wallets. I assume using multisig with external signers is a popular use-case and it's important to keep compatibility. laanwj: Code and documentation review ACK 9de0d94508828f5fdfaf688ccda5a91d38b32c58 Tree-SHA512: 6c76e787c21f09d8be5eaa11f3ca3eaa4868497824050562bdfb2095c73b90f5e8987a8775119891d6bfde586e3f31ad1b13e4b67b0802e1d23ef050227a1211
2021-09-03doc: add disclaimer highlighting shortcomings of the basic multisig exampleMichael Dietz
2021-09-03test, doc: basic M-of-N multisig minor cleanup and clarificationsMichael Dietz
wallet_multisig_descriptor_psbt.py is refactored in this commit. While behavior doesn't change we do cleanup the way wallets are accessed throughout the test as this is done a lot for the various signers and their multisigs. We also get rid of some shallow methods and instead inline them for improved readability. descriptors.md is improved to be more explicit about which wallet (ie the signer or multisig) is required for each step.
2021-08-30doc: mention bech32m/BIP350 in doc/descriptors.mdPieter Wuille
2021-08-16doc: add another signing flow for multisig with descriptor wallets and PSBTsMichael Dietz
2021-08-16doc: M-of-N multisig using descriptor wallets and PSBTs, as well as a ↵Michael Dietz
signing flow
2021-05-24Add tr() descriptor (derivation only, no signing)Pieter Wuille
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.
2021-02-07docs: correctly identify script typelisa neigut
fixes a typo
2020-11-06docs/descriptors.md: Remove hardened marker in the path after xpubDmitry Petukhov
As described in "Key origin identification" section, a descriptor that has hardened derivation after xpub does not let you compute scripts without access to the corresponding private keys. Such a descriptor is practically useless. The text after the descriptor said "with child key *1'/2* of the specified xpub", and clearly an xpub cannot have "child key" with hardened derivation. Therefore it makes sense to fix this inconsistency to not confuse the reader of the doc
2020-01-30Output a descriptor in createmultisig and addmultisigaddressAndrew Chow
2020-01-30Add missing supported rpcs to doc/descriptors.mdAndrew Toth
2019-10-08Update descriptors.md to include sortedmultiAndrew Chow
2019-04-06Mention new descriptor RPCs in descriptors.mdPieter Wuille
2019-02-15Add checksums to descriptors.mdPieter Wuille
2018-11-22A few minor formatting fixes and clarifications to descriptors.mdJohn Newbery
2018-10-20Update documentation to incude origin informationPieter Wuille
2018-10-17descriptors.md: Refer to descriptors as describing instead of matchingRussell Yanofsky
2018-09-06doc/descriptors.md tweaksRussell Yanofsky
Add some implementation details, and tweak phrasing in examples section to be more explicit about how script expressions are used for matching.
2018-09-05Add descriptor reference documentationPieter Wuille