@@ -58,6 +58,7 @@ impl ProofsFetcher {
5858 pub async fn fetch (
5959 & mut self ,
6060 engine : ZKVMEngine ,
61+ limit : u16 ,
6162 ) -> Result < Vec < AlignedProof > , ProofsFetcherError > {
6263 // Get current block
6364 let current_block = self
@@ -89,12 +90,9 @@ impl ProofsFetcher {
8990
9091 info ! ( "Logs collected {}" , logs. len( ) ) ;
9192
92- // Update last processed block after collecting logs
93- self . last_aggregated_block = current_block;
94-
9593 let mut proofs = vec ! [ ] ;
9694
97- for ( batch, _ ) in logs {
95+ for ( batch, log ) in logs {
9896 info ! (
9997 "New batch submitted, about to process. Batch merkle root {}..." ,
10098 batch. batchMerkleRoot
@@ -177,9 +175,24 @@ impl ProofsFetcher {
177175 proofs_to_add. len( )
178176 ) ;
179177
178+ if ( proofs. len ( ) + proofs_to_add. len ( ) ) > ( limit as usize ) {
179+ let log_block_number = log. block_number . unwrap ( ) ;
180+ info ! (
181+ "Limit of {} proofs reached, stopping at block number {}, which is {} from current block" ,
182+ limit, log_block_number, current_block - log_block_number
183+ ) ;
184+ // Update last processed block to this log block number
185+ // So the next aggregation starts at this block
186+ self . last_aggregated_block = log_block_number;
187+ return Ok ( proofs) ;
188+ }
189+
180190 proofs. extend ( proofs_to_add) ;
181191 }
182192
193+ // Update last processed block after collecting logs
194+ self . last_aggregated_block = current_block;
195+
183196 Ok ( proofs)
184197 }
185198
0 commit comments