Skip to content

Commit 850f38e

Browse files
ercecanjfldde
andauthored
Listen mode sequencer config (#121)
* New sequencer config and fix tempfile * Make listen mode config public * Take ownership from node cluster * Take consumes cluster * Add config test * Replace config contents * Replace config files on node restart * Revert "New sequencer config and fix tempfile" This reverts commit 68ec209. * Restore set dir and lint * fmt --------- Co-authored-by: jfldde <168934971+jfldde@users.noreply.github.com>
1 parent 297b575 commit 850f38e

File tree

3 files changed

+86
-2
lines changed

3 files changed

+86
-2
lines changed

src/citrea_config/sequencer.rs

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ pub struct SequencerConfig {
2121
pub block_production_interval_ms: u64,
2222
/// Bridge system contract initialize function parameters
2323
pub bridge_initialize_params: String,
24+
/// Configuration for the listen mode sequencer
25+
pub listen_mode_config: Option<ListenModeConfig>,
2426
}
2527

2628
impl Default for SequencerConfig {
@@ -35,6 +37,7 @@ impl Default for SequencerConfig {
3537
da_update_interval_ms: 100,
3638
mempool_conf: SequencerMempoolConfig::default(),
3739
bridge_initialize_params: PRE_FORK2_BRIDGE_INITIALIZE_PARAMS.to_string(),
40+
listen_mode_config: None,
3841
}
3942
}
4043
}
@@ -73,6 +76,24 @@ impl Default for SequencerMempoolConfig {
7376
}
7477
}
7578

79+
/// Configuration for the listen mode sequencer
80+
#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)]
81+
pub struct ListenModeConfig {
82+
/// The sequencer client URL to connect to
83+
pub sequencer_client_url: String,
84+
/// The number of blocks to sync from the sequencer
85+
pub sync_blocks_count: u64,
86+
}
87+
88+
impl Default for ListenModeConfig {
89+
fn default() -> Self {
90+
ListenModeConfig {
91+
sequencer_client_url: "http://localhost:8545".to_string(),
92+
sync_blocks_count: 10,
93+
}
94+
}
95+
}
96+
7697
#[cfg(test)]
7798
mod tests {
7899
use std::io::Write;
@@ -130,6 +151,60 @@ mod tests {
130151
da_update_interval_ms: 1000,
131152
block_production_interval_ms: 1000,
132153
bridge_initialize_params: PRE_FORK2_BRIDGE_INITIALIZE_PARAMS.to_string(),
154+
listen_mode_config: None,
155+
};
156+
assert_eq!(config, expected);
157+
}
158+
159+
#[test]
160+
fn test_correct_config_listen_mode_sequencer() {
161+
let config = r#"
162+
private_key = "1212121212121212121212121212121212121212121212121212121212121212"
163+
max_l2_blocks_per_commitment = 123
164+
test_mode = false
165+
deposit_mempool_fetch_limit = 10
166+
da_update_interval_ms = 1000
167+
block_production_interval_ms = 1000
168+
bridge_initialize_params = "000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000002d4a209fb3a961d8b1f4ec1caa220c6a50b815febc0b689ddf0b9ddfbf99cb74479e41ac0063066369747265611400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a08000000003b9aca006800000000000000000000000000000000000000000000"
169+
[mempool_conf]
170+
pending_tx_limit = 100000
171+
pending_tx_size = 200
172+
queue_tx_limit = 100000
173+
queue_tx_size = 200
174+
base_fee_tx_limit = 100000
175+
base_fee_tx_size = 200
176+
max_account_slots = 16
177+
[listen_mode_config]
178+
sequencer_client_url = "http://localhost:8545"
179+
sync_blocks_count = 10
180+
"#;
181+
182+
let config_file = create_config_from(config);
183+
184+
let config: SequencerConfig = from_toml_path(config_file.path()).unwrap();
185+
186+
let expected = SequencerConfig {
187+
private_key: "1212121212121212121212121212121212121212121212121212121212121212"
188+
.to_string(),
189+
max_l2_blocks_per_commitment: 123,
190+
test_mode: false,
191+
deposit_mempool_fetch_limit: 10,
192+
mempool_conf: SequencerMempoolConfig {
193+
pending_tx_limit: 100000,
194+
pending_tx_size: 200,
195+
queue_tx_limit: 100000,
196+
queue_tx_size: 200,
197+
base_fee_tx_limit: 100000,
198+
base_fee_tx_size: 200,
199+
max_account_slots: 16,
200+
},
201+
da_update_interval_ms: 1000,
202+
block_production_interval_ms: 1000,
203+
bridge_initialize_params: PRE_FORK2_BRIDGE_INITIALIZE_PARAMS.to_string(),
204+
listen_mode_config: Some(ListenModeConfig {
205+
sequencer_client_url: "http://localhost:8545".to_string(),
206+
sync_blocks_count: 10,
207+
}),
133208
};
134209
assert_eq!(config, expected);
135210
}

src/config/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ pub use crate::citrea_config::{
3333
bitcoin::BitcoinServiceConfig,
3434
light_client_prover::LightClientProverConfig,
3535
rollup::{RollupConfig, RollupPublicKeys, RpcConfig, RunnerConfig, StorageConfig},
36-
sequencer::{SequencerConfig, SequencerMempoolConfig},
36+
sequencer::{ListenModeConfig, SequencerConfig, SequencerMempoolConfig},
3737
};
3838
use crate::{log_provider::LogPathProvider, node::NodeKind, Result};
3939

src/node.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,8 +326,8 @@ where
326326
INDEX.load(Ordering::SeqCst)
327327
));
328328
copy_directory(old_dir, &new_dir)?;
329-
config.set_dir(new_dir);
330329

330+
config.set_dir(new_dir);
331331
config.write_to_file()?;
332332

333333
*self.spawn_output() = Self::spawn(config, extra_args)?;
@@ -383,6 +383,15 @@ where
383383
self.inner.get(index)
384384
}
385385

386+
pub fn take(mut self, index: usize) -> (Self, Option<Node<C>>) {
387+
if index < self.inner.len() {
388+
let node = Some(self.inner.remove(index));
389+
(self, node)
390+
} else {
391+
(self, None)
392+
}
393+
}
394+
386395
#[allow(unused)]
387396
pub fn get_mut(&mut self, index: usize) -> Option<&mut Node<C>> {
388397
self.inner.get_mut(index)

0 commit comments

Comments
 (0)