@@ -3,6 +3,7 @@ use crate::{
3
3
CachedNonceManager , ChainIdFiller , FillerControlFlow , GasFiller , JoinFill , NonceFiller ,
4
4
NonceManager , RecommendedFillers , SimpleNonceManager , TxFiller , WalletFiller ,
5
5
} ,
6
+ layers:: { CallBatchLayer , ChainLayer } ,
6
7
provider:: SendableTx ,
7
8
Provider , RootProvider ,
8
9
} ;
@@ -266,12 +267,8 @@ impl<L, F, N> ProviderBuilder<L, F, N> {
266
267
/// the client's poll interval based on the average block time for this chain.
267
268
///
268
269
/// Does nothing to the client with a local transport.
269
- pub fn with_chain (
270
- self ,
271
- chain : NamedChain ,
272
- ) -> ProviderBuilder < Stack < crate :: layers:: ChainLayer , L > , F , N > {
273
- let chain_layer = crate :: layers:: ChainLayer :: from ( chain) ;
274
- self . layer ( chain_layer)
270
+ pub fn with_chain ( self , chain : NamedChain ) -> ProviderBuilder < Stack < ChainLayer , L > , F , N > {
271
+ self . layer ( ChainLayer :: new ( chain) )
275
272
}
276
273
277
274
/// Finish the layer stack by providing a root [`Provider`], outputting
@@ -398,6 +395,13 @@ impl<L, F, N> ProviderBuilder<L, F, N> {
398
395
let client = ClientBuilder :: default ( ) . hyper_http ( url) ;
399
396
self . on_client ( client)
400
397
}
398
+
399
+ /// Aggregate multiple `eth_call` requests into a single batch request using Multicall3.
400
+ ///
401
+ /// See [`CallBatchLayer`] for more information.
402
+ pub fn with_call_batching ( self ) -> ProviderBuilder < Stack < CallBatchLayer , L > , F , N > {
403
+ self . layer ( CallBatchLayer :: new ( ) )
404
+ }
401
405
}
402
406
403
407
impl < L , F , N : Network > ProviderBuilder < L , F , N > {
0 commit comments