reth_optimism_payload_builder/
lib.rs1#![doc(
4 html_logo_url = "https://raw.githubusercontent.com/paradigmxyz/reth/main/assets/reth-docs.png",
5 html_favicon_url = "https://avatars0.githubusercontent.com/u/97369466?s=256",
6 issue_tracker_base_url = "https://github.com/paradigmxyz/reth/issues/"
7)]
8#![cfg_attr(not(test), warn(unused_crate_dependencies))]
9#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
10#![allow(clippy::useless_let_if_seq)]
11
12extern crate alloc;
13
14pub mod builder;
15pub use builder::OpPayloadBuilder;
16pub mod error;
17pub mod payload;
18use op_alloy_rpc_types_engine::OpExecutionData;
19pub use payload::{
20 payload_id_optimism, OpBuiltPayload, OpPayloadAttributes, OpPayloadBuilderAttributes,
21};
22mod traits;
23use reth_optimism_primitives::OpPrimitives;
24use reth_payload_primitives::{BuiltPayload, PayloadTypes};
25use reth_primitives_traits::{Block, NodePrimitives, SealedBlock};
26pub use traits::*;
27pub mod validator;
28pub use validator::OpExecutionPayloadValidator;
29
30pub mod config;
31
32#[derive(Debug, Default, Clone, serde::Deserialize, serde::Serialize)]
34#[non_exhaustive]
35pub struct OpPayloadTypes<N: NodePrimitives = OpPrimitives>(core::marker::PhantomData<N>);
36
37impl<N: NodePrimitives> PayloadTypes for OpPayloadTypes<N>
38where
39 OpBuiltPayload<N>: BuiltPayload,
40{
41 type ExecutionData = OpExecutionData;
42 type BuiltPayload = OpBuiltPayload<N>;
43 type PayloadAttributes = OpPayloadAttributes;
44 type PayloadBuilderAttributes = OpPayloadBuilderAttributes<N::SignedTx>;
45
46 fn block_to_payload(
47 block: SealedBlock<
48 <<Self::BuiltPayload as BuiltPayload>::Primitives as NodePrimitives>::Block,
49 >,
50 ) -> Self::ExecutionData {
51 OpExecutionData::from_block_unchecked(
52 block.hash(),
53 &block.into_block().into_ethereum_block(),
54 )
55 }
56}