From 8d4a9216120635f6b093584082b10c3ee7bc59af Mon Sep 17 00:00:00 2001 From: realbigsean Date: Sun, 12 May 2024 05:34:16 -0400 Subject: [PATCH] add new operation tests --- testing/ef_tests/src/cases/operations.rs | 77 +++++++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/testing/ef_tests/src/cases/operations.rs b/testing/ef_tests/src/cases/operations.rs index 730136e19c..b5906ceee5 100644 --- a/testing/ef_tests/src/cases/operations.rs +++ b/testing/ef_tests/src/cases/operations.rs @@ -6,6 +6,9 @@ use serde::Deserialize; use ssz::Decode; use state_processing::common::update_progressive_balances_cache::initialize_progressive_balances_cache; use state_processing::epoch_cache::initialize_epoch_cache; +use state_processing::per_block_processing::process_operations::{ + process_consolidations, process_deposit_receipts, process_execution_layer_withdrawal_requests, +}; use state_processing::{ per_block_processing::{ errors::BlockProcessingError, @@ -22,8 +25,9 @@ use std::fmt::Debug; use types::{ Attestation, AttesterSlashing, BeaconBlock, BeaconBlockBody, BeaconBlockBodyBellatrix, BeaconBlockBodyCapella, BeaconBlockBodyDeneb, BeaconBlockBodyElectra, BeaconState, - BlindedPayload, Deposit, ExecutionPayload, FullPayload, ProposerSlashing, - SignedBlsToExecutionChange, SignedVoluntaryExit, SyncAggregate, + BlindedPayload, Deposit, DepositReceipt, ExecutionLayerWithdrawalRequest, ExecutionPayload, + FullPayload, ProposerSlashing, SignedBlsToExecutionChange, SignedConsolidation, + SignedVoluntaryExit, SyncAggregate, }; #[derive(Debug, Clone, Default, Deserialize)] @@ -437,6 +441,75 @@ impl Operation for SignedBlsToExecutionChange { } } +impl Operation for ExecutionLayerWithdrawalRequest { + fn handler_name() -> String { + "execution_layer_withdrawal_request".into() + } + + fn is_enabled_for_fork(fork_name: ForkName) -> bool { + fork_name >= ForkName::Electra + } + + fn decode(path: &Path, _fork_name: ForkName, _spec: &ChainSpec) -> Result { + ssz_decode_file(path) + } + + fn apply_to( + &self, + state: &mut BeaconState, + spec: &ChainSpec, + _extra: &Operations, + ) -> Result<(), BlockProcessingError> { + process_execution_layer_withdrawal_requests(state, &[self.clone()], spec) + } +} + +impl Operation for DepositReceipt { + fn handler_name() -> String { + "deposit_receipt".into() + } + + fn is_enabled_for_fork(fork_name: ForkName) -> bool { + fork_name >= ForkName::Electra + } + + fn decode(path: &Path, _fork_name: ForkName, _spec: &ChainSpec) -> Result { + ssz_decode_file(path) + } + + fn apply_to( + &self, + state: &mut BeaconState, + spec: &ChainSpec, + _extra: &Operations, + ) -> Result<(), BlockProcessingError> { + process_deposit_receipts(state, &[self.clone()], spec) + } +} + +impl Operation for SignedConsolidation { + fn handler_name() -> String { + "consolidation".into() + } + + fn is_enabled_for_fork(fork_name: ForkName) -> bool { + fork_name >= ForkName::Electra + } + + fn decode(path: &Path, _fork_name: ForkName, _spec: &ChainSpec) -> Result { + ssz_decode_file(path) + } + + fn apply_to( + &self, + state: &mut BeaconState, + spec: &ChainSpec, + _extra: &Operations, + ) -> Result<(), BlockProcessingError> { + process_consolidations(state, &[self.clone()], VerifySignatures::True, spec) + } +} + impl> LoadCase for Operations { fn load_from_dir(path: &Path, fork_name: ForkName) -> Result { let spec = &testing_spec::(fork_name);