From d9985c4bbb4d746269b28c5cac7beb584343b3e4 Mon Sep 17 00:00:00 2001 From: Riccardo Casatta Date: Mon, 16 Nov 2020 12:23:02 +0100 Subject: [PATCH] [examples] support esplora blockchain source in repl --- examples/repl.rs | 38 +++++++++++++++++++++++--------------- src/cli.rs | 8 ++++++++ 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/examples/repl.rs b/examples/repl.rs index dc6a688e..69eca920 100644 --- a/examples/repl.rs +++ b/examples/repl.rs @@ -37,13 +37,15 @@ use log::{debug, error, info, trace, LevelFilter}; use bitcoin::Network; use bdk::bitcoin; -use bdk::blockchain::ConfigurableBlockchain; -use bdk::blockchain::ElectrumBlockchain; -use bdk::blockchain::ElectrumBlockchainConfig; +use bdk::blockchain::{ + AnyBlockchain, AnyBlockchainConfig, ConfigurableBlockchain, ElectrumBlockchainConfig, +}; use bdk::cli; use bdk::sled; use bdk::Wallet; +use bdk::blockchain::esplora::EsploraBlockchainConfig; + fn prepare_home_dir() -> PathBuf { let mut dir = PathBuf::new(); dir.push(&dirs::home_dir().unwrap()); @@ -90,19 +92,25 @@ fn main() { .unwrap(); debug!("database opened successfully"); - let blockchain_config = ElectrumBlockchainConfig { - url: matches.value_of("server").unwrap().to_string(), - socks5: matches.value_of("proxy").map(ToString::to_string), + let config = match matches.value_of("esplora") { + Some(base_url) => AnyBlockchainConfig::Esplora(EsploraBlockchainConfig { + base_url: base_url.to_string(), + }), + None => AnyBlockchainConfig::Electrum(ElectrumBlockchainConfig { + url: matches.value_of("server").unwrap().to_string(), + socks5: matches.value_of("proxy").map(ToString::to_string), + }), }; - let wallet = Wallet::new( - descriptor, - change_descriptor, - network, - tree, - ElectrumBlockchain::from_config(&blockchain_config).unwrap(), - ) - .unwrap(); - let wallet = Arc::new(wallet); + let wallet = Arc::new( + Wallet::new( + descriptor, + change_descriptor, + network, + tree, + AnyBlockchain::from_config(&config).unwrap(), + ) + .unwrap(), + ); if let Some(_sub_matches) = matches.subcommand_matches("repl") { let mut rl = Editor::<()>::new(); diff --git a/src/cli.rs b/src/cli.rs index ada49cce..f60f7932 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -337,6 +337,14 @@ pub fn add_global_flags<'a, 'b>(app: App<'a, 'b>) -> App<'a, 'b> { .takes_value(true) .default_value("ssl://electrum.blockstream.info:60002"), ) + .arg( + Arg::with_name("esplora") + .short("e") + .long("esplora") + .value_name("ESPLORA") + .help("Use the esplora server if given as parameter") + .takes_value(true), + ) .arg( Arg::with_name("proxy") .short("p")