Skip to content

Commit

Permalink
chore(execution): verify cumulative gas used before receipts root (pa…
Browse files Browse the repository at this point in the history
  • Loading branch information
rkrasiuk authored Jul 1, 2024
1 parent 158377f commit e5a634c
Showing 1 changed file with 10 additions and 10 deletions.
20 changes: 10 additions & 10 deletions crates/ethereum/consensus/src/validation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,16 @@ pub fn validate_block_post_execution(
receipts: &[Receipt],
requests: &[Request],
) -> Result<(), ConsensusError> {
// Check if gas used matches the value set in header.
let cumulative_gas_used =
receipts.last().map(|receipt| receipt.cumulative_gas_used).unwrap_or(0);
if block.gas_used != cumulative_gas_used {
return Err(ConsensusError::BlockGasUsed {
gas: GotExpected { got: cumulative_gas_used, expected: block.gas_used },
gas_spent_by_tx: gas_spent_by_transactions(receipts),
})
}

// Before Byzantium, receipts contained state root that would mean that expensive
// operation as hashing that is required for state root got calculated in every
// transaction This was replaced with is_success flag.
Expand All @@ -27,16 +37,6 @@ pub fn validate_block_post_execution(
}
}

// Check if gas used matches the value set in header.
let cumulative_gas_used =
receipts.last().map(|receipt| receipt.cumulative_gas_used).unwrap_or(0);
if block.gas_used != cumulative_gas_used {
return Err(ConsensusError::BlockGasUsed {
gas: GotExpected { got: cumulative_gas_used, expected: block.gas_used },
gas_spent_by_tx: gas_spent_by_transactions(receipts),
})
}

// Validate that the header requests root matches the calculated requests root
if chain_spec.is_prague_active_at_timestamp(block.timestamp) {
let Some(header_requests_root) = block.header.requests_root else {
Expand Down

0 comments on commit e5a634c

Please sign in to comment.