@sentio/runtime 2.40.0-rc.9 → 2.40.1-rc.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,1615 @@
1
+ import { EthChainId } from '@sentio/chain'
2
+ import { BytesLike, Interface } from 'ethers'
3
+
4
+ // https://www.multicall3.com/abi#json
5
+ const ABI = [
6
+ {
7
+ inputs: [
8
+ {
9
+ components: [
10
+ {
11
+ internalType: 'address',
12
+ name: 'target',
13
+ type: 'address'
14
+ },
15
+ {
16
+ internalType: 'bytes',
17
+ name: 'callData',
18
+ type: 'bytes'
19
+ }
20
+ ],
21
+ internalType: 'struct Multicall3.Call[]',
22
+ name: 'calls',
23
+ type: 'tuple[]'
24
+ }
25
+ ],
26
+ name: 'aggregate',
27
+ outputs: [
28
+ {
29
+ internalType: 'uint256',
30
+ name: 'blockNumber',
31
+ type: 'uint256'
32
+ },
33
+ {
34
+ internalType: 'bytes[]',
35
+ name: 'returnData',
36
+ type: 'bytes[]'
37
+ }
38
+ ],
39
+ stateMutability: 'payable',
40
+ type: 'function'
41
+ },
42
+ {
43
+ inputs: [
44
+ {
45
+ components: [
46
+ {
47
+ internalType: 'address',
48
+ name: 'target',
49
+ type: 'address'
50
+ },
51
+ {
52
+ internalType: 'bool',
53
+ name: 'allowFailure',
54
+ type: 'bool'
55
+ },
56
+ {
57
+ internalType: 'bytes',
58
+ name: 'callData',
59
+ type: 'bytes'
60
+ }
61
+ ],
62
+ internalType: 'struct Multicall3.Call3[]',
63
+ name: 'calls',
64
+ type: 'tuple[]'
65
+ }
66
+ ],
67
+ name: 'aggregate3',
68
+ outputs: [
69
+ {
70
+ components: [
71
+ {
72
+ internalType: 'bool',
73
+ name: 'success',
74
+ type: 'bool'
75
+ },
76
+ {
77
+ internalType: 'bytes',
78
+ name: 'returnData',
79
+ type: 'bytes'
80
+ }
81
+ ],
82
+ internalType: 'struct Multicall3.Result[]',
83
+ name: 'returnData',
84
+ type: 'tuple[]'
85
+ }
86
+ ],
87
+ stateMutability: 'payable',
88
+ type: 'function'
89
+ },
90
+ {
91
+ inputs: [
92
+ {
93
+ components: [
94
+ {
95
+ internalType: 'address',
96
+ name: 'target',
97
+ type: 'address'
98
+ },
99
+ {
100
+ internalType: 'bool',
101
+ name: 'allowFailure',
102
+ type: 'bool'
103
+ },
104
+ {
105
+ internalType: 'uint256',
106
+ name: 'value',
107
+ type: 'uint256'
108
+ },
109
+ {
110
+ internalType: 'bytes',
111
+ name: 'callData',
112
+ type: 'bytes'
113
+ }
114
+ ],
115
+ internalType: 'struct Multicall3.Call3Value[]',
116
+ name: 'calls',
117
+ type: 'tuple[]'
118
+ }
119
+ ],
120
+ name: 'aggregate3Value',
121
+ outputs: [
122
+ {
123
+ components: [
124
+ {
125
+ internalType: 'bool',
126
+ name: 'success',
127
+ type: 'bool'
128
+ },
129
+ {
130
+ internalType: 'bytes',
131
+ name: 'returnData',
132
+ type: 'bytes'
133
+ }
134
+ ],
135
+ internalType: 'struct Multicall3.Result[]',
136
+ name: 'returnData',
137
+ type: 'tuple[]'
138
+ }
139
+ ],
140
+ stateMutability: 'payable',
141
+ type: 'function'
142
+ },
143
+ {
144
+ inputs: [
145
+ {
146
+ components: [
147
+ {
148
+ internalType: 'address',
149
+ name: 'target',
150
+ type: 'address'
151
+ },
152
+ {
153
+ internalType: 'bytes',
154
+ name: 'callData',
155
+ type: 'bytes'
156
+ }
157
+ ],
158
+ internalType: 'struct Multicall3.Call[]',
159
+ name: 'calls',
160
+ type: 'tuple[]'
161
+ }
162
+ ],
163
+ name: 'blockAndAggregate',
164
+ outputs: [
165
+ {
166
+ internalType: 'uint256',
167
+ name: 'blockNumber',
168
+ type: 'uint256'
169
+ },
170
+ {
171
+ internalType: 'bytes32',
172
+ name: 'blockHash',
173
+ type: 'bytes32'
174
+ },
175
+ {
176
+ components: [
177
+ {
178
+ internalType: 'bool',
179
+ name: 'success',
180
+ type: 'bool'
181
+ },
182
+ {
183
+ internalType: 'bytes',
184
+ name: 'returnData',
185
+ type: 'bytes'
186
+ }
187
+ ],
188
+ internalType: 'struct Multicall3.Result[]',
189
+ name: 'returnData',
190
+ type: 'tuple[]'
191
+ }
192
+ ],
193
+ stateMutability: 'payable',
194
+ type: 'function'
195
+ },
196
+ {
197
+ inputs: [],
198
+ name: 'getBasefee',
199
+ outputs: [
200
+ {
201
+ internalType: 'uint256',
202
+ name: 'basefee',
203
+ type: 'uint256'
204
+ }
205
+ ],
206
+ stateMutability: 'view',
207
+ type: 'function'
208
+ },
209
+ {
210
+ inputs: [
211
+ {
212
+ internalType: 'uint256',
213
+ name: 'blockNumber',
214
+ type: 'uint256'
215
+ }
216
+ ],
217
+ name: 'getBlockHash',
218
+ outputs: [
219
+ {
220
+ internalType: 'bytes32',
221
+ name: 'blockHash',
222
+ type: 'bytes32'
223
+ }
224
+ ],
225
+ stateMutability: 'view',
226
+ type: 'function'
227
+ },
228
+ {
229
+ inputs: [],
230
+ name: 'getBlockNumber',
231
+ outputs: [
232
+ {
233
+ internalType: 'uint256',
234
+ name: 'blockNumber',
235
+ type: 'uint256'
236
+ }
237
+ ],
238
+ stateMutability: 'view',
239
+ type: 'function'
240
+ },
241
+ {
242
+ inputs: [],
243
+ name: 'getChainId',
244
+ outputs: [
245
+ {
246
+ internalType: 'uint256',
247
+ name: 'chainid',
248
+ type: 'uint256'
249
+ }
250
+ ],
251
+ stateMutability: 'view',
252
+ type: 'function'
253
+ },
254
+ {
255
+ inputs: [],
256
+ name: 'getCurrentBlockCoinbase',
257
+ outputs: [
258
+ {
259
+ internalType: 'address',
260
+ name: 'coinbase',
261
+ type: 'address'
262
+ }
263
+ ],
264
+ stateMutability: 'view',
265
+ type: 'function'
266
+ },
267
+ {
268
+ inputs: [],
269
+ name: 'getCurrentBlockDifficulty',
270
+ outputs: [
271
+ {
272
+ internalType: 'uint256',
273
+ name: 'difficulty',
274
+ type: 'uint256'
275
+ }
276
+ ],
277
+ stateMutability: 'view',
278
+ type: 'function'
279
+ },
280
+ {
281
+ inputs: [],
282
+ name: 'getCurrentBlockGasLimit',
283
+ outputs: [
284
+ {
285
+ internalType: 'uint256',
286
+ name: 'gaslimit',
287
+ type: 'uint256'
288
+ }
289
+ ],
290
+ stateMutability: 'view',
291
+ type: 'function'
292
+ },
293
+ {
294
+ inputs: [],
295
+ name: 'getCurrentBlockTimestamp',
296
+ outputs: [
297
+ {
298
+ internalType: 'uint256',
299
+ name: 'timestamp',
300
+ type: 'uint256'
301
+ }
302
+ ],
303
+ stateMutability: 'view',
304
+ type: 'function'
305
+ },
306
+ {
307
+ inputs: [
308
+ {
309
+ internalType: 'address',
310
+ name: 'addr',
311
+ type: 'address'
312
+ }
313
+ ],
314
+ name: 'getEthBalance',
315
+ outputs: [
316
+ {
317
+ internalType: 'uint256',
318
+ name: 'balance',
319
+ type: 'uint256'
320
+ }
321
+ ],
322
+ stateMutability: 'view',
323
+ type: 'function'
324
+ },
325
+ {
326
+ inputs: [],
327
+ name: 'getLastBlockHash',
328
+ outputs: [
329
+ {
330
+ internalType: 'bytes32',
331
+ name: 'blockHash',
332
+ type: 'bytes32'
333
+ }
334
+ ],
335
+ stateMutability: 'view',
336
+ type: 'function'
337
+ },
338
+ {
339
+ inputs: [
340
+ {
341
+ internalType: 'bool',
342
+ name: 'requireSuccess',
343
+ type: 'bool'
344
+ },
345
+ {
346
+ components: [
347
+ {
348
+ internalType: 'address',
349
+ name: 'target',
350
+ type: 'address'
351
+ },
352
+ {
353
+ internalType: 'bytes',
354
+ name: 'callData',
355
+ type: 'bytes'
356
+ }
357
+ ],
358
+ internalType: 'struct Multicall3.Call[]',
359
+ name: 'calls',
360
+ type: 'tuple[]'
361
+ }
362
+ ],
363
+ name: 'tryAggregate',
364
+ outputs: [
365
+ {
366
+ components: [
367
+ {
368
+ internalType: 'bool',
369
+ name: 'success',
370
+ type: 'bool'
371
+ },
372
+ {
373
+ internalType: 'bytes',
374
+ name: 'returnData',
375
+ type: 'bytes'
376
+ }
377
+ ],
378
+ internalType: 'struct Multicall3.Result[]',
379
+ name: 'returnData',
380
+ type: 'tuple[]'
381
+ }
382
+ ],
383
+ stateMutability: 'payable',
384
+ type: 'function'
385
+ },
386
+ {
387
+ inputs: [
388
+ {
389
+ internalType: 'bool',
390
+ name: 'requireSuccess',
391
+ type: 'bool'
392
+ },
393
+ {
394
+ components: [
395
+ {
396
+ internalType: 'address',
397
+ name: 'target',
398
+ type: 'address'
399
+ },
400
+ {
401
+ internalType: 'bytes',
402
+ name: 'callData',
403
+ type: 'bytes'
404
+ }
405
+ ],
406
+ internalType: 'struct Multicall3.Call[]',
407
+ name: 'calls',
408
+ type: 'tuple[]'
409
+ }
410
+ ],
411
+ name: 'tryBlockAndAggregate',
412
+ outputs: [
413
+ {
414
+ internalType: 'uint256',
415
+ name: 'blockNumber',
416
+ type: 'uint256'
417
+ },
418
+ {
419
+ internalType: 'bytes32',
420
+ name: 'blockHash',
421
+ type: 'bytes32'
422
+ },
423
+ {
424
+ components: [
425
+ {
426
+ internalType: 'bool',
427
+ name: 'success',
428
+ type: 'bool'
429
+ },
430
+ {
431
+ internalType: 'bytes',
432
+ name: 'returnData',
433
+ type: 'bytes'
434
+ }
435
+ ],
436
+ internalType: 'struct Multicall3.Result[]',
437
+ name: 'returnData',
438
+ type: 'tuple[]'
439
+ }
440
+ ],
441
+ stateMutability: 'payable',
442
+ type: 'function'
443
+ }
444
+ ]
445
+
446
+ // https://github.com/mds1/multicall/blob/main/deployments.json
447
+ const DEPLOYMENTS = [
448
+ {
449
+ name: 'Mainnet',
450
+ chainId: 1,
451
+ url: 'https://etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
452
+ },
453
+ {
454
+ name: 'Kovan',
455
+ chainId: 42,
456
+ url: 'https://kovan.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
457
+ },
458
+ {
459
+ name: 'Rinkeby',
460
+ chainId: 4,
461
+ url: 'https://rinkeby.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
462
+ },
463
+ {
464
+ name: 'Görli',
465
+ chainId: 5,
466
+ url: 'https://goerli.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
467
+ },
468
+ {
469
+ name: 'Ropsten',
470
+ chainId: 3,
471
+ url: 'https://ropsten.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
472
+ },
473
+ {
474
+ name: 'Sepolia',
475
+ chainId: 11155111,
476
+ url: 'https://sepolia.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
477
+ },
478
+ {
479
+ name: 'Holesky',
480
+ chainId: 17000,
481
+ url: 'https://holesky.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
482
+ },
483
+ {
484
+ name: 'Xterio Chain',
485
+ chainId: 112358,
486
+ url: 'https://xterscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
487
+ },
488
+ {
489
+ name: 'Xterio Testnet',
490
+ chainId: 1637450,
491
+ url: 'https://testnet.xterscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
492
+ },
493
+ {
494
+ name: 'Optimism',
495
+ chainId: 10,
496
+ url: 'https://optimistic.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
497
+ },
498
+ {
499
+ name: 'Optimism Kovan',
500
+ chainId: 69,
501
+ url: 'https://kovan-optimistic.etherscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
502
+ },
503
+ {
504
+ name: 'Optimism Görli',
505
+ chainId: 420,
506
+ url: 'https://blockscout.com/optimism/goerli/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
507
+ },
508
+ {
509
+ name: 'Optimism Sepolia',
510
+ chainId: 11155420,
511
+ url: 'https://optimism-sepolia.blockscout.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
512
+ },
513
+ {
514
+ name: 'Arbitrum',
515
+ chainId: 42161,
516
+ url: 'https://arbiscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
517
+ },
518
+ {
519
+ name: 'Arbitrum Nova',
520
+ chainId: 42170,
521
+ url: 'https://nova.arbiscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
522
+ },
523
+ {
524
+ name: 'Arbitrum Görli',
525
+ chainId: 421613,
526
+ url: 'https://goerli-rollup-explorer.arbitrum.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
527
+ },
528
+ {
529
+ name: 'Arbitrum Sepolia',
530
+ chainId: 421614,
531
+ url: 'https://sepolia-explorer.arbitrum.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
532
+ },
533
+ {
534
+ name: 'Arbitrum Rinkeby',
535
+ chainId: 421611,
536
+ url: 'https://testnet.arbiscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
537
+ },
538
+ {
539
+ name: 'Stylus Testnet',
540
+ chainId: 23011913,
541
+ url: 'https://stylus-testnet-explorer.arbitrum.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
542
+ },
543
+ {
544
+ name: 'Polygon',
545
+ chainId: 137,
546
+ url: 'https://polygonscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
547
+ },
548
+ {
549
+ name: 'Mumbai',
550
+ chainId: 80001,
551
+ url: 'https://mumbai.polygonscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
552
+ },
553
+ {
554
+ name: 'Amoy',
555
+ chainId: 80002,
556
+ url: 'https://amoy.polygonscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
557
+ },
558
+ {
559
+ name: 'Polygon zkEVM',
560
+ chainId: 1101,
561
+ url: 'https://zkevm.polygonscan.com/address/0xca11bde05977b3631167028862be2a173976ca11#code'
562
+ },
563
+ {
564
+ name: 'Polygon zkEVM Testnet',
565
+ chainId: 1442,
566
+ url: 'https://testnet-zkevm.polygonscan.com/address/0xca11bde05977b3631167028862be2a173976ca11#code'
567
+ },
568
+ {
569
+ name: 'Cardona zkEVM Testnet',
570
+ chainId: 2442,
571
+ url: 'https://cardona-zkevm.polygonscan.com/address/0xca11bde05977b3631167028862be2a173976ca11#code'
572
+ },
573
+ {
574
+ name: 'Gnosis Chain (xDai)',
575
+ chainId: 100,
576
+ url: 'https://blockscout.com/xdai/mainnet/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
577
+ },
578
+ {
579
+ name: 'Chiado (Gnosis Chain Testnet)',
580
+ chainId: 10200,
581
+ url: 'https://blockscout.chiadochain.net/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
582
+ },
583
+ {
584
+ name: 'Avalanche',
585
+ chainId: 43114,
586
+ url: 'https://snowtrace.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
587
+ },
588
+ {
589
+ name: 'Avalanche Fuji',
590
+ chainId: 43113,
591
+ url: 'https://testnet.snowtrace.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
592
+ },
593
+ {
594
+ name: 'Fantom Testnet',
595
+ chainId: 4002,
596
+ url: 'https://testnet.ftmscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
597
+ },
598
+ {
599
+ name: 'Fantom Opera',
600
+ chainId: 250,
601
+ url: 'https://ftmscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
602
+ },
603
+ {
604
+ name: 'Fantom Sonic',
605
+ chainId: 64240,
606
+ url: 'https://public-sonic.fantom.network/address/0xca11bde05977b3631167028862be2a173976ca11'
607
+ },
608
+ {
609
+ name: 'BNB Smart Chain',
610
+ chainId: 56,
611
+ url: 'https://bscscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
612
+ },
613
+ {
614
+ name: 'BNB Smart Chain Testnet',
615
+ chainId: 97,
616
+ url: 'https://testnet.bscscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
617
+ },
618
+ {
619
+ name: 'opBNB Testnet',
620
+ chainId: 5611,
621
+ url: 'https://opbnbscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?p=1&tab=Contract'
622
+ },
623
+ {
624
+ name: 'opBNB Mainnet',
625
+ chainId: 204,
626
+ url: 'https://mainnet.opbnbscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?p=1&tab=Contract'
627
+ },
628
+ {
629
+ name: 'Moonbeam',
630
+ chainId: 1284,
631
+ url: 'https://moonscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
632
+ },
633
+ {
634
+ name: 'Moonriver',
635
+ chainId: 1285,
636
+ url: 'https://moonriver.moonscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
637
+ },
638
+ {
639
+ name: 'Moonbase Alpha Testnet',
640
+ chainId: 1287,
641
+ url: 'https://moonbase.moonscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
642
+ },
643
+ {
644
+ name: 'Palm',
645
+ chainId: 11297108109,
646
+ url: 'https://palm.chainlens.com/contracts/0xca11bde05977b3631167028862be2a173976ca11/sources'
647
+ },
648
+ {
649
+ name: 'Palm Testnet',
650
+ chainId: 11297108099,
651
+ url: 'https://testnet.palm.chainlens.com/contracts/0xca11bde05977b3631167028862be2a173976ca11/sources'
652
+ },
653
+ {
654
+ name: 'Harmony',
655
+ chainId: 1666600000,
656
+ url: 'https://explorer.harmony.one/address/0xcA11bde05977b3631167028862bE2a173976CA11?activeTab=7'
657
+ },
658
+ {
659
+ name: 'Cronos',
660
+ chainId: 25,
661
+ url: 'https://cronoscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
662
+ },
663
+ {
664
+ name: 'Cronos Testnet',
665
+ chainId: 338,
666
+ url: 'https://cronos.org/explorer/testnet3/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
667
+ },
668
+ {
669
+ name: 'Fuse',
670
+ chainId: 122,
671
+ url: 'https://explorer.fuse.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
672
+ },
673
+ {
674
+ name: 'Flare Mainnet',
675
+ chainId: 14,
676
+ url: 'https://flare-explorer.flare.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
677
+ },
678
+ {
679
+ name: 'Songbird Canary Network',
680
+ chainId: 19,
681
+ url: 'https://songbird-explorer.flare.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
682
+ },
683
+ {
684
+ name: 'Coston Testnet',
685
+ chainId: 16,
686
+ url: 'https://coston-explorer.flare.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
687
+ },
688
+ {
689
+ name: 'Coston2 Testnet',
690
+ chainId: 114,
691
+ url: 'https://coston2-explorer.flare.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
692
+ },
693
+ {
694
+ name: 'Boba',
695
+ chainId: 288,
696
+ url: 'https://blockexplorer.boba.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
697
+ },
698
+ {
699
+ name: 'Aurora',
700
+ chainId: 1313161554,
701
+ url: 'https://explorer.mainnet.aurora.dev/address/0xcA11bde05977b3631167028862bE2a173976CA11'
702
+ },
703
+ {
704
+ name: 'Astar',
705
+ chainId: 592,
706
+ url: 'https://blockscout.com/astar/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
707
+ },
708
+ {
709
+ name: 'Astar zKyoto Testnet',
710
+ chainId: 6038361,
711
+ url: 'https://zkyoto.explorer.startale.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
712
+ },
713
+ {
714
+ name: 'Astar zkEVM',
715
+ chainId: 3776,
716
+ url: 'https://astar-zkevm.explorer.startale.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
717
+ },
718
+ {
719
+ name: 'OKC',
720
+ chainId: 66,
721
+ url: 'https://www.oklink.com/en/okc/address/0xcA11bde05977b3631167028862bE2a173976CA11'
722
+ },
723
+ {
724
+ name: 'Heco Chain',
725
+ chainId: 128,
726
+ url: 'https://hecoinfo.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
727
+ },
728
+ {
729
+ name: 'Metis Andromeda',
730
+ chainId: 1088,
731
+ url: 'https://andromeda-explorer.metis.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
732
+ },
733
+ {
734
+ name: 'Metis Goerli',
735
+ chainId: 599,
736
+ url: 'https://goerli.explorer.metisdevops.link/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
737
+ },
738
+ {
739
+ name: 'Metis Sepolia',
740
+ chainId: 59902,
741
+ url: 'https://sepolia-explorer.metisdevops.link/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
742
+ },
743
+ {
744
+ name: 'RSK',
745
+ chainId: 30,
746
+ url: 'https://explorer.rsk.co/address/0xcA11bde05977b3631167028862bE2a173976CA11'
747
+ },
748
+ {
749
+ name: 'RSK Testnet',
750
+ chainId: 31,
751
+ url: 'https://explorer.testnet.rsk.co/address/0xcA11bde05977b3631167028862bE2a173976CA11'
752
+ },
753
+ {
754
+ name: 'Evmos',
755
+ chainId: 9001,
756
+ url: 'https://evm.evmos.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
757
+ },
758
+ {
759
+ name: 'Evmos Testnet',
760
+ chainId: 9000,
761
+ url: 'https://evm.evmos.dev/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
762
+ },
763
+ {
764
+ name: 'Thundercore',
765
+ chainId: 108,
766
+ url: 'https://viewblock.io/thundercore/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=code'
767
+ },
768
+ {
769
+ name: 'Thundercore Testnet',
770
+ chainId: 18,
771
+ url: 'https://explorer-testnet.thundercore.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
772
+ },
773
+ {
774
+ name: 'Oasis',
775
+ chainId: 42262,
776
+ url: 'https://explorer.emerald.oasis.dev/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
777
+ },
778
+ {
779
+ name: 'Oasis Sapphire',
780
+ chainId: 23294,
781
+ url: 'https://explorer.sapphire.oasis.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
782
+ },
783
+ {
784
+ name: 'Celo',
785
+ chainId: 42220,
786
+ url: 'https://explorer.celo.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
787
+ },
788
+ {
789
+ name: 'Celo Alfajores Testnet',
790
+ chainId: 44787,
791
+ url: 'https://explorer.celo.org/alfajores/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
792
+ },
793
+ {
794
+ name: 'Godwoken',
795
+ chainId: 71402,
796
+ url: 'https://v1.gwscan.com/account/0xcA11bde05977b3631167028862bE2a173976CA11'
797
+ },
798
+ {
799
+ name: 'Godwoken Testnet',
800
+ chainId: 71401,
801
+ url: 'https://gw-explorer.nervosdao.community/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
802
+ },
803
+ {
804
+ name: 'Klaytn',
805
+ chainId: 8217,
806
+ url: 'https://scope.klaytn.com/account/0xcA11bde05977b3631167028862bE2a173976CA11'
807
+ },
808
+ {
809
+ name: 'Klaytn Testnet (Baobab)',
810
+ chainId: 1001,
811
+ url: 'https://baobab.klaytnscope.com/account/0xca11bde05977b3631167028862be2a173976ca11?tabId=contractCode'
812
+ },
813
+ {
814
+ name: 'Milkomeda',
815
+ chainId: 2001,
816
+ url: 'https://explorer-mainnet-cardano-evm.c1.milkomeda.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
817
+ },
818
+ {
819
+ name: 'KCC',
820
+ chainId: 321,
821
+ url: 'https://explorer.kcc.io/en/address/0xcA11bde05977b3631167028862bE2a173976CA11'
822
+ },
823
+ {
824
+ name: 'Velas',
825
+ chainId: 106,
826
+ url: 'https://evmexplorer.velas.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
827
+ },
828
+ {
829
+ name: 'Telos',
830
+ chainId: 40,
831
+ url: 'https://www.teloscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#contract'
832
+ },
833
+ {
834
+ name: 'Step Network',
835
+ chainId: 1234,
836
+ url: 'https://stepscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
837
+ },
838
+ {
839
+ name: 'Canto',
840
+ chainId: 7700,
841
+ url: 'https://tuber.build/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
842
+ },
843
+ {
844
+ name: 'Canto Testnet',
845
+ chainId: 7701,
846
+ url: 'https://testnet.tuber.build/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
847
+ },
848
+ {
849
+ name: 'Iotex',
850
+ chainId: 4689,
851
+ url: 'https://iotexscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#transactions'
852
+ },
853
+ {
854
+ name: 'Bitgert',
855
+ chainId: 32520,
856
+ url: 'https://brisescan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
857
+ },
858
+ {
859
+ name: 'Kava',
860
+ chainId: 2222,
861
+ url: 'https://explorer.kava.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
862
+ },
863
+ {
864
+ name: 'Mantle Sepolia Testnet',
865
+ chainId: 5003,
866
+ url: 'https://explorer.sepolia.mantle.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
867
+ },
868
+ {
869
+ name: 'Mantle Testnet',
870
+ chainId: 5001,
871
+ url: 'https://explorer.testnet.mantle.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
872
+ },
873
+ {
874
+ name: 'Mantle',
875
+ chainId: 5000,
876
+ url: 'https://explorer.mantle.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
877
+ },
878
+ {
879
+ name: 'Shardeum Sphinx',
880
+ chainId: 8082,
881
+ url: 'https://explorer.testnet.mantle.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
882
+ },
883
+ {
884
+ name: 'Base Testnet (Goerli)',
885
+ chainId: 84531,
886
+ url: 'https://goerli.basescan.org/address/0xca11bde05977b3631167028862be2a173976ca11#code'
887
+ },
888
+ {
889
+ name: 'Base Testnet (Sepolia)',
890
+ chainId: 84532,
891
+ url: 'https://base-sepolia.blockscout.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
892
+ },
893
+ {
894
+ name: 'Base',
895
+ chainId: 8453,
896
+ url: 'https://basescan.org/address/0xca11bde05977b3631167028862be2a173976ca11#code'
897
+ },
898
+ {
899
+ name: 'Kroma Testnet (Sepolia)',
900
+ chainId: 2358,
901
+ url: 'https://sepolia.kromascan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
902
+ },
903
+ {
904
+ name: 'DeFiChain EVM Mainnet',
905
+ chainId: 1130,
906
+ url: 'https://meta.defiscan.live/address/0xcA11bde05977b3631167028862bE2a173976CA11'
907
+ },
908
+ {
909
+ name: 'DeFiChain EVM Testnet',
910
+ chainId: 1131,
911
+ url: 'https://meta.defiscan.live/address/0xcA11bde05977b3631167028862bE2a173976CA11?network=TestNet'
912
+ },
913
+ {
914
+ name: 'Defi Oracle Meta Mainnet',
915
+ chainId: 138,
916
+ url: 'https://blockscout.defi-oracle.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
917
+ },
918
+ {
919
+ name: 'DFK Chain Test',
920
+ chainId: 335,
921
+ url: 'https://subnets-test.avax.network/defi-kingdoms/address/0xcA11bde05977b3631167028862bE2a173976CA11'
922
+ },
923
+ {
924
+ name: 'DFK Chain',
925
+ chainId: 53935,
926
+ url: 'https://subnets.avax.network/defi-kingdoms/address/0xcA11bde05977b3631167028862bE2a173976CA11'
927
+ },
928
+ {
929
+ name: 'Neon EVM DevNet',
930
+ chainId: 245022926,
931
+ url: 'https://devnet.neonscan.org/address/0xcA11bde05977b3631167028862bE2a173976CA11#contract'
932
+ },
933
+ {
934
+ name: 'Linea Sepolia Testnet',
935
+ chainId: 59141,
936
+ url: 'https://sepolia.lineascan.build/address/0xca11bde05977b3631167028862be2a173976ca11#code'
937
+ },
938
+ {
939
+ name: 'Linea Goerli Testnet',
940
+ chainId: 59140,
941
+ url: 'https://explorer.goerli.linea.build/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
942
+ },
943
+ {
944
+ name: 'Linea Mainnet',
945
+ chainId: 59144,
946
+ url: 'https://lineascan.build/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
947
+ },
948
+ {
949
+ name: 'Hashbit',
950
+ chainId: 11119,
951
+ url: 'https://explorer.hashbit.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
952
+ },
953
+ {
954
+ name: 'Syscoin',
955
+ chainId: 57,
956
+ url: 'https://explorer.syscoin.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
957
+ },
958
+ {
959
+ name: 'Syscoin Rollux Mainnet',
960
+ chainId: 570,
961
+ url: 'https://explorer.rollux.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
962
+ },
963
+ {
964
+ name: 'Syscoin Tannebaum Testnet',
965
+ chainId: 5700,
966
+ url: 'https://tanenbaum.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
967
+ },
968
+ {
969
+ name: 'Syscoin Tannebaum Rollux',
970
+ chainId: 57000,
971
+ url: 'https://rollux.tanenbaum.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
972
+ },
973
+ {
974
+ name: 'Pulsechain v4 Testnet',
975
+ chainId: 943,
976
+ url: 'https://scan.v4.testnet.pulsechain.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
977
+ },
978
+ {
979
+ name: 'Pulsechain Mainnet',
980
+ chainId: 369,
981
+ url: 'https://scan.pulsechain.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
982
+ },
983
+ {
984
+ name: 'Zora Goerli Testnet',
985
+ chainId: 999,
986
+ url: 'https://testnet.explorer.zora.co/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
987
+ },
988
+ {
989
+ name: 'Zora',
990
+ chainId: 7777777,
991
+ url: 'https://explorer.zora.co/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
992
+ },
993
+ {
994
+ name: 'Zora Sepolia Testnet',
995
+ chainId: 999999999,
996
+ url: 'https://sepolia.explorer.zora.energy/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
997
+ },
998
+ {
999
+ name: 'Darwinia Crab Network',
1000
+ chainId: 44,
1001
+ url: 'https://crab.subscan.io/account/0xca11bde05977b3631167028862be2a173976ca11'
1002
+ },
1003
+ {
1004
+ name: 'Darwinia Network',
1005
+ chainId: 46,
1006
+ url: 'https://darwinia.subscan.io/account/0xca11bde05977b3631167028862be2a173976ca11'
1007
+ },
1008
+ {
1009
+ name: 'Chain Verse Mainnet',
1010
+ chainId: 5555,
1011
+ url: 'https://explorer.chainverse.info/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1012
+ },
1013
+ {
1014
+ name: 'Scroll Alpha Testnet',
1015
+ chainId: 534353,
1016
+ url: 'https://blockscout.scroll.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1017
+ },
1018
+ {
1019
+ name: 'Scroll Sepolia Testnet',
1020
+ chainId: 534351,
1021
+ url: 'https://sepolia.scrollscan.dev/address/0xca11bde05977b3631167028862be2a173976ca11#code'
1022
+ },
1023
+ {
1024
+ name: 'Scroll',
1025
+ chainId: 534352,
1026
+ url: 'https://scrollscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1027
+ },
1028
+ {
1029
+ name: 'Xodex',
1030
+ chainId: 2415,
1031
+ url: 'https://explorer.xo-dex.com/contracts/0xcA11bde05977b3631167028862bE2a173976CA11'
1032
+ },
1033
+ {
1034
+ name: 'EOS EVM Testnet',
1035
+ chainId: 15557,
1036
+ url: 'https://explorer.testnet.evm.eosnetwork.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1037
+ },
1038
+ {
1039
+ name: 'EOS EVM',
1040
+ chainId: 17777,
1041
+ url: 'https://explorer.evm.eosnetwork.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1042
+ },
1043
+ {
1044
+ name: 'Crossbell',
1045
+ chainId: 3737,
1046
+ url: 'https://scan.crossbell.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1047
+ },
1048
+ {
1049
+ name: 'Dogechain',
1050
+ chainId: 2000,
1051
+ url: 'https://explorer.dogechain.dog/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1052
+ },
1053
+ {
1054
+ name: 'MEVerse Chain Testnet',
1055
+ chainId: 4759,
1056
+ url: 'https://testnet.meversescan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1057
+ },
1058
+ {
1059
+ name: 'MEVerse Chain Mainnet',
1060
+ chainId: 7518,
1061
+ url: 'https://meversescan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1062
+ },
1063
+ {
1064
+ name: 'SKALE Calypso Testnet',
1065
+ chainId: 974399131,
1066
+ url: 'https://giant-half-dual-testnet.explorer.testnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1067
+ },
1068
+ {
1069
+ name: 'SKALE Europa Testnet',
1070
+ chainId: 1444673419,
1071
+ url: 'https://juicy-low-small-testnet.explorer.testnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1072
+ },
1073
+ {
1074
+ name: 'SKALE Nebula Testnet',
1075
+ chainId: 37084624,
1076
+ url: 'https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1077
+ },
1078
+ {
1079
+ name: 'SKALE Titan Testnet',
1080
+ chainId: 1020352220,
1081
+ url: 'https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1082
+ },
1083
+ {
1084
+ name: 'SKALE Calypso Hub',
1085
+ chainId: 1564830818,
1086
+ url: 'https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1087
+ },
1088
+ {
1089
+ name: 'SKALE Europa Liquidity Hub',
1090
+ chainId: 2046399126,
1091
+ url: 'https://elated-tan-skat.explorer.mainnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1092
+ },
1093
+ {
1094
+ name: 'SKALE Nebula Gaming Hub',
1095
+ chainId: 1482601649,
1096
+ url: 'https://green-giddy-denebola.explorer.mainnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1097
+ },
1098
+ {
1099
+ name: 'SKALE Titan AI Hub',
1100
+ chainId: 1350216234,
1101
+ url: 'https://parallel-stormy-spica.explorer.mainnet.skalenodes.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1102
+ },
1103
+ {
1104
+ name: 'Ronin Saigon Testnet',
1105
+ chainId: 2021,
1106
+ url: 'https://saigon-app.roninchain.com/address/ronin:ca11bde05977b3631167028862be2a173976ca11?t=contract'
1107
+ },
1108
+ {
1109
+ name: 'Ronin Mainnet',
1110
+ chainId: 2020,
1111
+ url: 'https://app.roninchain.com/address/ronin:ca11bde05977b3631167028862be2a173976ca11'
1112
+ },
1113
+ {
1114
+ name: 'Qitmeer Testnet',
1115
+ chainId: 8131,
1116
+ url: 'https://testnet-qng.qitmeer.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1117
+ },
1118
+ {
1119
+ name: 'Qitmeer QNG Mainnet',
1120
+ chainId: 813,
1121
+ url: 'https://qng.meerscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1122
+ },
1123
+ {
1124
+ name: 'Q Testnet',
1125
+ chainId: 35443,
1126
+ url: 'https://explorer.qtestnet.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1127
+ },
1128
+ {
1129
+ name: 'Q Devnet',
1130
+ chainId: 35442,
1131
+ url: 'https://explorer.qdevnet.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1132
+ },
1133
+ {
1134
+ name: 'Q Mainnet',
1135
+ chainId: 35441,
1136
+ url: 'https://explorer.q.org/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1137
+ },
1138
+ {
1139
+ name: 'Neon Mainnet',
1140
+ chainId: 245022934,
1141
+ url: 'https://neonscan.org/address/0xca11bde05977b3631167028862be2a173976ca11#contract'
1142
+ },
1143
+ {
1144
+ name: 'LUKSO Testnet',
1145
+ chainId: 4201,
1146
+ url: 'https://explorer.execution.testnet.lukso.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1147
+ },
1148
+ {
1149
+ name: 'LUKSO Mainnet',
1150
+ chainId: 42,
1151
+ url: 'https://explorer.execution.mainnet.lukso.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1152
+ },
1153
+ {
1154
+ name: 'Edgeware EdgeEVM',
1155
+ chainId: 2021,
1156
+ url: 'https://edgscan.live/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts'
1157
+ },
1158
+ {
1159
+ name: 'Meter Testnet',
1160
+ chainId: 83,
1161
+ url: 'https://scan-warringstakes.meter.io/address/0xca11bde05977b3631167028862be2a173976ca11?tab=0&p=1'
1162
+ },
1163
+ {
1164
+ name: 'Meter',
1165
+ chainId: 82,
1166
+ url: 'https://scan.meter.io/address/0xca11bde05977b3631167028862be2a173976ca11?tab=0&p=1'
1167
+ },
1168
+ {
1169
+ name: 'Sepolia PGN (Public Goods Network) Testnet',
1170
+ chainId: 58008,
1171
+ url: 'https://explorer.sepolia.publicgoods.network/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1172
+ },
1173
+ {
1174
+ name: 'PGN (Public Goods Network)',
1175
+ chainId: 424,
1176
+ url: 'https://explorer.publicgoods.network/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1177
+ },
1178
+ {
1179
+ name: 'ShimmerEVM',
1180
+ chainId: 148,
1181
+ url: 'https://explorer.evm.shimmer.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1182
+ },
1183
+ {
1184
+ name: 'Highbury EVM',
1185
+ chainId: 710,
1186
+ url: 'https://explorer.furya.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1187
+ },
1188
+ {
1189
+ name: 'Arthera Testnet',
1190
+ chainId: 10243,
1191
+ url: 'https://explorer-test.arthera.net/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1192
+ },
1193
+ {
1194
+ name: 'Arthera Mainnet',
1195
+ chainId: 10242,
1196
+ url: 'https://explorer.arthera.net/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1197
+ },
1198
+ {
1199
+ name: 'Manta Pacific Mainnet',
1200
+ chainId: 169,
1201
+ url: 'https://pacific-explorer.manta.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1202
+ },
1203
+ {
1204
+ name: 'Jolnir (Taiko Testnet)',
1205
+ chainId: 167007,
1206
+ url: 'https://explorer.jolnir.taiko.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1207
+ },
1208
+ {
1209
+ name: 'Katla (Taiko A6 Testnet)',
1210
+ chainId: 167008,
1211
+ url: 'https://explorer.katla.taiko.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1212
+ },
1213
+ {
1214
+ name: 'Filecoin Mainnet',
1215
+ chainId: 314,
1216
+ url: 'https://filfox.info/en/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1217
+ },
1218
+ {
1219
+ name: 'Filecoin Calibration Testnet',
1220
+ chainId: 314159,
1221
+ url: 'https://calibration.filscan.io/en/tx/0xdbfa261cd7d17bb40479a0493ad6c0fee435859e37aae73aa7e803f3122cc465/'
1222
+ },
1223
+ {
1224
+ name: 'Fusion',
1225
+ chainId: 32659,
1226
+ url: 'https://fsnscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#contract'
1227
+ },
1228
+ {
1229
+ name: 'Fusion Testnet',
1230
+ chainId: 46688,
1231
+ url: 'https://testnet.fsnscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#contract'
1232
+ },
1233
+ {
1234
+ name: 'Xai Testnet',
1235
+ chainId: 47279324479,
1236
+ url: 'https://testnet-explorer.xai-chain.net/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1237
+ },
1238
+ {
1239
+ name: 'JFIN Chain',
1240
+ chainId: 3501,
1241
+ url: 'https://jfinscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1242
+ },
1243
+ {
1244
+ name: 'JFIN Chain Testnet',
1245
+ chainId: 3502,
1246
+ url: 'https://testnet.jfinscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1247
+ },
1248
+ {
1249
+ name: 'Chiliz Chain',
1250
+ chainId: 88888,
1251
+ url: 'https://scan.chiliz.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1252
+ },
1253
+ {
1254
+ name: 'Chiliz Spicy Testnet',
1255
+ chainId: 88882,
1256
+ url: 'https://testnet.chiliscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11/contract/88882/code'
1257
+ },
1258
+ {
1259
+ name: 'CORE',
1260
+ chainId: 1116,
1261
+ url: 'https://scan.coredao.org/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
1262
+ },
1263
+ {
1264
+ name: 'Core Testnet',
1265
+ chainId: 1115,
1266
+ url: 'https://scan.test.btcs.network/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1267
+ },
1268
+ {
1269
+ name: 'Ethereum Classic',
1270
+ chainId: 61,
1271
+ url: 'https://etc.blockscout.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1272
+ },
1273
+ {
1274
+ name: 'Frame Testnet',
1275
+ chainId: 68840142,
1276
+ url: 'https://explorer.testnet.frame.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1277
+ },
1278
+ {
1279
+ name: 'Etherlink Mainnet',
1280
+ chainId: 42793,
1281
+ url: 'https://explorer.etherlink.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1282
+ },
1283
+ {
1284
+ name: 'Etherlink Testnet',
1285
+ chainId: 128123,
1286
+ url: 'https://testnet-explorer.etherlink.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1287
+ },
1288
+ {
1289
+ name: 'ZetaChain Athens 3 Testnet',
1290
+ chainId: 7001,
1291
+ url: 'https://explorer.zetachain.com/address/0xca11bde05977b3631167028862be2a173976ca11'
1292
+ },
1293
+ {
1294
+ name: 'ZetaChain ',
1295
+ chainId: 7000,
1296
+ url: 'https://explorer.zetachain.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1297
+ },
1298
+ {
1299
+ name: 'X1 Testnet',
1300
+ chainId: 195,
1301
+ url: 'https://www.oklink.com/x1-test/address/0xca11bde05977b3631167028862be2a173976ca11/contract'
1302
+ },
1303
+ {
1304
+ name: 'Lumiterra Layer3',
1305
+ chainId: 94168,
1306
+ url: 'https://scan.layerlumi.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1307
+ },
1308
+ {
1309
+ name: 'BitTorrent Chain Mainnet',
1310
+ chainId: 199,
1311
+ url: 'https://bttcscan.com/address/0xca11bde05977b3631167028862be2a173976ca11#code'
1312
+ },
1313
+ {
1314
+ name: 'BTT Chain Testnet',
1315
+ chainId: 1029,
1316
+ url: 'https://testnet.bttcscan.com/address/0xca11bde05977b3631167028862be2a173976ca11'
1317
+ },
1318
+ {
1319
+ name: 'Callisto Mainnet',
1320
+ chainId: 820,
1321
+ url: 'https://explorer.callisto.network/address/0xcA11bde05977b3631167028862bE2a173976CA11/transactions'
1322
+ },
1323
+ {
1324
+ name: 'Areon Network Testnet',
1325
+ chainId: 462,
1326
+ url: 'https://areonscan.com/contracts/0xca11bde05977b3631167028862be2a173976ca11?page=0'
1327
+ },
1328
+ {
1329
+ name: 'Areon Network Mainnet',
1330
+ chainId: 463,
1331
+ url: 'https://areonscan.com/contracts/0xca11bde05977b3631167028862be2a173976ca11'
1332
+ },
1333
+ {
1334
+ name: 'zkFair Mainnet',
1335
+ chainId: 42766,
1336
+ url: 'https://scan.zkfair.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1337
+ },
1338
+ {
1339
+ name: 'Mode Mainnet',
1340
+ chainId: 34443,
1341
+ url: 'https://explorer.mode.network/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1342
+ },
1343
+ {
1344
+ name: 'Blast Sepolia',
1345
+ chainId: 168587773,
1346
+ url: 'https://testnet.blastscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11/contract/168587773/code'
1347
+ },
1348
+ {
1349
+ name: 'Blast',
1350
+ chainId: 81457,
1351
+ url: 'https://blastscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
1352
+ },
1353
+ {
1354
+ name: 'Xai',
1355
+ chainId: 660279,
1356
+ url: 'https://explorer.xai-chain.net/address/0xcA11bde05977b3631167028862bE2a173976CA11/contracts#address-tabs'
1357
+ },
1358
+ {
1359
+ name: 'DOS Chain',
1360
+ chainId: 7979,
1361
+ url: 'https://doscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1362
+ },
1363
+ {
1364
+ name: 'DOS Chain Testnet',
1365
+ chainId: 3939,
1366
+ url: 'https://test.doscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1367
+ },
1368
+ {
1369
+ name: 'Tron',
1370
+ chainId: 728126428,
1371
+ url: 'https://tronscan.org/#/contract/TEazPvZwDjDtFeJupyo7QunvnrnUjPH8ED/code',
1372
+ address: 'TEazPvZwDjDtFeJupyo7QunvnrnUjPH8ED'
1373
+ },
1374
+ {
1375
+ name: 'zkSync Era',
1376
+ chainId: 324,
1377
+ url: 'https://explorer.zksync.io/address/0xF9cda624FBC7e059355ce98a31693d299FACd963#contract',
1378
+ address: '0xF9cda624FBC7e059355ce98a31693d299FACd963'
1379
+ },
1380
+ {
1381
+ name: 'zkSync Era Goerli Testnet',
1382
+ chainId: 280,
1383
+ url: 'https://goerli.explorer.zksync.io/address/0xF9cda624FBC7e059355ce98a31693d299FACd963#contract',
1384
+ address: '0xF9cda624FBC7e059355ce98a31693d299FACd963'
1385
+ },
1386
+ {
1387
+ name: 'zkSync Era Sepolia Testnet',
1388
+ chainId: 300,
1389
+ url: 'https://sepolia.explorer.zksync.io/address/0xF9cda624FBC7e059355ce98a31693d299FACd963#contract',
1390
+ address: '0xF9cda624FBC7e059355ce98a31693d299FACd963'
1391
+ },
1392
+ {
1393
+ name: 'PlayFi Albireo Testnet',
1394
+ chainId: 1612127,
1395
+ url: 'https://albireo-explorer.playfi.ai/address/0xF9cda624FBC7e059355ce98a31693d299FACd963#contract',
1396
+ address: '0xF9cda624FBC7e059355ce98a31693d299FACd963'
1397
+ },
1398
+ {
1399
+ name: 'Fraxtal Mainnet',
1400
+ chainId: 252,
1401
+ url: 'https://fraxscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
1402
+ },
1403
+ {
1404
+ name: 'Fraxtal Holesky Testnet',
1405
+ chainId: 2522,
1406
+ url: 'https://holesky.fraxscan.com/address/0xcA11bde05977b3631167028862bE2a173976CA11#code'
1407
+ },
1408
+ {
1409
+ name: 'Omax Mainnet',
1410
+ chainId: 311,
1411
+ url: 'https://omaxray.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1412
+ },
1413
+ {
1414
+ name: 'Syndicate Frame Chain',
1415
+ chainId: 5101,
1416
+ url: 'https://explorer-frame.syndicate.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1417
+ },
1418
+ {
1419
+ name: 'Dela Sepolia',
1420
+ chainId: 9393,
1421
+ url: 'https://sepolia-delascan.deperp.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1422
+ },
1423
+ {
1424
+ name: 'NeoX Testnet',
1425
+ chainId: 12227330,
1426
+ url: 'https://xt2scan.ngd.network/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1427
+ },
1428
+ {
1429
+ name: 'Sanko Testnet',
1430
+ chainId: 1992,
1431
+ url: 'https://testnet.sankoscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1432
+ },
1433
+ {
1434
+ name: 'Berachain Testnet (Artio)',
1435
+ chainId: 80085,
1436
+ url: 'https://artio.beratrail.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1437
+ },
1438
+ {
1439
+ name: 'Shibarium',
1440
+ chainId: 109,
1441
+ url: 'https://www.shibariumscan.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1442
+ },
1443
+ {
1444
+ name: 'Immutable zkEVM Mainnet',
1445
+ chainId: 13371,
1446
+ url: 'https://explorer.immutable.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1447
+ },
1448
+ {
1449
+ name: 'Immutable zkEVM Testnet',
1450
+ chainId: 13473,
1451
+ url: 'https://explorer.testnet.immutable.com/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1452
+ },
1453
+ {
1454
+ name: 'RSS3 VSL Mainnet',
1455
+ chainId: 12553,
1456
+ url: 'https://scan.rss3.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1457
+ },
1458
+ {
1459
+ name: 'RSS3 VSL Sepolia Testnet',
1460
+ chainId: 2331,
1461
+ url: 'https://scan.testnet.rss3.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1462
+ },
1463
+ {
1464
+ name: 'Morph Sepolia Testnet',
1465
+ chainId: 2710,
1466
+ url: 'https://explorer-testnet.morphl2.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1467
+ },
1468
+ {
1469
+ name: 'JIBCHAIN L1',
1470
+ chainId: 8899,
1471
+ url: 'https://exp-l1.jibchain.net/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1472
+ },
1473
+ {
1474
+ name: 'Haqq Mainnet',
1475
+ chainId: 11235,
1476
+ url: 'https://explorer.haqq.network/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1477
+ },
1478
+ {
1479
+ name: 'Zircuit Sepolia Testnet',
1480
+ chainId: 48899,
1481
+ url: 'https://explorer.zircuit.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?activeTab=3'
1482
+ },
1483
+ {
1484
+ name: 're.al',
1485
+ chainId: 111188,
1486
+ url: 'https://explorer.re.al/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1487
+ },
1488
+ {
1489
+ name: 'Merlin Testnet',
1490
+ chainId: 686868,
1491
+ url: 'https://testnet-scan.merlinchain.io/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1492
+ },
1493
+ {
1494
+ name: 'IOTA EVM',
1495
+ chainId: 8822,
1496
+ url: 'https://iota-evm.blockscout.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1497
+ },
1498
+ {
1499
+ name: 'Planq',
1500
+ chainId: 7070,
1501
+ url: 'https://evm.planq.network/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1502
+ },
1503
+ {
1504
+ name: 'Cyber Testnet',
1505
+ chainId: 111557560,
1506
+ url: 'https://testnet.cyberscan.co/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1507
+ },
1508
+ {
1509
+ name: 'Unit Zero Stagenet',
1510
+ chainId: 88819,
1511
+ url: 'https://explorer-stagenet.unit0.dev/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1512
+ },
1513
+ {
1514
+ name: 'Unit Zero Testnet',
1515
+ chainId: 88817,
1516
+ url: 'https://explorer-testnet.unit0.dev/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1517
+ },
1518
+ {
1519
+ name: 'Sei EVM Devnet',
1520
+ chainId: 713715,
1521
+ url: 'https://seitrace.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1522
+ },
1523
+ {
1524
+ name: 'Sei EVM Mainnet',
1525
+ chainId: 1329,
1526
+ url: 'https://seitrace.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?chain=pacific-1&tab=contract'
1527
+ },
1528
+ {
1529
+ name: 'Hekla (Taiko A7 Testnet)',
1530
+ chainId: 167009,
1531
+ url: 'https://explorer.hekla.taiko.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1532
+ },
1533
+ {
1534
+ name: 'Taiko Mainnet',
1535
+ chainId: 167000,
1536
+ url: 'https://taikoscan.io/address/0xca11bde05977b3631167028862be2a173976ca11#code'
1537
+ },
1538
+ {
1539
+ name: 'Cyber Mainnet',
1540
+ chainId: 7560,
1541
+ url: 'https://cyberscan.co/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1542
+ },
1543
+ {
1544
+ name: 'DreyerX Mainnet',
1545
+ chainId: 23451,
1546
+ url: 'https://scan.dreyerx.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1547
+ },
1548
+ {
1549
+ name: 'Sahara Testnet',
1550
+ chainId: 313313,
1551
+ url: 'https://explorer.saharaa.info/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1552
+ },
1553
+ {
1554
+ name: 'BOX Chain',
1555
+ chainId: 42299,
1556
+ url: 'https://explorerl2new-boxchain-t4zoh9y5dr.t.conduit.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1557
+ },
1558
+ {
1559
+ name: 'OX Chain',
1560
+ chainId: 6699,
1561
+ url: 'https://explorer-ox-chain-2s86s7wp21.t.conduit.xyz/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1562
+ },
1563
+ {
1564
+ name: 'Conflux Espace',
1565
+ chainId: 1030,
1566
+ url: 'https://evm.confluxscan.net/address/0xca11bde05977b3631167028862be2a173976ca11?tab=contract-viewer'
1567
+ },
1568
+ {
1569
+ name: 'BEVM Testnet',
1570
+ chainId: 11503,
1571
+ url: 'https://scan-testnet.bevm.io/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract'
1572
+ },
1573
+ {
1574
+ name: 'Aura Mainnet',
1575
+ chainId: 6322,
1576
+ url: 'https://aurascan.io/evm-contracts/0xca11bde05977b3631167028862be2a173976ca11'
1577
+ },
1578
+ {
1579
+ name: 'Superposition Testnet',
1580
+ chainId: 98985,
1581
+ url: 'https://testnet-explorer.superposition.so/address/0xcA11bde05977b3631167028862bE2a173976CA11'
1582
+ }
1583
+ ]
1584
+
1585
+ const chainToDeploymentMap = Object.fromEntries(
1586
+ DEPLOYMENTS.map((deployment) => {
1587
+ const p = deployment.url.indexOf('0x')
1588
+ const address = p > -1 ? deployment.url.slice(p, p + 42) : '0x' + deployment.url.slice(-40)
1589
+ return [deployment.chainId.toString() as EthChainId, address]
1590
+ })
1591
+ )
1592
+
1593
+ export interface Multicall3Call {
1594
+ target: string
1595
+ callData: string
1596
+ }
1597
+
1598
+ export interface AggregateResult {
1599
+ blockNumber: bigint
1600
+ returnData: string[]
1601
+ }
1602
+
1603
+ const iface = new Interface(ABI)
1604
+
1605
+ export function encodeMulticallData(calls: Array<Multicall3Call>) {
1606
+ return iface.encodeFunctionData('aggregate', [calls])
1607
+ }
1608
+
1609
+ export function decodeMulticallResult(data: BytesLike): AggregateResult {
1610
+ return iface.decodeFunctionResult('aggregate', data).toObject() as AggregateResult
1611
+ }
1612
+
1613
+ export function getMulticallAddress(chainId: EthChainId): string | undefined {
1614
+ return chainToDeploymentMap[chainId]
1615
+ }