]> Untitled Git - bdk/commitdiff
chore: make change descriptor optional on example_wallet_rpc
authorLuis Schwab <luisschwab@protonmail.com>
Fri, 7 Mar 2025 10:40:47 +0000 (07:40 -0300)
committerLuis Schwab <luisschwab@protonmail.com>
Fri, 7 Mar 2025 10:40:47 +0000 (07:40 -0300)
example-crates/example_wallet_rpc/README.md
example-crates/example_wallet_rpc/src/main.rs

index 0e88ffba8c50c41d6a0e4d6c330aca497cdc4dd8..9edb7ef2fd54a9966ec3f48429ce56b9553c012e 100644 (file)
@@ -5,11 +5,11 @@ $ cargo run --bin example_wallet_rpc -- --help
 
 Bitcoind RPC example using `bdk_wallet::Wallet`
 
-Usage: example_wallet_rpc [OPTIONS] <DESCRIPTOR> <CHANGE_DESCRIPTOR>
+Usage: example_wallet_rpc [OPTIONS] <DESCRIPTOR> [CHANGE_DESCRIPTOR]
 
 Arguments:
   <DESCRIPTOR>         Wallet descriptor [env: DESCRIPTOR=]
-  <CHANGE_DESCRIPTOR>  Wallet change descriptor [env: CHANGE_DESCRIPTOR=]
+  [CHANGE_DESCRIPTOR]  Wallet change descriptor [env: CHANGE_DESCRIPTOR=]
 
 Options:
       --start-height <START_HEIGHT>  Earliest block height to start sync from [env: START_HEIGHT=] [default: 0]
index 52531021b1194f523cd4d0d9eefafac8ab23ccd1..2021f8359a7122ac14b95388856c7aa0435fe83e 100644 (file)
@@ -25,7 +25,7 @@ pub struct Args {
     pub descriptor: String,
     /// Wallet change descriptor
     #[clap(env = "CHANGE_DESCRIPTOR")]
-    pub change_descriptor: String,
+    pub change_descriptor: Option<String>,
     /// Earliest block height to start sync from
     #[clap(env = "START_HEIGHT", long, default_value = "0")]
     pub start_height: u32,
@@ -90,15 +90,20 @@ fn main() -> anyhow::Result<()> {
         Store::<bdk_wallet::ChangeSet>::open_or_create_new(DB_MAGIC.as_bytes(), args.db_path)?;
     let wallet_opt = Wallet::load()
         .descriptor(KeychainKind::External, Some(args.descriptor.clone()))
-        .descriptor(KeychainKind::Internal, Some(args.change_descriptor.clone()))
+        .descriptor(KeychainKind::Internal, args.change_descriptor.clone())
         .extract_keys()
         .check_network(args.network)
         .load_wallet(&mut db)?;
     let mut wallet = match wallet_opt {
         Some(wallet) => wallet,
-        None => Wallet::create(args.descriptor, args.change_descriptor)
-            .network(args.network)
-            .create_wallet(&mut db)?,
+        None => match &args.change_descriptor {
+            Some(change_desc) => Wallet::create(args.descriptor.clone(), change_desc.clone())
+                .network(args.network)
+                .create_wallet(&mut db)?,
+            None => Wallet::create_single(args.descriptor.clone())
+                .network(args.network)
+                .create_wallet(&mut db)?,
+        },
     };
     println!(
         "Loaded wallet in {}s",