Output Script Descriptor (with Miniscript) support
Output Script Descriptor are a sane standard for wallet backups. They express all the information necessary to locate owned (or partially owned) outputs in an engineer-readable format, avoiding the pitfalls of previously used implicit hacks to recover only from a mnemonic.
Miniscript is an extension to Output Script Descriptors, which defines a language to reason about a subset of Script. Miniscript allows to:
- Safely write more complicated contracts than the basic well-known templates
- Produce a valid witness for any Script that is a valid Miniscript, given the necessary material (signature, etc)
- Statically analyse the properties of any Script that is a valid Miniscript: determine the semantics of the contract, whether it is non-malleable, whether some spending paths may exceed standardness or consensus limits --in short, whether it's safe to participate in such a Script.
Miniscript also guarantees consensus soundness (unless the conditions of the Miniscript are met, no witness can be created for the Script) and standardness completeness (for any Miniscript that was analysed as sane, a witness can be constructed in the bounds of the consensus and standardness rules).
Output Script Descriptors along with Miniscript are particularly appealing to signing devices, as it permits the user of this device to safely take part in more complex contracts. It also gives a framework to add support for new Scripts, instead of relying on hard-coded Script templates and footgun-y backup solutions.
Output descriptors have been in Bitcoin Core for a while now, and Miniscript was merged into Bitcoin Core mainline this year. The Specter signing device added support for Output descriptors and Miniscript more than a year ago. Ledger added support for (a subset of) output descriptors last year and is currently working toward Miniscript support. Is there any plan to implement to implement Output Script Descriptors (with Miniscript) for the Bitbox2?
Note that libwally is implementing Miniscript and Output Descriptors, since it is already a dependency of this project it would very likely not be necessary to re-implement it here.
Hi
Do you know of any user wallets where descriptors with miniscript can be imported and used?
Are there compelling use cases for end users?
I'd love to add support for it, but we are stretched thin demand for this seems very low at the moment.