Repository navigation
Revise Simplicity descriptors #108
Description
Activity
Yeah, concept ACK removing Simplicity policies for now (but leaving
asmwhich can be used for testing and to keep the two libraries integrated).For
descriptor::SimplicityLeaf<Pk>I'd prefer this be an alternate Tapleaf type rather than a top-level descriptor type. We may need to remove Simplicity, rebase this whole library (or at least the Taproot stuff) on a recent rust-miniscript, and then restore Simplicity to do this.Reacted by Kyrylo RiabovIs rust-miniscript ready? (I mean, is there any pending work that could impact Simplicity descriptors?)
Yeah :/ we're in the middle of a pretty significant refactor of how we validate various "sanity" rules, and in the middle of a long-term project to remove recursion from the library, and we have 100+ LLM-reported issues to sift through.
Having said this, I suggest:
- We update to miniscript 13.1, the latest release.
- We replace our expression.rs module with calls to the rust-miniscript expression module which was designed with this library in mind and hopefully should just drop into place, and give us much saner Taproot parsing logic. (Its API will change in Miniscript 14 to handle validationparams, but we'll deal with that when it's released, which will be several months at least).
- We then copy the Taproot module from rust-miniscript master.
- Then we add the Simplicity branch
We can defer doing a wholesale rust-miniscript update, probably until we're past the rust-bitcoin 1.0 hump.
Reacted by Kyrylo RiabovCool, thx
- Remove Simplicity descriptors, minscript 13.1 bump #110 -> We update to miniscript 13.1, the latest release.
- Replace current expression.rs module with calls to the rust-miniscript's expression module #112 -> We replace our expression.rs module with calls to the rust-miniscript expression module.
- TBD-> We then copy the Taproot module from rust-miniscript master.
- TBD -> Then we add the Simplicity branch
After recent years of updates to rust-simplicity and SimplicityHL, imo, it is not feasible to get Simplicity descriptors with policies back to life from the get-go, so instead we can take an iterative approach
First pack of changes that I would propose:
sim{asm(CMR)}and do not acceptsim{POLICY}syntax anymore (for the time being)descriptor::SimplicityLeaf<Pk>(Pk here is for future iteration for programs like P2PK, multisigs (?))simplicity-langcrate