|
7 | 7 |
|
8 | 8 | use crate::chain::{ChainSource, DEFAULT_ESPLORA_SERVER_URL}; |
9 | 9 | use crate::config::{ |
10 | | - default_user_config, may_announce_channel, AnnounceError, Config, ElectrumSyncConfig, |
11 | | - EsploraSyncConfig, DEFAULT_LOG_FILENAME, DEFAULT_LOG_LEVEL, WALLET_KEYS_SEED_LEN, |
| 10 | + default_user_config, may_announce_channel, AnnounceError, BitcoindSyncClientConfig, Config, |
| 11 | + ElectrumSyncConfig, EsploraSyncConfig, DEFAULT_LOG_FILENAME, DEFAULT_LOG_LEVEL, |
| 12 | + WALLET_KEYS_SEED_LEN, |
12 | 13 | }; |
13 | 14 |
|
14 | 15 | use crate::connection::ConnectionManager; |
@@ -82,9 +83,21 @@ const LSPS_HARDENED_CHILD_INDEX: u32 = 577; |
82 | 83 |
|
83 | 84 | #[derive(Debug, Clone)] |
84 | 85 | enum ChainDataSourceConfig { |
85 | | - Esplora { server_url: String, sync_config: Option<EsploraSyncConfig> }, |
86 | | - Electrum { server_url: String, sync_config: Option<ElectrumSyncConfig> }, |
87 | | - BitcoindRpc { rpc_host: String, rpc_port: u16, rpc_user: String, rpc_password: String }, |
| 86 | + Esplora { |
| 87 | + server_url: String, |
| 88 | + sync_config: Option<EsploraSyncConfig>, |
| 89 | + }, |
| 90 | + Electrum { |
| 91 | + server_url: String, |
| 92 | + sync_config: Option<ElectrumSyncConfig>, |
| 93 | + }, |
| 94 | + Bitcoind { |
| 95 | + rpc_host: String, |
| 96 | + rpc_port: u16, |
| 97 | + rpc_user: String, |
| 98 | + rpc_password: String, |
| 99 | + sync_client_config: BitcoindSyncClientConfig, |
| 100 | + }, |
88 | 101 | } |
89 | 102 |
|
90 | 103 | #[derive(Debug, Clone)] |
@@ -297,13 +310,26 @@ impl NodeBuilder { |
297 | 310 | self |
298 | 311 | } |
299 | 312 |
|
300 | | - /// Configures the [`Node`] instance to source its chain data from the given Bitcoin Core RPC |
| 313 | + /// Configures the [`Node`] instance to synchronize its chain data from the given Bitcoin Core RPC |
301 | 314 | /// endpoint. |
302 | | - pub fn set_chain_source_bitcoind_rpc( |
| 315 | + /// |
| 316 | + /// This method configures an RPC connection for essential operations, with options for |
| 317 | + /// synchronization via either RPC (default) or REST. |
| 318 | + /// |
| 319 | + /// # Parameters: |
| 320 | + /// * `rpc_host`, `rpc_port`, `rpc_user`, `rpc_password` - Required parameters for the Bitcoin Core RPC connection |
| 321 | + /// * `sync_client_config` - Optional synchronization client configuration; defaults to using RPC for sync |
| 322 | + pub fn set_chain_source_bitcoind( |
303 | 323 | &mut self, rpc_host: String, rpc_port: u16, rpc_user: String, rpc_password: String, |
| 324 | + sync_client_config: Option<BitcoindSyncClientConfig>, |
304 | 325 | ) -> &mut Self { |
305 | | - self.chain_data_source_config = |
306 | | - Some(ChainDataSourceConfig::BitcoindRpc { rpc_host, rpc_port, rpc_user, rpc_password }); |
| 326 | + self.chain_data_source_config = Some(ChainDataSourceConfig::Bitcoind { |
| 327 | + rpc_host, |
| 328 | + rpc_port, |
| 329 | + rpc_user, |
| 330 | + rpc_password, |
| 331 | + sync_client_config: sync_client_config.unwrap_or(BitcoindSyncClientConfig::Rpc), |
| 332 | + }); |
307 | 333 | self |
308 | 334 | } |
309 | 335 |
|
@@ -716,14 +742,16 @@ impl ArcedNodeBuilder { |
716 | 742 |
|
717 | 743 | /// Configures the [`Node`] instance to source its chain data from the given Bitcoin Core RPC |
718 | 744 | /// endpoint. |
719 | | - pub fn set_chain_source_bitcoind_rpc( |
| 745 | + pub fn set_chain_source_bitcoind( |
720 | 746 | &self, rpc_host: String, rpc_port: u16, rpc_user: String, rpc_password: String, |
| 747 | + sync_client_config: Option<BitcoindSyncClientConfig>, |
721 | 748 | ) { |
722 | | - self.inner.write().unwrap().set_chain_source_bitcoind_rpc( |
| 749 | + self.inner.write().unwrap().set_chain_source_bitcoind( |
723 | 750 | rpc_host, |
724 | 751 | rpc_port, |
725 | 752 | rpc_user, |
726 | 753 | rpc_password, |
| 754 | + sync_client_config, |
727 | 755 | ); |
728 | 756 | } |
729 | 757 |
|
@@ -1061,21 +1089,26 @@ fn build_with_store_internal( |
1061 | 1089 | Arc::clone(&node_metrics), |
1062 | 1090 | )) |
1063 | 1091 | }, |
1064 | | - Some(ChainDataSourceConfig::BitcoindRpc { rpc_host, rpc_port, rpc_user, rpc_password }) => { |
1065 | | - Arc::new(ChainSource::new_bitcoind_rpc( |
1066 | | - rpc_host.clone(), |
1067 | | - *rpc_port, |
1068 | | - rpc_user.clone(), |
1069 | | - rpc_password.clone(), |
1070 | | - Arc::clone(&wallet), |
1071 | | - Arc::clone(&fee_estimator), |
1072 | | - Arc::clone(&tx_broadcaster), |
1073 | | - Arc::clone(&kv_store), |
1074 | | - Arc::clone(&config), |
1075 | | - Arc::clone(&logger), |
1076 | | - Arc::clone(&node_metrics), |
1077 | | - )) |
1078 | | - }, |
| 1092 | + Some(ChainDataSourceConfig::Bitcoind { |
| 1093 | + rpc_host, |
| 1094 | + rpc_port, |
| 1095 | + rpc_user, |
| 1096 | + rpc_password, |
| 1097 | + sync_client_config, |
| 1098 | + }) => Arc::new(ChainSource::new_bitcoind( |
| 1099 | + rpc_host.clone(), |
| 1100 | + *rpc_port, |
| 1101 | + rpc_user.clone(), |
| 1102 | + rpc_password.clone(), |
| 1103 | + Arc::clone(&wallet), |
| 1104 | + Arc::clone(&fee_estimator), |
| 1105 | + Arc::clone(&tx_broadcaster), |
| 1106 | + Arc::clone(&kv_store), |
| 1107 | + Arc::clone(&config), |
| 1108 | + sync_client_config.clone(), |
| 1109 | + Arc::clone(&logger), |
| 1110 | + Arc::clone(&node_metrics), |
| 1111 | + )), |
1079 | 1112 | None => { |
1080 | 1113 | // Default to Esplora client. |
1081 | 1114 | let server_url = DEFAULT_ESPLORA_SERVER_URL.to_string(); |
|
0 commit comments