New descriptor type system capable of supporting tapret commitments #62
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Some time ago Bitcoin Core wallet introduced output descriptors, which are the way to define a collection of bitcoin transaction output managed by certain wallet.
These descriptors gained traction, since they solved a couple of problems:
Descriptors were extended with a miniscript - a language which can be used in some parts of the descriptors to deterministically define a complex bitcoin scripts and satisfy them in an automatic way. While miniscript has unlocked wallets beyond simple multisigs (but also having timelocks etc) and for sure has provided utility of automatic satisfaction for complex scripts (much better PSBT signers for instance), it doesn't cover all of the cases required:
Taproot softfork - and upcoming introduction of MuSig2 standard have also put a requirement to extend descriptors further. Right now there is an ongoing work with a proposal by P. Wuille, which is gradually get implemented in Bitcoin Core.
RGB puts a requirement for another extension - support for tapret commitments, which has not being addressed yet even as a proposal.
There is only a single implementation of descriptor functionality in rust bitcoin world, which is a part of rust-miniscript library, tightly related and build on top of miniscript itself. It has a significant drawbacks which prevent its use in LNP/BP and RGB wallets as of today and tomorrow:
This PR aims at introducing a new descriptors API supporting both miniscript and non-miniscript bitcoin scripts, future Taproot extensions and Tapret commitments.