Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 30 additions & 3 deletions src/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ use lightning::util::sweep::OutputSweeper;
use lightning_dns_resolver::OMDomainResolver;
use vss_client::headers::VssHeaderProvider;

use crate::chain::ChainSource;
use crate::chain::{CbfFeeSourceConfig, ChainSource};
use crate::config::{
default_user_config, may_announce_channel, AnnounceError, AsyncPaymentsRole,
BitcoindRestClientConfig, Config, ElectrumSyncConfig, EsploraSyncConfig, HRNResolverConfig,
Expand Down Expand Up @@ -108,6 +108,10 @@ enum ChainDataSourceConfig {
rpc_password: String,
rest_client_config: Option<BitcoindRestClientConfig>,
},
Cbf {
peers: Vec<String>,
fee_source_config: Option<CbfFeeSourceConfig>,
},
}

#[derive(Debug, Clone)]
Expand Down Expand Up @@ -376,6 +380,19 @@ impl NodeBuilder {
self
}

/// Configures the [`Node`] instance to source chain data via compact block filters
/// (BIP157/BIP158), connecting to the given peers (`ip:port`).
///
/// `fee_source_config` optionally delegates fee estimation to an Esplora or Electrum server;
/// if `None`, fee rates are derived from recent blocks.
pub fn set_chain_source_cbf(
&mut self, peers: Vec<String>, fee_source_config: Option<CbfFeeSourceConfig>,
) -> &mut Self {
self.chain_data_source_config =
Some(ChainDataSourceConfig::Cbf { peers, fee_source_config });
self
}

/// Configures the [`Node`] instance to connect to a Bitcoin Core node via RPC.
///
/// This method establishes an RPC connection that enables all essential chain operations including
Expand Down Expand Up @@ -1469,8 +1486,18 @@ fn build_with_store_internal(
Arc::clone(&node_metrics),
)
},
//TODO add here an arm
// Some(ChainDataSoucrConfig::Cbf)
Some(ChainDataSourceConfig::Cbf { peers, fee_source_config }) => ChainSource::new_cbf(
peers.clone(),
fee_source_config.clone(),
Arc::clone(&runtime),
Arc::clone(&fee_estimator),
Arc::clone(&tx_broadcaster),
Arc::clone(&kv_store),
Arc::clone(&config),
Arc::clone(&logger),
Arc::clone(&node_metrics),
)
.map_err(|_| BuildError::ChainSourceSetupFailed)?,
Some(ChainDataSourceConfig::Bitcoind {
rpc_host,
rpc_port,
Expand Down
Loading
Loading