|
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