11import type { ethers } from 'ethers'
22import { logger , retryOnNull } from '@ora-io/utils'
33import { ETH_BLOCK_COUNT_ONE_HOUR } from '../../constants'
4+ import type { Providers } from '../../types/w3'
45import type { CrossCheckFromParam , CrossCheckRangeParam , CrossCheckRetroParam , SimpleLog } from './interface'
56
67export class BaseCrossChecker {
7- provider : ethers . Provider
8- constructor ( provider : ethers . Provider ) {
8+ provider : Providers
9+ constructor ( provider : Providers ) {
910 this . provider = provider
1011 }
1112
@@ -33,7 +34,7 @@ export class BaseCrossChecker {
3334
3435 // define from, to
3536 // TODO: use blockNumber for performance
36- const block = await retryOnNull ( async ( ) => await this . provider . getBlock ( 'latest' ) )
37+ const block = await retryOnNull ( async ( ) => await this . provider . provider ?. getBlock ( 'latest' ) )
3738 const options : CrossCheckRangeParam = {
3839 ...ccrOptions ,
3940 fromBlock : block . number - retroBlockCount ,
@@ -52,7 +53,7 @@ export class BaseCrossChecker {
5253 ccfOptions : CrossCheckFromParam ,
5354 ) {
5455 // TODO: use blockNumber for performance
55- const block = await retryOnNull ( async ( ) => await this . provider . getBlock ( 'latest' ) )
56+ const block = await retryOnNull ( async ( ) => await this . provider . provider ?. getBlock ( 'latest' ) )
5657
5758 // suggest use large retroBlockCount
5859 if ( block . number - ccfOptions . fromBlock < ETH_BLOCK_COUNT_ONE_HOUR )
@@ -103,16 +104,18 @@ export class BaseCrossChecker {
103104 ...( address && { address } ) ,
104105 ...( topics && { topics } ) ,
105106 }
106- const logs = await this . provider . getLogs ( params )
107- // get ignoreLogs keys
108- const ignoreLogs = options . ignoreLogs
107+ if ( this . provider . provider ) {
108+ const logs = await this . provider . provider ?. getLogs ( params )
109+ // get ignoreLogs keys
110+ const ignoreLogs = options . ignoreLogs
109111
110- // crosscheck missing logs
111- const missingLogs = ignoreLogs ? await this . diff ( logs , ignoreLogs ) : logs
112+ // crosscheck missing logs
113+ const missingLogs = ignoreLogs ? await this . diff ( logs , ignoreLogs ) : logs
112114
113- // callback on missing logs
114- for ( const log of missingLogs )
115- await options . onMissingLog ( log )
115+ // callback on missing logs
116+ for ( const log of missingLogs )
117+ await options . onMissingLog ( log )
118+ }
116119 }
117120}
118121
0 commit comments