mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-07 13:35:04 -05:00
59 lines
2.1 KiB
Rust
59 lines
2.1 KiB
Rust
//! Payload component configuration for the Ethereum node.
|
|
|
|
use reth_chainspec::{EthChainSpec, EthereumHardforks};
|
|
use reth_ethereum_engine_primitives::{
|
|
EthBuiltPayload, EthPayloadAttributes, EthPayloadBuilderAttributes,
|
|
};
|
|
use reth_ethereum_payload_builder::EthereumBuilderConfig;
|
|
use reth_ethereum_primitives::EthPrimitives;
|
|
use reth_evm::ConfigureEvm;
|
|
use reth_node_api::{FullNodeTypes, NodeTypes, PrimitivesTy, TxTy};
|
|
use reth_node_builder::{
|
|
components::PayloadBuilderBuilder, BuilderContext, PayloadBuilderConfig, PayloadTypes,
|
|
};
|
|
use reth_transaction_pool::{PoolTransaction, TransactionPool};
|
|
|
|
/// A basic ethereum payload service.
|
|
#[derive(Clone, Default, Debug)]
|
|
#[non_exhaustive]
|
|
pub struct EthereumPayloadBuilder;
|
|
|
|
impl<Types, Node, Pool, Evm> PayloadBuilderBuilder<Node, Pool, Evm> for EthereumPayloadBuilder
|
|
where
|
|
Types: NodeTypes<ChainSpec: EthereumHardforks, Primitives = EthPrimitives>,
|
|
Node: FullNodeTypes<Types = Types>,
|
|
Pool: TransactionPool<Transaction: PoolTransaction<Consensus = TxTy<Node::Types>>>
|
|
+ Unpin
|
|
+ 'static,
|
|
Evm: ConfigureEvm<
|
|
Primitives = PrimitivesTy<Types>,
|
|
NextBlockEnvCtx = reth_evm::NextBlockEnvAttributes,
|
|
> + 'static,
|
|
Types::Payload: PayloadTypes<
|
|
BuiltPayload = EthBuiltPayload,
|
|
PayloadAttributes = EthPayloadAttributes,
|
|
PayloadBuilderAttributes = EthPayloadBuilderAttributes,
|
|
>,
|
|
{
|
|
type PayloadBuilder =
|
|
reth_ethereum_payload_builder::EthereumPayloadBuilder<Pool, Node::Provider, Evm>;
|
|
|
|
async fn build_payload_builder(
|
|
self,
|
|
ctx: &BuilderContext<Node>,
|
|
pool: Pool,
|
|
evm_config: Evm,
|
|
) -> eyre::Result<Self::PayloadBuilder> {
|
|
let conf = ctx.payload_builder_config();
|
|
let chain = ctx.chain_spec().chain();
|
|
let gas_limit = conf.gas_limit_for(chain);
|
|
|
|
Ok(reth_ethereum_payload_builder::EthereumPayloadBuilder::new(
|
|
ctx.provider().clone(),
|
|
pool,
|
|
evm_config,
|
|
EthereumBuilderConfig::new().with_gas_limit(gas_limit),
|
|
))
|
|
}
|
|
}
|