Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(rpc): build rpc as OnComponentsInitializedHook #9243

Closed
wants to merge 116 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
a0cfb0c
scaffold eth api
mattsse May 22, 2024
8a2379b
chore(rpc): decouple op receipt response (#8353)
emhane May 27, 2024
f4f7786
chore(op): remove redundant trait `NetworkEthApi` (#8411)
emhane May 27, 2024
a737ae0
chore(op): L1 receipt rpc methods default trait methods (#8437)
emhane May 31, 2024
39d4366
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 1, 2024
7913c07
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 5, 2024
9ba4cd2
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 5, 2024
3d42231
chore(rpc): trait for blocking task (#8538)
emhane Jun 5, 2024
da5c170
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 6, 2024
67d276b
Merge branch 'matt/scaffold-ethapi' of github.com:paradigmxyz/reth in…
emhane Jun 6, 2024
f04b38c
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 8, 2024
ade9d40
Fix lint
emhane Jun 8, 2024
a30c184
chore(rpc): default trait methods `EthTransactions` (#8639)
emhane Jun 8, 2024
cea088d
chore(rpc): pending block helper trait (#8640)
emhane Jun 8, 2024
bc24e8e
chore(rpc): `EthTransactions` default trait methods using pending blo…
emhane Jun 8, 2024
f89077b
chore(rpc): reusable eth api `EthCall` (#8683)
emhane Jun 11, 2024
f8276cc
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 11, 2024
197b182
chore(rpc): `EthBlocks` default impl (#8723)
emhane Jun 11, 2024
e4f9fdc
chore(rpc): move message signing to `EthTransactions` (#8759)
emhane Jun 12, 2024
ba562d1
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 13, 2024
0c04916
Fix merge conflicts
emhane Jun 13, 2024
9c579e1
chore(rpc): impl `EthApiServer` helper traits on type like `EthApi` (…
emhane Jun 13, 2024
56ed575
chore(rpc): remove `FillableTransaction` (#8800)
emhane Jun 14, 2024
926c86f
Move EthApi trait to own crate
emhane Jun 14, 2024
2c78d29
Impl EthApiServer for generic type
emhane Jun 14, 2024
f6fe8b5
Move eth api trait and impl into reth-rpc-eth-api
emhane Jun 14, 2024
53a97b8
Run fmt
emhane Jun 14, 2024
6a3b059
Structure reth-rpc-eth-api fs
emhane Jun 15, 2024
dd8920c
Add missing docs
emhane Jun 17, 2024
713923e
Fix deps
emhane Jun 17, 2024
592ab02
Fix docs
emhane Jun 17, 2024
e466faf
Merge branch 'main' into matt/scaffold-ethapi
emhane Jun 17, 2024
e2a9be3
Bump secp256k1
emhane Jun 17, 2024
1de7000
Merge branch 'emhane/bump-secp256k1' into matt/scaffold-ethapi
emhane Jun 17, 2024
fffcc9f
Fix merge conflicts
emhane Jun 17, 2024
db5df93
Merge branch 'matt/scaffold-ethapi' into emhane/move-ethapi
emhane Jun 17, 2024
9ec86df
Fix docs
emhane Jun 17, 2024
90a9c4f
Fix lint
emhane Jun 17, 2024
fda6a66
Fix lint
emhane Jun 17, 2024
76db237
Fix deps
emhane Jun 17, 2024
a7642a9
Fix deps
emhane Jun 17, 2024
c5f6c5a
Enable dev feature for revm primitives
emhane Jun 17, 2024
9ecf026
Feature gate api client export
emhane Jun 17, 2024
fb78bdb
Fix deps
emhane Jun 17, 2024
abff53f
Re-impl op behaviour for EthApi
emhane Jun 17, 2024
4934521
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 17, 2024
85055be
Fix docs
emhane Jun 17, 2024
0b8c131
Fix manifest
emhane Jun 17, 2024
15fc4d8
Remove op default trait method impl
emhane Jun 17, 2024
ce9d876
Add missing op dep
emhane Jun 17, 2024
1237462
fixup! Remove op default trait method impl
emhane Jun 17, 2024
8cba5b8
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 19, 2024
3833795
Fix merge conflicts
emhane Jun 19, 2024
4c4ec2e
Shrink scope, remove reth-optimism-rpc crate
emhane Jun 19, 2024
66560bb
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 19, 2024
e9bba83
Fix merge conflicts
emhane Jun 19, 2024
99c0dcf
fixup! Fix merge conflicts
emhane Jun 19, 2024
7f1335e
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 20, 2024
921ac96
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 21, 2024
15cf0a7
Add eth server builder
emhane Jun 23, 2024
ae25a65
Fix lint and tests
emhane Jun 24, 2024
01224f4
Add helper trait FullRpcProvider and fix doc tests
emhane Jun 24, 2024
3c381ef
Change trait name from EthServerBuilder to EthApiBuilder
emhane Jun 24, 2024
d13d115
Change helper trait name from FullEthServer to FullEthApiServer
emhane Jun 24, 2024
29919c6
Change name of type ServerBuilder to ApiBuilder and fix doc tests
emhane Jun 24, 2024
95d7910
Rename type ApiBuilder to EthApiBuild
emhane Jun 24, 2024
8ddf6d4
fixup! Rename type ApiBuilder to EthApiBuild
emhane Jun 24, 2024
6f82f62
Add constructor for EthHandlers with EthApiBuilder as param
emhane Jun 25, 2024
6eb96ef
Merge branch 'emhane/rpc-builder' into emhane/generic-api-builder
emhane Jun 25, 2024
890ab0b
Relax trait bounds by using EthApiBuilder trait object
emhane Jun 25, 2024
87bfeef
Rescope helper trait FullEthApiServer
emhane Jun 25, 2024
715ede0
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 26, 2024
ee2765f
Merge branch 'emhane/ethapi-crate' into emhane/rpc-builder
emhane Jun 26, 2024
c4ce014
Fix lint
emhane Jun 26, 2024
e845763
Fix lint
emhane Jun 26, 2024
c741859
Fix lint
emhane Jun 26, 2024
afc92d4
Simplify EthBlocks trait method signatures
emhane Jun 26, 2024
d8558ff
Improve usability TraceExt trait
emhane Jun 26, 2024
381a189
Merge branch 'main' into emhane/rpc-builder
emhane Jun 26, 2024
0f1afac
Merge branch 'main' into emhane/ethapi-crate
emhane Jun 26, 2024
86362ff
Merge branch 'emhane/ethapi-crate' into emhane/rpc-builder
emhane Jun 26, 2024
169c6a1
Incorporate EthHandlersBuilder
emhane Jun 26, 2024
55cdf50
Merge branch 'emhane/generic-api-builder' into emhane/rpc-builder
emhane Jun 26, 2024
ff73547
Add builder for EthFilter and EthPubSub
emhane Jun 26, 2024
bb30feb
Revert unrelated change dragged into refactor
emhane Jun 26, 2024
8de9c56
Rename RethModuleRegistry to RpcRegistryInner
emhane Jun 26, 2024
4bf7e34
Move impl of eth api back to rpc crate
emhane Jun 26, 2024
ed48237
fixup! Move impl of eth api back to rpc crate
emhane Jun 27, 2024
c5f3c5d
Fix deps for optimism feature and jsonrpsee-types
emhane Jun 27, 2024
fd9a638
Move eth server types to new crate reth-rpc-eth-server-types
emhane Jun 27, 2024
d55c5d9
Use concrete type BlockId as helper trait method param
emhane Jun 27, 2024
9249967
Add 'test-utils' feature to dev-deps
emhane Jun 27, 2024
b971ed8
Fix docs
emhane Jun 27, 2024
64cdad2
Merge branch 'emhane/ethapi-crate' into emhane/move-ethapi-impl-to-rpc
emhane Jun 27, 2024
252628b
Fix merge conflicts
emhane Jun 27, 2024
ed393b8
Remove redundant dev-deps, tests moved into reth-rpc/src/eth/core.rs
emhane Jun 27, 2024
c2c88db
Fix crate descriptions
emhane Jun 27, 2024
6df13a0
Rename crate reth-rpc-eth-server-types to reth-rpc-eth-types
emhane Jun 27, 2024
373ce47
Merge branch 'emhane/move-ethapi-impl-to-rpc' into emhane/rpc-builder
emhane Jun 27, 2024
548742b
Merge branch 'main' into emhane/rpc-builder
emhane Jun 27, 2024
43bc044
Merge branch 'main' into emhane/rpc-builder
emhane Jun 28, 2024
db449db
Move reth-rpc-builder trait impl out of reth-node-builder
emhane Jun 28, 2024
8b6aeba
Update AT name
emhane Jun 29, 2024
2749321
Relax trait bounds on eth api builder in reth-rpc-builder context
emhane Jun 29, 2024
43af432
Fix broken doc test
emhane Jun 29, 2024
800f43b
Derive Deref, DerefMut and Clone for RpcRegistry
emhane Jun 30, 2024
bbfb335
Start rpc as OnComponentInitializedHook
emhane Jun 30, 2024
0d0d3db
Add beacon engine to ExtComponentBuilder for use in engine api in Rpc…
emhane Jul 4, 2024
43a8339
Move extension component building into builder module
emhane Jul 4, 2024
96b297e
Fix conflicts
emhane Jul 7, 2024
eddd32a
Fix conflicts
emhane Jul 8, 2024
c6e9687
Fix conflicts rpc builder
emhane Jul 8, 2024
a1355fc
Fix deref impl
emhane Jul 8, 2024
c4ae189
Fix FullNodeComponents extension trait
emhane Jul 9, 2024
2f93ea7
Fix InitializedComponentsExt trait
emhane Jul 9, 2024
54a7971
Fix trait StageExtComponentsBuild
emhane Jul 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
597 changes: 293 additions & 304 deletions Cargo.lock

Large diffs are not rendered by default.

51 changes: 32 additions & 19 deletions crates/consensus/beacon/src/engine/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ use reth_db_api::database::Database;
use reth_engine_primitives::EngineTypes;
use reth_errors::{BlockValidationError, ProviderResult, RethError, RethResult};
use reth_network_p2p::{
bodies::client::BodiesClient,
headers::client::HeadersClient,
sync::{NetworkSyncUpdater, SyncState},
BodiesClient, HeadersClient,
};
use reth_payload_builder::PayloadBuilderHandle;
use reth_payload_primitives::{PayloadAttributes, PayloadBuilderAttributes};
Expand All @@ -20,8 +19,8 @@ use reth_primitives::{
B256,
};
use reth_provider::{
BlockIdReader, BlockReader, BlockSource, CanonChainTracker, ChainSpecProvider, ProviderError,
StageCheckpointReader,
BlockIdReader, BlockReader, BlockSource, CanonChainTracker, ChainSpecProvider, EvmEnvProvider,
ProviderError, StageCheckpointReader, StateProviderFactory,
};
use reth_rpc_types::engine::{
CancunPayloadFields, ExecutionPayload, ForkchoiceState, PayloadStatus, PayloadStatusEnum,
Expand Down Expand Up @@ -89,6 +88,33 @@ const MAX_INVALID_HEADERS: u32 = 512u32;
/// If the distance exceeds this threshold, the pipeline will be used for sync.
pub const MIN_BLOCKS_FOR_PIPELINE_RUN: u64 = EPOCH_SLOTS;

/// Helper trait, unifies data access from blockchain tree and database.
pub trait FullBlockchainTreeEngine:
BlockchainTreeEngine
+ BlockReader
+ BlockIdReader
+ CanonChainTracker
+ StageCheckpointReader
+ ChainSpecProvider
+ StateProviderFactory
+ EvmEnvProvider
+ Unpin
{
}

impl<T> FullBlockchainTreeEngine for T where
T: BlockchainTreeEngine
+ BlockReader
+ BlockIdReader
+ CanonChainTracker
+ StageCheckpointReader
+ ChainSpecProvider
+ StateProviderFactory
+ EvmEnvProvider
+ Unpin
{
}

/// The beacon consensus engine is the driver that switches between historical and live sync.
///
/// The beacon consensus engine is itself driven by messages from the Consensus Layer, which are
Expand Down Expand Up @@ -221,13 +247,7 @@ where
impl<DB, BT, Client, EngineT> BeaconConsensusEngine<DB, BT, Client, EngineT>
where
DB: Database + Unpin + 'static,
BT: BlockchainTreeEngine
+ BlockReader
+ BlockIdReader
+ CanonChainTracker
+ StageCheckpointReader
+ ChainSpecProvider
+ 'static,
BT: FullBlockchainTreeEngine + ChainSpecProvider + 'static,
Client: HeadersClient + BodiesClient + Clone + Unpin + 'static,
EngineT: EngineTypes + Unpin + 'static,
{
Expand Down Expand Up @@ -1787,14 +1807,7 @@ impl<DB, BT, Client, EngineT> Future for BeaconConsensusEngine<DB, BT, Client, E
where
DB: Database + Unpin + 'static,
Client: HeadersClient + BodiesClient + Clone + Unpin + 'static,
BT: BlockchainTreeEngine
+ BlockReader
+ BlockIdReader
+ CanonChainTracker
+ StageCheckpointReader
+ ChainSpecProvider
+ Unpin
+ 'static,
BT: FullBlockchainTreeEngine + ChainSpecProvider + Unpin + 'static,
EngineT: EngineTypes + Unpin + 'static,
{
type Output = Result<(), BeaconConsensusEngineError>;
Expand Down
42 changes: 24 additions & 18 deletions crates/e2e-test-utils/src/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ where
Node: FullNodeComponents,
{
pub inner: FullNode<Node>,
pub payload: PayloadTestContext<Node::Engine>,
pub payload: PayloadTestContext<Node::EngineTypes>,
pub network: NetworkTestContext,
pub engine_api: EngineApiTestContext<Node::Engine>,
pub engine_api: EngineApiTestContext<Node::EngineTypes>,
pub rpc: RpcTestContext<Node>,
}

Expand All @@ -46,7 +46,7 @@ where
engine_api: EngineApiTestContext {
engine_api_client: node.auth_server_handle().http_client(),
canonical_stream: node.provider.canonical_state_stream(),
_marker: PhantomData::<Node::Engine>,
_marker: PhantomData::<Node::EngineTypes>,
},
rpc: RpcTestContext { inner: node.rpc_registry },
})
Expand All @@ -66,17 +66,17 @@ where
&mut self,
length: u64,
tx_generator: impl Fn(u64) -> Pin<Box<dyn Future<Output = Bytes>>>,
attributes_generator: impl Fn(u64) -> <Node::Engine as PayloadTypes>::PayloadBuilderAttributes
attributes_generator: impl Fn(u64) -> <Node::EngineTypes as PayloadTypes>::PayloadBuilderAttributes
+ Copy,
) -> eyre::Result<
Vec<(
<Node::Engine as PayloadTypes>::BuiltPayload,
<Node::Engine as PayloadTypes>::PayloadBuilderAttributes,
<Node::EngineTypes as PayloadTypes>::BuiltPayload,
<Node::EngineTypes as PayloadTypes>::PayloadBuilderAttributes,
)>,
>
where
<Node::Engine as EngineTypes>::ExecutionPayloadV3:
From<<Node::Engine as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
<Node::EngineTypes as EngineTypes>::ExecutionPayloadV3:
From<<Node::EngineTypes as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
{
let mut chain = Vec::with_capacity(length as usize);
for i in 0..length {
Expand All @@ -97,14 +97,17 @@ where
/// It triggers the resolve payload via engine api and expects the built payload event.
pub async fn new_payload(
&mut self,
attributes_generator: impl Fn(u64) -> <Node::Engine as PayloadTypes>::PayloadBuilderAttributes,
attributes_generator: impl Fn(
u64,
)
-> <Node::EngineTypes as PayloadTypes>::PayloadBuilderAttributes,
) -> eyre::Result<(
<<Node as NodeTypes>::Engine as PayloadTypes>::BuiltPayload,
<<Node as NodeTypes>::Engine as PayloadTypes>::PayloadBuilderAttributes,
<<Node as NodeTypes>::EngineTypes as PayloadTypes>::BuiltPayload,
<<Node as NodeTypes>::EngineTypes as PayloadTypes>::PayloadBuilderAttributes,
)>
where
<Node::Engine as EngineTypes>::ExecutionPayloadV3:
From<<Node::Engine as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
<Node::EngineTypes as EngineTypes>::ExecutionPayloadV3:
From<<Node::EngineTypes as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
{
// trigger new payload building draining the pool
let eth_attr = self.payload.new_payload(attributes_generator).await.unwrap();
Expand All @@ -122,14 +125,17 @@ where
pub async fn advance_block(
&mut self,
versioned_hashes: Vec<B256>,
attributes_generator: impl Fn(u64) -> <Node::Engine as PayloadTypes>::PayloadBuilderAttributes,
attributes_generator: impl Fn(
u64,
)
-> <Node::EngineTypes as PayloadTypes>::PayloadBuilderAttributes,
) -> eyre::Result<(
<Node::Engine as PayloadTypes>::BuiltPayload,
<<Node as NodeTypes>::Engine as PayloadTypes>::PayloadBuilderAttributes,
<Node::EngineTypes as PayloadTypes>::BuiltPayload,
<<Node as NodeTypes>::EngineTypes as PayloadTypes>::PayloadBuilderAttributes,
)>
where
<Node::Engine as EngineTypes>::ExecutionPayloadV3:
From<<Node::Engine as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
<Node::EngineTypes as EngineTypes>::ExecutionPayloadV3:
From<<Node::EngineTypes as PayloadTypes>::BuiltPayload> + PayloadEnvelopeExt,
{
let (payload, eth_attr) = self.new_payload(attributes_generator).await?;

Expand Down
10 changes: 5 additions & 5 deletions crates/ethereum/node/src/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ impl EthereumNode {
>
where
Node: FullNodeTypes,
<Node as NodeTypes>::Engine: PayloadTypes<
<Node as NodeTypes>::EngineTypes: PayloadTypes<
BuiltPayload = EthBuiltPayload,
PayloadAttributes = EthPayloadAttributes,
PayloadBuilderAttributes = EthPayloadBuilderAttributes,
Expand All @@ -61,12 +61,12 @@ impl EthereumNode {

impl NodeTypes for EthereumNode {
type Primitives = ();
type Engine = EthEngineTypes;
type EngineTypes = EthEngineTypes;
}

impl<N> Node<N> for EthereumNode
where
N: FullNodeTypes<Engine = EthEngineTypes>,
N: FullNodeTypes<EngineTypes = EthEngineTypes>,
{
type ComponentsBuilder = ComponentsBuilder<
N,
Expand Down Expand Up @@ -188,7 +188,7 @@ impl<Node, Pool> PayloadServiceBuilder<Node, Pool> for EthereumPayloadBuilder
where
Pool: TransactionPool + Unpin + 'static,
Node: FullNodeTypes,
<Node as NodeTypes>::Engine: PayloadTypes<
<Node as NodeTypes>::EngineTypes: PayloadTypes<
BuiltPayload = EthBuiltPayload,
PayloadAttributes = EthPayloadAttributes,
PayloadBuilderAttributes = EthPayloadBuilderAttributes,
Expand All @@ -198,7 +198,7 @@ where
self,
ctx: &BuilderContext<Node>,
pool: Pool,
) -> eyre::Result<PayloadBuilderHandle<Node::Engine>> {
) -> eyre::Result<PayloadBuilderHandle<Node::EngineTypes>> {
let payload_builder = reth_ethereum_payload_builder::EthereumPayloadBuilder::default();
let conf = ctx.payload_builder_config();

Expand Down
2 changes: 1 addition & 1 deletion crates/ethereum/node/tests/e2e/dev.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ async fn can_run_dev_node() -> eyre::Result<()> {
Ok(())
}

async fn assert_chain_advances(mut node: EthNode) {
async fn assert_chain_advances(node: EthNode) {
let mut notifications = node.inner.provider.canonical_state_stream();

// submit tx through rpc
Expand Down
2 changes: 1 addition & 1 deletion crates/ethereum/node/tests/it/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ fn test_basic_setup() {
.with_database(db)
.with_types::<EthereumNode>()
.with_components(EthereumNode::components())
.on_component_initialized(move |ctx| {
.on_components_initialized(move |ctx| {
let _provider = ctx.provider();
println!("{msg}");
Ok(())
Expand Down
4 changes: 3 additions & 1 deletion crates/exex/exex/src/context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ impl<Node: FullNodeComponents> ExExContext<Node> {
}

/// Returns the handle to the payload builder service.
pub fn payload_builder(&self) -> &reth_payload_builder::PayloadBuilderHandle<Node::Engine> {
pub fn payload_builder(
&self,
) -> &reth_payload_builder::PayloadBuilderHandle<Node::EngineTypes> {
self.components.payload_builder()
}

Expand Down
4 changes: 2 additions & 2 deletions crates/exex/test-utils/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -110,12 +110,12 @@ pub struct TestNode;

impl NodeTypes for TestNode {
type Primitives = ();
type Engine = EthEngineTypes;
type EngineTypes = EthEngineTypes;
}

impl<N> Node<N> for TestNode
where
N: FullNodeTypes<Engine = EthEngineTypes>,
N: FullNodeTypes<EngineTypes = EthEngineTypes>,
{
type ComponentsBuilder = ComponentsBuilder<
N,
Expand Down
1 change: 1 addition & 0 deletions crates/net/network/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,4 +151,5 @@ pub use session::{
pub use transactions::{FilterAnnouncement, MessageFilter, ValidateTx68};

pub use reth_eth_wire::{DisconnectReason, HelloMessageWithProtocols};
pub use reth_network_p2p::{BodiesClient, FullClient, HeadersClient};
pub use reth_network_types::{PeersConfig, SessionsConfig};
7 changes: 7 additions & 0 deletions crates/net/p2p/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,10 @@ pub mod sync;
/// Common test helpers for mocking out Consensus, Downloaders and Header Clients.
#[cfg(any(test, feature = "test-utils"))]
pub mod test_utils;

pub use bodies::client::BodiesClient;
pub use headers::client::HeadersClient;

pub trait FullClient: HeadersClient + BodiesClient + Unpin {}

impl<T> FullClient for T where T: HeadersClient + BodiesClient + Unpin {}
3 changes: 3 additions & 0 deletions crates/node/api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@ reth-network.workspace = true
reth-payload-builder.workspace = true
reth-payload-primitives.workspace = true
reth-tasks.workspace = true

# misc
auto_impl.workspace = true
Loading