Skip to content

Commit ca027ee

Browse files
committed
Fix clippy lints on merge-f2f (sigp#2626)
* Remove unchecked arith from ssz_derive * Address clippy lints in block_verfication * Use safe math for is_valid_gas_limit
1 parent b38203c commit ca027ee

File tree

2 files changed

+35
-26
lines changed

2 files changed

+35
-26
lines changed

beacon_node/beacon_chain/src/block_verification.rs

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,19 +1071,20 @@ impl<'a, T: BeaconChainTypes> FullyVerifiedBlock<'a, T> {
10711071
ExecutionPayloadError::NoEth1Connection,
10721072
))?;
10731073

1074-
if !eth1_chain
1075-
.on_payload(block.message().body().execution_payload().ok_or(
1074+
let payload_valid = eth1_chain
1075+
.on_payload(block.message().body().execution_payload().ok_or_else(|| {
10761076
BlockError::InconsistentFork(InconsistentFork {
10771077
fork_at_slot: eth2::types::ForkName::Merge,
10781078
object_fork: block.message().body().fork_name(),
1079-
}),
1080-
)?)
1079+
})
1080+
})?)
10811081
.map_err(|e| {
10821082
BlockError::ExecutionPayloadError(ExecutionPayloadError::Eth1VerificationError(
10831083
e,
10841084
))
1085-
})?
1086-
{
1085+
})?;
1086+
1087+
if !payload_valid {
10871088
return Err(BlockError::ExecutionPayloadError(
10881089
ExecutionPayloadError::RejectedByExecutionEngine,
10891090
));
@@ -1212,17 +1213,17 @@ fn validate_execution_payload<E: EthSpec>(
12121213
.execution_payload()
12131214
// TODO: this really should never error so maybe
12141215
// we should make this simpler..
1215-
.ok_or(BlockError::InconsistentFork(InconsistentFork {
1216-
fork_at_slot: eth2::types::ForkName::Merge,
1217-
object_fork: block.body().fork_name(),
1218-
}))?;
1219-
1220-
if is_merge_complete(state) {
1221-
if *execution_payload == <ExecutionPayload<E>>::default() {
1222-
return Err(BlockError::ExecutionPayloadError(
1223-
ExecutionPayloadError::PayloadEmpty,
1224-
));
1225-
}
1216+
.ok_or_else(|| {
1217+
BlockError::InconsistentFork(InconsistentFork {
1218+
fork_at_slot: eth2::types::ForkName::Merge,
1219+
object_fork: block.body().fork_name(),
1220+
})
1221+
})?;
1222+
1223+
if is_merge_complete(state) && *execution_payload == <ExecutionPayload<E>>::default() {
1224+
return Err(BlockError::ExecutionPayloadError(
1225+
ExecutionPayloadError::PayloadEmpty,
1226+
));
12261227
}
12271228

12281229
// TODO: finish these

consensus/state_processing/src/per_block_processing.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -296,24 +296,32 @@ pub fn get_new_eth1_data<T: EthSpec>(
296296
pub fn is_valid_gas_limit<T: EthSpec>(
297297
payload: &ExecutionPayload<T>,
298298
parent: &ExecutionPayloadHeader<T>,
299-
) -> bool {
299+
) -> Result<bool, ArithError> {
300300
// check if payload used too much gas
301301
if payload.gas_used > payload.gas_limit {
302-
return false;
302+
return Ok(false);
303303
}
304304
// check if payload changed the gas limit too much
305-
if payload.gas_limit >= parent.gas_limit + parent.gas_limit / T::gas_limit_denominator() {
306-
return false;
305+
if payload.gas_limit
306+
>= parent
307+
.gas_limit
308+
.safe_add(parent.gas_limit.safe_div(T::gas_limit_denominator())?)?
309+
{
310+
return Ok(false);
307311
}
308-
if payload.gas_limit <= parent.gas_limit - parent.gas_limit / T::gas_limit_denominator() {
309-
return false;
312+
if payload.gas_limit
313+
<= parent
314+
.gas_limit
315+
.safe_sub(parent.gas_limit.safe_div(T::gas_limit_denominator())?)?
316+
{
317+
return Ok(false);
310318
}
311319
// check if the gas limit is at least the minimum gas limit
312320
if payload.gas_limit < T::min_gas_limit() {
313-
return false;
321+
return Ok(false);
314322
}
315323

316-
return true;
324+
Ok(true)
317325
}
318326

319327
/// https://github.com/ethereum/consensus-specs/blob/dev/specs/merge/beacon-chain.md#process_execution_payload
@@ -352,7 +360,7 @@ pub fn process_execution_payload<T: EthSpec>(
352360
}
353361
);
354362
block_verify!(
355-
is_valid_gas_limit(payload, state.latest_execution_payload_header()?),
363+
is_valid_gas_limit(payload, state.latest_execution_payload_header()?)?,
356364
BlockProcessingError::ExecutionInvalidGasLimit {
357365
used: payload.gas_used,
358366
limit: payload.gas_limit,

0 commit comments

Comments
 (0)