4
4
from tqdm import tqdm
5
5
from web3 .types import FilterParams , LogReceipt
6
6
7
- ENDPOINTS = {
8
- 16600 : 'https://v2.archive.subsquid.io/network/0g-testnet' ,
9
- 41455 : 'https://v2.archive.subsquid.io/network/aleph-zero-evm-mainnet' ,
10
- 42161 : 'https://v2.archive.subsquid.io/network/arbitrum-one' ,
11
- 42170 : 'https://v2.archive.subsquid.io/network/arbitrum-nova' ,
12
- 421614 : 'https://v2.archive.subsquid.io/network/arbitrum-sepolia' ,
13
- 10242 : 'https://v2.archive.subsquid.io/network/arthera-mainnet' ,
14
- 592 : 'https://v2.archive.subsquid.io/network/astar-mainnet' ,
15
- 3776 : 'https://v2.archive.subsquid.io/network/astar-zkevm-mainnet' ,
16
- 6038361 : 'https://v2.archive.subsquid.io/network/astar-zkyoto' ,
17
- 43114 : 'https://v2.archive.subsquid.io/network/avalanche-mainnet' ,
18
- 43113 : 'https://v2.archive.subsquid.io/network/avalanche-testnet' ,
19
- 8333 : 'https://v2.archive.subsquid.io/network/b3-mainnet' ,
20
- 1993 : 'https://v2.archive.subsquid.io/network/b3-sepolia' ,
21
- 8453 : 'https://v2.archive.subsquid.io/network/base-mainnet' ,
22
- 84532 : 'https://v2.archive.subsquid.io/network/base-sepolia' ,
23
- 80084 : 'https://v2.archive.subsquid.io/network/berachain-bartio' ,
24
- 56 : 'https://v2.archive.subsquid.io/network/binance-mainnet' ,
25
- 97 : 'https://v2.archive.subsquid.io/network/binance-testnet' ,
26
- 355110 : 'https://v2.archive.subsquid.io/network/bitfinity-mainnet' ,
27
- 355113 : 'https://v2.archive.subsquid.io/network/bitfinity-testnet' ,
28
- 32520 : 'https://v2.archive.subsquid.io/network/bitgert-mainnet' ,
29
- 64668 : 'https://v2.archive.subsquid.io/network/bitgert-testnet' ,
30
- 81457 : 'https://v2.archive.subsquid.io/network/blast-l2-mainnet' ,
31
- 168587773 : 'https://v2.archive.subsquid.io/network/blast-sepolia' ,
32
- 60808 : 'https://v2.archive.subsquid.io/network/bob-mainnet' ,
33
- 7700 : 'https://v2.archive.subsquid.io/network/canto' ,
34
- 7701 : 'https://v2.archive.subsquid.io/network/canto-testnet' ,
35
- 44787 : 'https://v2.archive.subsquid.io/network/celo-alfajores-testnet' ,
36
- 42220 : 'https://v2.archive.subsquid.io/network/celo-mainnet' ,
37
- 1116 : 'https://v2.archive.subsquid.io/network/core-mainnet' ,
38
- 4157 : 'https://v2.archive.subsquid.io/network/crossfi-testnet' ,
39
- 7560 : 'https://v2.archive.subsquid.io/network/cyber-mainnet' ,
40
- 111557560 : 'https://v2.archive.subsquid.io/network/cyberconnect-l2-testnet' ,
41
- 666666666 : 'https://v2.archive.subsquid.io/network/degen-chain' ,
42
- 53935 : 'https://v2.archive.subsquid.io/network/dfk-chain' ,
43
- 2000 : 'https://v2.archive.subsquid.io/network/dogechain-mainnet' ,
44
- 568 : 'https://v2.archive.subsquid.io/network/dogechain-testnet' ,
45
- 17000 : 'https://v2.archive.subsquid.io/network/ethereum-holesky' ,
46
- 1 : 'https://v2.archive.subsquid.io/network/ethereum-mainnet' ,
47
- 11155111 : 'https://v2.archive.subsquid.io/network/ethereum-sepolia' ,
48
- 42793 : 'https://v2.archive.subsquid.io/network/etherlink-mainnet' ,
49
- 128123 : 'https://v2.archive.subsquid.io/network/etherlink-testnet' ,
50
- 2109 : 'https://v2.archive.subsquid.io/network/exosama' ,
51
- 250 : 'https://v2.archive.subsquid.io/network/fantom-mainnet' ,
52
- 4002 : 'https://v2.archive.subsquid.io/network/fantom-testnet' ,
53
- 14 : 'https://v2.archive.subsquid.io/network/flare-mainnet' ,
54
- 1625 : 'https://v2.archive.subsquid.io/network/galxe-gravity' ,
55
- 88153591557 : 'https://v2.archive.subsquid.io/network/gelato-arbitrum-blueberry' ,
56
- 123420111 : 'https://v2.archive.subsquid.io/network/gelato-opcelestia-raspberry' ,
57
- 100 : 'https://v2.archive.subsquid.io/network/gnosis-mainnet' ,
58
- 13371 : 'https://v2.archive.subsquid.io/network/immutable-zkevm-mainnet' ,
59
- 13473 : 'https://v2.archive.subsquid.io/network/immutable-zkevm-testnet' ,
60
- 1998 : 'https://v2.archive.subsquid.io/network/kyoto-testnet' ,
61
- 59144 : 'https://v2.archive.subsquid.io/network/linea-mainnet' ,
62
- 169 : 'https://v2.archive.subsquid.io/network/manta-pacific' ,
63
- 3441006 : 'https://v2.archive.subsquid.io/network/manta-pacific-sepolia' ,
64
- 5000 : 'https://v2.archive.subsquid.io/network/mantle-mainnet' ,
65
- 5003 : 'https://v2.archive.subsquid.io/network/mantle-sepolia' ,
66
- 4200 : 'https://v2.archive.subsquid.io/network/merlin-mainnet' ,
67
- 686868 : 'https://v2.archive.subsquid.io/network/merlin-testnet' ,
68
- 1088 : 'https://v2.archive.subsquid.io/network/metis-mainnet' ,
69
- 34443 : 'https://v2.archive.subsquid.io/network/mode-mainnet' ,
70
- 1287 : 'https://v2.archive.subsquid.io/network/moonbase-testnet' ,
71
- 1284 : 'https://v2.archive.subsquid.io/network/moonbeam-mainnet' ,
72
- 1285 : 'https://v2.archive.subsquid.io/network/moonriver-mainnet' ,
73
- 42225 : 'https://v2.archive.subsquid.io/network/nakachain' ,
74
- 245022934 : 'https://v2.archive.subsquid.io/network/neon-devnet' ,
75
- 245022926 : 'https://v2.archive.subsquid.io/network/neon-mainnet' ,
76
- 204 : 'https://v2.archive.subsquid.io/network/opbnb-mainnet' ,
77
- 5611 : 'https://v2.archive.subsquid.io/network/opbnb-testnet' ,
78
- 10 : 'https://v2.archive.subsquid.io/network/optimism-mainnet' ,
79
- 11155420 : 'https://v2.archive.subsquid.io/network/optimism-sepolia' ,
80
- 3338 : 'https://v2.archive.subsquid.io/network/peaq-mainnet' ,
81
- 98864 : 'https://v2.archive.subsquid.io/network/plume-testnet' ,
82
- 137 : 'https://v2.archive.subsquid.io/network/polygon-mainnet' ,
83
- 80002 : 'https://v2.archive.subsquid.io/network/polygon-amoy-testnet' ,
84
- 1101 : 'https://v2.archive.subsquid.io/network/polygon-zkevm-mainnet' ,
85
- 2442 : 'https://v2.archive.subsquid.io/network/polygon-zkevm-cardona-testnet' ,
86
- 97072271 : 'https://v2.archive.subsquid.io/network/prom-testnet' ,
87
- 584548796 : 'https://v2.archive.subsquid.io/network/prom-testnet-v2' ,
88
- 157 : 'https://v2.archive.subsquid.io/network/puppynet' ,
89
- 534352 : 'https://v2.archive.subsquid.io/network/scroll-mainnet' ,
90
- 534351 : 'https://v2.archive.subsquid.io/network/scroll-sepolia' ,
91
- 109 : 'https://v2.archive.subsquid.io/network/shibarium' ,
92
- 81 : 'https://v2.archive.subsquid.io/network/shibuya-testnet' ,
93
- 336 : 'https://v2.archive.subsquid.io/network/shiden-mainnet' ,
94
- 1482601649 : 'https://v2.archive.subsquid.io/network/skale-nebula' ,
95
- 64165 : 'https://v2.archive.subsquid.io/network/sonic-testnet' ,
96
- 93747 : 'https://v2.archive.subsquid.io/network/stratovm-sepolia' ,
97
- 53302 : 'https://v2.archive.subsquid.io/network/superseed-sepolia' ,
98
- 167000 : 'https://v2.archive.subsquid.io/network/taiko-mainnet' ,
99
- 5678 : 'https://v2.archive.subsquid.io/network/tanssi' ,
100
- 196 : 'https://v2.archive.subsquid.io/network/xlayer-mainnet' ,
101
- 195 : 'https://v2.archive.subsquid.io/network/xlayer-testnet' ,
102
- 810180 : 'https://v2.archive.subsquid.io/network/zklink-nova-mainnet' ,
103
- 324 : 'https://v2.archive.subsquid.io/network/zksync-mainnet' ,
104
- 300 : 'https://v2.archive.subsquid.io/network/zksync-sepolia' ,
105
- 7777777 : 'https://v2.archive.subsquid.io/network/zora-mainnet' ,
106
- 999999999 : 'https://v2.archive.subsquid.io/network/zora-sepolia' ,
107
- }
7
+
8
+ endpoint_cache : dict [int , str ] | None = None
9
+ def get_endpoints () -> dict [int , str ]:
10
+ global endpoint_cache
11
+ if endpoint_cache is not None :
12
+ return endpoint_cache
13
+ res = requests .get ("https://cdn.subsquid.io/archives/evm.json" )
14
+ res .raise_for_status ()
15
+
16
+ endpoints : dict [int , str ] = {}
17
+ for chain in res .json ()["archives" ]:
18
+ endpoints [chain ["chainId" ]] = chain ["providers" ][0 ]["dataSourceUrl" ]
19
+
20
+ endpoint_cache = endpoints
21
+ return endpoints
108
22
109
23
def get_text (url : str ) -> str :
110
24
res = requests .get (url )
@@ -117,10 +31,11 @@ def get_filter(
117
31
partial_allowed = False ,
118
32
p_bar : tqdm = None
119
33
) -> tuple [int , list [LogReceipt ]]:
120
- if chain_id not in ENDPOINTS :
34
+ endpoints = get_endpoints ()
35
+ if chain_id not in endpoints :
121
36
raise ValueError (f"Subsquid does not support Chain ID { chain_id } " )
122
37
123
- gateway_url = ENDPOINTS [chain_id ]
38
+ gateway_url = endpoints [chain_id ]
124
39
125
40
assert isinstance (filter_params ['fromBlock' ], int )
126
41
assert isinstance (filter_params ['toBlock' ], int )
0 commit comments