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