From: thunderbiscuit Date: Mon, 31 Aug 2026 20:14:40 +0000 (-0400) Subject: blog: publish 2026 Q3 update blog post X-Git-Url: http://internal-gitweb-vhost/-script/src/blockdata/script/encode/struct.Script.html?a=commitdiff_plain;ds=inline;p=bitcoindevkit.org blog: publish 2026 Q3 update blog post --- diff --git a/.gitignore b/.gitignore index 6b30aa4f30..df72f295c3 100644 --- a/.gitignore +++ b/.gitignore @@ -2,5 +2,5 @@ backup/ .venv/ site/ .cache/ - +.claude/ .DS_Store diff --git a/docs/blog/posts/2026_q3_update.md b/docs/blog/posts/2026_q3_update.md new file mode 100644 index 0000000000..40e7afc36b --- /dev/null +++ b/docs/blog/posts/2026_q3_update.md @@ -0,0 +1,44 @@ +--- +draft: false +date: 2026-10-01 +categories: + - Update +--- + +# 2026 Q3 Update: What Have We Been Up To? + +:lucide-pen-tool:   [`thunderbiscuit`](https://github.com/thunderbiscuit) +:lucide-calendar-1:   `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](https://github.com/bitcoindevkit/bdk_wallet/releases/tag/v3.2.0) [deprecates the wallet-owned signing APIs](https://github.com/bitcoindevkit/bdk_wallet/pull/505): `Wallet::{add_signer, set_keymap, set_keymaps, get_signers, sign, policies}`, `CreateParams::keymap`, `LoadParams::{keymap, extract_keys}`, and `TxBuilder::policy_path`. Going forward, the wallet no longer needs to hold your keys: sign with `bitcoin::Psbt::sign`, or with `Wallet::sign_with_signers` if you need `SignOptions`, and choose spending conditions with the new `TxBuilder::set_condition`. The Book of BDK has [release notes for 3.2](https://bookofbdk.com/release-guide/3.2/notes/) and a [migration guide for the deprecated signing APIs](https://bookofbdk.com/release-guide/3.2/signing-deprecation/). +- **An early look at `Wallet::create_psbt`.** Also in 3.2.0, [`Wallet::create_psbt` and `Wallet::replace_by_fee`](https://github.com/bitcoindevkit/bdk_wallet/pull/516) bring the [`bdk-tx`](https://github.com/bitcoindevkit/bdk-tx) transaction building API into the wallet, with `PsbtParams` and a `SelectionStrategy` enum for coin selection. The API is gated behind the `bdk-tx` feature and the `--cfg bdk_wallet_unstable` rustc flag, so we can iterate on it before stabilizing; the Book of BDK [walks through how to enable and use it](https://bookofbdk.com/release-guide/3.2/create-psbt/). If you build transactions with BDK, now is a great time to try it and tell us what you think. +- **`bdk-dart` 1.0.0 is out!** After two more release candidates this quarter ([rc.3](https://github.com/bitcoindevkit/bdk-dart/releases/tag/v1.0.0-rc.3) and [rc.4](https://github.com/bitcoindevkit/bdk-dart/releases/tag/v1.0.0-rc.4)), our Dart/Flutter bindings shipped [their first stable release](https://github.com/bitcoindevkit/bdk-dart/releases/tag/v1.0.0). 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 the `TxBuilder`, 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](https://github.com/bitcoindevkit/bdk-ffi/releases/tag/v3.1.0) updates Swift, Kotlin, Android, JVM, and Python to `bdk_wallet` 3.1.0 and `bdk_kyoto` 0.17.1. New APIs include `Wallet::sign_with_signers`, wallet create and load params, two-path descriptor wallet loading, `Wallet::keychains`, `TxBuilder` coin 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](https://github.com/bitcoindevkit/bdk-cli/releases/tag/v4.0.0) of our sample command line wallet is a big one: experimental support for creating silent payment transactions, BIP-353 DNS payment instructions, new `lock_utxo`/`unlock_utxo`/`locked_utxos` commands, 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](https://github.com/bitcoindevkit/bdk-sp) published [`bdk_sp` 0.2.0](https://crates.io/crates/bdk_sp) to crates.io, rejecting eligible inputs without private keys when sending. Work since then on master enforces the BIP-352 `K_max` per-group recipient limit when scanning, accepts `tsp` recipients on Signet and Testnet4, and adds a full send-and-scan example. On the chain source side, [`electrum_streaming_client`](https://github.com/bitcoindevkit/electrum_streaming_client) gained support for Electrum protocol v1.6 and for [Frigate's silent payments RPC methods](https://github.com/bitcoindevkit/electrum_streaming_client/pull/16), 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 of `CanonicalView::balance`](https://github.com/bitcoindevkit/bdk/pull/2246) derives 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 adds `CanonicalView::classify_outpoints`, the `Eligibility` enum, and a new `Balance::unknown_pending` bucket, and replaces `min_confirmations` with a more general `is_settled` predicate. [`ChainPosition::confirmations_lower_bound`](https://github.com/bitcoindevkit/bdk/pull/2263) also landed. These are breaking changes, so expect them in the next major release of `bdk_chain`. +- **Release 0.13.0 of `rust-esplora-client`.** [The 0.13.0 release](https://github.com/bitcoindevkit/rust-esplora-client/releases/tag/v0.13.0) moves both the blocking and async clients onto `bitreq`, updates the broadcast API, switches all weight fields to `bitcoin::Weight`, and relicenses the crate under MIT/Apache-2.0. +- **Release 0.17.1 of `bdk-kyoto`.** [This patch release](https://crates.io/crates/bdk_kyoto/0.17.1) of our compact block filters chain source makes [`update` cancel safe](https://github.com/bitcoindevkit/bdk-kyoto/pull/163), so dropping the future mid-sync no longer loses data. +- **Release 0.3.0 of `rust-cktap`.** [This release](https://github.com/bitcoindevkit/rust-cktap/releases/tag/rust-cktap-v0.3.0) 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](https://github.com/bitcoindevkit/bdk-message-signer/releases/tag/v.0.2.0) was upgraded from `bdk_wallet` 2.x to 3.1.0. Note that `bdk_wallet` types appear in its public API, so downstream users need to be on `bdk_wallet` 3.x to use this release. +- **Example wallets and React Native.** The [DevKit Wallet](https://github.com/bitcoindevkit/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](https://github.com/bitcoindevkit/BDKSwiftExampleWallet) moved to bdk-swift 3.1.0. Over in [`bdk-rn`](https://github.com/bitcoindevkit/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.md` files 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](https://btcpp.dev/toronto), the conference's consensus edition, held July 22–24. Two talks from the team: + +- [Matthew Ramsden](https://github.com/reez) 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](https://www.youtube.com/watch?v=ngm8zjH5JDQ). +- [thunderbiscuit](https://github.com/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](https://www.youtube.com/watch?v=zVhe8gpgEww).