diff --git a/crates/optimism/rpc/src/eth/mod.rs b/crates/optimism/rpc/src/eth/mod.rs index dc6e8e59fa6b..624602bba385 100644 --- a/crates/optimism/rpc/src/eth/mod.rs +++ b/crates/optimism/rpc/src/eth/mod.rs @@ -121,6 +121,7 @@ where type Pool = N::Pool; type Evm = ::Evm; type Network = ::Network; + type PayloadBuilder = (); #[inline] fn pool(&self) -> &Self::Pool { @@ -137,6 +138,11 @@ where self.inner.network() } + #[inline] + fn payload_builder(&self) -> &Self::PayloadBuilder { + &() + } + #[inline] fn provider(&self) -> &Self::Provider { self.inner.provider() diff --git a/crates/rpc/rpc-eth-api/src/node.rs b/crates/rpc/rpc-eth-api/src/node.rs index 4ae79c083411..12dbe8f66641 100644 --- a/crates/rpc/rpc-eth-api/src/node.rs +++ b/crates/rpc/rpc-eth-api/src/node.rs @@ -19,6 +19,9 @@ pub trait RpcNodeCore: Clone + Send + Sync { /// Network API. type Network: Send + Sync + Clone; + /// Builds new blocks. + type PayloadBuilder: Send + Sync + Clone; + /// Returns the transaction pool of the node. fn pool(&self) -> &Self::Pool; @@ -28,6 +31,9 @@ pub trait RpcNodeCore: Clone + Send + Sync { /// Returns the handle to the network fn network(&self) -> &Self::Network; + /// Returns the handle to the payload builder service. + fn payload_builder(&self) -> &Self::PayloadBuilder; + /// Returns the provider of the node. fn provider(&self) -> &Self::Provider; } @@ -40,6 +46,7 @@ where type Pool = T::Pool; type Evm = ::Evm; type Network = ::Network; + type PayloadBuilder = ::PayloadBuilder; #[inline] fn pool(&self) -> &Self::Pool { @@ -56,6 +63,11 @@ where FullNodeComponents::network(self) } + #[inline] + fn payload_builder(&self) -> &Self::PayloadBuilder { + FullNodeComponents::payload_builder(self) + } + #[inline] fn provider(&self) -> &Self::Provider { FullNodeComponents::provider(self) diff --git a/crates/rpc/rpc/src/eth/core.rs b/crates/rpc/rpc/src/eth/core.rs index c491ca21dfb2..f945aa446b55 100644 --- a/crates/rpc/rpc/src/eth/core.rs +++ b/crates/rpc/rpc/src/eth/core.rs @@ -151,6 +151,7 @@ where type Pool = Pool; type Evm = EvmConfig; type Network = Network; + type PayloadBuilder = (); fn pool(&self) -> &Self::Pool { self.inner.pool() @@ -164,6 +165,10 @@ where self.inner.network() } + fn payload_builder(&self) -> &Self::PayloadBuilder { + &() + } + fn provider(&self) -> &Self::Provider { self.inner.provider() }