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

View File

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

View File

@ -4,7 +4,7 @@ use crate::{
engine::message::OnForkChoiceUpdated, BeaconConsensusEngineEvent, BeaconEngineMessage, engine::message::OnForkChoiceUpdated, BeaconConsensusEngineEvent, BeaconEngineMessage,
BeaconForkChoiceUpdateError, BeaconOnNewPayloadError, BeaconForkChoiceUpdateError, BeaconOnNewPayloadError,
}; };
use alloy_primitives::Bytes; use alloy_eips::eip7685::Requests;
use alloy_rpc_types_engine::{ use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, ForkchoiceUpdated, PayloadStatus, CancunPayloadFields, ExecutionPayload, ForkchoiceState, ForkchoiceUpdated, PayloadStatus,
}; };
@ -48,7 +48,7 @@ where
&self, &self,
payload: ExecutionPayload, payload: ExecutionPayload,
cancun_fields: Option<CancunPayloadFields>, cancun_fields: Option<CancunPayloadFields>,
execution_requests: Option<Vec<Bytes>>, execution_requests: Option<Requests>,
) -> Result<PayloadStatus, BeaconOnNewPayloadError> { ) -> Result<PayloadStatus, BeaconOnNewPayloadError> {
let (tx, rx) = oneshot::channel(); let (tx, rx) = oneshot::channel();
// HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary // 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 crate::engine::{error::BeaconOnNewPayloadError, forkchoice::ForkchoiceStatus};
use alloy_primitives::Bytes; use alloy_eips::eip7685::Requests;
use alloy_rpc_types_engine::{ use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkChoiceUpdateResult, ForkchoiceState, CancunPayloadFields, ExecutionPayload, ForkChoiceUpdateResult, ForkchoiceState,
ForkchoiceUpdateError, ForkchoiceUpdated, PayloadId, PayloadStatus, PayloadStatusEnum, 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 // HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary
// workaround. // workaround.
/// The pectra EIP-7685 execution requests. /// The pectra EIP-7685 execution requests.
execution_requests: Option<Vec<Bytes>>, execution_requests: Option<Requests>,
/// The sender for returning payload status result. /// The sender for returning payload status result.
tx: oneshot::Sender<Result<PayloadStatus, BeaconOnNewPayloadError>>, 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::{ use alloy_rpc_types_engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus, PayloadStatusEnum, CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus, PayloadStatusEnum,
PayloadValidationError, PayloadValidationError,
@ -1087,7 +1088,7 @@ where
cancun_fields: Option<CancunPayloadFields>, cancun_fields: Option<CancunPayloadFields>,
// HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary // HACK(onbjerg): We should have a pectra payload fields struct, this is just a temporary
// workaround. // workaround.
execution_requests: Option<Vec<Bytes>>, execution_requests: Option<Requests>,
) -> Result<Either<PayloadStatus, SealedBlock>, BeaconOnNewPayloadError> { ) -> Result<Either<PayloadStatus, SealedBlock>, BeaconOnNewPayloadError> {
self.metrics.new_payload_messages.increment(1); self.metrics.new_payload_messages.increment(1);

View File

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

View File

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

View File

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

View File

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

View File

@ -9,7 +9,6 @@
#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))] #![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
use alloy_eips::eip7685::Requests; use alloy_eips::eip7685::Requests;
use alloy_primitives::Bytes;
use alloy_rpc_types::engine::{ExecutionPayload, MaybeCancunPayloadFields, PayloadError}; use alloy_rpc_types::engine::{ExecutionPayload, MaybeCancunPayloadFields, PayloadError};
use reth_chainspec::EthereumHardforks; use reth_chainspec::EthereumHardforks;
use reth_primitives::SealedBlock; use reth_primitives::SealedBlock;
@ -114,17 +113,14 @@ impl<ChainSpec: EthereumHardforks> ExecutionPayloadValidator<ChainSpec> {
&self, &self,
payload: ExecutionPayload, payload: ExecutionPayload,
cancun_fields: MaybeCancunPayloadFields, cancun_fields: MaybeCancunPayloadFields,
execution_requests: Option<Vec<Bytes>>, execution_requests: Option<Requests>,
) -> Result<SealedBlock, PayloadError> { ) -> Result<SealedBlock, PayloadError> {
let expected_hash = payload.block_hash(); let expected_hash = payload.block_hash();
// First parse the block // First parse the block
let sealed_block = try_into_block( let sealed_block =
payload, try_into_block(payload, cancun_fields.parent_beacon_block_root(), execution_requests)?
cancun_fields.parent_beacon_block_root(), .seal_slow();
execution_requests.map(Requests::new),
)?
.seal_slow();
// Ensure the hash included in the payload matches the block hash // Ensure the hash included in the payload matches the block hash
if expected_hash != sealed_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 //! This contains the `engine_` namespace and the subset of the `eth_` namespace that is exposed to
//! the consensus client. //! 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_json_rpc::RpcObject;
use alloy_primitives::{Address, BlockHash, Bytes, B256, U256, U64}; use alloy_primitives::{Address, BlockHash, Bytes, B256, U256, U64};
use alloy_rpc_types::{ use alloy_rpc_types::{
@ -57,7 +57,7 @@ pub trait EngineApi<Engine: EngineTypes> {
payload: ExecutionPayloadV3, payload: ExecutionPayloadV3,
versioned_hashes: Vec<B256>, versioned_hashes: Vec<B256>,
parent_beacon_block_root: B256, parent_beacon_block_root: B256,
execution_requests: Vec<Bytes>, execution_requests: Requests,
) -> RpcResult<PayloadStatus>; ) -> RpcResult<PayloadStatus>;
/// See also <https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_forkchoiceupdatedv1> /// See also <https://github.com/ethereum/execution-apis/blob/6709c2a795b707202e93c4f2867fa0bf2640a84f/src/engine/paris.md#engine_forkchoiceupdatedv1>

View File

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