From: Vihiga Tyonum Date: Tue, 30 Jun 2026 12:39:52 +0000 (+0100) Subject: feat(wallet-3.1.0): Update Wallet to v3.1.0 X-Git-Tag: v4.0.0~5^2~7 X-Git-Url: http://internal-gitweb-vhost/blockdata/script/encode/-script/ui-kit/struct.EncoderStringWriter.html?a=commitdiff_plain;h=d89a08d3f6f323da6ff9faf676d2a7a75642aca9;p=bdk-cli feat(wallet-3.1.0): Update Wallet to v3.1.0 - Update bdk_wallet to v3.1.0 - Replaced Network enum with NetworkKind - Replaced `include_output_redeem_witness_script` with `add_global_xpubs` - update bdk_redb to v0.2.0 --- diff --git a/Cargo.lock b/Cargo.lock index 40ec3dc..9425b2e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -255,7 +255,7 @@ dependencies = [ "bdk_redb", "bdk_sp", "bdk_testenv", - "bdk_wallet", + "bdk_wallet 3.1.0", "clap", "clap_complete", "cli-table", @@ -283,7 +283,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "262ee5f0c1056400b354391cabc541cb732c10488679de6389641e37f7e6c698" dependencies = [ - "bdk_wallet", + "bdk_wallet 2.1.0", "bitcoin", ] @@ -300,9 +300,9 @@ dependencies = [ [[package]] name = "bdk_chain" -version = "0.23.2" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5d691fd092aacec7e05046b7d04897d58d6d65ed3152cb6cf65dababcfabed" +checksum = "c290eff038799a8ac0c5a82b6160a9ca456baa299a6f22b262c771342d2846c0" dependencies = [ "bdk_core", "bitcoin", @@ -313,9 +313,9 @@ dependencies = [ [[package]] name = "bdk_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dbbe4aad0c898bfeb5253c222be3ea3dccfb380a07e72c87e3e4ed6664a6753" +checksum = "cb3028782f6bf14a6df987244333d34e6b272b5a40a53e4879ec2dfd82275a3a" dependencies = [ "bitcoin", "hashbrown 0.14.5", @@ -350,18 +350,18 @@ version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f35b9f8b3aa8c4647bec7a92b050c496742d955e0ac1edcb4e7c2deabf63c54" dependencies = [ - "bdk_wallet", + "bdk_wallet 2.1.0", "bip157", ] [[package]] name = "bdk_redb" -version = "0.1.1" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c21112531eccdcb15c120d6c39f704b0c733b12a3dff6bcce106984ca9f1011" +checksum = "69ac8b88c9594c615fcb5b763e7afa16937e94f7a7f5ca334bf59a7fee69fea1" dependencies = [ "bdk_chain", - "bdk_wallet", + "bdk_wallet 3.1.0", "ciborium", "redb", "thiserror 2.0.18", @@ -390,6 +390,20 @@ name = "bdk_wallet" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d30b5dba770184863b5d966ccbc6a11d12c145450be3b6a4435308297e6a12dc" +dependencies = [ + "bdk_chain", + "bitcoin", + "miniscript", + "rand_core 0.6.4", + "serde", + "serde_json", +] + +[[package]] +name = "bdk_wallet" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1284fb23acc3e3022673712b55f4d5ce7e38aadc2c49bbef830dc3935f0a3289" dependencies = [ "bdk_chain", "bip39", diff --git a/Cargo.toml b/Cargo.toml index 2295d66..c3c6938 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ readme = "README.md" license = "MIT" [dependencies] -bdk_wallet = { version = "2.1.0", features = ["rusqlite", "keys-bip39", "compiler", "std"] } +bdk_wallet = { version = "3.1.0", features = ["rusqlite", "keys-bip39", "compiler", "std"] } clap = { version = "4.6", features = ["derive","env"] } clap_complete = "4.6" dirs = { version = "6.0.0" } @@ -32,7 +32,7 @@ bdk_bitcoind_rpc = { version = "0.21.0", features = ["std"], optional = true } bdk_electrum = { version = "0.23.2", optional = true } bdk_esplora = { version = "0.22.1", features = ["async-https", "tokio"], optional = true } bdk_kyoto = { version = "0.15.4", optional = true } -bdk_redb = { version = "0.1.1", optional = true } +bdk_redb = { version = "0.2.0", optional = true } bdk_sp = { version = "0.1.0", optional = true, git = "https://github.com/bitcoindevkit/bdk-sp", tag = "v0.1.0" } shlex = { version = "1.3.0", optional = true } payjoin = { version = "=1.0.0-rc.1", features = ["v1", "v2", "io", "_test-utils"], optional = true} diff --git a/src/handlers/descriptor.rs b/src/handlers/descriptor.rs index 1396c88..d76d47f 100644 --- a/src/handlers/descriptor.rs +++ b/src/handlers/descriptor.rs @@ -49,12 +49,12 @@ impl AppCommand> for DescriptorCommand { match &self.key { Some(key) => { if is_mnemonic(key) { - generate_descriptor_from_mnemonic(key, ctx.network, &self.desc_type) + generate_descriptor_from_mnemonic(key, ctx.network.into(), &self.desc_type) } else { - generate_descriptors(&self.desc_type, key, ctx.network) + generate_descriptors(&self.desc_type, key, ctx.network.into()) } } - None => generate_descriptor_with_mnemonic(ctx.network, &self.desc_type), + None => generate_descriptor_with_mnemonic(ctx.network.into(), &self.desc_type), } } } diff --git a/src/handlers/key.rs b/src/handlers/key.rs index ce8c844..ebff8a7 100644 --- a/src/handlers/key.rs +++ b/src/handlers/key.rs @@ -60,7 +60,7 @@ impl AppCommand> for GenerateKeyCommand { .map_err(|_| Error::Generic("Mnemonic generation error".to_string()))?; let mnemonic = mnemonic.into_key(); let xkey: ExtendedKey = (mnemonic.clone(), self.password.clone()).into_extended_key()?; - let xprv = xkey.into_xprv(ctx.network).ok_or_else(|| { + let xprv = xkey.into_xprv(ctx.network.into()).ok_or_else(|| { Error::Generic("Privatekey info not found (should not happen)".to_string()) })?; let fingerprint = xprv.fingerprint(&secp); @@ -143,7 +143,7 @@ impl AppCommand> for RestoreKeyCommand { let mnemonic = Mnemonic::parse_in(Language::English, &self.mnemonic)?; let xkey: ExtendedKey = (mnemonic.clone(), &self.password).0.into_extended_key()?; - let xprv = xkey.into_xprv(ctx.network).ok_or_else(|| { + let xprv = xkey.into_xprv(ctx.network.into()).ok_or_else(|| { Error::Generic("Privatekey info not found (should not happen)".to_string()) })?; let fingerprint = xprv.fingerprint(&secp); diff --git a/src/handlers/offline.rs b/src/handlers/offline.rs index 92b1f33..5af69b5 100644 --- a/src/handlers/offline.rs +++ b/src/handlers/offline.rs @@ -259,7 +259,7 @@ impl AppCommand>> for CreateTxCommand { } if self.offline_signer { - tx_builder.include_output_redeem_witness_script(); + tx_builder.add_global_xpubs(); } if let Some(fee_rate) = self.fee_rate @@ -414,7 +414,7 @@ impl AppCommand>> for CreateSpTxCommand { tx_builder.set_exact_sequence(Sequence::MAX); if self.offline_signer { - tx_builder.include_output_redeem_witness_script(); + tx_builder.add_global_xpubs(); } if let Some(fee_rate) = self.fee_rate @@ -576,7 +576,7 @@ impl AppCommand>> for BumpFeeCommand { } if self.offline_signer { - tx_builder.include_output_redeem_witness_script(); + tx_builder.add_global_xpubs(); } if let Some(utxos) = &self.utxos { diff --git a/src/utils/descriptors.rs b/src/utils/descriptors.rs index 04391e5..f068986 100644 --- a/src/utils/descriptors.rs +++ b/src/utils/descriptors.rs @@ -6,7 +6,7 @@ use bdk_wallet::{ KeychainKind, bip39::{Language, Mnemonic}, bitcoin::{ - Network, + NetworkKind, bip32::{DerivationPath, Xpriv, Xpub}, secp256k1::Secp256k1, }, @@ -25,7 +25,7 @@ use crate::utils::types::KeychainPair; pub fn generate_descriptors( desc_type: &str, key: &str, - network: Network, + network: NetworkKind, ) -> Result { let is_private = key.starts_with("xprv") || key.starts_with("tprv"); @@ -40,7 +40,7 @@ pub fn generate_descriptors( _ => 84u32, }; let coin_type = match network { - Network::Bitcoin => 0u32, + NetworkKind::Main => 0u32, _ => 1u32, }; let derivation_path = DerivationPath::from_str(&format!("m/{purpose}h/{coin_type}h/0h"))?; @@ -52,7 +52,7 @@ pub fn generate_descriptors( fn generate_private_descriptors( desc_type: &str, key: &str, - network: Network, + network: NetworkKind, ) -> Result { use bdk_wallet::template::{Bip44, Bip49, Bip84, Bip86}; @@ -166,7 +166,7 @@ pub fn build_public_descriptor( /// Generate new mnemonic and descriptors pub fn generate_descriptor_with_mnemonic( - network: Network, + network: NetworkKind, desc_type: &str, ) -> Result { let mnemonic: GeneratedKey = @@ -183,7 +183,7 @@ pub fn generate_descriptor_with_mnemonic( /// Generate descriptors from existing mnemonic pub fn generate_descriptor_from_mnemonic( mnemonic_str: &str, - network: Network, + network: NetworkKind, desc_type: &str, ) -> Result { let mnemonic = Mnemonic::parse_in(Language::English, mnemonic_str)?;