1111//!
1212//! Learn more about `ProviderCall` [here](https://github.com/alloy-rs/alloy/pull/788).
1313
14- use std:: { marker :: PhantomData , path:: PathBuf , sync:: Arc } ;
14+ use std:: { path:: PathBuf , sync:: Arc } ;
1515
1616use alloy:: {
1717 eips:: { BlockId , BlockNumberOrTag } ,
@@ -21,7 +21,7 @@ use alloy::{
2121 Provider , ProviderBuilder , ProviderCall , ProviderLayer , RootProvider , RpcWithBlock ,
2222 } ,
2323 rpc:: client:: NoParams ,
24- transports:: { Transport , TransportErrorKind } ,
24+ transports:: TransportErrorKind ,
2525} ;
2626use eyre:: Result ;
2727
@@ -96,12 +96,11 @@ async fn main() -> Result<()> {
9696}
9797
9898/// Implement the `ProviderLayer` trait for the `RethDBLayer` struct.
99- impl < P , T > ProviderLayer < P , T > for RethDbLayer
99+ impl < P > ProviderLayer < P > for RethDbLayer
100100where
101- P : Provider < T > ,
102- T : Transport + Clone ,
101+ P : Provider ,
103102{
104- type Provider = RethDbProvider < P , T > ;
103+ type Provider = RethDbProvider < P > ;
105104
106105 fn layer ( & self , inner : P ) -> Self :: Provider {
107106 RethDbProvider :: new ( inner, self . db_path ( ) . clone ( ) )
@@ -113,14 +112,13 @@ where
113112/// It holds the `reth_provider::ProviderFactory` that enables read-only access to the database
114113/// tables and static files.
115114#[ derive( Clone , Debug ) ]
116- pub struct RethDbProvider < P , T > {
115+ pub struct RethDbProvider < P > {
117116 inner : P ,
118117 db_path : PathBuf ,
119118 provider_factory : DbAccessor ,
120- _pd : PhantomData < T > ,
121119}
122120
123- impl < P , T > RethDbProvider < P , T > {
121+ impl < P > RethDbProvider < P > {
124122 /// Create a new `RethDbProvider` instance.
125123 pub fn new ( inner : P , db_path : PathBuf ) -> Self {
126124 let db = open_db_read_only ( & db_path, Default :: default ( ) ) . unwrap ( ) ;
@@ -134,7 +132,7 @@ impl<P, T> RethDbProvider<P, T> {
134132 let db_accessor: DbAccessor <
135133 ProviderFactory < NodeTypesWithDBAdapter < EthereumNode , Arc < DatabaseEnv > > > ,
136134 > = DbAccessor :: new ( provider_factory) ;
137- Self { inner, db_path, provider_factory : db_accessor, _pd : PhantomData }
135+ Self { inner, db_path, provider_factory : db_accessor }
138136 }
139137
140138 const fn factory ( & self ) -> & DbAccessor {
@@ -150,17 +148,16 @@ impl<P, T> RethDbProvider<P, T> {
150148/// Implement the `Provider` trait for the `RethDbProvider` struct.
151149///
152150/// This is where we override specific RPC methods to fetch from the reth-db.
153- impl < P , T > Provider < T > for RethDbProvider < P , T >
151+ impl < P > Provider for RethDbProvider < P >
154152where
155- P : Provider < T > ,
156- T : Transport + Clone ,
153+ P : Provider ,
157154{
158- fn root ( & self ) -> & RootProvider < T > {
155+ fn root ( & self ) -> & RootProvider {
159156 self . inner . root ( )
160157 }
161158
162159 /// Override the `get_block_number` method to fetch the latest block number from the reth-db.
163- fn get_block_number ( & self ) -> ProviderCall < T , NoParams , U64 , u64 > {
160+ fn get_block_number ( & self ) -> ProviderCall < NoParams , U64 , u64 > {
164161 let provider = self . factory ( ) . provider ( ) . map_err ( TransportErrorKind :: custom) . unwrap ( ) ;
165162
166163 let best = provider. best_block_number ( ) . map_err ( TransportErrorKind :: custom) ;
@@ -171,7 +168,7 @@ where
171168 /// Override the `get_transaction_count` method to fetch the transaction count of an address.
172169 ///
173170 /// `RpcWithBlock` uses `ProviderCall` under the hood.
174- fn get_transaction_count ( & self , address : Address ) -> RpcWithBlock < T , Address , U64 , u64 > {
171+ fn get_transaction_count ( & self , address : Address ) -> RpcWithBlock < Address , U64 , u64 > {
175172 let this = self . factory ( ) . clone ( ) ;
176173 RpcWithBlock :: new_provider ( move |block_id| {
177174 let provider = this. provider_at ( block_id) . map_err ( TransportErrorKind :: custom) . unwrap ( ) ;
0 commit comments