mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-04-30 03:01:58 -04:00
feat: add version_specific_fields method to EngineTypes (#6050)
This commit is contained in:
@@ -1,8 +1,16 @@
|
||||
use reth_node_api::EngineTypes;
|
||||
use reth_payload_builder::{
|
||||
EthBuiltPayload, EthPayloadBuilderAttributes, OptimismPayloadBuilderAttributes,
|
||||
#[cfg(feature = "optimism")]
|
||||
use reth_node_api::optimism_validate_version_specific_fields;
|
||||
use reth_node_api::{
|
||||
validate_version_specific_fields, AttributesValidationError, EngineApiMessageVersion,
|
||||
EngineTypes, PayloadOrAttributes,
|
||||
};
|
||||
use reth_rpc_types::engine::{OptimismPayloadAttributes, PayloadAttributes};
|
||||
#[cfg(feature = "optimism")]
|
||||
use reth_payload_builder::OptimismPayloadBuilderAttributes;
|
||||
use reth_payload_builder::{EthBuiltPayload, EthPayloadBuilderAttributes};
|
||||
use reth_primitives::ChainSpec;
|
||||
#[cfg(feature = "optimism")]
|
||||
use reth_rpc_types::engine::OptimismPayloadAttributes;
|
||||
use reth_rpc_types::engine::PayloadAttributes as EthPayloadAttributes;
|
||||
|
||||
/// The types used in the default mainnet ethereum beacon consensus engine.
|
||||
#[derive(Debug, Default, Clone)]
|
||||
@@ -10,18 +18,37 @@ use reth_rpc_types::engine::{OptimismPayloadAttributes, PayloadAttributes};
|
||||
pub struct EthEngineTypes;
|
||||
|
||||
impl EngineTypes for EthEngineTypes {
|
||||
type PayloadAttributes = PayloadAttributes;
|
||||
type PayloadAttributes = EthPayloadAttributes;
|
||||
type PayloadBuilderAttributes = EthPayloadBuilderAttributes;
|
||||
type BuiltPayload = EthBuiltPayload;
|
||||
|
||||
fn validate_version_specific_fields(
|
||||
chain_spec: &ChainSpec,
|
||||
version: EngineApiMessageVersion,
|
||||
payload_or_attrs: PayloadOrAttributes<'_, EthPayloadAttributes>,
|
||||
) -> Result<(), AttributesValidationError> {
|
||||
validate_version_specific_fields(chain_spec, version, payload_or_attrs)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "optimism")]
|
||||
/// The types used in the optimism beacon consensus engine.
|
||||
#[derive(Debug, Default, Clone)]
|
||||
#[non_exhaustive]
|
||||
pub struct OptimismEngineTypes;
|
||||
|
||||
// TODO: remove cfg once Hardfork::Canyon can be used without the flag
|
||||
#[cfg(feature = "optimism")]
|
||||
impl EngineTypes for OptimismEngineTypes {
|
||||
type PayloadAttributes = OptimismPayloadAttributes;
|
||||
type PayloadBuilderAttributes = OptimismPayloadBuilderAttributes;
|
||||
type BuiltPayload = EthBuiltPayload;
|
||||
|
||||
fn validate_version_specific_fields(
|
||||
chain_spec: &ChainSpec,
|
||||
version: EngineApiMessageVersion,
|
||||
payload_or_attrs: PayloadOrAttributes<'_, OptimismPayloadAttributes>,
|
||||
) -> Result<(), AttributesValidationError> {
|
||||
optimism_validate_version_specific_fields(chain_spec, version, payload_or_attrs)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user