|
5 | 5 | // http://opensource.org/licenses/MIT>, at your option. You may not use this file except in |
6 | 6 | // accordance with one or both of these licenses. |
7 | 7 |
|
8 | | -use crate::chain::{DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS, DEFAULT_ESPLORA_SERVER_URL}; |
| 8 | +use crate::chain::{ChainSource, DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS, DEFAULT_ESPLORA_SERVER_URL}; |
9 | 9 | use crate::config::{default_user_config, Config, WALLET_KEYS_SEED_LEN}; |
10 | 10 |
|
11 | 11 | use crate::connection::ConnectionManager; |
@@ -562,58 +562,78 @@ fn build_with_store_internal( |
562 | 562 | })?, |
563 | 563 | }; |
564 | 564 |
|
565 | | - let (esplora_client, tx_sync, tx_broadcaster, fee_estimator) = match chain_data_source_config { |
566 | | - Some(ChainDataSourceConfig::Esplora(server_url)) => { |
567 | | - let mut client_builder = esplora_client::Builder::new(&server_url.clone()); |
568 | | - client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
569 | | - let esplora_client = client_builder.build_async().unwrap(); |
570 | | - let tx_sync = Arc::new(EsploraSyncClient::from_client( |
571 | | - esplora_client.clone(), |
572 | | - Arc::clone(&logger), |
573 | | - )); |
574 | | - let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
575 | | - tx_sync.client().clone(), |
576 | | - Arc::clone(&logger), |
577 | | - )); |
578 | | - let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
579 | | - tx_sync.client().clone(), |
580 | | - Arc::clone(&config), |
581 | | - Arc::clone(&logger), |
582 | | - )); |
583 | | - (esplora_client, tx_sync, tx_broadcaster, fee_estimator) |
584 | | - }, |
585 | | - None => { |
586 | | - // Default to Esplora client. |
587 | | - let server_url = DEFAULT_ESPLORA_SERVER_URL.to_string(); |
588 | | - let mut client_builder = esplora_client::Builder::new(&server_url); |
589 | | - client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
590 | | - let esplora_client = client_builder.build_async().unwrap(); |
591 | | - let tx_sync = Arc::new(EsploraSyncClient::from_client( |
592 | | - esplora_client.clone(), |
593 | | - Arc::clone(&logger), |
594 | | - )); |
595 | | - let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
596 | | - tx_sync.client().clone(), |
597 | | - Arc::clone(&logger), |
598 | | - )); |
599 | | - let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
600 | | - tx_sync.client().clone(), |
601 | | - Arc::clone(&config), |
602 | | - Arc::clone(&logger), |
603 | | - )); |
604 | | - (esplora_client, tx_sync, tx_broadcaster, fee_estimator) |
605 | | - }, |
606 | | - }; |
| 565 | + let (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) = |
| 566 | + match chain_data_source_config { |
| 567 | + Some(ChainDataSourceConfig::Esplora(server_url)) => { |
| 568 | + let mut client_builder = esplora_client::Builder::new(&server_url.clone()); |
| 569 | + client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
| 570 | + let esplora_client = client_builder.build_async().unwrap(); |
| 571 | + let tx_sync = |
| 572 | + Arc::new(EsploraSyncClient::from_client(esplora_client, Arc::clone(&logger))); |
| 573 | + let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
| 574 | + tx_sync.client().clone(), |
| 575 | + Arc::clone(&logger), |
| 576 | + )); |
| 577 | + let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
| 578 | + tx_sync.client().clone(), |
| 579 | + Arc::clone(&config), |
| 580 | + Arc::clone(&logger), |
| 581 | + )); |
| 582 | + |
| 583 | + let wallet = Arc::new(Wallet::new( |
| 584 | + bdk_wallet, |
| 585 | + wallet_persister, |
| 586 | + Arc::clone(&tx_broadcaster), |
| 587 | + Arc::clone(&fee_estimator), |
| 588 | + Arc::clone(&logger), |
| 589 | + )); |
| 590 | + |
| 591 | + let chain_source = Arc::new(ChainSource::new_esplora( |
| 592 | + server_url.clone(), |
| 593 | + Arc::clone(&wallet), |
| 594 | + Arc::clone(&logger), |
| 595 | + )); |
| 596 | + (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) |
| 597 | + }, |
| 598 | + None => { |
| 599 | + // Default to Esplora client. |
| 600 | + let server_url = DEFAULT_ESPLORA_SERVER_URL.to_string(); |
| 601 | + let mut client_builder = esplora_client::Builder::new(&server_url); |
| 602 | + client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
| 603 | + let esplora_client = client_builder.build_async().unwrap(); |
| 604 | + let tx_sync = Arc::new(EsploraSyncClient::from_client( |
| 605 | + esplora_client.clone(), |
| 606 | + Arc::clone(&logger), |
| 607 | + )); |
| 608 | + let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
| 609 | + tx_sync.client().clone(), |
| 610 | + Arc::clone(&logger), |
| 611 | + )); |
| 612 | + let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
| 613 | + tx_sync.client().clone(), |
| 614 | + Arc::clone(&config), |
| 615 | + Arc::clone(&logger), |
| 616 | + )); |
| 617 | + |
| 618 | + let wallet = Arc::new(Wallet::new( |
| 619 | + bdk_wallet, |
| 620 | + wallet_persister, |
| 621 | + Arc::clone(&tx_broadcaster), |
| 622 | + Arc::clone(&fee_estimator), |
| 623 | + Arc::clone(&logger), |
| 624 | + )); |
| 625 | + |
| 626 | + let chain_source = Arc::new(ChainSource::new_esplora( |
| 627 | + server_url.clone(), |
| 628 | + Arc::clone(&wallet), |
| 629 | + Arc::clone(&logger), |
| 630 | + )); |
| 631 | + |
| 632 | + (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) |
| 633 | + }, |
| 634 | + }; |
607 | 635 |
|
608 | 636 | let runtime = Arc::new(RwLock::new(None)); |
609 | | - let wallet = Arc::new(Wallet::new( |
610 | | - bdk_wallet, |
611 | | - wallet_persister, |
612 | | - esplora_client, |
613 | | - Arc::clone(&tx_broadcaster), |
614 | | - Arc::clone(&fee_estimator), |
615 | | - Arc::clone(&logger), |
616 | | - )); |
617 | 637 |
|
618 | 638 | // Initialize the ChainMonitor |
619 | 639 | let chain_monitor: Arc<ChainMonitor> = Arc::new(chainmonitor::ChainMonitor::new( |
@@ -989,6 +1009,7 @@ fn build_with_store_internal( |
989 | 1009 | event_handling_stopped_sender, |
990 | 1010 | config, |
991 | 1011 | wallet, |
| 1012 | + chain_source, |
992 | 1013 | tx_sync, |
993 | 1014 | tx_broadcaster, |
994 | 1015 | fee_estimator, |
|
0 commit comments