Fix clippy lints on merge-f2f (#2626)
* Remove unchecked arith from ssz_derive * Address clippy lints in block_verfication * Use safe math for is_valid_gas_limit
This commit is contained in:
parent
cce855f9ea
commit
c10e8ce955
@ -1071,19 +1071,20 @@ impl<'a, T: BeaconChainTypes> FullyVerifiedBlock<'a, T> {
|
|||||||
ExecutionPayloadError::NoEth1Connection,
|
ExecutionPayloadError::NoEth1Connection,
|
||||||
))?;
|
))?;
|
||||||
|
|
||||||
if !eth1_chain
|
let payload_valid = eth1_chain
|
||||||
.on_payload(block.message().body().execution_payload().ok_or(
|
.on_payload(block.message().body().execution_payload().ok_or_else(|| {
|
||||||
BlockError::InconsistentFork(InconsistentFork {
|
BlockError::InconsistentFork(InconsistentFork {
|
||||||
fork_at_slot: eth2::types::ForkName::Merge,
|
fork_at_slot: eth2::types::ForkName::Merge,
|
||||||
object_fork: block.message().body().fork_name(),
|
object_fork: block.message().body().fork_name(),
|
||||||
}),
|
})
|
||||||
)?)
|
})?)
|
||||||
.map_err(|e| {
|
.map_err(|e| {
|
||||||
BlockError::ExecutionPayloadError(ExecutionPayloadError::Eth1VerificationError(
|
BlockError::ExecutionPayloadError(ExecutionPayloadError::Eth1VerificationError(
|
||||||
e,
|
e,
|
||||||
))
|
))
|
||||||
})?
|
})?;
|
||||||
{
|
|
||||||
|
if !payload_valid {
|
||||||
return Err(BlockError::ExecutionPayloadError(
|
return Err(BlockError::ExecutionPayloadError(
|
||||||
ExecutionPayloadError::RejectedByExecutionEngine,
|
ExecutionPayloadError::RejectedByExecutionEngine,
|
||||||
));
|
));
|
||||||
@ -1212,17 +1213,17 @@ fn validate_execution_payload<E: EthSpec>(
|
|||||||
.execution_payload()
|
.execution_payload()
|
||||||
// TODO: this really should never error so maybe
|
// TODO: this really should never error so maybe
|
||||||
// we should make this simpler..
|
// we should make this simpler..
|
||||||
.ok_or(BlockError::InconsistentFork(InconsistentFork {
|
.ok_or_else(|| {
|
||||||
fork_at_slot: eth2::types::ForkName::Merge,
|
BlockError::InconsistentFork(InconsistentFork {
|
||||||
object_fork: block.body().fork_name(),
|
fork_at_slot: eth2::types::ForkName::Merge,
|
||||||
}))?;
|
object_fork: block.body().fork_name(),
|
||||||
|
})
|
||||||
|
})?;
|
||||||
|
|
||||||
if is_merge_complete(state) {
|
if is_merge_complete(state) && *execution_payload == <ExecutionPayload<E>>::default() {
|
||||||
if *execution_payload == <ExecutionPayload<E>>::default() {
|
return Err(BlockError::ExecutionPayloadError(
|
||||||
return Err(BlockError::ExecutionPayloadError(
|
ExecutionPayloadError::PayloadEmpty,
|
||||||
ExecutionPayloadError::PayloadEmpty,
|
));
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: finish these
|
// TODO: finish these
|
||||||
|
@ -296,24 +296,32 @@ pub fn get_new_eth1_data<T: EthSpec>(
|
|||||||
pub fn is_valid_gas_limit<T: EthSpec>(
|
pub fn is_valid_gas_limit<T: EthSpec>(
|
||||||
payload: &ExecutionPayload<T>,
|
payload: &ExecutionPayload<T>,
|
||||||
parent: &ExecutionPayloadHeader<T>,
|
parent: &ExecutionPayloadHeader<T>,
|
||||||
) -> bool {
|
) -> Result<bool, ArithError> {
|
||||||
// check if payload used too much gas
|
// check if payload used too much gas
|
||||||
if payload.gas_used > payload.gas_limit {
|
if payload.gas_used > payload.gas_limit {
|
||||||
return false;
|
return Ok(false);
|
||||||
}
|
}
|
||||||
// check if payload changed the gas limit too much
|
// check if payload changed the gas limit too much
|
||||||
if payload.gas_limit >= parent.gas_limit + parent.gas_limit / T::gas_limit_denominator() {
|
if payload.gas_limit
|
||||||
return false;
|
>= parent
|
||||||
|
.gas_limit
|
||||||
|
.safe_add(parent.gas_limit.safe_div(T::gas_limit_denominator())?)?
|
||||||
|
{
|
||||||
|
return Ok(false);
|
||||||
}
|
}
|
||||||
if payload.gas_limit <= parent.gas_limit - parent.gas_limit / T::gas_limit_denominator() {
|
if payload.gas_limit
|
||||||
return false;
|
<= parent
|
||||||
|
.gas_limit
|
||||||
|
.safe_sub(parent.gas_limit.safe_div(T::gas_limit_denominator())?)?
|
||||||
|
{
|
||||||
|
return Ok(false);
|
||||||
}
|
}
|
||||||
// check if the gas limit is at least the minimum gas limit
|
// check if the gas limit is at least the minimum gas limit
|
||||||
if payload.gas_limit < T::min_gas_limit() {
|
if payload.gas_limit < T::min_gas_limit() {
|
||||||
return false;
|
return Ok(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
Ok(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// https://github.com/ethereum/consensus-specs/blob/dev/specs/merge/beacon-chain.md#process_execution_payload
|
/// 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>(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
block_verify!(
|
block_verify!(
|
||||||
is_valid_gas_limit(payload, state.latest_execution_payload_header()?),
|
is_valid_gas_limit(payload, state.latest_execution_payload_header()?)?,
|
||||||
BlockProcessingError::ExecutionInvalidGasLimit {
|
BlockProcessingError::ExecutionInvalidGasLimit {
|
||||||
used: payload.gas_used,
|
used: payload.gas_used,
|
||||||
limit: payload.gas_limit,
|
limit: payload.gas_limit,
|
||||||
|
Loading…
Reference in New Issue
Block a user