@@ -6,10 +6,10 @@ import { EventData } from "../../utils/types";
6
6
import { getTxsBlockRangeEtherscan , wait } from "../../helpers/etherscan" ;
7
7
import { getTxsBlockRangeMerlinScan } from "../../helpers/merlin" ;
8
8
import { getTxsBlockRangeBtrScan } from "../../helpers/btr" ;
9
+ import { BigNumber } from "ethers" ;
9
10
10
11
const retry = require ( "async-retry" ) ;
11
12
12
-
13
13
export const contractsAddress = {
14
14
arbitrum : [ "0x0e83DEd9f80e1C92549615D96842F5cB64A08762" ] ,
15
15
arbitrum_nova : [ "0x0e83DEd9f80e1C92549615D96842F5cB64A08762" ] ,
@@ -49,24 +49,24 @@ export const contractsAddress = {
49
49
zircuit : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
50
50
lisk : [ "0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98" ] ,
51
51
cyeth : [ "0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7" ] ,
52
- fantom :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
53
- fuse :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
54
- klaytn :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
55
- cronos_zkevm :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
52
+ fantom : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
53
+ fuse : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
54
+ klaytn : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
55
+ cronos_zkevm : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
56
56
wc : [ "0x5b9d8AdCf93557E95902D1d91Bf73d12Becd2cC9" ] ,
57
- rari :[ "0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7" ] ,
58
- ink :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
59
- matchain :[ "0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98" ] ,
60
- fraxtal :[ "0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7" ] ,
61
- shape :[ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
57
+ rari : [ "0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7" ] ,
58
+ ink : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
59
+ matchain : [ "0x3F0F0E6411F859Da1A1BbF8bD6217cA93820Bb98" ] ,
60
+ fraxtal : [ "0xC626845BF4E6a5802Ef774dA0B3DfC6707F015F7" ] ,
61
+ shape : [ "0x7CFE8Aa0d8E92CCbBDfB12b95AEB7a54ec40f0F5" ] ,
62
62
} as const ;
63
63
64
64
const nativeTokens : Record < string , string > = {
65
65
ethereum : "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" ,
66
66
polygon : "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270" ,
67
67
bsc : "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c" ,
68
- avax :"0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7" ,
69
- fantom :"0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83" ,
68
+ avax : "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7" ,
69
+ fantom : "0x21be370d5312f44cb42ce377bc9b8a0cef1a4c83" ,
70
70
arbitrum : "0x82af49447d8a07e3bd95bd0d56f35241523fbab1" ,
71
71
optimism : "0x4200000000000000000000000000000000000006" ,
72
72
base : "0x4200000000000000000000000000000000000006" ,
@@ -78,7 +78,7 @@ const nativeTokens: Record<string, string> = {
78
78
era : "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91" ,
79
79
zklink : "0x8280a4e7D5B3B658ec4580d3Bc30f5e50454F169" ,
80
80
taiko : "0xA51894664A773981C6C112C43ce576f315d5b1B6" ,
81
- mantle :"0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" ,
81
+ mantle : "0x78c1b0C915c4FAA5FffA6CAbf0219DA63d7f4cb8" ,
82
82
merlin : "0xF6D226f9Dc15d9bB51182815b320D3fBE324e1bA" ,
83
83
btr : "0xff204e2681a6fa0e2c3fade68a1b28fb90e4fc5f" ,
84
84
} ;
@@ -87,111 +87,73 @@ const depositParams: PartialContractEventParams = {
87
87
target : "" ,
88
88
topic : "Deposit(address,address,address,string,uint256,uint256,uint256,uint256)" ,
89
89
abi : [
90
- "event Deposit(address user, address token, address maker, string target, uint256 amount, uint256 destination, uint256 channel, uint256 timestamp)" ,
90
+ "event Deposit(address indexed user, address indexed token, address indexed maker, string target, uint256 amount, uint256 destination, uint256 channel, uint256 timestamp)" ,
91
91
] ,
92
92
logKeys : {
93
- blockNumber : "blockNumber" ,
94
- txHash : "transactionHash" ,
93
+ blockNumber : "blockNumber" ,
94
+ txHash : "transactionHash" ,
95
95
} ,
96
96
argKeys : {
97
- amount : "amount" ,
98
- to : "maker" ,
99
- from : "user" ,
100
- token : "token" ,
97
+ amount : "amount" ,
98
+ to : "maker" ,
99
+ from : "user" ,
100
+ token : "token" ,
101
101
} ,
102
102
isDeposit : true ,
103
- } ;
103
+ } ;
104
104
105
-
106
105
type SupportedChains = keyof typeof contractsAddress ;
107
106
108
107
const constructParams = ( chain : SupportedChains ) => {
109
- const bridgeAddress = [ "0x5e809A85Aa182A9921EDD10a4163745bb3e36284" ]
110
- const contractAddress = contractsAddress [ chain ] ;
111
-
112
- let eventParams = [ ] as any ;
113
- bridgeAddress . map ( ( address : string ) => {
114
- const transferWithdrawalParams : PartialContractEventParams = constructTransferParams ( address , false ) ;
115
- const transferDepositParams : PartialContractEventParams = constructTransferParams ( address , true ) ;
116
- eventParams . push ( transferWithdrawalParams , transferDepositParams , depositParams ) ;
117
- } ) ;
118
-
119
- if ( nativeTokens . hasOwnProperty ( chain ) ) {
120
- return async ( fromBlock : number , toBlock : number ) => {
121
- const eventLogData = await getTxDataFromEVMEventLogs ( "owlto" , chain as Chain , fromBlock , toBlock , eventParams ) ;
108
+ const address = "0x5e809A85Aa182A9921EDD10a4163745bb3e36284" ;
109
+ const chainContracts = contractsAddress [ chain ] ;
110
+ let eventParams : PartialContractEventParams [ ] = [ ] ;
122
111
123
- const nativeEvents = await Promise . all ( [
124
- ...bridgeAddress . map ( async ( address : string , i : number ) => {
125
- await wait ( 300 * i ) ; // for etherscan
126
- let txs : any [ ] = [ ] ;
127
- if ( chain === "merlin" ) {
128
- txs = await getTxsBlockRangeMerlinScan ( address , fromBlock , toBlock , {
129
- includeSignatures : [ "0x" ] ,
130
- } ) ;
131
- } else if ( chain === "btr" ) {
132
- txs = await getTxsBlockRangeBtrScan ( address , fromBlock , toBlock , {
133
- includeSignatures : [ "0x" ] ,
134
- } ) ;
135
- } else {
136
- txs = await getTxsBlockRangeEtherscan ( chain , address , fromBlock , toBlock , {
137
- includeSignatures : [ "0x" ] ,
138
- } ) ;
139
- }
140
- const eventsRes : EventData [ ] = txs . map ( ( tx : any ) => {
141
- const event : EventData = {
142
- txHash : tx . hash ,
143
- blockNumber : + tx . blockNumber ,
144
- from : tx . from ,
145
- to : tx . to ,
146
- token : nativeTokens [ chain ] ,
147
- amount : tx . value ,
148
- isDeposit : address . toLowerCase ( ) === tx . to ,
149
- } ;
150
- return event ;
151
- } ) ;
152
-
153
- return eventsRes ;
154
- } ) ,
155
- ...contractAddress . map ( async ( address : string , i : number ) => {
156
- await wait ( 300 * i ) ; // for etherscan
157
- let txs : any [ ] = [ ] ;
158
- if ( chain === "merlin" ) {
159
- txs = await getTxsBlockRangeMerlinScan ( address , fromBlock , toBlock , {
160
- includeSignatures : [ "0xfc180638" ] ,
161
- } ) ;
162
- } else if ( chain === "btr" ) {
163
- txs = await getTxsBlockRangeBtrScan ( address , fromBlock , toBlock , {
164
- includeSignatures : [ "0xfc180638" ] ,
165
- } ) ;
166
- } else {
167
- txs = await getTxsBlockRangeEtherscan ( chain , address , fromBlock , toBlock , {
168
- includeSignatures : [ "0xfc180638" ] ,
169
- } ) ;
170
- }
171
- const eventsRes : EventData [ ] = txs . filter ( ( tx : any ) => String ( tx . value ) != "0" ) . map ( ( tx : any ) => {
172
- const event : EventData = {
173
- txHash : tx . hash ,
174
- blockNumber : + tx . blockNumber ,
175
- from : tx . from ,
176
- to : tx . to ,
177
- token : nativeTokens [ chain ] ,
178
- amount : tx . value ,
179
- isDeposit : address . toLowerCase ( ) === tx . to ,
180
- } ;
181
- return event ;
182
- } ) ;
183
-
184
- return eventsRes ;
185
- } )
186
- ]
187
- ) ;
188
- const allEvents = [ ...eventLogData , ...nativeEvents . flat ( ) ] ;
189
- return allEvents ;
112
+ const transferWithdrawalParams : PartialContractEventParams = constructTransferParams ( address , false ) ;
113
+ eventParams . push ( transferWithdrawalParams ) ;
114
+ const transferDepositParams : PartialContractEventParams = constructTransferParams ( address , true ) ;
115
+ eventParams . push ( transferDepositParams ) ;
116
+ for ( const cc of chainContracts ) {
117
+ const dp = {
118
+ ...depositParams ,
119
+ target : cc ,
190
120
} ;
191
- } else {
192
- return async ( fromBlock : number , toBlock : number ) =>
193
- getTxDataFromEVMEventLogs ( "owlto" , chain as Chain , fromBlock , toBlock , eventParams ) ;
121
+ eventParams . push ( dp ) ;
194
122
}
123
+
124
+ return async ( fromBlock : number , toBlock : number ) => {
125
+ const eventLogData = await getTxDataFromEVMEventLogs ( "owlto" , chain as Chain , fromBlock , toBlock , eventParams ) ;
126
+ let eventsRes : EventData [ ] = [ ] ;
127
+ if ( nativeTokens . hasOwnProperty ( chain ) ) {
128
+ let txs : any [ ] = [ ] ;
129
+ if ( chain === "merlin" ) {
130
+ txs = await getTxsBlockRangeMerlinScan ( address , fromBlock , toBlock , {
131
+ includeSignatures : [ "0x" ] ,
132
+ } ) ;
133
+ } else if ( chain === "btr" ) {
134
+ txs = await getTxsBlockRangeBtrScan ( address , fromBlock , toBlock , {
135
+ includeSignatures : [ "0x" ] ,
136
+ } ) ;
137
+ } else {
138
+ txs = await getTxsBlockRangeEtherscan ( chain , address , fromBlock , toBlock , {
139
+ includeSignatures : [ "0x" ] ,
140
+ } ) ;
141
+ }
142
+ eventsRes = txs . map ( ( tx : any ) => {
143
+ const event : EventData = {
144
+ txHash : tx . hash ,
145
+ blockNumber : + tx . blockNumber ,
146
+ from : tx . from ,
147
+ to : tx . to ,
148
+ token : nativeTokens [ chain ] ,
149
+ amount : BigNumber . from ( tx . value ) ,
150
+ isDeposit : address . toLowerCase ( ) === tx . to . toLowerCase ( ) ,
151
+ } ;
152
+ return event ;
153
+ } ) ;
154
+ }
155
+ return [ ...eventLogData , ...eventsRes ] ;
156
+ } ;
195
157
}
196
158
197
159
@@ -228,22 +190,22 @@ const adapter: BridgeAdapter = {
228
190
zircuit : constructParams ( "zircuit" ) ,
229
191
lisk : constructParams ( "lisk" ) ,
230
192
cyber : constructParams ( "cyeth" ) ,
231
- fantom :constructParams ( "fantom" ) ,
232
- fuse :constructParams ( "fuse" ) ,
233
- kaia :constructParams ( "klaytn" ) ,
234
- rari :constructParams ( "rari" ) ,
235
- ink :constructParams ( "ink" ) ,
236
- matchain :constructParams ( "matchain" ) ,
237
- shape :constructParams ( "shape" ) ,
238
- fraxtal :constructParams ( "fraxtal" ) ,
193
+ fantom : constructParams ( "fantom" ) ,
194
+ fuse : constructParams ( "fuse" ) ,
195
+ kaia : constructParams ( "klaytn" ) ,
196
+ rari : constructParams ( "rari" ) ,
197
+ ink : constructParams ( "ink" ) ,
198
+ matchain : constructParams ( "matchain" ) ,
199
+ shape : constructParams ( "shape" ) ,
200
+ fraxtal : constructParams ( "fraxtal" ) ,
239
201
"cronos zkevm" : constructParams ( "cronos_zkevm" ) ,
240
202
'x layer' : constructParams ( "xlayer" ) ,
241
203
"arbitrum nova" : constructParams ( "arbitrum_nova" ) ,
242
204
"polygon zkevm" : constructParams ( "polygon_zkevm" ) ,
243
205
"zksync era" : constructParams ( "era" ) ,
244
206
"astar zkevm" : constructParams ( "astrzk" ) ,
245
207
"zklink nova" : constructParams ( "zklink" ) ,
246
- "world chain" :constructParams ( "wc" ) ,
208
+ "world chain" : constructParams ( "wc" ) ,
247
209
} ;
248
210
249
211
export default adapter ;
0 commit comments