]> Untitled Git - bdk-cli/commitdiff
[wallet] Abstract coin selection in a separate trait
authorAlekos Filini <alekos.filini@gmail.com>
Thu, 6 Aug 2020 14:56:41 +0000 (16:56 +0200)
committerAlekos Filini <alekos.filini@gmail.com>
Thu, 6 Aug 2020 14:56:41 +0000 (16:56 +0200)
Cargo.toml
src/cli.rs

index 8f41704487abb03617da665e3a5b21eac9551282..8db2878bf27c93731ca7647ade8a8b93b96df14c 100644 (file)
@@ -11,6 +11,7 @@ bitcoin = { version = "0.23", features = ["use-serde"] }
 miniscript = { version = "1.0" }
 serde = { version = "^1.0", features = ["derive"] }
 serde_json = { version = "^1.0" }
+rand = "^0.7"
 
 # Optional dependencies
 sled = { version = "0.31.0", optional = true }
index c946f22e50e0ddc7ce905ab8a14ed82b48e9480c..735c0af92a0ce53486c4fe4041b8ac9f757917da 100644 (file)
@@ -326,21 +326,19 @@ where
             .map(|s| parse_addressee(s))
             .collect::<Result<Vec<_>, _>>()
             .map_err(|s| Error::Generic(s))?;
-        let mut tx_builder = TxBuilder::from_addressees(addressees);
+        let mut tx_builder =
+            TxBuilder::from_addressees(addressees).send_all(sub_matches.is_present("send_all"));
 
-        if sub_matches.is_present("send_all") {
-            tx_builder.send_all();
-        }
         if let Some(fee_rate) = sub_matches.value_of("fee_rate") {
             let fee_rate = f32::from_str(fee_rate).map_err(|s| Error::Generic(s.to_string()))?;
-            tx_builder.fee_rate(fee_rate);
+            tx_builder = tx_builder.fee_rate(fee_rate);
         }
         if let Some(utxos) = sub_matches.values_of("utxos") {
             let utxos = utxos
                 .map(|i| parse_outpoint(i))
                 .collect::<Result<Vec<_>, _>>()
                 .map_err(|s| Error::Generic(s.to_string()))?;
-            tx_builder.utxos(utxos);
+            tx_builder = tx_builder.utxos(utxos);
         }
 
         if let Some(unspendable) = sub_matches.values_of("unspendable") {
@@ -348,15 +346,15 @@ where
                 .map(|i| parse_outpoint(i))
                 .collect::<Result<Vec<_>, _>>()
                 .map_err(|s| Error::Generic(s.to_string()))?;
-            tx_builder.unspendable(unspendable);
+            tx_builder = tx_builder.unspendable(unspendable);
         }
         if let Some(policy) = sub_matches.value_of("policy") {
             let policy = serde_json::from_str::<BTreeMap<String, Vec<usize>>>(&policy)
                 .map_err(|s| Error::Generic(s.to_string()))?;
-            tx_builder.policy_path(policy);
+            tx_builder = tx_builder.policy_path(policy);
         }
 
-        let result = wallet.create_tx(&tx_builder)?;
+        let result = wallet.create_tx(tx_builder)?;
         Ok(Some(format!(
             "{:#?}\nPSBT: {}",
             result.1,