mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: use custom generator in custom builder example (#14320)
This commit is contained in:
@ -346,8 +346,8 @@ where
|
||||
let network = network_builder.build_network(context, pool.clone()).await?;
|
||||
let payload_builder =
|
||||
payload_builder_builder.build_payload_builder(context, pool.clone()).await?;
|
||||
let payload_builder_handle =
|
||||
payload_builder_builder.spawn_payload_builder_service(context, payload_builder.clone());
|
||||
let payload_builder_handle = payload_builder_builder
|
||||
.spawn_payload_builder_service(context, payload_builder.clone())?;
|
||||
let consensus = consensus_builder.build_consensus(context).await?;
|
||||
|
||||
Ok(Components {
|
||||
|
||||
@ -30,7 +30,7 @@ pub trait PayloadServiceBuilder<Node: FullNodeTypes, Pool: TransactionPool>: Sen
|
||||
self,
|
||||
ctx: &BuilderContext<Node>,
|
||||
payload_builder: Self::PayloadBuilder,
|
||||
) -> PayloadBuilderHandle<<Node::Types as NodeTypesWithEngine>::Engine> {
|
||||
) -> eyre::Result<PayloadBuilderHandle<<Node::Types as NodeTypesWithEngine>::Engine>> {
|
||||
let conf = ctx.config().builder.clone();
|
||||
|
||||
let payload_job_config = BasicPayloadJobGeneratorConfig::default()
|
||||
@ -49,7 +49,7 @@ pub trait PayloadServiceBuilder<Node: FullNodeTypes, Pool: TransactionPool>: Sen
|
||||
|
||||
ctx.task_executor().spawn_critical("payload builder service", Box::pin(payload_service));
|
||||
|
||||
payload_service_handle
|
||||
Ok(payload_service_handle)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -11,15 +11,19 @@
|
||||
|
||||
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
|
||||
|
||||
use crate::generator::EmptyBlockPayloadJobGenerator;
|
||||
use reth::{
|
||||
builder::{components::PayloadServiceBuilder, node::FullNodeTypes, BuilderContext},
|
||||
cli::{config::PayloadBuilderConfig, Cli},
|
||||
providers::CanonStateSubscriptions,
|
||||
transaction_pool::{PoolTransaction, TransactionPool},
|
||||
};
|
||||
use reth_basic_payload_builder::BasicPayloadJobGeneratorConfig;
|
||||
use reth_chainspec::ChainSpec;
|
||||
use reth_ethereum_payload_builder::{EthereumBuilderConfig, EthereumPayloadBuilder};
|
||||
use reth_node_api::NodeTypesWithEngine;
|
||||
use reth_node_ethereum::{node::EthereumAddOns, EthEngineTypes, EthEvmConfig, EthereumNode};
|
||||
use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService};
|
||||
use reth_primitives::{EthPrimitives, TransactionSigned};
|
||||
|
||||
pub mod generator;
|
||||
@ -59,6 +63,34 @@ where
|
||||
EthereumBuilderConfig::new(conf.extra_data_bytes()),
|
||||
))
|
||||
}
|
||||
|
||||
fn spawn_payload_builder_service(
|
||||
self,
|
||||
ctx: &BuilderContext<Node>,
|
||||
payload_builder: Self::PayloadBuilder,
|
||||
) -> eyre::Result<PayloadBuilderHandle<<Node::Types as NodeTypesWithEngine>::Engine>> {
|
||||
let conf = ctx.payload_builder_config();
|
||||
|
||||
let payload_job_config = BasicPayloadJobGeneratorConfig::default()
|
||||
.interval(conf.interval())
|
||||
.deadline(conf.deadline())
|
||||
.max_payload_tasks(conf.max_payload_tasks());
|
||||
|
||||
let payload_generator = EmptyBlockPayloadJobGenerator::with_builder(
|
||||
ctx.provider().clone(),
|
||||
ctx.task_executor().clone(),
|
||||
payload_job_config,
|
||||
payload_builder,
|
||||
);
|
||||
|
||||
let (payload_service, payload_builder) =
|
||||
PayloadBuilderService::new(payload_generator, ctx.provider().canonical_state_stream());
|
||||
|
||||
ctx.task_executor()
|
||||
.spawn_critical("custom payload builder service", Box::pin(payload_service));
|
||||
|
||||
Ok(payload_builder)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
||||
Reference in New Issue
Block a user