chore: use Requests instead of Vec<Bytes> (#11895)

This commit is contained in:
Oliver
2024-10-19 17:17:14 +02:00
committed by GitHub
parent 1efa764b34
commit c803012085
12 changed files with 29 additions and 30 deletions

3
Cargo.lock generated
View File

@ -6417,6 +6417,7 @@ dependencies = [
name = "reth-beacon-consensus"
version = "1.1.0"
dependencies = [
"alloy-eips",
"alloy-genesis",
"alloy-primitives",
"alloy-rpc-types-engine",
@ -7217,6 +7218,7 @@ name = "reth-engine-util"
version = "1.1.0"
dependencies = [
"alloy-consensus",
"alloy-eips",
"alloy-primitives",
"alloy-rpc-types-engine",
"eyre",
@ -8400,7 +8402,6 @@ name = "reth-payload-validator"
version = "1.1.0"
dependencies = [
"alloy-eips",
"alloy-primitives",
"alloy-rpc-types",
"reth-chainspec",
"reth-primitives",

View File

@ -31,6 +31,7 @@ reth-node-types.workspace = true
reth-chainspec = { workspace = true, optional = true }
# ethereum
alloy-eips.workspace = true
alloy-primitives.workspace = true
alloy-rpc-types-engine.workspace = true

View File

@ -4,7 +4,7 @@ use crate::{
engine::message::OnForkChoiceUpdated, BeaconConsensusEngineEvent, BeaconEngineMessage,
BeaconForkChoiceUpdateError, BeaconOnNewPayloadError,
};
use alloy_primitives::Bytes;
use alloy_eips::eip7685::Requests;
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, ForkchoiceUpdated, PayloadStatus,
};
@ -48,7 +48,7 @@ where
&self,
payload: ExecutionPayload,
cancun_fields: Option<CancunPayloadFields>,
execution_requests: Option<Vec<Bytes>>,
execution_requests: Option<Requests>,
) -> Result<PayloadStatus, BeaconOnNewPayloadError> {
let (tx, rx) = oneshot::channel();
// HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary

View File

@ -1,5 +1,5 @@
use crate::engine::{error::BeaconOnNewPayloadError, forkchoice::ForkchoiceStatus};
use alloy_primitives::Bytes;
use alloy_eips::eip7685::Requests;
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkChoiceUpdateResult, ForkchoiceState,
ForkchoiceUpdateError, ForkchoiceUpdated, PayloadId, PayloadStatus, PayloadStatusEnum,
@ -150,7 +150,7 @@ pub enum BeaconEngineMessage<Engine: EngineTypes> {
// HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary
// workaround.
/// The pectra EIP-7685 execution requests.
execution_requests: Option<Vec<Bytes>>,
execution_requests: Option<Requests>,
/// The sender for returning payload status result.
tx: oneshot::Sender<Result<PayloadStatus, BeaconOnNewPayloadError>>,
},

View File

@ -1,4 +1,5 @@
use alloy_primitives::{BlockNumber, Bytes, B256};
use alloy_eips::eip7685::Requests;
use alloy_primitives::{BlockNumber, B256};
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus, PayloadStatusEnum,
PayloadValidationError,
@ -1087,7 +1088,7 @@ where
cancun_fields: Option<CancunPayloadFields>,
// HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary
// workaround.
execution_requests: Option<Vec<Bytes>>,
execution_requests: Option<Requests>,
) -> Result<Either<PayloadStatus, SealedBlock>, BeaconOnNewPayloadError> {
self.metrics.new_payload_messages.increment(1);

View File

@ -7,7 +7,7 @@ use crate::{
use alloy_eips::BlockNumHash;
use alloy_primitives::{
map::{HashMap, HashSet},
BlockNumber, Bytes, B256, U256,
BlockNumber, B256, U256,
};
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus, PayloadStatusEnum,
@ -70,6 +70,7 @@ use crate::{
engine::{EngineApiKind, EngineApiRequest},
tree::metrics::EngineApiMetrics,
};
use alloy_eips::eip7685::Requests;
pub use config::TreeConfig;
pub use invalid_block_hook::{InvalidBlockHooks, NoopInvalidBlockHook};
pub use persistence_state::PersistenceState;
@ -721,7 +722,7 @@ where
&mut self,
payload: ExecutionPayload,
cancun_fields: Option<CancunPayloadFields>,
execution_requests: Option<Vec<Bytes>>,
execution_requests: Option<Requests>,
) -> Result<TreeOutcome<PayloadStatus>, InsertBlockFatalError> {
trace!(target: "engine::tree", "invoked new payload");
self.metrics.engine.new_payload_messages.increment(1);

View File

@ -27,6 +27,7 @@ revm-primitives.workspace = true
reth-trie.workspace = true
# alloy
alloy-eips.workspace = true
alloy-primitives.workspace = true
alloy-rpc-types-engine.workspace = true
alloy-consensus.workspace = true
@ -49,6 +50,4 @@ itertools.workspace = true
tracing.workspace = true
[features]
optimism = [
"reth-beacon-consensus/optimism",
]
optimism = ["reth-beacon-consensus/optimism"]

View File

@ -1,7 +1,8 @@
//! Stream wrapper that simulates reorgs.
use alloy_consensus::Transaction;
use alloy_primitives::{Bytes, U256};
use alloy_eips::eip7685::Requests;
use alloy_primitives::U256;
use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus,
};
@ -250,8 +251,8 @@ fn create_reorg_head<Provider, Evm, Spec>(
mut depth: usize,
next_payload: ExecutionPayload,
next_cancun_fields: Option<CancunPayloadFields>,
next_execution_requests: Option<Vec<Bytes>>,
) -> RethResult<(ExecutionPayload, Option<CancunPayloadFields>, Option<Vec<Bytes>>)>
next_execution_requests: Option<Requests>,
) -> RethResult<(ExecutionPayload, Option<CancunPayloadFields>, Option<Requests>)>
where
Provider: BlockReader + StateProviderFactory,
Evm: ConfigureEvm<Header = Header>,

View File

@ -19,5 +19,4 @@ reth-rpc-types-compat.workspace = true
# alloy
alloy-eips.workspace = true
alloy-primitives.workspace = true
alloy-rpc-types = { workspace = true, features = ["engine"] }

View File

@ -9,7 +9,6 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
use alloy_eips::eip7685::Requests;
use alloy_primitives::Bytes;
use alloy_rpc_types::engine::{ExecutionPayload, MaybeCancunPayloadFields, PayloadError};
use reth_chainspec::EthereumHardforks;
use reth_primitives::SealedBlock;
@ -114,17 +113,14 @@ impl<ChainSpec: EthereumHardforks> ExecutionPayloadValidator<ChainSpec> {
&self,
payload: ExecutionPayload,
cancun_fields: MaybeCancunPayloadFields,
execution_requests: Option<Vec<Bytes>>,
execution_requests: Option<Requests>,
) -> Result<SealedBlock, PayloadError> {
let expected_hash = payload.block_hash();
// First parse the block
let sealed_block = try_into_block(
payload,
cancun_fields.parent_beacon_block_root(),
execution_requests.map(Requests::new),
)?
.seal_slow();
let sealed_block =
try_into_block(payload, cancun_fields.parent_beacon_block_root(), execution_requests)?
.seal_slow();
// Ensure the hash included in the payload matches the block hash
if expected_hash != sealed_block.hash() {

View File

@ -3,7 +3,7 @@
//! This contains the `engine_` namespace and the subset of the `eth_` namespace that is exposed to
//! the consensus client.
use alloy_eips::{eip4844::BlobAndProofV1, BlockId, BlockNumberOrTag};
use alloy_eips::{eip4844::BlobAndProofV1, eip7685::Requests, BlockId, BlockNumberOrTag};
use alloy_json_rpc::RpcObject;
use alloy_primitives::{Address, BlockHash, Bytes, B256, U256, U64};
use alloy_rpc_types::{
@ -57,7 +57,7 @@ pub trait EngineApi<Engine: EngineTypes> {
payload: ExecutionPayloadV3,
versioned_hashes: Vec<B256>,
parent_beacon_block_root: B256,
execution_requests: Vec<Bytes>,
execution_requests: Requests,
) -> RpcResult<PayloadStatus>;
/// See also <https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_forkchoiceupdatedv1>

View File

@ -1,8 +1,8 @@
use crate::{
capabilities::EngineCapabilities, metrics::EngineApiMetrics, EngineApiError, EngineApiResult,
};
use alloy_eips::eip4844::BlobAndProofV1;
use alloy_primitives::{BlockHash, BlockNumber, Bytes, B256, U64};
use alloy_eips::{eip4844::BlobAndProofV1, eip7685::Requests};
use alloy_primitives::{BlockHash, BlockNumber, B256, U64};
use alloy_rpc_types_engine::{
CancunPayloadFields, ClientVersionV1, ExecutionPayload, ExecutionPayloadBodiesV1,
ExecutionPayloadInputV2, ExecutionPayloadV1, ExecutionPayloadV3, ForkchoiceState,
@ -189,7 +189,7 @@ where
parent_beacon_block_root: B256,
// TODO(onbjerg): Figure out why we even get these here, since we'll check the requests
// from execution against the requests root in the header.
execution_requests: Vec<Bytes>,
execution_requests: Requests,
) -> EngineApiResult<PayloadStatus> {
let payload = ExecutionPayload::from(payload);
let payload_or_attrs =
@ -677,7 +677,7 @@ where
payload: ExecutionPayloadV3,
versioned_hashes: Vec<B256>,
parent_beacon_block_root: B256,
execution_requests: Vec<Bytes>,
execution_requests: Requests,
) -> RpcResult<PayloadStatus> {
trace!(target: "rpc::engine", "Serving engine_newPayloadV4");
let start = Instant::now();