Merge branch 'upstream/unstable' into capella

This commit is contained in:
Mark Mackey 2023-01-31 12:16:26 -06:00
commit d842215a44
No known key found for this signature in database
GPG Key ID: 269A603C167EBC6F
11 changed files with 33 additions and 28 deletions

View File

@ -167,7 +167,8 @@ lint:
-A clippy::from-over-into \ -A clippy::from-over-into \
-A clippy::upper-case-acronyms \ -A clippy::upper-case-acronyms \
-A clippy::vec-init-then-push \ -A clippy::vec-init-then-push \
-A clippy::question-mark -A clippy::question-mark \
-A clippy::uninlined-format-args
nightly-lint: nightly-lint:
cp .github/custom/clippy.toml . cp .github/custom/clippy.toml .

View File

@ -27,6 +27,11 @@
//! ▼ //! ▼
//! impl VerifiedAttestation //! impl VerifiedAttestation
//! ``` //! ```
// Ignore this lint for `AttestationSlashInfo` which is of comparable size to the non-error types it
// is returned alongside.
#![allow(clippy::result_large_err)]
mod batch; mod batch;
use crate::{ use crate::{

View File

@ -980,7 +980,9 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
.ok_or(Error::ExecutionLayerMissing)? .ok_or(Error::ExecutionLayerMissing)?
.get_payload_by_block_hash(exec_block_hash, fork) .get_payload_by_block_hash(exec_block_hash, fork)
.await .await
.map_err(|e| Error::ExecutionLayerErrorPayloadReconstruction(exec_block_hash, e))? .map_err(|e| {
Error::ExecutionLayerErrorPayloadReconstruction(exec_block_hash, Box::new(e))
})?
.ok_or(Error::BlockHashMissingFromExecutionLayer(exec_block_hash))?; .ok_or(Error::BlockHashMissingFromExecutionLayer(exec_block_hash))?;
//FIXME(sean) avoid the clone by comparing refs to headers (`as_execution_payload_header` method ?) //FIXME(sean) avoid the clone by comparing refs to headers (`as_execution_payload_header` method ?)
@ -1000,8 +1002,6 @@ impl<T: BeaconChainTypes> BeaconChain<T> {
return Err(Error::InconsistentPayloadReconstructed { return Err(Error::InconsistentPayloadReconstructed {
slot: blinded_block.slot(), slot: blinded_block.slot(),
exec_block_hash, exec_block_hash,
canonical_payload_root: execution_payload_header.tree_hash_root(),
reconstructed_payload_root: header_from_payload.tree_hash_root(),
canonical_transactions_root: execution_payload_header.transactions_root(), canonical_transactions_root: execution_payload_header.transactions_root(),
reconstructed_transactions_root: header_from_payload.transactions_root(), reconstructed_transactions_root: header_from_payload.transactions_root(),
}); });

View File

@ -42,6 +42,11 @@
//! END //! END
//! //!
//! ``` //! ```
// Ignore this lint for `BlockSlashInfo` which is of comparable size to the non-error types it is
// returned alongside.
#![allow(clippy::result_large_err)]
use crate::eth1_finalization_cache::Eth1FinalizationData; use crate::eth1_finalization_cache::Eth1FinalizationData;
use crate::execution_payload::{ use crate::execution_payload::{
is_optimistic_candidate_block, validate_execution_payload_for_gossip, validate_merge_block, is_optimistic_candidate_block, validate_execution_payload_for_gossip, validate_merge_block,

View File

@ -143,13 +143,11 @@ pub enum BeaconChainError {
BuilderMissing, BuilderMissing,
ExecutionLayerMissing, ExecutionLayerMissing,
BlockVariantLacksExecutionPayload(Hash256), BlockVariantLacksExecutionPayload(Hash256),
ExecutionLayerErrorPayloadReconstruction(ExecutionBlockHash, execution_layer::Error), ExecutionLayerErrorPayloadReconstruction(ExecutionBlockHash, Box<execution_layer::Error>),
BlockHashMissingFromExecutionLayer(ExecutionBlockHash), BlockHashMissingFromExecutionLayer(ExecutionBlockHash),
InconsistentPayloadReconstructed { InconsistentPayloadReconstructed {
slot: Slot, slot: Slot,
exec_block_hash: ExecutionBlockHash, exec_block_hash: ExecutionBlockHash,
canonical_payload_root: Hash256,
reconstructed_payload_root: Hash256,
canonical_transactions_root: Hash256, canonical_transactions_root: Hash256,
reconstructed_transactions_root: Hash256, reconstructed_transactions_root: Hash256,
}, },

View File

@ -43,7 +43,7 @@ impl ForkChoiceSignalTx {
/// ///
/// Return an error if the provided `slot` is strictly less than any previously provided slot. /// Return an error if the provided `slot` is strictly less than any previously provided slot.
pub fn notify_fork_choice_complete(&self, slot: Slot) -> Result<(), BeaconChainError> { pub fn notify_fork_choice_complete(&self, slot: Slot) -> Result<(), BeaconChainError> {
let &(ref lock, ref condvar) = &*self.pair; let (lock, condvar) = &*self.pair;
let mut current_slot = lock.lock(); let mut current_slot = lock.lock();
@ -72,7 +72,7 @@ impl Default for ForkChoiceSignalTx {
impl ForkChoiceSignalRx { impl ForkChoiceSignalRx {
pub fn wait_for_fork_choice(&self, slot: Slot, timeout: Duration) -> ForkChoiceWaitResult { pub fn wait_for_fork_choice(&self, slot: Slot, timeout: Duration) -> ForkChoiceWaitResult {
let &(ref lock, ref condvar) = &*self.pair; let (lock, condvar) = &*self.pair;
let mut current_slot = lock.lock(); let mut current_slot = lock.lock();

View File

@ -97,7 +97,7 @@ You can opt-in to reconstructing all of the historic states by providing the
The database keeps track of three markers to determine the availability of historic blocks and The database keeps track of three markers to determine the availability of historic blocks and
states: states:
* `oldest_block_slot`: All blocks with slots less than or equal to this value are available in the * `oldest_block_slot`: All blocks with slots greater than or equal to this value are available in the
database. Additionally, the genesis block is always available. database. Additionally, the genesis block is always available.
* `state_lower_limit`: All states with slots _less than or equal to_ this value are available in * `state_lower_limit`: All states with slots _less than or equal to_ this value are available in
the database. The minimum value is 0, indicating that the genesis state is always available. the database. The minimum value is 0, indicating that the genesis state is always available.

View File

@ -115,11 +115,7 @@ impl Comparison {
let mut children = vec![]; let mut children = vec![];
for i in 0..std::cmp::max(a.len(), b.len()) { for i in 0..std::cmp::max(a.len(), b.len()) {
children.push(FieldComparison::new( children.push(FieldComparison::new(format!("{i}"), &a.get(i), &b.get(i)));
format!("{:}", i),
&a.get(i),
&b.get(i),
));
} }
Self::parent(field_name, a == b, children) Self::parent(field_name, a == b, children)
@ -164,8 +160,8 @@ impl FieldComparison {
Self { Self {
field_name, field_name,
equal: a == b, equal: a == b,
a: format!("{:?}", a), a: format!("{a:?}"),
b: format!("{:?}", b), b: format!("{b:?}"),
} }
} }

View File

@ -32,7 +32,7 @@ pub fn compare_fields_derive(input: TokenStream) -> TokenStream {
_ => panic!("compare_fields_derive only supports named struct fields."), _ => panic!("compare_fields_derive only supports named struct fields."),
}; };
let field_name = format!("{:}", ident_a); let field_name = ident_a.to_string();
let ident_b = ident_a.clone(); let ident_b = ident_a.clone();
let quote = if is_slice(field) { let quote = if is_slice(field) {

View File

@ -343,10 +343,10 @@ pub fn get_new_eth1_data<T: EthSpec>(
/// Contains a partial set of checks from the `process_execution_payload` function: /// Contains a partial set of checks from the `process_execution_payload` function:
/// ///
/// https://github.com/ethereum/consensus-specs/blob/v1.1.5/specs/merge/beacon-chain.md#process_execution_payload /// https://github.com/ethereum/consensus-specs/blob/v1.1.5/specs/merge/beacon-chain.md#process_execution_payload
pub fn partially_verify_execution_payload<'payload, T: EthSpec, Payload: AbstractExecPayload<T>>( pub fn partially_verify_execution_payload<T: EthSpec, Payload: AbstractExecPayload<T>>(
state: &BeaconState<T>, state: &BeaconState<T>,
block_slot: Slot, block_slot: Slot,
payload: Payload::Ref<'payload>, payload: Payload::Ref<'_>,
spec: &ChainSpec, spec: &ChainSpec,
) -> Result<(), BlockProcessingError> { ) -> Result<(), BlockProcessingError> {
if is_merge_transition_complete(state) { if is_merge_transition_complete(state) {
@ -385,9 +385,9 @@ pub fn partially_verify_execution_payload<'payload, T: EthSpec, Payload: Abstrac
/// Partially equivalent to the `process_execution_payload` function: /// Partially equivalent to the `process_execution_payload` function:
/// ///
/// https://github.com/ethereum/consensus-specs/blob/v1.1.5/specs/merge/beacon-chain.md#process_execution_payload /// https://github.com/ethereum/consensus-specs/blob/v1.1.5/specs/merge/beacon-chain.md#process_execution_payload
pub fn process_execution_payload<'payload, T: EthSpec, Payload: AbstractExecPayload<T>>( pub fn process_execution_payload<T: EthSpec, Payload: AbstractExecPayload<T>>(
state: &mut BeaconState<T>, state: &mut BeaconState<T>,
payload: Payload::Ref<'payload>, payload: Payload::Ref<'_>,
spec: &ChainSpec, spec: &ChainSpec,
) -> Result<(), BlockProcessingError> { ) -> Result<(), BlockProcessingError> {
partially_verify_execution_payload::<T, Payload>(state, state.slot(), payload, spec)?; partially_verify_execution_payload::<T, Payload>(state, state.slot(), payload, spec)?;
@ -516,9 +516,9 @@ pub fn get_expected_withdrawals<T: EthSpec>(
} }
/// Apply withdrawals to the state. /// Apply withdrawals to the state.
pub fn process_withdrawals<'payload, T: EthSpec, Payload: AbstractExecPayload<T>>( pub fn process_withdrawals<T: EthSpec, Payload: AbstractExecPayload<T>>(
state: &mut BeaconState<T>, state: &mut BeaconState<T>,
payload: Payload::Ref<'payload>, payload: Payload::Ref<'_>,
spec: &ChainSpec, spec: &ChainSpec,
) -> Result<(), BlockProcessingError> { ) -> Result<(), BlockProcessingError> {
match state { match state {

View File

@ -9,9 +9,9 @@ use crate::VerifySignatures;
use safe_arith::SafeArith; use safe_arith::SafeArith;
use types::consts::altair::{PARTICIPATION_FLAG_WEIGHTS, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR}; use types::consts::altair::{PARTICIPATION_FLAG_WEIGHTS, PROPOSER_WEIGHT, WEIGHT_DENOMINATOR};
pub fn process_operations<'a, T: EthSpec, Payload: AbstractExecPayload<T>>( pub fn process_operations<T: EthSpec, Payload: AbstractExecPayload<T>>(
state: &mut BeaconState<T>, state: &mut BeaconState<T>,
block_body: BeaconBlockBodyRef<'a, T, Payload>, block_body: BeaconBlockBodyRef<T, Payload>,
verify_signatures: VerifySignatures, verify_signatures: VerifySignatures,
ctxt: &mut ConsensusContext<T>, ctxt: &mut ConsensusContext<T>,
spec: &ChainSpec, spec: &ChainSpec,
@ -237,9 +237,9 @@ pub fn process_attester_slashings<T: EthSpec>(
} }
/// Wrapper function to handle calling the correct version of `process_attestations` based on /// Wrapper function to handle calling the correct version of `process_attestations` based on
/// the fork. /// the fork.
pub fn process_attestations<'a, T: EthSpec, Payload: AbstractExecPayload<T>>( pub fn process_attestations<T: EthSpec, Payload: AbstractExecPayload<T>>(
state: &mut BeaconState<T>, state: &mut BeaconState<T>,
block_body: BeaconBlockBodyRef<'a, T, Payload>, block_body: BeaconBlockBodyRef<T, Payload>,
verify_signatures: VerifySignatures, verify_signatures: VerifySignatures,
ctxt: &mut ConsensusContext<T>, ctxt: &mut ConsensusContext<T>,
spec: &ChainSpec, spec: &ChainSpec,