@@ -40,13 +40,13 @@ func RunReorgValidator() {
4040 }
4141
4242 // Detect reorgs and handle them
43- err = detectAndHandleReorgs (startBlock , endBlock )
43+ lastValidBlock , err : = detectAndHandleReorgs (startBlock , endBlock )
4444 if err != nil {
4545 log .Error ().Err (err ).Msg ("Failed to detect and handle reorgs" )
4646 time .Sleep (2 * time .Second )
4747 continue
4848 }
49- lastBlockCheck = endBlock
49+ lastBlockCheck = lastValidBlock
5050 }
5151}
5252
@@ -91,18 +91,18 @@ func getLastValidBlock() (int64, error) {
9191 return lastValidBlock , nil
9292}
9393
94- func detectAndHandleReorgs (startBlock int64 , endBlock int64 ) error {
94+ func detectAndHandleReorgs (startBlock int64 , endBlock int64 ) ( int64 , error ) {
9595 log .Debug ().Msgf ("Checking for reorgs from block %d to %d" , startBlock , endBlock )
9696
9797 // Fetch block headers for the range
9898 blockHeaders , err := libs .GetBlockHeadersForReorgCheck (libs .ChainId .Uint64 (), uint64 (startBlock ), uint64 (endBlock ))
9999 if err != nil {
100- return fmt .Errorf ("detectAndHandleReorgs: failed to get block headers: %w" , err )
100+ return 0 , fmt .Errorf ("detectAndHandleReorgs: failed to get block headers: %w" , err )
101101 }
102102
103103 if len (blockHeaders ) == 0 {
104104 log .Debug ().Msg ("detectAndHandleReorgs: No block headers found in range" )
105- return nil
105+ return 0 , nil
106106 }
107107
108108 // 1) Block verification: find reorg range from header continuity (existing behavior)
@@ -141,13 +141,13 @@ func detectAndHandleReorgs(startBlock int64, endBlock int64) error {
141141 // and the number of transactions stored per block in ClickHouse.
142142 txStart , txEnd , err := libs .GetTransactionMismatchRangeFromClickHouseV2 (libs .ChainId .Uint64 (), uint64 (startBlock ), uint64 (endBlock ))
143143 if err != nil {
144- return fmt .Errorf ("detectAndHandleReorgs: transaction verification failed: %w" , err )
144+ return 0 , fmt .Errorf ("detectAndHandleReorgs: transaction verification failed: %w" , err )
145145 }
146146
147147 // 3) Logs verification: check for mismatches between logsBloom and logs stored in ClickHouse.
148148 logsStart , logsEnd , err := libs .GetLogsMismatchRangeFromClickHouseV2 (libs .ChainId .Uint64 (), uint64 (startBlock ), uint64 (endBlock ))
149149 if err != nil {
150- return fmt .Errorf ("detectAndHandleReorgs: logs verification failed: %w" , err )
150+ return 0 , fmt .Errorf ("detectAndHandleReorgs: logs verification failed: %w" , err )
151151 }
152152
153153 // 4) Combine all ranges:
@@ -186,16 +186,16 @@ func detectAndHandleReorgs(startBlock int64, endBlock int64) error {
186186 if finalStart > - 1 {
187187 // We found at least one inconsistent range; reorg from min(start) to max(end).
188188 if err := handleReorgForRange (uint64 (finalStart ), uint64 (finalEnd )); err != nil {
189- return err
189+ return 0 , err
190190 }
191191 lastValidBlock = finalEnd
192192 }
193193 err = libs .SetReorgLastValidBlock (libs .ChainIdStr , lastValidBlock )
194194 if err != nil {
195- return fmt .Errorf ("detectAndHandleReorgs: failed to set last valid block: %w" , err )
195+ return 0 , fmt .Errorf ("detectAndHandleReorgs: failed to set last valid block: %w" , err )
196196 }
197197
198- return nil
198+ return lastValidBlock , nil
199199}
200200
201201func handleReorgForRange (startBlock uint64 , endBlock uint64 ) error {
0 commit comments