@@ -8,7 +8,7 @@ use std::{fs, path::PathBuf, sync::Arc};
88
99use alloy_chains:: NamedChain ;
1010use alloy_primitives:: { hex, Address , U128 } ;
11- use alloy_provider:: { Provider , ProviderBuilder } ;
11+ use alloy_provider:: { layers :: CacheLayer , Provider , ProviderBuilder } ;
1212use alloy_rpc_client:: RpcClient ;
1313use alloy_signer:: Signer ;
1414use alloy_signer_aws:: AwsSigner ;
@@ -191,16 +191,22 @@ impl ScrollRollupNodeConfig {
191191
192192 // Get a provider
193193 let l1_provider = self . l1_provider_args . url . clone ( ) . map ( |url| {
194- let L1ProviderArgs { max_retries, initial_backoff, compute_units_per_second, .. } =
195- self . l1_provider_args ;
194+ let L1ProviderArgs {
195+ max_retries,
196+ initial_backoff,
197+ compute_units_per_second,
198+ cache_max_items,
199+ ..
200+ } = self . l1_provider_args ;
196201 let client = RpcClient :: builder ( )
197202 . layer ( RetryBackoffLayer :: new (
198203 max_retries,
199204 initial_backoff,
200205 compute_units_per_second,
201206 ) )
202207 . http ( url) ;
203- ProviderBuilder :: new ( ) . connect_client ( client)
208+ let cache_layer = CacheLayer :: new ( cache_max_items) ;
209+ ProviderBuilder :: new ( ) . layer ( cache_layer) . connect_client ( client)
204210 } ) ;
205211
206212 // Init a retry provider to the execution layer.
@@ -217,7 +223,9 @@ impl ScrollRollupNodeConfig {
217223 . parse ( )
218224 . expect ( "invalid l2 rpc url" ) ,
219225 ) ;
220- let l2_provider = ProviderBuilder :: < _ , _ , Scroll > :: default ( ) . connect_client ( client) ;
226+ let l2_provider = ProviderBuilder :: < _ , _ , Scroll > :: default ( )
227+ . layer ( CacheLayer :: new ( constants:: L2_PROVIDER_CACHE_MAX_ITEMS ) )
228+ . connect_client ( client) ;
221229 let l2_provider = Arc :: new ( l2_provider) ;
222230
223231 // Fetch the database from the hydrated config.
@@ -634,6 +642,9 @@ pub struct L1ProviderArgs {
634642 /// The logs query block range.
635643 #[ arg( long = "l1.query-range" , id = "l1_query_range" , value_name = "L1_QUERY_RANGE" , default_value_t = constants:: LOGS_QUERY_BLOCK_RANGE ) ]
636644 pub logs_query_block_range : u64 ,
645+ /// The maximum number of items to be stored in the cache layer.
646+ #[ arg( long = "l1.cache-max-items" , id = "l1_cache_max_items" , value_name = "L1_CACHE_MAX_ITEMS" , default_value_t = constants:: L1_PROVIDER_CACHE_MAX_ITEMS ) ]
647+ pub cache_max_items : u32 ,
637648}
638649
639650/// The arguments for the Beacon provider.
0 commit comments