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 network = network_builder.build_network(context, pool.clone()).await?;
|
||||||
let payload_builder =
|
let payload_builder =
|
||||||
payload_builder_builder.build_payload_builder(context, pool.clone()).await?;
|
payload_builder_builder.build_payload_builder(context, pool.clone()).await?;
|
||||||
let payload_builder_handle =
|
let payload_builder_handle = payload_builder_builder
|
||||||
payload_builder_builder.spawn_payload_builder_service(context, payload_builder.clone());
|
.spawn_payload_builder_service(context, payload_builder.clone())?;
|
||||||
let consensus = consensus_builder.build_consensus(context).await?;
|
let consensus = consensus_builder.build_consensus(context).await?;
|
||||||
|
|
||||||
Ok(Components {
|
Ok(Components {
|
||||||
|
|||||||
@ -30,7 +30,7 @@ pub trait PayloadServiceBuilder<Node: FullNodeTypes, Pool: TransactionPool>: Sen
|
|||||||
self,
|
self,
|
||||||
ctx: &BuilderContext<Node>,
|
ctx: &BuilderContext<Node>,
|
||||||
payload_builder: Self::PayloadBuilder,
|
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 conf = ctx.config().builder.clone();
|
||||||
|
|
||||||
let payload_job_config = BasicPayloadJobGeneratorConfig::default()
|
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));
|
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))]
|
#![cfg_attr(not(test), warn(unused_crate_dependencies))]
|
||||||
|
|
||||||
|
use crate::generator::EmptyBlockPayloadJobGenerator;
|
||||||
use reth::{
|
use reth::{
|
||||||
builder::{components::PayloadServiceBuilder, node::FullNodeTypes, BuilderContext},
|
builder::{components::PayloadServiceBuilder, node::FullNodeTypes, BuilderContext},
|
||||||
cli::{config::PayloadBuilderConfig, Cli},
|
cli::{config::PayloadBuilderConfig, Cli},
|
||||||
|
providers::CanonStateSubscriptions,
|
||||||
transaction_pool::{PoolTransaction, TransactionPool},
|
transaction_pool::{PoolTransaction, TransactionPool},
|
||||||
};
|
};
|
||||||
|
use reth_basic_payload_builder::BasicPayloadJobGeneratorConfig;
|
||||||
use reth_chainspec::ChainSpec;
|
use reth_chainspec::ChainSpec;
|
||||||
use reth_ethereum_payload_builder::{EthereumBuilderConfig, EthereumPayloadBuilder};
|
use reth_ethereum_payload_builder::{EthereumBuilderConfig, EthereumPayloadBuilder};
|
||||||
use reth_node_api::NodeTypesWithEngine;
|
use reth_node_api::NodeTypesWithEngine;
|
||||||
use reth_node_ethereum::{node::EthereumAddOns, EthEngineTypes, EthEvmConfig, EthereumNode};
|
use reth_node_ethereum::{node::EthereumAddOns, EthEngineTypes, EthEvmConfig, EthereumNode};
|
||||||
|
use reth_payload_builder::{PayloadBuilderHandle, PayloadBuilderService};
|
||||||
use reth_primitives::{EthPrimitives, TransactionSigned};
|
use reth_primitives::{EthPrimitives, TransactionSigned};
|
||||||
|
|
||||||
pub mod generator;
|
pub mod generator;
|
||||||
@ -59,6 +63,34 @@ where
|
|||||||
EthereumBuilderConfig::new(conf.extra_data_bytes()),
|
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() {
|
fn main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user