Skip to content

Commit 8758279

Browse files
committed
address comments
1 parent ccde4ad commit 8758279

File tree

4 files changed

+26
-19
lines changed

4 files changed

+26
-19
lines changed

timeboost-sequencer/src/delayed_inbox.rs

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,12 @@ use tracing::{error, info, warn};
1111

1212
use crate::queue::BundleQueue;
1313

14+
// Polling interval to check for next delayed inbox index
1415
const INBOX_DELAY: Duration = Duration::from_secs(60);
1516

17+
// Max lookback for `from_block` to `to_block` in our `Filter` request
18+
const MAX_BLOCK_LOOKBACK: u64 = 300;
19+
1620
sol! {
1721
event InboxMessageDelivered(uint256 indexed messageNum, bytes data);
1822
event InboxMessageDeliveredFromOrigin(uint256 indexed messageNum);
@@ -29,12 +33,12 @@ pub struct DelayedInbox<N: Network> {
2933
impl<N: Network> DelayedInbox<N> {
3034
pub async fn connect(
3135
node: PublicKey,
32-
url: String,
36+
url: &str,
3337
ibox_addr: Address,
3438
parent_chain_id: u64,
3539
queue: BundleQueue,
3640
) -> Result<Self, Error> {
37-
let provider = RootProvider::<N>::connect(&url)
41+
let provider = RootProvider::<N>::connect(url)
3842
.await
3943
.map_err(|e| Error::RpcError(e.to_string()))?;
4044
let rpc_chain_id = provider
@@ -50,13 +54,13 @@ impl<N: Network> DelayedInbox<N> {
5054
ibox_addr,
5155
provider,
5256
queue,
53-
url,
57+
url: url.to_string(),
5458
})
5559
}
5660

5761
pub async fn go(self) {
58-
let mut last_finalized = 0;
59-
let mut last_delayed_index = 0;
62+
let mut prev_finalized = 0;
63+
let mut prev_delayed_idx = 0;
6064
let events = vec![
6165
InboxMessageDelivered::SIGNATURE,
6266
InboxMessageDeliveredFromOrigin::SIGNATURE,
@@ -69,22 +73,26 @@ impl<N: Network> DelayedInbox<N> {
6973
.await
7074
{
7175
let finalized = b.header().number();
72-
if finalized == last_finalized {
76+
if finalized == prev_finalized {
77+
// Nothing to do
7378
sleep(INBOX_DELAY).await;
7479
continue;
7580
}
76-
if last_finalized == 0 {
77-
last_finalized = finalized.saturating_sub(300);
81+
// To prevent large rpc queries go from finalized - MAX_BLOCK_LOOKBACK
82+
// This is fine because we only need the latest finalized delayed message to set the
83+
// index
84+
if finalized.saturating_sub(prev_finalized) > MAX_BLOCK_LOOKBACK {
85+
prev_finalized = finalized.saturating_sub(MAX_BLOCK_LOOKBACK);
7886
}
7987

8088
// Filter for the `InboxMessageDelivered` and `InboxMessageDeliveredFromOrigin`
8189
// between our last finalized and current finalized on the L1 contract
8290
let filter = Filter::new()
8391
.address(self.ibox_addr)
84-
.from_block(last_finalized)
92+
.from_block(prev_finalized)
8593
.to_block(finalized)
8694
.events(&events);
87-
last_finalized = finalized;
95+
prev_finalized = finalized;
8896

8997
if let Ok(mut logs) = self.provider.get_logs(&filter).await {
9098
// Make sure event logs are in order, we need highest block number first then
@@ -99,14 +107,14 @@ impl<N: Network> DelayedInbox<N> {
99107
.map(|log| (log.transaction_hash, log.topics().get(1)))
100108
{
101109
// Update delayed index if newer
102-
let delayed_index = U256::from_be_bytes(index.0)
110+
let delayed_idx = U256::from_be_bytes(index.0)
103111
.try_into()
104112
.expect("valid msg number");
105-
if delayed_index != last_delayed_index {
106-
debug_assert!(delayed_index > last_delayed_index);
107-
info!(node = %self.node, %delayed_index, parent_finalized_block = %finalized, ibox_addr = %self.ibox_addr, %tx_hash, "delayed index updated");
108-
last_delayed_index = delayed_index;
109-
self.queue.set_delayed_inbox_index(delayed_index.into());
113+
if delayed_idx != prev_delayed_idx {
114+
debug_assert!(delayed_idx > prev_delayed_idx);
115+
info!(node = %self.node, %delayed_idx, parent_finalized_block = %finalized, ibox_addr = %self.ibox_addr, %tx_hash, "delayed index updated");
116+
prev_delayed_idx = delayed_idx;
117+
self.queue.set_delayed_inbox_index(delayed_idx.into());
110118
}
111119
}
112120
}

timeboost-sequencer/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ impl Sequencer {
118118

119119
let ibox = DelayedInbox::<Ethereum>::connect(
120120
public_key,
121-
cfg.chain_config.parent_chain_rpc_url().clone(),
121+
cfg.chain_config.parent_chain_rpc_url(),
122122
cfg.chain_config.parent_ibox_contr_addr(),
123123
cfg.chain_config.parent_chain_id(),
124124
queue.clone(),

timeboost-sequencer/src/queue.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,6 @@ impl BundleQueue {
6161
})))
6262
}
6363

64-
#[allow(unused)]
6564
pub fn set_delayed_inbox_index(&self, idx: DelayedInboxIndex) {
6665
self.0.lock().index = idx
6766
}

timeboost-types/src/chain_config.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ impl ChainConfig {
2121
self.parent_chain_id
2222
}
2323

24-
pub fn parent_chain_rpc_url(&self) -> &String {
24+
pub fn parent_chain_rpc_url(&self) -> &str {
2525
&self.parent_chain_rpc_url
2626
}
2727

0 commit comments

Comments
 (0)