1
1
import type { ethers } from 'ethers'
2
- import { timeoutWithRetry } from '@ora-io/utils'
2
+ import { timeoutWithRetry , to } from '@ora-io/utils'
3
3
import { ETH_BLOCK_COUNT_ONE_HOUR } from '../../constants'
4
4
import type { Providers } from '../../types/w3'
5
5
import { debug } from '../../debug'
@@ -35,11 +35,15 @@ export class BaseCrossChecker {
35
35
36
36
// define from, to
37
37
// TODO: use blockNumber for performance
38
- const block = await timeoutWithRetry ( ( ) => {
38
+ const [ err , block ] = await to ( timeoutWithRetry ( ( ) => {
39
39
if ( ! this . provider || ! this . provider . provider )
40
40
throw new Error ( 'provider not ready' )
41
41
return this . provider . provider . getBlock ( 'latest' )
42
- } , 15 * 1000 , 3 )
42
+ } , 15 * 1000 , 3 ) )
43
+ if ( err ) {
44
+ console . warn ( 'crosscheck failed to get latest block' , err )
45
+ return
46
+ }
43
47
if ( ! block ) {
44
48
console . warn ( 'crosscheck failed to get latest block' )
45
49
return
@@ -62,11 +66,15 @@ export class BaseCrossChecker {
62
66
ccfOptions : CrossCheckFromParam ,
63
67
) {
64
68
// TODO: use blockNumber for performance
65
- const block = await timeoutWithRetry ( ( ) => {
69
+ const [ err , block ] = await to ( timeoutWithRetry ( ( ) => {
66
70
if ( ! this . provider || ! this . provider . provider )
67
71
throw new Error ( 'provider not ready' )
68
72
return this . provider . provider . getBlock ( 'latest' )
69
- } , 15 * 1000 , 3 )
73
+ } , 15 * 1000 , 3 ) )
74
+ if ( err ) {
75
+ console . warn ( 'crosscheck failed to get latest block' , err )
76
+ return
77
+ }
70
78
if ( ! block ) {
71
79
console . warn ( 'crosscheck failed to get latest block' )
72
80
return
@@ -86,24 +94,6 @@ export class BaseCrossChecker {
86
94
return block . number
87
95
}
88
96
89
- /**
90
- * @deprecated
91
- * @param logs
92
- * @param txHashList
93
- * @param logIndexList
94
- * @returns
95
- */
96
- async diff_old ( logs : ethers . Log [ ] , txHashList : string [ ] , logIndexList : number [ ] [ ] ) : Promise < ethers . Log [ ] > {
97
- const missing = ( log : ethers . Log ) => {
98
- const txIndex = txHashList ?. indexOf ( log . transactionHash ) || - 1
99
- // 1. tx missing, or 2. if passed in logIndexList, event idx missing
100
- return txIndex === - 1 || ( logIndexList && ! logIndexList [ txIndex ] . includes ( log . index ) )
101
- }
102
- // filter missing logs
103
- const missingLogs = logs . filter ( ( log ) => { return missing ( log ) } ) //
104
- return missingLogs
105
- }
106
-
107
97
async diff ( logs : ethers . Log [ ] , ignoreLogs : SimpleLog [ ] ) : Promise < ethers . Log [ ] > {
108
98
const missing = ( logToFind : ethers . Log ) => {
109
99
const logIndex = ignoreLogs . findIndex (
@@ -132,7 +122,7 @@ export class BaseCrossChecker {
132
122
const logs = await timeoutWithRetry ( ( ) => {
133
123
if ( ! this . provider || ! this . provider . provider )
134
124
throw new Error ( 'provider not ready' )
135
- return this . provider . provider . getLogs ( params )
125
+ return this . provider ? .provider ? .getLogs ( params )
136
126
} , 15 * 1000 , 3 )
137
127
// get ignoreLogs keys
138
128
const ignoreLogs = options . ignoreLogs
0 commit comments