mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 19:09:54 +00:00
chore: use Requests instead of Vec<Bytes> (#11895)
This commit is contained in:
3
Cargo.lock
generated
3
Cargo.lock
generated
@ -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",
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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>>,
|
||||||
},
|
},
|
||||||
|
|||||||
@ -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);
|
||||||
|
|
||||||
|
|||||||
@ -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);
|
||||||
|
|||||||
@ -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",
|
|
||||||
]
|
|
||||||
|
|||||||
@ -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>,
|
||||||
|
|||||||
@ -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"] }
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user