rust-bitcoin / rust-miniscript

Support for Miniscript and Output Descriptors for rust-bitcoin
Creative Commons Zero v1.0 Universal
344 stars 135 forks source link

Descriptor::parse_descriptor is hard to discover #716

Open apoelstra opened 1 month ago

apoelstra commented 1 month ago

If you have a descriptor string containing secret keys, it's super non-obvious how to parse this. You can type from_str into docs.rs but nothing will come up. You can type parse and the Descriptor::parse_descriptor method does show up in the list, but there's nothing in the name indicating that it's for secret-key descriptors (and the word "secret" doesn't appear til late in the description so you need a wide screen for it to show up).

As a further thing, it kinda sucks that you can't just parse and re-serialize secret-key-containing descriptors without needing a secp context and doing all the secret key derivations.

I think both API issues would be solved by introducing a SecretDescriptor type which can be parsed/reserialized and converted to/from a (Descriptor, KeyMap) pair, and nothing else.

apoelstra commented 1 month ago

cc @thunderbiscuit who asked how to parse secret keys at the rust-bitcoin meetup and it took me 5 minutes to figure it out