diff --git a/collator/src/collator/do_collate.rs b/collator/src/collator/do_collate.rs index dc869ef6e..fd569710c 100644 --- a/collator/src/collator/do_collate.rs +++ b/collator/src/collator/do_collate.rs @@ -1228,7 +1228,9 @@ fn new_transaction( ); collation_data.execute_count_all += 1; - collation_data.block_limit.gas_used += executor_output.gas_used as u32; + + let gas_used = &mut collation_data.block_limit.gas_used; + *gas_used = gas_used.saturating_add(executor_output.gas_used.try_into().unwrap_or(u32::MAX)); let import_fees; let in_msg_hash = *in_msg.cell.repr_hash(); diff --git a/collator/src/collator/types.rs b/collator/src/collator/types.rs index 4f517c3f9..c97416971 100644 --- a/collator/src/collator/types.rs +++ b/collator/src/collator/types.rs @@ -423,6 +423,7 @@ pub(super) struct BlockCollationData { // TODO: set from anchor pub created_by: HashBytes, } + #[derive(Debug)] pub struct BlockLimitStats { pub gas_used: u32, @@ -485,7 +486,7 @@ impl BlockLimitStats { .. } = lt_delta; - let delta_lt = (self.lt_current - self.lt_start) as u32; + let delta_lt = u32::try_from(self.lt_current - self.lt_start).unwrap_or(u32::MAX); if delta_lt >= *hard_limit { return true; }