Skip to content

Commit 63e8521

Browse files
committed
getting Subsquid endpoints from their API rather than hardcoding them
1 parent 5430e63 commit 63e8521

File tree

1 file changed

+18
-103
lines changed

1 file changed

+18
-103
lines changed

IceCreamSwapWeb3/Subsquid.py

Lines changed: 18 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -4,107 +4,21 @@
44
from tqdm import tqdm
55
from web3.types import FilterParams, LogReceipt
66

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
10822

10923
def get_text(url: str) -> str:
11024
res = requests.get(url)
@@ -117,10 +31,11 @@ def get_filter(
11731
partial_allowed=False,
11832
p_bar: tqdm = None
11933
) -> tuple[int, list[LogReceipt]]:
120-
if chain_id not in ENDPOINTS:
34+
endpoints = get_endpoints()
35+
if chain_id not in endpoints:
12136
raise ValueError(f"Subsquid does not support Chain ID {chain_id}")
12237

123-
gateway_url = ENDPOINTS[chain_id]
38+
gateway_url = endpoints[chain_id]
12439

12540
assert isinstance(filter_params['fromBlock'], int)
12641
assert isinstance(filter_params['toBlock'], int)

0 commit comments

Comments
 (0)