diff --git a/Cargo.toml b/Cargo.toml index c699b80..e60aae3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,5 @@ [workspace] +resolver = "2" members = [ "lib", diff --git a/app/src/gui/deposit.rs b/app/src/gui/deposit.rs index c913de8..f4fdf5a 100644 --- a/app/src/gui/deposit.rs +++ b/app/src/gui/deposit.rs @@ -41,7 +41,7 @@ impl Deposit { .add_enabled(amount.is_ok() && fee.is_ok(), egui::Button::new("deposit")) .clicked() { - app.deposit( + let _ = app.deposit( amount.expect("should not happen"), fee.expect("should not happen"), ); diff --git a/app/src/gui/mempool_explorer.rs b/app/src/gui/mempool_explorer.rs index 5aa5c2f..2581510 100644 --- a/app/src/gui/mempool_explorer.rs +++ b/app/src/gui/mempool_explorer.rs @@ -7,19 +7,14 @@ use lib::{ types::{GetValue, OutPoint}, }; +#[derive(Default)] pub struct MemPoolExplorer { current: usize, } -impl Default for MemPoolExplorer { - fn default() -> Self { - Self { current: 0 } - } -} - impl MemPoolExplorer { pub fn show(&mut self, app: &mut App, ui: &mut egui::Ui) { - let transactions = app.node.get_all_transactions().unwrap_or(vec![]); + let transactions = app.node.get_all_transactions().unwrap_or_default(); let utxos = app.wallet.get_utxos().unwrap_or_default(); egui::SidePanel::left("transaction_picker") .resizable(false) @@ -50,7 +45,7 @@ impl MemPoolExplorer { let txid = &format!("{}", transaction.transaction.txid())[0..8]; if value_in >= value_out { let fee = value_in - value_out; - ui.selectable_value(&mut self.current, index, format!("{txid}")); + ui.selectable_value(&mut self.current, index, txid.to_string()); ui.with_layout( egui::Layout::right_to_left(egui::Align::Max), |ui| { @@ -67,7 +62,7 @@ impl MemPoolExplorer { ); ui.end_row(); } else { - ui.selectable_value(&mut self.current, index, format!("{txid}")); + ui.selectable_value(&mut self.current, index, txid.to_string()); ui.monospace("invalid"); ui.end_row(); } @@ -100,7 +95,7 @@ impl MemPoolExplorer { let output = &utxos[input]; let hash = &hash[0..8]; let value = bitcoin::Amount::from_sat(output.get_value()); - ui.monospace(format!("{kind}",)); + ui.monospace(kind.to_string()); ui.monospace(format!("{hash}:{vout}",)); ui.monospace(format!("{value}",)); ui.end_row(); @@ -121,7 +116,7 @@ impl MemPoolExplorer { let address = &format!("{}", output.address)[0..8]; let value = bitcoin::Amount::from_sat(output.get_value()); ui.monospace(format!("{vout}")); - ui.monospace(format!("{address}")); + ui.monospace(address.to_string()); ui.monospace(format!("{value}")); ui.end_row(); } diff --git a/app/src/gui/miner.rs b/app/src/gui/miner.rs index 3193ee2..c72ab9d 100644 --- a/app/src/gui/miner.rs +++ b/app/src/gui/miner.rs @@ -19,7 +19,7 @@ impl Miner { let best_hash = &format!("{best_hash}")[0..8]; ui.monospace(format!("{best_hash}...")); if ui.button("mine").clicked() { - app.mine(); + let _ = app.mine(); } } } diff --git a/app/src/gui/mod.rs b/app/src/gui/mod.rs index d3a4a78..86759d4 100644 --- a/app/src/gui/mod.rs +++ b/app/src/gui/mod.rs @@ -53,9 +53,9 @@ impl EguiApp { Self { app, set_seed: SetSeed::default(), - miner: Miner::default(), + miner: Miner, deposit: Deposit::default(), - utxo_selector: UtxoSelector::default(), + utxo_selector: UtxoSelector, utxo_creator: UtxoCreator::default(), mempool_explorer: MemPoolExplorer::default(), block_explorer: BlockExplorer::new(height), @@ -136,7 +136,7 @@ impl eframe::App for EguiApp { self.app.transaction.inputs.iter().enumerate() { let output = &self.app.utxos[&outpoint]; - show_utxo(ui, &outpoint, output); + show_utxo(ui, outpoint, output); if ui.button("remove").clicked() { remove = Some(vout); } @@ -170,7 +170,7 @@ impl eframe::App for EguiApp { let address = &format!("{}", output.address)[0..8]; let value = bitcoin::Amount::from_sat(output.get_value()); ui.monospace(format!("{vout}")); - ui.monospace(format!("{address}")); + ui.monospace(address.to_string()); ui.with_layout( egui::Layout::right_to_left(egui::Align::Max), |ui| { @@ -222,7 +222,7 @@ impl eframe::App for EguiApp { } else { egui::CentralPanel::default().show(ctx, |_ui| { egui::Window::new("Set Seed").show(ctx, |ui| { - self.set_seed.show(&mut self.app, ui); + self.set_seed.show(&self.app, ui); }); }); } diff --git a/app/src/gui/utxo_selector.rs b/app/src/gui/utxo_selector.rs index 2bfd198..93bc8cb 100644 --- a/app/src/gui/utxo_selector.rs +++ b/app/src/gui/utxo_selector.rs @@ -20,7 +20,7 @@ impl UtxoSelector { .filter(|(outpoint, _)| !selected.contains(outpoint)) .map(|(_, output)| output.get_value()) .sum(); - let mut utxos: Vec<_> = utxos.into_iter().collect(); + let mut utxos: Vec<_> = utxos.iter().collect(); utxos.sort_by_key(|(outpoint, _)| format!("{outpoint}")); ui.separator(); ui.monospace(format!("Total: {}", bitcoin::Amount::from_sat(total))); @@ -57,7 +57,7 @@ pub fn show_utxo(ui: &mut egui::Ui, outpoint: &OutPoint, output: &Output) { }; let hash = &hash[0..8]; let value = bitcoin::Amount::from_sat(output.get_value()); - ui.monospace(format!("{kind}",)); + ui.monospace(kind.to_string()); ui.monospace(format!("{hash}:{vout}",)); ui.with_layout(egui::Layout::right_to_left(egui::Align::Max), |ui| { ui.monospace(format!("{value}")); diff --git a/app/src/gui/withdrawals.rs b/app/src/gui/withdrawals.rs index f510232..24a9bc4 100644 --- a/app/src/gui/withdrawals.rs +++ b/app/src/gui/withdrawals.rs @@ -4,14 +4,9 @@ use eframe::egui; use lib::bip300301::bitcoin; use lib::types::GetValue; +#[derive(Default)] pub struct Withdrawals {} -impl Default for Withdrawals { - fn default() -> Self { - Self {} - } -} - impl Withdrawals { pub fn show(&mut self, app: &mut App, ui: &mut egui::Ui) { ui.heading("Pending withdrawals"); diff --git a/lib/src/mempool.rs b/lib/src/mempool.rs index 32ce5af..3b1612b 100644 --- a/lib/src/mempool.rs +++ b/lib/src/mempool.rs @@ -32,7 +32,7 @@ impl MemPool { self.spent_utxos.put(txn, input, &())?; } self.transactions - .put(txn, &transaction.transaction.txid().into(), &transaction)?; + .put(txn, &transaction.transaction.txid().into(), transaction)?; Ok(()) } diff --git a/lib/src/net.rs b/lib/src/net.rs index 730fe7b..40980f8 100644 --- a/lib/src/net.rs +++ b/lib/src/net.rs @@ -67,17 +67,11 @@ pub enum Response { TransactionRejected, } -#[derive(Clone, Debug, Serialize, Deserialize)] +#[derive(Clone, Debug, Serialize, Deserialize, Default)] pub struct PeerState { pub block_height: u32, } -impl Default for PeerState { - fn default() -> Self { - Self { block_height: 0 } - } -} - impl Net { pub fn new(bind_addr: SocketAddr) -> Result { let (server, _) = make_server_endpoint(bind_addr)?; diff --git a/lib/src/node.rs b/lib/src/node.rs index eeba2f7..43ecc4b 100644 --- a/lib/src/node.rs +++ b/lib/src/node.rs @@ -96,8 +96,8 @@ impl Node { ) -> Result<(), Error> { { let mut txn = self.env.write_txn()?; - self.validate_transaction(&txn, &transaction)?; - self.mempool.put(&mut txn, &transaction)?; + self.validate_transaction(&txn, transaction)?; + self.mempool.put(&mut txn, transaction)?; txn.commit()?; } for peer in self.net.peers.read().await.values() { @@ -206,13 +206,13 @@ impl Node { .await?; let mut txn = self.env.write_txn()?; let height = self.archive.get_height(&txn)?; - self.state.validate_body(&txn, &body, height)?; - self.state.connect_body(&mut txn, &body)?; + self.state.validate_body(&txn, body, height)?; + self.state.connect_body(&mut txn, body)?; self.state .connect_two_way_peg_data(&mut txn, &two_way_peg_data, height)?; let bundle = self.state.get_pending_withdrawal_bundle(&txn)?; - self.archive.append_header(&mut txn, &header)?; - self.archive.put_body(&mut txn, &header, &body)?; + self.archive.append_header(&mut txn, header)?; + self.archive.put_body(&mut txn, header, body)?; for transaction in &body.transactions { self.mempool.delete(&mut txn, &transaction.txid())?; } @@ -320,7 +320,7 @@ impl Node { send.write_all(&response) .await .map_err(crate::net::Error::from)?; - return Err(err.into()); + return Err(err); } Ok(_) => { { diff --git a/lib/src/state.rs b/lib/src/state.rs index ac425f9..3ac6200 100644 --- a/lib/src/state.rs +++ b/lib/src/state.rs @@ -185,7 +185,7 @@ impl State { let commitment = hash(&inputs); let script = script::Builder::new() .push_opcode(opcodes::all::OP_RETURN) - .push_slice(&commitment) + .push_slice(commitment) .into_script(); let inputs_commitment_txout = bitcoin::TxOut { value: 0, @@ -321,7 +321,7 @@ impl State { &self, txn: &RoTxn, ) -> Result, Error> { - Ok(self.last_deposit_block.get(&txn, &0)?) + Ok(self.last_deposit_block.get(txn, &0)?) } pub fn connect_two_way_peg_data( diff --git a/lib/src/types/mod.rs b/lib/src/types/mod.rs index 7e3c536..9e2028b 100644 --- a/lib/src/types/mod.rs +++ b/lib/src/types/mod.rs @@ -4,12 +4,12 @@ use std::{cmp::Ordering, collections::HashMap}; mod address; mod hashes; -mod types; +mod transaction; pub use blake3; pub use bs58; pub use serde; -pub use types::*; +pub use transaction::*; /* // Replace () with a type (usually an enum) for output data specific for your sidechain. @@ -29,7 +29,7 @@ pub struct Header { impl Header { pub fn hash(&self) -> BlockHash { - types::hash(self).into() + transaction::hash(self).into() } } @@ -41,13 +41,13 @@ pub enum WithdrawalBundleStatus { #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct WithdrawalBundle { - pub spent_utxos: HashMap, + pub spent_utxos: HashMap, pub transaction: bitcoin::Transaction, } #[derive(Default, Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct TwoWayPegData { - pub deposits: HashMap, + pub deposits: HashMap, pub deposit_block_hash: Option, pub bundle_statuses: HashMap, } @@ -66,7 +66,7 @@ pub struct DisconnectData { #[derive(Eq, PartialEq, Clone, Debug)] pub struct AggregatedWithdrawal { - pub spent_utxos: HashMap, + pub spent_utxos: HashMap, pub main_address: bitcoin::Address, pub value: u64, pub main_fee: u64, diff --git a/lib/src/types/types.rs b/lib/src/types/transaction.rs similarity index 100% rename from lib/src/types/types.rs rename to lib/src/types/transaction.rs diff --git a/lib/src/wallet.rs b/lib/src/wallet.rs index 2aca388..73c5520 100644 --- a/lib/src/wallet.rs +++ b/lib/src/wallet.rs @@ -44,7 +44,7 @@ impl Wallet { pub fn set_seed(&self, seed: &[u8; 64]) -> Result<(), Error> { let mut txn = self.env.write_txn()?; - self.seed.put(&mut txn, &0, &seed)?; + self.seed.put(&mut txn, &0, seed)?; self.address_to_index.clear(&mut txn)?; self.index_to_address.clear(&mut txn)?; self.utxos.clear(&mut txn)?; @@ -129,7 +129,7 @@ impl Wallet { if total < value { return Err(Error::NotEnoughFunds); } - return Ok((total, selected)); + Ok((total, selected)) } pub fn delete_utxos(&self, outpoints: &[OutPoint]) -> Result<(), Error> {