mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
refactor: integrate BuiltPayload::Primitives (#13484)
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
This commit is contained in:
@ -33,6 +33,7 @@ reth-revm = { workspace = true, features = ["std"] }
|
||||
reth-beacon-consensus.workspace = true
|
||||
reth-trie-db.workspace = true
|
||||
reth-rpc-server-types.workspace = true
|
||||
reth-rpc-types-compat.workspace = true
|
||||
reth-tasks = { workspace = true, optional = true }
|
||||
|
||||
# op-reth
|
||||
|
||||
@ -12,13 +12,15 @@ use reth_node_api::{
|
||||
EngineObjectValidationError, MessageValidationKind, PayloadOrAttributes, PayloadTypes,
|
||||
VersionSpecificValidationError,
|
||||
},
|
||||
validate_version_specific_fields, EngineTypes, EngineValidator, PayloadValidator,
|
||||
validate_version_specific_fields, BuiltPayload, EngineTypes, EngineValidator, NodePrimitives,
|
||||
PayloadValidator,
|
||||
};
|
||||
use reth_optimism_chainspec::OpChainSpec;
|
||||
use reth_optimism_forks::{OpHardfork, OpHardforks};
|
||||
use reth_optimism_payload_builder::{OpBuiltPayload, OpPayloadBuilderAttributes};
|
||||
use reth_payload_validator::ExecutionPayloadValidator;
|
||||
use reth_primitives::{Block, SealedBlockFor};
|
||||
use reth_rpc_types_compat::engine::payload::block_to_payload;
|
||||
use std::sync::Arc;
|
||||
|
||||
/// The types used in the optimism beacon consensus engine.
|
||||
@ -36,7 +38,8 @@ impl<T: PayloadTypes> PayloadTypes for OpEngineTypes<T> {
|
||||
|
||||
impl<T: PayloadTypes> EngineTypes for OpEngineTypes<T>
|
||||
where
|
||||
T::BuiltPayload: TryInto<ExecutionPayloadV1>
|
||||
T::BuiltPayload: BuiltPayload<Primitives: NodePrimitives<Block = reth_primitives::Block>>
|
||||
+ TryInto<ExecutionPayloadV1>
|
||||
+ TryInto<ExecutionPayloadEnvelopeV2>
|
||||
+ TryInto<OpExecutionPayloadEnvelopeV3>
|
||||
+ TryInto<OpExecutionPayloadEnvelopeV4>,
|
||||
@ -45,6 +48,14 @@ where
|
||||
type ExecutionPayloadEnvelopeV2 = ExecutionPayloadEnvelopeV2;
|
||||
type ExecutionPayloadEnvelopeV3 = OpExecutionPayloadEnvelopeV3;
|
||||
type ExecutionPayloadEnvelopeV4 = OpExecutionPayloadEnvelopeV4;
|
||||
|
||||
fn block_to_payload(
|
||||
block: SealedBlockFor<
|
||||
<<Self::BuiltPayload as BuiltPayload>::Primitives as NodePrimitives>::Block,
|
||||
>,
|
||||
) -> (ExecutionPayload, ExecutionPayloadSidecar) {
|
||||
block_to_payload(block)
|
||||
}
|
||||
}
|
||||
|
||||
/// A default payload type for [`OpEngineTypes`]
|
||||
|
||||
@ -33,6 +33,7 @@ reth-optimism-chainspec.workspace = true
|
||||
reth-optimism-consensus.workspace = true
|
||||
reth-optimism-evm.workspace = true
|
||||
reth-optimism-forks.workspace = true
|
||||
reth-optimism-primitives.workspace = true
|
||||
|
||||
# ethereum
|
||||
revm.workspace = true
|
||||
@ -57,5 +58,6 @@ optimism = [
|
||||
"reth-optimism-evm/optimism",
|
||||
"revm/optimism",
|
||||
"reth-execution-types/optimism",
|
||||
"reth-optimism-consensus/optimism"
|
||||
]
|
||||
"reth-optimism-consensus/optimism",
|
||||
"reth-optimism-primitives/optimism"
|
||||
]
|
||||
|
||||
@ -14,6 +14,7 @@ use op_alloy_rpc_types_engine::{OpExecutionPayloadEnvelopeV3, OpExecutionPayload
|
||||
use reth_chain_state::ExecutedBlock;
|
||||
use reth_chainspec::EthereumHardforks;
|
||||
use reth_optimism_chainspec::OpChainSpec;
|
||||
use reth_optimism_primitives::OpPrimitives;
|
||||
use reth_payload_builder::EthPayloadBuilderAttributes;
|
||||
use reth_payload_primitives::{BuiltPayload, PayloadBuilderAttributes};
|
||||
use reth_primitives::{transaction::WithEncoded, SealedBlock, TransactionSigned};
|
||||
@ -186,6 +187,8 @@ impl OpBuiltPayload {
|
||||
}
|
||||
|
||||
impl BuiltPayload for OpBuiltPayload {
|
||||
type Primitives = OpPrimitives;
|
||||
|
||||
fn block(&self) -> &SealedBlock {
|
||||
&self.block
|
||||
}
|
||||
@ -204,6 +207,8 @@ impl BuiltPayload for OpBuiltPayload {
|
||||
}
|
||||
|
||||
impl BuiltPayload for &OpBuiltPayload {
|
||||
type Primitives = OpPrimitives;
|
||||
|
||||
fn block(&self) -> &SealedBlock {
|
||||
(**self).block()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user