|
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; |
@@ -585,58 +585,78 @@ fn build_with_store_internal( |
585 | 585 | })?, |
586 | 586 | }; |
587 | 587 |
|
588 | | - let (esplora_client, tx_sync, tx_broadcaster, fee_estimator) = match chain_data_source_config { |
589 | | - Some(ChainDataSourceConfig::Esplora(server_url)) => { |
590 | | - let mut client_builder = esplora_client::Builder::new(&server_url.clone()); |
591 | | - client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
592 | | - let esplora_client = client_builder.build_async().unwrap(); |
593 | | - let tx_sync = Arc::new(EsploraSyncClient::from_client( |
594 | | - esplora_client.clone(), |
595 | | - Arc::clone(&logger), |
596 | | - )); |
597 | | - let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
598 | | - tx_sync.client().clone(), |
599 | | - Arc::clone(&logger), |
600 | | - )); |
601 | | - let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
602 | | - tx_sync.client().clone(), |
603 | | - Arc::clone(&config), |
604 | | - Arc::clone(&logger), |
605 | | - )); |
606 | | - (esplora_client, tx_sync, tx_broadcaster, fee_estimator) |
607 | | - }, |
608 | | - None => { |
609 | | - // Default to Esplora client. |
610 | | - let server_url = DEFAULT_ESPLORA_SERVER_URL.to_string(); |
611 | | - let mut client_builder = esplora_client::Builder::new(&server_url); |
612 | | - client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
613 | | - let esplora_client = client_builder.build_async().unwrap(); |
614 | | - let tx_sync = Arc::new(EsploraSyncClient::from_client( |
615 | | - esplora_client.clone(), |
616 | | - Arc::clone(&logger), |
617 | | - )); |
618 | | - let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
619 | | - tx_sync.client().clone(), |
620 | | - Arc::clone(&logger), |
621 | | - )); |
622 | | - let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
623 | | - tx_sync.client().clone(), |
624 | | - Arc::clone(&config), |
625 | | - Arc::clone(&logger), |
626 | | - )); |
627 | | - (esplora_client, tx_sync, tx_broadcaster, fee_estimator) |
628 | | - }, |
629 | | - }; |
| 588 | + let (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) = |
| 589 | + match chain_data_source_config { |
| 590 | + Some(ChainDataSourceConfig::Esplora(server_url)) => { |
| 591 | + let mut client_builder = esplora_client::Builder::new(&server_url.clone()); |
| 592 | + client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
| 593 | + let esplora_client = client_builder.build_async().unwrap(); |
| 594 | + let tx_sync = |
| 595 | + Arc::new(EsploraSyncClient::from_client(esplora_client, Arc::clone(&logger))); |
| 596 | + let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
| 597 | + tx_sync.client().clone(), |
| 598 | + Arc::clone(&logger), |
| 599 | + )); |
| 600 | + let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
| 601 | + tx_sync.client().clone(), |
| 602 | + Arc::clone(&config), |
| 603 | + Arc::clone(&logger), |
| 604 | + )); |
| 605 | + |
| 606 | + let wallet = Arc::new(Wallet::new( |
| 607 | + bdk_wallet, |
| 608 | + wallet_persister, |
| 609 | + Arc::clone(&tx_broadcaster), |
| 610 | + Arc::clone(&fee_estimator), |
| 611 | + Arc::clone(&logger), |
| 612 | + )); |
| 613 | + |
| 614 | + let chain_source = Arc::new(ChainSource::new_esplora( |
| 615 | + server_url.clone(), |
| 616 | + Arc::clone(&wallet), |
| 617 | + Arc::clone(&logger), |
| 618 | + )); |
| 619 | + (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) |
| 620 | + }, |
| 621 | + None => { |
| 622 | + // Default to Esplora client. |
| 623 | + let server_url = DEFAULT_ESPLORA_SERVER_URL.to_string(); |
| 624 | + let mut client_builder = esplora_client::Builder::new(&server_url); |
| 625 | + client_builder = client_builder.timeout(DEFAULT_ESPLORA_CLIENT_TIMEOUT_SECS); |
| 626 | + let esplora_client = client_builder.build_async().unwrap(); |
| 627 | + let tx_sync = Arc::new(EsploraSyncClient::from_client( |
| 628 | + esplora_client.clone(), |
| 629 | + Arc::clone(&logger), |
| 630 | + )); |
| 631 | + let tx_broadcaster = Arc::new(TransactionBroadcaster::new( |
| 632 | + tx_sync.client().clone(), |
| 633 | + Arc::clone(&logger), |
| 634 | + )); |
| 635 | + let fee_estimator = Arc::new(OnchainFeeEstimator::new( |
| 636 | + tx_sync.client().clone(), |
| 637 | + Arc::clone(&config), |
| 638 | + Arc::clone(&logger), |
| 639 | + )); |
| 640 | + |
| 641 | + let wallet = Arc::new(Wallet::new( |
| 642 | + bdk_wallet, |
| 643 | + wallet_persister, |
| 644 | + Arc::clone(&tx_broadcaster), |
| 645 | + Arc::clone(&fee_estimator), |
| 646 | + Arc::clone(&logger), |
| 647 | + )); |
| 648 | + |
| 649 | + let chain_source = Arc::new(ChainSource::new_esplora( |
| 650 | + server_url.clone(), |
| 651 | + Arc::clone(&wallet), |
| 652 | + Arc::clone(&logger), |
| 653 | + )); |
| 654 | + |
| 655 | + (wallet, chain_source, tx_sync, tx_broadcaster, fee_estimator) |
| 656 | + }, |
| 657 | + }; |
630 | 658 |
|
631 | 659 | let runtime = Arc::new(RwLock::new(None)); |
632 | | - let wallet = Arc::new(Wallet::new( |
633 | | - bdk_wallet, |
634 | | - wallet_persister, |
635 | | - esplora_client, |
636 | | - Arc::clone(&tx_broadcaster), |
637 | | - Arc::clone(&fee_estimator), |
638 | | - Arc::clone(&logger), |
639 | | - )); |
640 | 660 |
|
641 | 661 | // Initialize the ChainMonitor |
642 | 662 | let chain_monitor: Arc<ChainMonitor> = Arc::new(chainmonitor::ChainMonitor::new( |
@@ -1012,6 +1032,7 @@ fn build_with_store_internal( |
1012 | 1032 | event_handling_stopped_sender, |
1013 | 1033 | config, |
1014 | 1034 | wallet, |
| 1035 | + chain_source, |
1015 | 1036 | tx_sync, |
1016 | 1037 | tx_broadcaster, |
1017 | 1038 | fee_estimator, |
|
0 commit comments