@@ -55,6 +55,7 @@ impl ProofsFetcher {
5555 pub async fn fetch (
5656 & mut self ,
5757 engine : ZKVMEngine ,
58+ limit : u16 ,
5859 ) -> Result < Vec < AlignedProof > , ProofsFetcherError > {
5960 // Get current block
6061 let current_block = self
@@ -86,12 +87,9 @@ impl ProofsFetcher {
8687
8788 info ! ( "Logs collected {}" , logs. len( ) ) ;
8889
89- // Update last processed block after collecting logs
90- self . last_aggregated_block = current_block;
91-
9290 let mut proofs = vec ! [ ] ;
9391
94- for ( batch, _ ) in logs {
92+ for ( batch, log ) in logs {
9593 info ! (
9694 "New batch submitted, about to process. Batch merkle root {}..." ,
9795 batch. batchMerkleRoot
@@ -153,6 +151,18 @@ impl ProofsFetcher {
153151 proofs_to_add. len( )
154152 ) ;
155153
154+ if ( proofs. len ( ) + proofs_to_add. len ( ) ) > ( limit as usize ) {
155+ let log_block_number = log. block_number . unwrap ( ) ;
156+ info ! (
157+ "Limit of {} proofs reached, stopping at block number {}, which is {} from current block" ,
158+ limit, log_block_number, current_block - log_block_number
159+ ) ;
160+ // Update last processed block to this log block number
161+ // So the next aggregation starts at this block
162+ self . last_aggregated_block = log_block_number;
163+ return Ok ( proofs) ;
164+ }
165+
156166 // try to add them to the queue
157167 for proof in proofs_to_add {
158168 if let Err ( err) = proof. verify ( ) {
@@ -164,6 +174,9 @@ impl ProofsFetcher {
164174 }
165175 }
166176
177+ // Update last processed block after collecting logs
178+ self . last_aggregated_block = current_block;
179+
167180 Ok ( proofs)
168181 }
169182
0 commit comments