From: Riccardo Casatta Date: Mon, 16 Nov 2020 11:23:02 +0000 (+0100) Subject: [examples] support esplora blockchain source in repl X-Git-Tag: v0.1.0~33 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/database/scripts/struct.EncoderStringWriter.html?a=commitdiff_plain;h=0b4904595f6f3856e3ee374d4802f9d293bc84a3;p=bdk-cli [examples] support esplora blockchain source in repl --- diff --git a/examples/repl.rs b/examples/repl.rs index dc6a688..69eca92 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 ada49cc..f60f793 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")