From 058cfe2f98952633da53f877b538a1ea3f9d657f Mon Sep 17 00:00:00 2001 From: Arsenii Kulikov Date: Thu, 19 Dec 2024 16:58:07 +0200 Subject: [PATCH] chore: relax PayloadBuilderService bound (#13456) --- Cargo.lock | 1 + crates/payload/basic/src/lib.rs | 4 ++-- crates/payload/builder/Cargo.toml | 10 ++++++---- crates/payload/builder/src/service.rs | 6 ++++-- crates/payload/builder/src/traits.rs | 3 ++- 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 299f84e87..35f1a2ed0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -8686,6 +8686,7 @@ dependencies = [ "reth-payload-builder-primitives", "reth-payload-primitives", "reth-primitives", + "reth-primitives-traits", "revm", "tokio", "tokio-stream", diff --git a/crates/payload/basic/src/lib.rs b/crates/payload/basic/src/lib.rs index 432923856..1b8bc6ba7 100644 --- a/crates/payload/basic/src/lib.rs +++ b/crates/payload/basic/src/lib.rs @@ -19,7 +19,7 @@ use reth_evm::state_change::post_block_withdrawals_balance_increments; use reth_payload_builder::{KeepPayloadJobAlive, PayloadId, PayloadJob, PayloadJobGenerator}; use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::{BuiltPayload, PayloadBuilderAttributes, PayloadKind}; -use reth_primitives::{proofs, SealedHeader}; +use reth_primitives::{proofs, NodePrimitives, SealedHeader}; use reth_provider::{BlockReaderIdExt, CanonStateNotification, StateProviderFactory}; use reth_revm::cached::CachedReads; use reth_tasks::TaskSpawner; @@ -191,7 +191,7 @@ where Ok(job) } - fn on_new_state(&mut self, new_state: CanonStateNotification) { + fn on_new_state(&mut self, new_state: CanonStateNotification) { let mut cached = CachedReads::default(); // extract the state from the notification and put it into the cache diff --git a/crates/payload/builder/Cargo.toml b/crates/payload/builder/Cargo.toml index 78814da50..d709c1208 100644 --- a/crates/payload/builder/Cargo.toml +++ b/crates/payload/builder/Cargo.toml @@ -14,6 +14,7 @@ workspace = true [dependencies] # reth reth-primitives = { workspace = true, optional = true } +reth-primitives-traits.workspace = true reth-chain-state.workspace = true reth-payload-builder-primitives.workspace = true reth-payload-primitives.workspace = true @@ -44,8 +45,9 @@ alloy-consensus.workspace = true [features] test-utils = [ - "alloy-primitives", - "reth-chain-state/test-utils", - "reth-primitives/test-utils", - "revm/test-utils", + "alloy-primitives", + "reth-chain-state/test-utils", + "reth-primitives/test-utils", + "revm/test-utils", + "reth-primitives-traits/test-utils" ] diff --git a/crates/payload/builder/src/service.rs b/crates/payload/builder/src/service.rs index af11ba75c..aaff23dda 100644 --- a/crates/payload/builder/src/service.rs +++ b/crates/payload/builder/src/service.rs @@ -14,6 +14,7 @@ use reth_payload_builder_primitives::{ Events, PayloadBuilder, PayloadBuilderError, PayloadEvents, PayloadStoreExt, }; use reth_payload_primitives::{BuiltPayload, PayloadBuilderAttributes, PayloadKind, PayloadTypes}; +use reth_primitives_traits::NodePrimitives; use std::{ fmt, future::Future, @@ -352,12 +353,13 @@ where } } -impl Future for PayloadBuilderService +impl Future for PayloadBuilderService where T: PayloadTypes, + N: NodePrimitives, Gen: PayloadJobGenerator + Unpin + 'static, ::Job: Unpin + 'static, - St: Stream + Send + Unpin + 'static, + St: Stream> + Send + Unpin + 'static, Gen::Job: PayloadJob, ::BuiltPayload: Into, { diff --git a/crates/payload/builder/src/traits.rs b/crates/payload/builder/src/traits.rs index d9d54ccd0..34a756e60 100644 --- a/crates/payload/builder/src/traits.rs +++ b/crates/payload/builder/src/traits.rs @@ -3,6 +3,7 @@ use reth_chain_state::CanonStateNotification; use reth_payload_builder_primitives::PayloadBuilderError; use reth_payload_primitives::{BuiltPayload, PayloadBuilderAttributes, PayloadKind}; +use reth_primitives_traits::NodePrimitives; use std::future::Future; /// A type that can build a payload. @@ -105,7 +106,7 @@ pub trait PayloadJobGenerator: Send + Sync { /// /// This is intended for any logic that needs to be run when the chain state changes or used to /// use the in memory state for the head block. - fn on_new_state(&mut self, new_state: CanonStateNotification) { + fn on_new_state(&mut self, new_state: CanonStateNotification) { let _ = new_state; } }