bitcoin-libraries-bdk

v2026.09.24

Bitcoin Dev Kit (BDK): high-level Rust wallet library. Descriptor-based wallets, multiple chain backends (Esplora, Electrum, RPC), PSBT, fee estimation, coin selection. Bindings to Swift / Kotlin / Python / Flutter. USE WHEN: building wallets in Rust or via BDK bindings, integrating descriptor wallets into apps.

GitHub
Install command
npx skhub add claude-dev-suite/bitcoin-libraries-bdk
Markdown
SKILL.md

BDK (Bitcoin Dev Kit)

High-level wallet library on top of rust-bitcoin + miniscript. Descriptor- first; modular chain backends.

Two repos, as of September 2026: github.com/bitcoindevkit/bdk_wallet holds the bdk_wallet crate (split out of the monorepo in April 2025), github.com/bitcoindevkit/bdk holds the chain crates (bdk_core, bdk_chain, bdk_esplora, bdk_electrum, bdk_bitcoind_rpc, bdk_file_store).

Install

# latest on crates.io as of September 2026
[dependencies]
bdk_wallet = "3.1"         # 3.1.0, June 2026; MSRV 1.85.0
bdk_esplora = "0.22"       # 0.22.2
bdk_electrum = "0.24"      # 0.24.0
bdk_bitcoind_rpc = "0.22"  # 0.22.0

The backend crates all depend on bdk_core 0.6.x, which is what bdk_wallet 3.1 pulls in via bdk_chain 0.23.x — pick versions from one release wave or the bdk_core types will not line up.

Quick example

use bdk_wallet::{Wallet, KeychainKind};
use bdk_wallet::bitcoin::Network;
use bdk_wallet::SignOptions;

let descriptor = "wpkh(xprv.../84h/0h/0h/0/*)";
let change_descriptor = "wpkh(xprv.../84h/0h/0h/1/*)";

let mut wallet = Wallet::create(descriptor, change_descriptor)
    .network(Network::Bitcoin)
    .create_wallet_no_persist()?;

// Sync with chain
let esplora = esplora_client::Builder::new("https://mempool.space/api").build_async()?;
let request = wallet.start_full_scan().build();
let update = esplora.full_scan(request, 5, 1).await?;
wallet.apply_update(update)?;

// Build a tx
let mut tx_builder = wallet.build_tx();
tx_builder.add_recipient(addr.script_pubkey(), Amount::from_sat(10_000));
let mut psbt = tx_builder.finish()?;

// Sign
wallet.sign(&mut psbt, SignOptions::default())?;
let tx = psbt.extract_tx()?;

What 3.0 added (April 2026)

  • Persistent UTXO locking — lock_outpoint / unlock_outpoint, backed by a new bdk_wallet_locked_outpoints SQLite table.
  • Structured wallet events — apply_update_events and friends return Vec<WalletEvent> (ChainTipChanged, TxConfirmed, TxUnconfirmed, TxReplaced, TxDropped).
  • NetworkKind adopted throughout the codebase.
  • Caravan wallet format import / export.
  • Migration utility for SQLite databases created before 1.0.

3.1 (June 2026) adds Wallet::sign_with_signers and LoadParams::two_path_descriptor. Teams not ready for 3.0 can take bdk_wallet 2.4.0 (April 2026), which backports the pre-1.0 SQLite migration helper and the event-tracking methods to the 2.x line.

Bindings

All generated from UniFFI bindings over bdk_wallet, so they expose the same API surface. Swift and Android ship out of the bdk-ffi repo; the rest were split into their own repos during Q3 2025 to make them easier to contribute to.

  • bdk-swift — iOS / macOS (in bdk-ffi).
  • bdk-android — Android / Kotlin (in bdk-ffi).
  • bdk-jvm — Kotlin / Java on the JVM (Maven Central).
  • bdk-python — Python on Linux / macOS / Windows (PyPI).
  • bdk-rn — TypeScript / React Native; v1.0.0 tagged May 2026 but never published to npm — npm bdk-rn is still 0.30.0 (November 2023) as of September 2026.
  • bdk-dart — Dart / Flutter; release candidates on pub.dev as of September 2026, 1.0 not yet cut.

bdk-ffi 3.1.0 (September 2026) is the current binding release carrying the 3.x API.

Chain backends

  • Esplora (HTTP REST).
  • Electrum (TCP / TLS).
  • Bitcoin Core RPC (bdk_bitcoind_rpc). For Core RPC outside a BDK wallet, see corepc/SKILL.md.
  • Compact filters (BIP157/158, via bdk-kyoto, 0.17.1 as of September 2026).

Each backend has its own start_full_scan / start_sync flow.

Use cases

  • Mobile wallets (iOS/Android via bindings).
  • Custom Bitcoin apps that need a battle-tested wallet engine.
  • Server-side wallet management (custodial backends).

Compared

AspectBDKrust-bitcoin onlyLDK
LevelHigh (wallet)Low (primitives)Lightning
DescriptorsNativeManualn/a
Coin selectionBuilt-inManualn/a
PersistencePluggableNonePluggable

Common pitfalls

  • Docs and tutorials pinned to 1.x: the crate has gone 1.0 (December 2024) → 2.0 (June 2025) → 3.0 (April 2026) → 3.1 (June 2026), so copy-pasted snippets are often two majors behind.
  • Persistence must match wallet version (incompatible across major versions). 3.0 adds a bdk_wallet_locked_outpoints SQLite table — a backwards-compatible migration, unlike earlier major bumps.
  • Async vs sync APIs: separate crates.

See also

Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/bitcoin/libraries/bdk

Default branch

main

Latest commit

9496306

Tree SHA

fe4e2f1