2026 Q3 Update: What Have We Been Up To?¶
thunderbiscuit
Oct 1, 2026
Q3 2026 was a quarter of building on the 3.0 foundation. bdk_wallet 3.2.0 starts the move to caller-owned keys by deprecating the wallet-owned signing APIs, and ships an early look at a new PSBT building API powered by bdk-tx. Our Dart bindings reached a stable 1.0, bdk-cli hit 4.0 with experimental silent payments support, and two members of the team gave talks at bitcoin++ in Toronto.
Here are some of the notable releases and changes over Q3 to the software libraries we maintain:
- Release 3.2.0 of
bdk_wallet: signing moves to caller-owned keys. This release deprecates the wallet-owned signing APIs:Wallet::{add_signer, set_keymap, set_keymaps, get_signers, sign, policies},CreateParams::keymap,LoadParams::{keymap, extract_keys}, andTxBuilder::policy_path. Going forward, the wallet no longer needs to hold your keys: sign withbitcoin::Psbt::sign, or withWallet::sign_with_signersif you needSignOptions, and choose spending conditions with the newTxBuilder::set_condition. The Book of BDK has release notes for 3.2 and a migration guide for the deprecated signing APIs. - An early look at
Wallet::create_psbt. Also in 3.2.0,Wallet::create_psbtandWallet::replace_by_feebring thebdk-txtransaction building API into the wallet, withPsbtParamsand aSelectionStrategyenum for coin selection. The API is gated behind thebdk-txfeature and the--cfg bdk_wallet_unstablerustc flag, so we can iterate on it before stabilizing; the Book of BDK walks through how to enable and use it. If you build transactions with BDK, now is a great time to try it and tell us what you think. bdk-dart1.0.0 is out! After two more release candidates this quarter (rc.3 and rc.4), our Dart/Flutter bindings shipped their first stable release. Built on bdk-ffi 3.1.0, it brings the new wallet creation and loading params, two-path descriptor wallets,Wallet.signWithSigners, coin selection on theTxBuilder, and fee-rate-limited PSBT extraction to Flutter developers. Native builds are now reproducible, and publishing to pub.dev is automated from release tags.- Release 3.1.0 of the language bindings. bdk-ffi 3.1.0 updates Swift, Kotlin, Android, JVM, and Python to
bdk_wallet3.1.0 andbdk_kyoto0.17.1. New APIs includeWallet::sign_with_signers, wallet create and load params, two-path descriptor wallet loading,Wallet::keychains,TxBuildercoin selection, public descriptor conversion,Psbt::extract_tx_with_fee_rate_limit, Electrum client params, and an option to restrict Kyoto to your configured peers. It also hardens a number of edge cases, like rejecting trailing bytes when decoding transactions and rejecting invalid transaction builder current heights. - Release 4.0.0 of
bdk-cli. This release of our sample command line wallet is a big one: experimental support for creating silent payment transactions, BIP-353 DNS payment instructions, newlock_utxo/unlock_utxo/locked_utxoscommands, generic message signing, and randomization of the unspendable internal key for taproot descriptors. Async payjoin sessions are now persisted to SQLite, so an interrupted session can be resumed. The project structure was refactored to make adding new commands easier, integration tests were added, and the wallet API was updated to 3.1.0. - Silent payments keep maturing. Our silent payments crate published
bdk_sp0.2.0 to crates.io, rejecting eligible inputs without private keys when sending. Work since then on master enforces the BIP-352K_maxper-group recipient limit when scanning, acceptstsprecipients on Signet and Testnet4, and adds a full send-and-scan example. On the chain source side,electrum_streaming_clientgained support for Electrum protocol v1.6 and for Frigate's silent payments RPC methods, laying the groundwork for server-assisted silent payment scanning. - Taint-aware balances in
bdk_chain. Landed on master this quarter and not yet released, a rework ofCanonicalView::balancederives trust from an output's whole unconfirmed ancestry, so an owned output descending from a foreign unconfirmed coin is no longer counted as trusted. It addsCanonicalView::classify_outpoints, theEligibilityenum, and a newBalance::unknown_pendingbucket, and replacesmin_confirmationswith a more generalis_settledpredicate.ChainPosition::confirmations_lower_boundalso landed. These are breaking changes, so expect them in the next major release ofbdk_chain. - Release 0.13.0 of
rust-esplora-client. The 0.13.0 release moves both the blocking and async clients ontobitreq, updates the broadcast API, switches all weight fields tobitcoin::Weight, and relicenses the crate under MIT/Apache-2.0. - Release 0.17.1 of
bdk-kyoto. This patch release of our compact block filters chain source makesupdatecancel safe, so dropping the future mid-sync no longer loses data. - Release 0.3.0 of
rust-cktap. This release of our Coinkite TAPSIGNER and SATSCARD library adds counterfeit TAPSIGNER detection and preserves the card nonce after an invalid signature. It includes a few breaking changes to integer types in its API. - Release 0.2.0 of
bdk-message-signer. Our message signing library was upgraded frombdk_wallet2.x to 3.1.0. Note thatbdk_wallettypes appear in its public API, so downstream users need to be onbdk_wallet3.x to use this release. - Example wallets and React Native. The DevKit Wallet went all in on compact block filters: it recovers from genesis on a wallet's first boot, lets you set custom peers, and now shows node status, chain tip, and connected peer count on its node screen. The BDK Swift Example Wallet moved to bdk-swift 3.1.0. Over in
bdk-rn, the library is tracking bdk-ffi 3.1, runs its test suite on an Android emulator in CI, and is getting ready to publish to npm with prebuilt binaries. - Security reporting. We made sure we added
SECURITY.mdfiles to all our libraries and a link to the GitHub security advisory so vulnerabilities can be reported to us privately across the org.
Triaging Bug Reports¶
We've been receiving a number of AI-generated bug reports, and a good share of the team's time this quarter has gone into triaging them. Some turn out to be duplicates or non-issues, but others point at real bugs, and we're taking those seriously. We'll be working through the confirmed ones in priority order, with the most impactful fixes first, so keep an eye out for bug fix releases across our libraries in the coming weeks and months.
Our Grantees in Action¶
The team was at bitcoin++ Toronto, the conference's consensus edition, held July 22–24. Two talks from the team:
- Matthew Ramsden presented "BDK Expanding: From Rust Core to Mobile Wallets" on July 22, on how BDK reaches the places mobile wallets actually ship: Swift, Kotlin, and in 2026 the newer Dart and React Native libraries. Watch the presentation on Youtube.
- thunderbiscuit presented "Compact Block Filters for Users and Wallet Developers" on the main stage on July 23, a practical look at integrating compact block filter syncing into mobile and server applications using BDK and the Kyoto light client, including the storage and bandwidth costs involved. Watch the presentation on Youtube.