Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 2 additions & 24 deletions .github/assets/hive/expected_failures.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,30 +50,8 @@ engine-cancun:

sync: []

# no fix: it’s too expensive to check whether the storage is empty on each creation
eest/consume-engine:
# no fix: it’s too expensive to check whether the storage is empty on each creation
- tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_set_code_to_non_empty_storage[fork_Prague-blockchain_test_engine-zero_nonce]-reth
# no fix: mismatch between hive expectations and reth error code returned
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-duplicate_deposit_request-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-duplicate_withdrawal_request-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-duplicate_consolidation_request-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-duplicate_deposit_request-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-duplicate_withdrawal_request-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-extra_empty_request-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-extra_invalid_type_request_with_no_data-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-incorrect_order_first_request_at_end-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-incorrect_order_last_request_at_beginning-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-incorrect_order_second_request_at_end-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-no_requests_invalid_hash_calculation_method-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-extra_empty_request-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-extra_invalid_type_request_with_no_data-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-incorrect_order_first_request_at_end-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-incorrect_order_last_request_at_beginning-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-incorrect_order_second_request_at_end-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-no_requests_invalid_hash_calculation_method-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-no_requests_invalid_hash_calculation_method_2-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests[fork_Prague-no_requests_invalid_hash_calculation_method_2-blockchain_test_engine]-reth
- tests/prague/eip7685_general_purpose_el_requests/test_deposits_withdrawals_consolidations.py::test_invalid_deposit_withdrawal_consolidation_requests_engine[fork_Prague-duplicate_consolidation_request-blockchain_test_engine-correct_requests_hash_in_header_True]-reth
eest/consume-rlp:
# no fix: it’s too expensive to check whether the storage is empty on each creation
est/consume-rlp:
- tests/prague/eip7702_set_code_tx/test_set_code_txs.py::test_set_code_to_non_empty_storage[fork_Prague-blockchain_test-zero_nonce]-reth
1 change: 1 addition & 0 deletions crates/ethereum/node/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ reth-payload-primitives.workspace = true
# ethereum
alloy-rpc-types-eth.workspace = true
alloy-rpc-types-engine.workspace = true
alloy-eips.workspace = true
# revm with required ethereum features
revm = { workspace = true, features = ["secp256k1", "blst", "c-kzg"] }

Expand Down
14 changes: 12 additions & 2 deletions crates/ethereum/node/src/engine.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
//! Validates execution payload wrt Ethereum Execution Engine API version.

use alloy_eips::eip7685::RequestsOrHash;
use alloy_rpc_types_engine::ExecutionData;
pub use alloy_rpc_types_engine::{
ExecutionPayloadEnvelopeV2, ExecutionPayloadEnvelopeV3, ExecutionPayloadEnvelopeV4,
Expand All @@ -9,8 +10,8 @@ use reth_chainspec::ChainSpec;
use reth_engine_primitives::{EngineTypes, EngineValidator, PayloadValidator};
use reth_ethereum_payload_builder::EthereumExecutionPayloadValidator;
use reth_payload_primitives::{
validate_version_specific_fields, EngineApiMessageVersion, EngineObjectValidationError,
NewPayloadError, PayloadOrAttributes,
validate_execution_requests, validate_version_specific_fields, EngineApiMessageVersion,
EngineObjectValidationError, NewPayloadError, PayloadOrAttributes,
};
use reth_primitives::{Block, RecoveredBlock};
use std::sync::Arc;
Expand Down Expand Up @@ -56,6 +57,15 @@ where
version: EngineApiMessageVersion,
payload_or_attrs: PayloadOrAttributes<'_, Self::ExecutionData, EthPayloadAttributes>,
) -> Result<(), EngineObjectValidationError> {
if let PayloadOrAttributes::ExecutionPayload(payload) = &payload_or_attrs {
if let Some(prague_fields) = payload.sidecar.prague() {
if let RequestsOrHash::Requests(requests) = &prague_fields.requests {
validate_execution_requests(requests)?;
}
}
}

// Validate base fields using the existing function
validate_version_specific_fields(self.chain_spec(), version, payload_or_attrs)
}

Expand Down
Loading