How bitcoindevkit/bdk_wallet works
BDK is a Rust descriptor-based Bitcoin wallet library. An application configures descriptors and keys, creates a Wallet, supplies chain data, derives addresses and wallet state, builds and signs transactions, and persists changes. The graph preserves documented chain-source and storage integrations as external optional services. Source excerpts and the index support several internal calls; links based only on README-level capability descriptions are cited there. Some implementation details, especially chain-data ingestion and persistence adapters, were not sampled.
Main entry points: wallet/mod.rs Wallet API · descriptor/mod.rs Descriptor handling · tx_builder.rs Transaction builder · changeset.rs Wallet changes
Components 23
Wallet state
- Wallet API
src/wallet/mod.rs - Wallet setup
src/wallet/params.rs - Wallet output types
src/types.rs
Descriptors and keys
- Descriptor handling
src/descriptor/mod.rs - Descriptor DSL
src/descriptor/dsl.rs - Descriptor templates
src/descriptor/template.rs - Spending policies
src/descriptor/policy.rs - Descriptor checksums
src/descriptor/checksum.rs - Key handling
src/keys/mod.rs - Mnemonic keys
src/keys/bip39.rs
Transaction lifecycle
- Transaction builder
src/wallet/tx_builder.rs - Coin selection
src/wallet/coin_selection.rs - PSBT utilities
src/psbt/mod.rs - PSBT parameters
src/psbt/params.rs - Transaction signing
src/wallet/signer.rs
Persistence and events
- Wallet changes
src/wallet/changeset.rs - Persisted wallet
src/wallet/persisted.rs - Wallet migration
src/wallet/migration.rs - Wallet events
src/wallet/event.rs - Wallet export
src/wallet/export.rs
Other components
- Bitcoin application
- Chain source clients
- External storage
Connections 27
- Bitcoin application → Wallet setup: configures
README.md - Wallet setup → Wallet API: creates
README.md - Wallet API → Descriptor handling: uses
src/wallet/mod.rs - Descriptor DSL → Descriptor handling: constructs
src/descriptor/dsl.rs - Descriptor templates → Descriptor handling: builds
src/descriptor/template.rs - Descriptor handling → Key handling: uses
src/descriptor/mod.rs - Mnemonic keys → Key handling: derives
src/keys/bip39.rs - Descriptor handling → Descriptor checksums: checks
src/descriptor/checksum.rs - Wallet API → Spending policies: extracts policy
src/wallet/mod.rs - Wallet API → Chain source clients: consumes chain data
README.md - Wallet API → Wallet output types: tracks outputs
src/wallet/mod.rs - Bitcoin application → Wallet API: requests addresses
README.md - Bitcoin application → Transaction builder: builds transactions
README.md - Transaction builder → Coin selection: selects inputs
src/wallet/tx_builder.rs - Transaction builder → Descriptor handling: uses descriptors
src/wallet/tx_builder.rs - Transaction builder → PSBT utilities: creates PSBT
src/wallet/mod.rs - PSBT utilities → PSBT parameters: exposes parameters
src/psbt/mod.rs - Bitcoin application → Transaction signing: signs transactions
README.md - Wallet API → Transaction signing: uses signers
src/descriptor/mod.rs - Wallet API → Wallet changes: records changes
src/wallet/mod.rs - Wallet API → Wallet events: emits events
src/wallet/event.rs - Wallet API → Wallet export: exports wallet
src/wallet/export.rs - Wallet API → Wallet migration: supports migration
src/wallet/mod.rs - Bitcoin application → Persisted wallet: loads or saves
README.md - Persisted wallet → Wallet changes: persists
- Bitcoin application → External storage: configures storage
README.md - External storage → Wallet changes: reads and writes
README.md