diff --git a/crates/sequencing/papyrus_consensus_orchestrator/src/sequencer_consensus_context.rs b/crates/sequencing/papyrus_consensus_orchestrator/src/sequencer_consensus_context.rs index 92e45cd85db..aa9f7d44938 100644 --- a/crates/sequencing/papyrus_consensus_orchestrator/src/sequencer_consensus_context.rs +++ b/crates/sequencing/papyrus_consensus_orchestrator/src/sequencer_consensus_context.rs @@ -79,6 +79,8 @@ type HeightToIdToContent = type ValidationParams = (BlockNumber, ValidatorId, Duration, mpsc::Receiver); const CHANNEL_SIZE: usize = 100; +// TODO(Guy): Move this to the context config. +const BUILD_PROPOSAL_MARGIN: Duration = Duration::from_millis(100); pub struct SequencerConsensusContext { batcher: Arc, @@ -153,8 +155,9 @@ impl ConsensusContext for SequencerConsensusContext { let proposal_id = ProposalId(self.proposal_id); self.proposal_id += 1; - let timeout = - chrono::Duration::from_std(timeout).expect("Can't convert timeout to chrono::Duration"); + assert!(timeout > BUILD_PROPOSAL_MARGIN); + let timeout = chrono::Duration::from_std(timeout - BUILD_PROPOSAL_MARGIN) + .expect("Can't convert timeout to chrono::Duration"); let now = chrono::Utc::now(); let build_proposal_input = ProposeBlockInput { proposal_id, diff --git a/crates/starknet_batcher/src/utils.rs b/crates/starknet_batcher/src/utils.rs index 1d656d8edae..4ea923a4db9 100644 --- a/crates/starknet_batcher/src/utils.rs +++ b/crates/starknet_batcher/src/utils.rs @@ -67,8 +67,7 @@ pub(crate) fn deadline_as_instant( let time_to_deadline = deadline - chrono::Utc::now(); let as_duration = time_to_deadline.to_std().map_err(|_| BatcherError::TimeToDeadlineError { deadline })?; - // TODO(Matan): this is a temporary solution to the timeout issue. - Ok((std::time::Instant::now() + (as_duration / 2)).into()) + Ok((std::time::Instant::now() + as_duration).into()) } pub(crate) fn verify_block_input(