officinebitcoin.it

This project is maintained by valerio-vaccaro

Descriptors

Descriptors are a relatively new concept and not yet very widespread, but useful for describing Bitcoin wallet structure. Descriptors are readable character strings (alphanumeric, hexadecimal, and some symbols like parentheses), designed to represent clearly and in a standardized way a wallet, i.e., the set of public and private keys necessary to calculate balances, receive and spend Bitcoin.

Evolution of wallet management

To contextualize descriptors, the speaker traces the evolution of wallets:

The mnemonic alone is not enough, especially for complex wallets like multisig (which require multiple signatures) or those with advanced scripts (e.g., timelock or inheritance conditions). Some wallets try all possible derivations to find funds, while others (e.g., Electrum) require specifying the wallet type. In multisig, moreover, the public keys of other participants are needed, further complicating backup.

What are Descriptors and why they are needed

Descriptors were born to overcome these limitations, offering a complete and flexible description of wallet structure. They don’t replace the mnemonic, but integrate it, including:

Practical examples

Descriptors and Taproot

An interesting case is the descriptor for Taproot (tr), which supports two spending modes:

Advantages of Descriptors

Limitations and compatibility

Not all wallets fully support descriptors. For example, Bitcoin Core only implements a subset and requires two separate descriptors for addresses and change. Software like Sparrow or Specter offer better support, allowing import/export of descriptors and visualization of their structure.

Experiments can be done with:

References

Program

This lesson was created for a Satoshi Spritz Connect.