From 78ca4b0319740102b2989585c1f53640f1934e53 Mon Sep 17 00:00:00 2001 From: Luis Schwab Date: Fri, 7 Mar 2025 07:40:47 -0300 Subject: [PATCH] chore: make change descriptor optional on example_wallet_rpc --- example-crates/example_wallet_rpc/README.md | 4 ++-- example-crates/example_wallet_rpc/src/main.rs | 15 ++++++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/example-crates/example_wallet_rpc/README.md b/example-crates/example_wallet_rpc/README.md index 0e88ffba8..9edb7ef2f 100644 --- a/example-crates/example_wallet_rpc/README.md +++ b/example-crates/example_wallet_rpc/README.md @@ -5,11 +5,11 @@ $ cargo run --bin example_wallet_rpc -- --help Bitcoind RPC example using `bdk_wallet::Wallet` -Usage: example_wallet_rpc [OPTIONS] +Usage: example_wallet_rpc [OPTIONS] [CHANGE_DESCRIPTOR] Arguments: Wallet descriptor [env: DESCRIPTOR=] - Wallet change descriptor [env: CHANGE_DESCRIPTOR=] + [CHANGE_DESCRIPTOR] Wallet change descriptor [env: CHANGE_DESCRIPTOR=] Options: --start-height Earliest block height to start sync from [env: START_HEIGHT=] [default: 0] diff --git a/example-crates/example_wallet_rpc/src/main.rs b/example-crates/example_wallet_rpc/src/main.rs index 52531021b..2021f8359 100644 --- a/example-crates/example_wallet_rpc/src/main.rs +++ b/example-crates/example_wallet_rpc/src/main.rs @@ -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, /// 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::::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",