From 037fc27b7b59cc9b55d77d1524462f655ec5bf39 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Tue, 25 Jun 2024 13:31:02 +0100 Subject: [PATCH] Starting a refactor into more functional modules --- .idea/.gitignore | 5 +++++ .idea/modules.xml | 8 ++++++++ .idea/side.iml | 17 +++++++++++++++++ .idea/vcs.xml | 6 ++++++ .../bitcoin.rs => bitcoin/bitcoin_keys.rs} | 0 .../clients/btc_electrum_client.rs | 6 +++--- .../{ => bitcoin}/clients/btc_esplora_client.rs | 0 side-node/src/bitcoin/clients/mod.rs | 2 ++ side-node/src/bitcoin/mod.rs | 3 +++ side-node/src/clients/mod.rs | 2 -- side-node/src/init/mod.rs | 4 ++-- side-node/src/keys/mod.rs | 1 - side-node/src/lib.rs | 9 +++++---- side-node/tests/side_node.rs | 12 +++--------- 14 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/modules.xml create mode 100644 .idea/side.iml create mode 100644 .idea/vcs.xml rename side-node/src/{keys/bitcoin.rs => bitcoin/bitcoin_keys.rs} (100%) rename side-node/src/{ => bitcoin}/clients/btc_electrum_client.rs (95%) rename side-node/src/{ => bitcoin}/clients/btc_esplora_client.rs (100%) create mode 100644 side-node/src/bitcoin/clients/mod.rs create mode 100644 side-node/src/bitcoin/mod.rs diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..72a7bff --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/side.iml b/.idea/side.iml new file mode 100644 index 0000000..fdaf31c --- /dev/null +++ b/.idea/side.iml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/side-node/src/keys/bitcoin.rs b/side-node/src/bitcoin/bitcoin_keys.rs similarity index 100% rename from side-node/src/keys/bitcoin.rs rename to side-node/src/bitcoin/bitcoin_keys.rs diff --git a/side-node/src/clients/btc_electrum_client.rs b/side-node/src/bitcoin/clients/btc_electrum_client.rs similarity index 95% rename from side-node/src/clients/btc_electrum_client.rs rename to side-node/src/bitcoin/clients/btc_electrum_client.rs index 52167c2..15a2f9f 100644 --- a/side-node/src/clients/btc_electrum_client.rs +++ b/side-node/src/bitcoin/clients/btc_electrum_client.rs @@ -1,4 +1,4 @@ -use crate::{keys, utils}; +use crate::{ utils, bitcoin}; use bdk::bitcoin::psbt::PartiallySignedTransaction; use bdk::bitcoin::Network; use bdk::database::MemoryDatabase; @@ -21,8 +21,8 @@ use bdk::{FeeRate, KeychainKind, SignOptions, TransactionDetails, Wallet}; pub async fn run() -> Result<(), anyhow::Error> { let dave = utils::home(&"dave".to_string()); let sammy = utils::home(&"sammy".to_string()); - let dave_key = keys::bitcoin::load_from_file(&dave).unwrap(); - let sammy_key = keys::bitcoin::load_from_file(&sammy).unwrap(); + let dave_key = bitcoin::bitcoin_keys::load_from_file(&dave).unwrap(); + let sammy_key = bitcoin::bitcoin_keys::load_from_file(&sammy).unwrap(); let dave_wallet = create_wallet(dave_key)?; let sammy_wallet = create_wallet(sammy_key)?; diff --git a/side-node/src/clients/btc_esplora_client.rs b/side-node/src/bitcoin/clients/btc_esplora_client.rs similarity index 100% rename from side-node/src/clients/btc_esplora_client.rs rename to side-node/src/bitcoin/clients/btc_esplora_client.rs diff --git a/side-node/src/bitcoin/clients/mod.rs b/side-node/src/bitcoin/clients/mod.rs new file mode 100644 index 0000000..e24c49e --- /dev/null +++ b/side-node/src/bitcoin/clients/mod.rs @@ -0,0 +1,2 @@ +pub mod btc_electrum_client; +pub mod btc_esplora_client; diff --git a/side-node/src/bitcoin/mod.rs b/side-node/src/bitcoin/mod.rs new file mode 100644 index 0000000..59bf335 --- /dev/null +++ b/side-node/src/bitcoin/mod.rs @@ -0,0 +1,3 @@ +pub mod clients; +pub mod bitcoin_keys; + diff --git a/side-node/src/clients/mod.rs b/side-node/src/clients/mod.rs index 2c213cd..6eba44d 100644 --- a/side-node/src/clients/mod.rs +++ b/side-node/src/clients/mod.rs @@ -1,3 +1 @@ -pub mod btc_electrum_client; -pub mod btc_esplora_client; pub mod websocket; diff --git a/side-node/src/init/mod.rs b/side-node/src/init/mod.rs index 2f07328..a0ee5f8 100644 --- a/side-node/src/init/mod.rs +++ b/side-node/src/init/mod.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use config::SideNodeConfig; -use crate::{keys, utils}; +use crate::{keys, utils, bitcoin}; pub(crate) mod config; @@ -14,7 +14,7 @@ pub(crate) fn init(home: PathBuf, config: SideNodeConfig) -> Result<(), std::io: keys::bft_crdt::write(&bft_crdt_key_path)?; println!("Writing bitcoin key to: {:?}", bitcoin_key_path); - keys::bitcoin::write(&bitcoin_key_path)?; + bitcoin::bitcoin_keys::write(&bitcoin_key_path)?; println!("Writing config to: {:?}", config_path); config::write_toml(&config, &config_path).expect("unable to write config file"); diff --git a/side-node/src/keys/mod.rs b/side-node/src/keys/mod.rs index c5a0529..98f8c7f 100644 --- a/side-node/src/keys/mod.rs +++ b/side-node/src/keys/mod.rs @@ -1,2 +1 @@ pub mod bft_crdt; -pub mod bitcoin; diff --git a/side-node/src/lib.rs b/side-node/src/lib.rs index f8ac9f2..5de5fa2 100644 --- a/side-node/src/lib.rs +++ b/side-node/src/lib.rs @@ -5,6 +5,7 @@ use crdt::TransactionList; use node::SideNode; use tokio::{sync::mpsc, task}; +pub(crate) mod bitcoin; pub(crate) mod cli; pub mod clients; pub mod crdt; @@ -31,19 +32,19 @@ pub async fn run() { node.start().await; } Some(Commands::Btc {}) => { - let _ = clients::btc_esplora_client::run().await; + let _ = bitcoin::clients::btc_esplora_client::run().await; } None => println!("No command provided. Exiting. See --help for more information."), } } -/// Wire everything up outside the application so we can test more easily later +/// Wire everything up outside the application so that we can test more easily later async fn setup(name: &String) -> SideNode { // First, load up the keys and create a bft-crdt let side_dir = utils::home(name); let bft_crdt_keys = keys::bft_crdt::load_from_file(&side_dir); - let bitcoin_keys = keys::bitcoin::load_from_file(&side_dir).unwrap(); - let bitcoin_wallet = clients::btc_electrum_client::create_wallet(bitcoin_keys).unwrap(); + let bitcoin_keys = bitcoin::bitcoin_keys::load_from_file(&side_dir).unwrap(); + let bitcoin_wallet = bitcoin::clients::btc_electrum_client::create_wallet(bitcoin_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 a4547da..ce14f0a 100644 --- a/side-node/tests/side_node.rs +++ b/side-node/tests/side_node.rs @@ -2,13 +2,7 @@ use bft_json_crdt::{ json_crdt::{BaseCrdt, SignedOp}, keypair::make_keypair, }; -use side_node::{ - clients::{btc_electrum_client, websocket::Client}, - crdt::TransactionList, - keys, - node::SideNode, - utils, -}; +use side_node::{clients::websocket::Client, crdt::TransactionList, keys, node::SideNode, utils}; use tokio::sync::mpsc; #[tokio::test] @@ -41,8 +35,8 @@ async fn test_distribute_via_websockets() { async fn setup(_: &str) -> SideNode { // First, load up the keys and create a bft-crdt let bft_crdt_keys = make_keypair(); - let mnemonic_words = keys::bitcoin::make_mnemonic(); - let bitcoin_keys = keys::bitcoin::get(mnemonic_words).unwrap(); + let mnemonic_words = bitcoin::bitcoin_keys::make_mnemonic(); + let bitcoin_keys = bitcoin::bitcoin_keys::get(mnemonic_words).unwrap(); let bitcoin_wallet = btc_electrum_client::create_wallet(bitcoin_keys).unwrap(); let crdt = BaseCrdt::::new(&bft_crdt_keys);