From 72f90f1d63313ebedf1a4e85d2e72bf380033f2c Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Tue, 21 Dec 2021 22:08:21 -0800 Subject: [PATCH] Upgrade bdk to 0.14.0 --- Cargo.toml | 2 +- src/bdk.udl | 8 ++++---- src/lib.rs | 26 ++++++++++++-------------- 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 226774e..a40d79d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["staticlib", "cdylib"] name = "bdkffi" [dependencies] -bdk = { version = "0.13", features = ["all-keys", "use-esplora-ureq"] } +bdk = { version = "0.14", features = ["all-keys", "use-esplora-ureq"] } uniffi_macros = "0.14.1" uniffi = "0.16.0" thiserror = "1.0" diff --git a/src/bdk.udl b/src/bdk.udl index 0597368..bde407e 100644 --- a/src/bdk.udl +++ b/src/bdk.udl @@ -1,6 +1,6 @@ namespace bdk { [Throws=BdkError] - ExtendedKeyInfo generate_extended_key(Network network, MnemonicType mnemonic_type, string? password); + ExtendedKeyInfo generate_extended_key(Network network, WordCount word_count, string? password); [Throws=BdkError] ExtendedKeyInfo restore_extended_key(Network network, string mnemonic, string? password); }; @@ -73,7 +73,7 @@ dictionary TransactionDetails { string txid; }; -dictionary Confirmation { +dictionary BlockTime { u32 height; u64 timestamp; }; @@ -81,7 +81,7 @@ dictionary Confirmation { [Enum] interface Transaction { Unconfirmed(TransactionDetails details); - Confirmed(TransactionDetails details, Confirmation confirmation); + Confirmed(TransactionDetails details, BlockTime confirmation); }; interface OfflineWallet { @@ -158,7 +158,7 @@ dictionary ExtendedKeyInfo { string fingerprint; }; -enum MnemonicType { +enum WordCount { "Words12", "Words15", "Words18", diff --git a/src/lib.rs b/src/lib.rs index d88d7d6..087143d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,11 +8,11 @@ use bdk::blockchain::{ }; use bdk::database::any::{AnyDatabase, SledDbConfiguration}; use bdk::database::{AnyDatabaseConfig, ConfigurableDatabase}; -use bdk::keys::bip39::{Language, Mnemonic, MnemonicType}; +use bdk::keys::bip39::{Language, Mnemonic, WordCount}; use bdk::keys::{DerivableKey, ExtendedKey, GeneratableKey, GeneratedKey}; use bdk::miniscript::BareCtx; use bdk::wallet::AddressIndex; -use bdk::{ConfirmationTime, Error, FeeRate, SignOptions, Wallet}; +use bdk::{BlockTime, Error, FeeRate, SignOptions, Wallet}; use std::convert::TryFrom; use std::str::FromStr; use std::sync::{Mutex, MutexGuard}; @@ -69,8 +69,6 @@ pub struct TransactionDetails { pub txid: String, } -type Confirmation = ConfirmationTime; - #[derive(Debug, Clone, PartialEq, Eq)] pub enum Transaction { Unconfirmed { @@ -78,7 +76,7 @@ pub enum Transaction { }, Confirmed { details: TransactionDetails, - confirmation: Confirmation, + confirmation: BlockTime, }, } @@ -96,9 +94,9 @@ impl From<&bdk::TransactionDetails> for TransactionDetails { impl From<&bdk::TransactionDetails> for Transaction { fn from(x: &bdk::TransactionDetails) -> Transaction { match x.confirmation_time.clone() { - Some(confirmation) => Transaction::Confirmed { + Some(block_time) => Transaction::Confirmed { details: TransactionDetails::from(x), - confirmation, + confirmation: block_time, }, None => Transaction::Unconfirmed { details: TransactionDetails::from(x), @@ -128,7 +126,7 @@ trait OfflineWalletOperations: WalletHolder { self.get_wallet().get_balance() } - fn sign<'a>(&self, psbt: &'a PartiallySignedBitcoinTransaction) -> Result<(), Error> { + fn sign(&self, psbt: &PartiallySignedBitcoinTransaction) -> Result<(), Error> { let mut psbt = psbt.internal.lock().unwrap(); let finalized = self.get_wallet().sign(&mut psbt, SignOptions::default())?; match finalized { @@ -278,12 +276,12 @@ impl OnlineWallet { .sync(BdkProgressHolder { progress_update }, max_address_param) } - fn broadcast<'a>( + fn broadcast( &self, - psbt: &'a PartiallySignedBitcoinTransaction, + psbt: &PartiallySignedBitcoinTransaction, ) -> Result { let tx = psbt.internal.lock().unwrap().clone().extract_tx(); - self.get_wallet().broadcast(tx)?; + self.get_wallet().broadcast(&tx)?; Ok(Transaction::from(&psbt.details)) } } @@ -304,11 +302,11 @@ pub struct ExtendedKeyInfo { fn generate_extended_key( network: Network, - mnemonic_type: MnemonicType, + word_count: WordCount, password: Option, ) -> Result { let mnemonic: GeneratedKey<_, BareCtx> = - Mnemonic::generate((mnemonic_type, Language::English)).unwrap(); + Mnemonic::generate((word_count, Language::English)).unwrap(); let mnemonic = mnemonic.into_key(); let xkey: ExtendedKey = (mnemonic.clone(), password).into_extended_key()?; let xprv = xkey.into_xprv(network).unwrap(); @@ -325,7 +323,7 @@ fn restore_extended_key( mnemonic: String, password: Option, ) -> Result { - let mnemonic = Mnemonic::from_phrase(mnemonic.as_ref(), Language::English).unwrap(); + let mnemonic = Mnemonic::parse_in(Language::English, mnemonic).unwrap(); let xkey: ExtendedKey = (mnemonic.clone(), password).into_extended_key()?; let xprv = xkey.into_xprv(network).unwrap(); let fingerprint = xprv.fingerprint(&Secp256k1::new());