Skip to content

Commit

Permalink
fix: use custom generator in custom builder example (#14320)
Browse files Browse the repository at this point in the history
  • Loading branch information
klkvr authored Feb 8, 2025
1 parent ea86211 commit d99f0fa
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 4 deletions.
4 changes: 2 additions & 2 deletions crates/node/builder/src/components/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
4 changes: 2 additions & 2 deletions crates/node/builder/src/components/payload.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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)
}
}

Expand Down
32 changes: 32 additions & 0 deletions examples/custom-payload-builder/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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() {
Expand Down

0 comments on commit d99f0fa

Please sign in to comment.