diff --git a/side-node/src/bitcoin/clients/electrum.rs b/side-node/src/bitcoin/clients/electrum.rs index a4a0a9a..47a8d76 100644 --- a/side-node/src/bitcoin/clients/electrum.rs +++ b/side-node/src/bitcoin/clients/electrum.rs @@ -1,13 +1,10 @@ use crate::{bitcoin, utils}; use bdk::bitcoin::psbt::PartiallySignedTransaction; -use bdk::bitcoin::Network; use bdk::database::MemoryDatabase; -use bdk::keys::ExtendedKey; -use bdk::template::Bip84; -use bdk::wallet::AddressIndex::{self, New}; -use bdk::wallet::AddressInfo; +use bdk::wallet::AddressIndex::New; +use bdk::wallet::{AddressIndex, AddressInfo}; use bdk::{blockchain::ElectrumBlockchain, electrum_client, SyncOptions}; -use bdk::{FeeRate, KeychainKind, SignOptions, TransactionDetails, Wallet}; +use bdk::{FeeRate, SignOptions, TransactionDetails, Wallet}; /// DEPRECATED /// @@ -24,8 +21,8 @@ pub async fn run() -> Result<(), anyhow::Error> { let dave_key = bitcoin::keys::load_from_file(&dave).unwrap(); let sammy_key = bitcoin::keys::load_from_file(&sammy).unwrap(); - let dave_wallet = create_wallet(dave_key)?; - let sammy_wallet = create_wallet(sammy_key)?; + let dave_wallet = bitcoin::clients::create_wallet(dave_key)?; + let sammy_wallet = bitcoin::clients::create_wallet(sammy_key)?; let dave_address = dave_wallet.get_address(AddressIndex::Peek(0))?.to_string(); let sammy_address = sammy_wallet.get_address(AddressIndex::Peek(0))?.to_string(); @@ -57,24 +54,24 @@ pub async fn run() -> Result<(), anyhow::Error> { Ok(()) } -/// Create a BDK wallet using BIP 84 descriptor ("m/84h/1h/0h/0" and "m/84h/1h/0h/1") -pub fn create_wallet(xkey: ExtendedKey) -> anyhow::Result> { - let xprv = xkey - .into_xprv(Network::Testnet) - .expect("couldn't turn xkey into xprv"); +// /// Create a BDK wallet using BIP 84 descriptor ("m/84h/1h/0h/0" and "m/84h/1h/0h/1") +// pub fn create_wallet(xkey: ExtendedKey) -> anyhow::Result> { +// let xprv = xkey +// .into_xprv(Network::Testnet) +// .expect("couldn't turn xkey into xprv"); - let external_descriptor = Bip84(xprv, KeychainKind::External); - let internal_descriptor = Some(Bip84(xprv, KeychainKind::Internal)); +// let external_descriptor = Bip84(xprv, KeychainKind::External); +// let internal_descriptor = Some(Bip84(xprv, KeychainKind::Internal)); - let wallet = Wallet::new( - external_descriptor, - internal_descriptor, - Network::Testnet, - MemoryDatabase::default(), - )?; +// let wallet = Wallet::new( +// external_descriptor, +// internal_descriptor, +// Network::Testnet, +// MemoryDatabase::default(), +// )?; - Ok(wallet) -} +// Ok(wallet) +// } fn display_balance(wallet: &Wallet) { println!( diff --git a/side-node/src/bitcoin/clients/mod.rs b/side-node/src/bitcoin/clients/mod.rs index 960b8ac..6748a03 100644 --- a/side-node/src/bitcoin/clients/mod.rs +++ b/side-node/src/bitcoin/clients/mod.rs @@ -1,2 +1,27 @@ +use bdk::{ + bitcoin::Network, database::MemoryDatabase, keys::ExtendedKey, template::Bip84, KeychainKind, + Wallet, +}; + +// Re-enable this if we want to use alongside a fullnode. pub mod electrum; pub mod esplora; + +/// Create a BDK wallet using BIP 84 descriptor ("m/84h/1h/0h/0" and "m/84h/1h/0h/1") +pub fn create_wallet(xkey: ExtendedKey) -> anyhow::Result> { + let xprv = xkey + .into_xprv(Network::Testnet) + .expect("couldn't turn xkey into xprv"); + + let external_descriptor = Bip84(xprv, KeychainKind::External); + let internal_descriptor = Some(Bip84(xprv, KeychainKind::Internal)); + + let wallet = Wallet::new( + external_descriptor, + internal_descriptor, + Network::Testnet, + MemoryDatabase::default(), + )?; + + Ok(wallet) +} diff --git a/side-node/src/lib.rs b/side-node/src/lib.rs index c367870..45a3c29 100644 --- a/side-node/src/lib.rs +++ b/side-node/src/lib.rs @@ -41,7 +41,7 @@ async fn setup(name: &String) -> SideNode { let side_dir = utils::home(name); let bft_crdt_keys = bft_crdt::keys::load_from_file(&side_dir); let keys = bitcoin::keys::load_from_file(&side_dir).unwrap(); - let bitcoin_wallet = bitcoin::clients::electrum::create_wallet(keys).unwrap(); + let bitcoin_wallet = bitcoin::clients::create_wallet(keys).unwrap(); let crdt = BaseCrdt::::new(&bft_crdt_keys); // Channels for internal communication, and a tokio task for stdin input diff --git a/side-node/tests/side_node.rs b/side-node/tests/side_node.rs index 18f597e..66d5816 100644 --- a/side-node/tests/side_node.rs +++ b/side-node/tests/side_node.rs @@ -39,7 +39,7 @@ async fn setup(_: &str) -> SideNode { let bft_crdt_keys = make_keypair(); let mnemonic_words = bitcoin::keys::make_mnemonic(); let keys = bitcoin::keys::get(mnemonic_words).unwrap(); - let bitcoin_wallet = bitcoin::clients::electrum::create_wallet(keys).unwrap(); + let bitcoin_wallet = bitcoin::clients::create_wallet(keys).unwrap(); let crdt = BaseCrdt::::new(&bft_crdt_keys); // Channels for internal communication, and a tokio task for stdin input