From a6db009f48c528854af7d355d0974bbcc9955f38 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Mon, 11 May 2026 10:12:39 -0400 Subject: [PATCH 1/6] docs: fix changelog links --- CHANGELOG.md | 60 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00f14b59..dbf174d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,12 +28,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - Exposed `new_sh`, `new_wsh`,`new_bare` and `new_sh_wsh` methods on `Descriptor` type [#988] [#853]: https://github.com/bitcoindevkit/bdk-ffi/pull/853 -[#853]: https://github.com/bitcoindevkit/bdk-ffi/pull/945 -[#853]: https://github.com/bitcoindevkit/bdk-ffi/pull/949 -[#986]: https://github.com/bitcoindevkit/bdk-ffi/pull/971 -[#986]: https://github.com/bitcoindevkit/bdk-ffi/pull/973 +[#945]: https://github.com/bitcoindevkit/bdk-ffi/pull/945 +[#949]: https://github.com/bitcoindevkit/bdk-ffi/pull/949 +[#971]: https://github.com/bitcoindevkit/bdk-ffi/pull/971 +[#973]: https://github.com/bitcoindevkit/bdk-ffi/pull/973 [#986]: https://github.com/bitcoindevkit/bdk-ffi/pull/986 -[#986]: https://github.com/bitcoindevkit/bdk-ffi/pull/988 +[#988]: https://github.com/bitcoindevkit/bdk-ffi/pull/988 ## [v2.3.0] @@ -48,24 +48,36 @@ This is version `2.3.0` of the BDK language bindings! This release uses the foll ### Added -- Expose `Wallet::apply_update_events` which returns a `WalletEvent` type #908 -- Expose `Psbt::output` which returns a list of psbt `Output` #903 -- `Other` variant added to CBF `RecoveryPoint` to enable wallet birthdays #920 -- Implement `Display` trait for `FeeRate` #859 -- Expose `FeeRate::fee_vb` and `FeeRate::fee_wu` methods #859 -- Wallet API: expose `TxBuilder::only_witness_utxo` and `TxBuilder::add_foreign_utxo` #928 -- Esplora API: expose `get_block_by_hash` which returns a `Block` #936 -- Esplora API: expose `get_tip_hash` #930 -- Esplora API: expose `get_header_by_hash` #930 -- Esplora API: expose `get_address_txs` #930 -- Esplora API: expose `get_tx_no_opt` #930 -- Esplora API: expose `get_txid_at_block_index` #930 -- Esplora API: expose `get_merkle_proof` and `get_output_status` #942 -- Electrum API: expose `fetch_tx` #931 -- Electrum API: expose `block_header` #931 -- Electrum API: expose `block_headers_pop` #931 -- Electrum API: expose `relay_fee` and `transaction_get_raw` #938 -- DerivationPath: expose `child`, `extend`, and `to_u32_vec` #935 +- Expose `Wallet::apply_update_events` which returns a `WalletEvent` type [#908] +- Expose `Psbt::output` which returns a list of psbt `Output` [#903] +- `Other` variant added to CBF `RecoveryPoint` to enable wallet birthdays [#920] +- Implement `Display` trait for `FeeRate` [#859] +- Expose `FeeRate::fee_vb` and `FeeRate::fee_wu` methods [#859] +- Wallet API: expose `TxBuilder::only_witness_utxo` and `TxBuilder::add_foreign_utxo` [#928] +- Esplora API: expose `get_block_by_hash` which returns a `Block` [#936] +- Esplora API: expose `get_tip_hash` [#930] +- Esplora API: expose `get_header_by_hash` [#930] +- Esplora API: expose `get_address_txs` [#930] +- Esplora API: expose `get_tx_no_opt` [#930] +- Esplora API: expose `get_txid_at_block_index` [#930] +- Esplora API: expose `get_merkle_proof` and `get_output_status` [#942] +- Electrum API: expose `fetch_tx` [#931] +- Electrum API: expose `block_header` [#931] +- Electrum API: expose `block_headers_pop` [#931] +- Electrum API: expose `relay_fee` and `transaction_get_raw` [#938] +- DerivationPath: expose `child`, `extend`, and `to_u32_vec` [#935] + +[#859]: https://github.com/bitcoindevkit/bdk-ffi/pull/859 +[#903]: https://github.com/bitcoindevkit/bdk-ffi/pull/903 +[#908]: https://github.com/bitcoindevkit/bdk-ffi/pull/908 +[#920]: https://github.com/bitcoindevkit/bdk-ffi/pull/920 +[#928]: https://github.com/bitcoindevkit/bdk-ffi/pull/928 +[#930]: https://github.com/bitcoindevkit/bdk-ffi/pull/930 +[#931]: https://github.com/bitcoindevkit/bdk-ffi/pull/931 +[#935]: https://github.com/bitcoindevkit/bdk-ffi/pull/935 +[#936]: https://github.com/bitcoindevkit/bdk-ffi/pull/936 +[#938]: https://github.com/bitcoindevkit/bdk-ffi/pull/938 +[#942]: https://github.com/bitcoindevkit/bdk-ffi/pull/942 ## [v2.2.0] @@ -298,6 +310,7 @@ This release updates the `bdk-ffi` libraries to the latest `bdk_wallet` `1.0.0-b [#623]: https://github.com/bitcoindevkit/bdk-ffi/pull/623 [#625]: https://github.com/bitcoindevkit/bdk-ffi/pull/625 [#629]: https://github.com/bitcoindevkit/bdk-ffi/pull/629 +[#630]: https://github.com/bitcoindevkit/bdk-ffi/pull/630 [#645]: https://github.com/bitcoindevkit/bdk-ffi/pull/645 ## [v1.0.0-beta.5] @@ -617,6 +630,7 @@ This release has a number of new APIs, and adds support for Windows in bdk-jvm. [#154]: https://github.com/bitcoindevkit/bdk-ffi/pull/154 [#184]: https://github.com/bitcoindevkit/bdk-ffi/pull/184 [#185]: https://github.com/bitcoindevkit/bdk-ffi/pull/185 +[#186]: https://github.com/bitcoindevkit/bdk-ffi/pull/186 [#193]: https://github.com/bitcoindevkit/bdk-ffi/pull/193 ## [v0.8.0] From a8ff523698121a283b54493624db37f4268e3e6b Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Mon, 11 May 2026 10:13:33 -0400 Subject: [PATCH 2/6] chore: bump libraries to 3.0.0 release candidate 1 --- bdk-android/lib/build.gradle.kts | 2 +- bdk-ffi/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bdk-android/lib/build.gradle.kts b/bdk-android/lib/build.gradle.kts index 9532a1f9..38da7c59 100644 --- a/bdk-android/lib/build.gradle.kts +++ b/bdk-android/lib/build.gradle.kts @@ -12,7 +12,7 @@ plugins { } group = "org.bitcoindevkit" -version = "2.4.0-SNAPSHOT" +version = "3.0.0-RC1" android { namespace = group.toString() diff --git a/bdk-ffi/Cargo.toml b/bdk-ffi/Cargo.toml index 4eb2ad12..5c3a347d 100644 --- a/bdk-ffi/Cargo.toml +++ b/bdk-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bdk-ffi" -version = "3.0.0-alpha.0" +version = "3.0.0-rc.1" homepage = "https://bitcoindevkit.org" repository = "https://github.com/bitcoindevkit/bdk" edition = "2018" From 918efa7d45dbc4edd2e80b3a91f6e7be3a776c79 Mon Sep 17 00:00:00 2001 From: rustaceanrob Date: Tue, 12 May 2026 13:20:08 +0100 Subject: [PATCH 3/6] Update `bdk_kyoto` to `0.17.0` With the release of `bitcoin = 0.32.9` there was a backport that unexplainably broke the P2P layer of Kyoto. This fixes the `bitcoin` version at `0.32.8` in the meantime while I investigate the behavior. --- bdk-ffi/Cargo.lock | 8 ++++---- bdk-ffi/Cargo.toml | 2 +- bdk-ffi/src/kyoto.rs | 17 +++++++++-------- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/bdk-ffi/Cargo.lock b/bdk-ffi/Cargo.lock index 27d4526c..13b4270f 100644 --- a/bdk-ffi/Cargo.lock +++ b/bdk-ffi/Cargo.lock @@ -176,9 +176,9 @@ dependencies = [ [[package]] name = "bdk_kyoto" -version = "0.16.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa6765bbb7d82c0b99ddd13d583b1157137b9e6a6ba3593bbbf75897599f3895" +checksum = "346c1d502ee4613cf2201db9c3b93a2317772d8eaa372114f34bf5f374be94fd" dependencies = [ "bdk_wallet", "bip157", @@ -207,9 +207,9 @@ checksum = "32637268377fc7b10a8c6d51de3e7fba1ce5dd371a96e342b34e6078db558e7f" [[package]] name = "bip157" -version = "0.4.2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8af7987396c76633777e335345347395cd383b46bd95c1534691ab717859482e" +checksum = "b0baddc6c57202ec7bb76d2232aa243f8f529c4450bb873d55349f4d55ce94a2" dependencies = [ "bip324", "bitcoin", diff --git a/bdk-ffi/Cargo.toml b/bdk-ffi/Cargo.toml index 5c3a347d..e4e96562 100644 --- a/bdk-ffi/Cargo.toml +++ b/bdk-ffi/Cargo.toml @@ -18,7 +18,7 @@ path = "uniffi-bindgen.rs" bdk_wallet = { version = "=3.0.0", features = ["all-keys", "keys-bip39", "rusqlite"] } bdk_esplora = { version = "0.22.1", default-features = false, features = ["std", "blocking", "blocking-https-rustls"] } bdk_electrum = { version = "0.23.2", default-features = false, features = ["use-rustls-ring"] } -bdk_kyoto = { version = "0.16.0" } +bdk_kyoto = { version = "0.17.0" } uniffi = { version = "=0.30.0", features = ["cli"]} thiserror = "2.0.17" diff --git a/bdk-ffi/src/kyoto.rs b/bdk-ffi/src/kyoto.rs index f88469ba..11f583c2 100644 --- a/bdk-ffi/src/kyoto.rs +++ b/bdk-ffi/src/kyoto.rs @@ -1,3 +1,4 @@ +use bdk_kyoto::bip157; use bdk_kyoto::bip157::lookup_host; use bdk_kyoto::bip157::tokio; use bdk_kyoto::bip157::AddrV2; @@ -6,7 +7,7 @@ use bdk_kyoto::bip157::Node; use bdk_kyoto::bip157::ServiceFlags; use bdk_kyoto::builder::Builder as BDKCbfBuilder; use bdk_kyoto::builder::BuilderExt; -use bdk_kyoto::HeaderCheckpoint; +use bdk_kyoto::HashCheckpoint; use bdk_kyoto::Receiver; use bdk_kyoto::RejectReason; use bdk_kyoto::Requester; @@ -196,25 +197,25 @@ impl CbfBuilder { if !matches!(network, Network::Bitcoin) { bdk_kyoto::ScanType::Recovery { used_script_index, - checkpoint: HeaderCheckpoint::from_genesis(network), + checkpoint: HashCheckpoint::from_genesis(network), } } else { match checkpoint { RecoveryPoint::GenesisBlock => bdk_kyoto::ScanType::Recovery { used_script_index, - checkpoint: HeaderCheckpoint::from_genesis(wallet.network()), + checkpoint: HashCheckpoint::from_genesis(wallet.network()), }, RecoveryPoint::SegwitActivation => bdk_kyoto::ScanType::Recovery { used_script_index, - checkpoint: HeaderCheckpoint::segwit_activation(), + checkpoint: HashCheckpoint::segwit_activation(), }, RecoveryPoint::TaprootActivation => bdk_kyoto::ScanType::Recovery { used_script_index, - checkpoint: HeaderCheckpoint::taproot_activation(), + checkpoint: HashCheckpoint::taproot_activation(), }, RecoveryPoint::Other { birthday } => bdk_kyoto::ScanType::Recovery { used_script_index, - checkpoint: HeaderCheckpoint::new(birthday.height, birthday.hash.0), + checkpoint: HashCheckpoint::new(birthday.height, birthday.hash.0), }, } } @@ -302,9 +303,9 @@ impl CbfClient { /// Broadcast a transaction to the network, erroring if the node has stopped running. pub async fn broadcast(&self, transaction: &Transaction) -> Result, CbfError> { - let tx = transaction.into(); + let tx: bip157::Transaction = transaction.into(); self.sender - .broadcast_tx(tx) + .submit_package(tx) .await .map_err(From::from) .map(|wtxid| Arc::new(Wtxid(wtxid))) From a373931e8564c0175fb671d82ee07459d52e99d8 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Tue, 12 May 2026 09:36:32 -0400 Subject: [PATCH 4/6] docs: finalize changelog entry for 3.0.0 --- CHANGELOG.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dbf174d4..8930d6da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,16 @@ Changelog information can also be found in each release's git tag (which can be The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased](https://github.com/bitcoindevkit/bdk-ffi/compare/v2.3.0...HEAD) +## [v3.0.0] + +This is version `3.0.0` of the BDK language bindings! This release uses the following Rust dependencies: + +- bdk_wallet `3.0.0` +- bdk_electrum `0.23.2` +- bdk_esplora `0.22.1` +- bdk_kyoto `0.17.0` +- bitcoin `0.32.8` +- uniffi `0.30.0` ## Breaking @@ -697,6 +706,7 @@ This release has a number of new APIs, and adds support for Windows in bdk-jvm. [BIP 0174]:https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki#encoding +[v3.0.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v2.3.0...v3.0.0 [v2.3.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v2.2.0...v2.3.0 [v2.2.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v2.0.0...v2.2.0 [v2.0.0]: https://github.com/bitcoindevkit/bdk-ffi/compare/v1.2.0...v2.0.0 From b9f3c7cf2dc683144e2083ca0f8d4f598abfa96e Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Thu, 14 May 2026 14:15:29 -0400 Subject: [PATCH 5/6] chore: bump libraries to 3.0.0 release candidate 2 --- bdk-android/lib/build.gradle.kts | 2 +- bdk-ffi/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bdk-android/lib/build.gradle.kts b/bdk-android/lib/build.gradle.kts index 38da7c59..ca528e2b 100644 --- a/bdk-android/lib/build.gradle.kts +++ b/bdk-android/lib/build.gradle.kts @@ -12,7 +12,7 @@ plugins { } group = "org.bitcoindevkit" -version = "3.0.0-RC1" +version = "3.0.0-RC2" android { namespace = group.toString() diff --git a/bdk-ffi/Cargo.toml b/bdk-ffi/Cargo.toml index e4e96562..0f620045 100644 --- a/bdk-ffi/Cargo.toml +++ b/bdk-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bdk-ffi" -version = "3.0.0-rc.1" +version = "3.0.0-rc.2" homepage = "https://bitcoindevkit.org" repository = "https://github.com/bitcoindevkit/bdk" edition = "2018" From a10d6685f94141d8565cc4d20e44cffeab77d222 Mon Sep 17 00:00:00 2001 From: thunderbiscuit Date: Wed, 20 May 2026 10:32:06 -0400 Subject: [PATCH 6/6] build: update cargo lockfile --- bdk-ffi/Cargo.lock | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/bdk-ffi/Cargo.lock b/bdk-ffi/Cargo.lock index 13b4270f..9ef4f515 100644 --- a/bdk-ffi/Cargo.lock +++ b/bdk-ffi/Cargo.lock @@ -119,7 +119,7 @@ dependencies = [ [[package]] name = "bdk-ffi" -version = "3.0.0-alpha.0" +version = "3.0.0-rc.2" dependencies = [ "assert_matches", "bdk_electrum", @@ -409,9 +409,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.61" +version = "1.2.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +checksum = "a1dce859f0832a7d088c4f1119888ab94ef4b5d6795d1ce05afb7fe159d79f98" dependencies = [ "find-msvc-tools", "shlex", @@ -616,9 +616,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.17.0" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" [[package]] name = "hashlink" @@ -672,7 +672,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", + "hashbrown 0.17.1", "serde", "serde_core", ] @@ -1218,9 +1218,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.2" +version = "1.52.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "110a78583f19d5cdb2c5ccf321d1290344e71313c6c37d43520d386027d18386" +checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" dependencies = [ "bytes", "libc", @@ -1272,7 +1272,7 @@ version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.2", + "winnow 1.0.3", ] [[package]] @@ -1661,9 +1661,9 @@ dependencies = [ [[package]] name = "winnow" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" [[package]] name = "wit-bindgen"