Output descriptors are a standard way to describe what scripts/keys a wallet controls. Miniscript helps compile human policies into safe Script fragments.
Complete Step 1 // Required reading in the study plan above, then continue here.
Step 2 — Core idea: portable policy, not path folklore
“m/84'/0'/0'” alone is incomplete if you forget whether you meant wpkh, tr, multisig, or a custom tree. Descriptors make imports, hardware coordination, and recoveries unambiguous.
Analogy: A descriptor is a precise parts list and assembly diagram for your locks. Miniscript is a grammar that prevents you from building a lock that jams shut forever.
wpkh([fingerprint/84h/1h/0h]tpub.../0/*)
tr([fingerprint/86h/1h/0h]tpub.../0/*)
wsh(multi(2,key1,key2,key3))Bitcoin Core RPCs like importdescriptors and listdescriptors operationalize this.
Loading diagram…
Done when: You can read a wpkh(...) / tr(...) line and say what locking condition it describes.
Step 3 — Try it: getdescriptorinfo (lab)
bitcoin-cli -regtest getdescriptorinfo "wpkh(tpubD6NzVbkrYhZ4XgiXtGrdW5XDAPFCL9h7we1vwNCpn8tZpoxq8n3nS8/0/*)"
# Or after creating a wallet:
bitcoin-cli -regtest listdescriptors(Use a throwaway/example key material — never paste real mainnet xpubs into shared notes.)
Common mistakes
- Exporting xpubs without origin info / fingerprints
- Mixing receive and change descriptor chains
- Assuming Miniscript supports every opcode policy you can imagine
Done when: Lab evidence (RPC excerpt + commitment sentence + source link) is complete.
Next lesson
Bitcoin Core & RPC — drive the reference node for wallets, chain, and tests.