From 1c91a8116e15036025c19af54d01e3673e7a6053 Mon Sep 17 00:00:00 2001 From: Bibek Pandey Date: Tue, 14 Jan 2025 11:39:36 +0545 Subject: [PATCH] Split btcio config to reader and writer --- bin/strata-client/src/l1_reader.rs | 2 +- bin/strata-client/src/main.rs | 2 +- crates/btcio/src/reader/query.rs | 8 ++++---- crates/btcio/src/test_utils.rs | 4 ++-- crates/btcio/src/writer/context.rs | 6 +++--- crates/btcio/src/writer/task.rs | 4 ++-- crates/config/src/btcio.rs | 25 ++++++++++++++++++++++--- 7 files changed, 35 insertions(+), 16 deletions(-) diff --git a/bin/strata-client/src/l1_reader.rs b/bin/strata-client/src/l1_reader.rs index c803183579..078208ee63 100644 --- a/bin/strata-client/src/l1_reader.rs +++ b/bin/strata-client/src/l1_reader.rs @@ -36,7 +36,7 @@ where rpc_client, ev_tx, target_next_block, - Arc::new(config.btcio.clone()), + Arc::new(config.btcio.reader.clone()), params.clone(), status_channel, ), diff --git a/bin/strata-client/src/main.rs b/bin/strata-client/src/main.rs index e3b62a89ef..08e4d621e9 100644 --- a/bin/strata-client/src/main.rs +++ b/bin/strata-client/src/main.rs @@ -414,7 +414,7 @@ fn start_sequencer_tasks( let envelope_handle = start_envelope_task( executor, bitcoin_client, - btcio_config, + Arc::new(btcio_config.writer.clone()), params.clone(), sequencer_bitcoin_address, seq_db, diff --git a/crates/btcio/src/reader/query.rs b/crates/btcio/src/reader/query.rs index 942f784df6..3e04362570 100644 --- a/crates/btcio/src/reader/query.rs +++ b/crates/btcio/src/reader/query.rs @@ -6,7 +6,7 @@ use std::{ use anyhow::bail; use bitcoin::{Block, BlockHash}; -use strata_config::btcio::BtcioConfig; +use strata_config::btcio::ReaderConfig; use strata_l1tx::{ filter::filter_protocol_op_tx_refs, filter_types::TxFilterConfig, @@ -34,7 +34,7 @@ struct ReaderContext { /// L1Event sender event_tx: mpsc::Sender, /// Config - config: Arc, + config: Arc, /// Params params: Arc, /// Status transmitter @@ -46,7 +46,7 @@ pub async fn bitcoin_data_reader_task( client: Arc, event_tx: mpsc::Sender, target_next_block: u64, - config: Arc, + config: Arc, params: Arc, status_channel: StatusChannel, ) -> anyhow::Result<()> { @@ -441,7 +441,7 @@ mod test { let l1status: L1Status = gen.generate(); let status_channel = StatusChannel::new(cls, l1status, Some(chs)); let params = Arc::new(gen_params()); - let config = Arc::new(BtcioConfig::default()); + let config = Arc::new(ReaderConfig::default()); let client = Arc::new(TestBitcoinClient::new(1)); ReaderContext { event_tx, diff --git a/crates/btcio/src/test_utils.rs b/crates/btcio/src/test_utils.rs index efb996c9e9..467d5e4874 100644 --- a/crates/btcio/src/test_utils.rs +++ b/crates/btcio/src/test_utils.rs @@ -291,7 +291,7 @@ pub(crate) mod test_context { use std::sync::Arc; use bitcoin::{Address, Network}; - use strata_config::btcio::BtcioConfig; + use strata_config::btcio::WriterConfig; use strata_status::StatusChannel; use strata_test_utils::{l2::gen_params, ArbitraryGenerator}; @@ -304,7 +304,7 @@ pub(crate) mod test_context { .unwrap() .require_network(Network::Regtest) .unwrap(); - let cfg = Arc::new(BtcioConfig::default()); + let cfg = Arc::new(WriterConfig::default()); let status_channel = StatusChannel::new( ArbitraryGenerator::new().generate(), ArbitraryGenerator::new().generate(), diff --git a/crates/btcio/src/writer/context.rs b/crates/btcio/src/writer/context.rs index 46fa329674..4f267b05ce 100644 --- a/crates/btcio/src/writer/context.rs +++ b/crates/btcio/src/writer/context.rs @@ -1,7 +1,7 @@ use std::sync::Arc; use bitcoin::Address; -use strata_config::btcio::BtcioConfig; +use strata_config::btcio::WriterConfig; use strata_primitives::params::Params; use strata_status::StatusChannel; @@ -13,7 +13,7 @@ pub struct WriterContext { // Params for rollup. pub params: Arc, // Btcio specific configuration. - pub config: Arc, + pub config: Arc, // Sequencer's address to watch utxos for and spend change amount to. pub sequencer_address: Address, // Bitcoin client to sign and submit transactions. @@ -25,7 +25,7 @@ pub struct WriterContext { impl WriterContext { pub fn new( params: Arc, - config: Arc, + config: Arc, sequencer_address: Address, client: Arc, status_channel: StatusChannel, diff --git a/crates/btcio/src/writer/task.rs b/crates/btcio/src/writer/task.rs index f57ce500cd..0f6af91cf3 100644 --- a/crates/btcio/src/writer/task.rs +++ b/crates/btcio/src/writer/task.rs @@ -1,7 +1,7 @@ use std::{sync::Arc, time::Duration}; use bitcoin::Address; -use strata_config::btcio::BtcioConfig; +use strata_config::btcio::WriterConfig; use strata_db::{ traits::SequencerDatabase, types::{L1TxStatus, PayloadEntry, PayloadL1Status}, @@ -93,7 +93,7 @@ impl EnvelopeHandle { pub fn start_envelope_task( executor: &TaskExecutor, bitcoin_client: Arc, - config: Arc, + config: Arc, params: Arc, sequencer_address: Address, db: Arc, diff --git a/crates/config/src/btcio.rs b/crates/config/src/btcio.rs index 6976380179..96f0912c03 100644 --- a/crates/config/src/btcio.rs +++ b/crates/config/src/btcio.rs @@ -1,10 +1,22 @@ use serde::Deserialize; /// Configuration for btcio tasks. -#[derive(Debug, Clone, Deserialize)] +#[derive(Debug, Clone, Default, Deserialize)] pub struct BtcioConfig { + pub reader: ReaderConfig, + pub writer: WriterConfig, +} + +/// Configuration for btcio reader. +#[derive(Debug, Clone, Deserialize)] +pub struct ReaderConfig { /// How often to poll btc client pub client_poll_dur_ms: u32, +} + +/// Configuration for btcio writer/signer. +#[derive(Debug, Clone, Deserialize)] +pub struct WriterConfig { /// How often to invoke the writer pub write_poll_dur_ms: u64, /// How the fees for are determined. @@ -24,13 +36,20 @@ pub enum FeePolicy { Fixed(u64), } -impl Default for BtcioConfig { +impl Default for WriterConfig { fn default() -> Self { Self { - client_poll_dur_ms: 200, write_poll_dur_ms: 1_000, fee_policy: FeePolicy::Smart, reveal_amount: 1_000, } } } + +impl Default for ReaderConfig { + fn default() -> Self { + Self { + client_poll_dur_ms: 1_000, + } + } +}