Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2141 commits
Select commit Hold shift + click to select a range
27908d3
Add Uniocean testnet chain id: 684 (#2065)
deepak-zeeve Oct 2, 2025
fd49846
Add Warden Protocol (#2066)
jlehtimaki Oct 2, 2025
ac185d9
fix (#2078)
Define101 Oct 2, 2025
866ea6e
Add dRPC Hoodi RPC endpoint (chainId 9746) (#2067)
dRPCMarketing Oct 6, 2025
98cd413
Revert "Add dRPC Hoodi RPC endpoint (chainId 9746) (#2067)" (#2095)
Define101 Oct 6, 2025
254590c
Fix Warden Protocol RPC endpoints (#2079)
jlehtimaki Oct 6, 2025
143f8d5
Add Incentiv Mainnet (#2080)
Birua Oct 6, 2025
2ec43d5
new chains added (#2084)
priyanshuthapliyal55 Oct 6, 2025
4382f36
add new chain
realdealshaman Oct 6, 2025
1c3bcfd
add chain
realdealshaman Oct 6, 2025
af1dcbf
Fix: Update Somnia Mainnet RPCs (#2087)
emmaodia Oct 7, 2025
42305fa
Add CAPX Mainnet and Testnet (Chain IDs 757 and 756) (#2091)
augchi-capx Oct 7, 2025
837f303
Add Lit Protocol Mainnet (#2093)
Megumiiiiii Oct 7, 2025
434520e
remove deprecated test networks Alfajores and Baklava (#2094)
GigaHierz Oct 7, 2025
9609bdc
add drpc (#2126)
Define101 Oct 9, 2025
f09e485
BinaryHoldings Chainid (#2086)
MeghaZeeve Oct 9, 2025
041d8c6
Revert "BinaryHoldings Chainid (#2086)" (#2127)
Define101 Oct 9, 2025
c21a59f
fix overwritten chain pages (#2129)
mintdart Oct 9, 2025
2dab43e
Create chainid-80888.js (#2100)
colex2 Oct 10, 2025
0ac4120
Create Chain ID: 853211 - HAQQ Testethiq L2 Testnet (Sepolia) (#2123)
VorobevSA Oct 10, 2025
e68521a
Add GalaxyChain to chainlist (#2124)
Nparooei Oct 10, 2025
4202df8
Add: Awakening Network (#2125)
urkishan Oct 10, 2025
a833d7d
Add Codex Mainnet (#2128)
Megumiiiiii Oct 10, 2025
a01b6b4
Add Fastnode's public endpoints (#2130)
fastnode-io Oct 10, 2025
3ba7762
Update extraRpcs.js (#2122)
blink10000 Oct 10, 2025
43c41e4
Create chainid-166.js and update chainIds.js (#2060)
ga-reth Oct 14, 2025
58c7fda
ARIA Chain Update (#2092)
22huseyncoding Oct 14, 2025
32141c8
BinaryHoldings mainnet 836 (#2136)
MeghaZeeve Oct 20, 2025
42870fd
Create chainlist-tensora.js (#2139)
Chennugurr Oct 20, 2025
a12b1ef
Update chainid-11142220.js (#2140)
0xj4an Oct 20, 2025
c2f66e8
Update nomina RPC and explorer urls (#2142)
ga-reth Oct 20, 2025
d809026
GRX Chain Mainnet submission (#2143)
dwinea Oct 20, 2025
f50d9b4
Add bloxroute base endpoint (#2147)
ron-elmekiesse-bloxroute Oct 20, 2025
dc9774e
Add Sshivansh Chain to chainlist (#2149)
AkashCrypto Oct 20, 2025
e093311
add ab core mainnet (#2150)
vieyang Oct 23, 2025
873da63
Add Mintrax Mainnet (chainId 478549) (#2152)
mintraxnetwork Oct 23, 2025
38644b4
PR to add studio chain (#2153)
bb-face Oct 23, 2025
8597220
:wrench: add `LazAI Mainnet` (#2156)
anaye1997 Oct 23, 2025
4fad5cd
add Portal-To-Bitcoin Mainnet (#2155)
sa-bir Oct 23, 2025
f7886f4
PR to add Anubis Testnet (#2157)
Vekkl Oct 23, 2025
38ca1d0
fix (#2161)
Define101 Oct 23, 2025
138bd2a
Add Stable Mainnet (#2158)
paperCPU Oct 23, 2025
a714aa8
Add: Sophon zkSync-OS Testnet (#2138)
Emosaddd Oct 24, 2025
8ff7668
Sort testnets my mainnet' tvl (#2167)
Caranell Oct 27, 2025
c15463b
Revert "Sort testnets my mainnet' tvl (#2167)"
0xngmi Oct 27, 2025
bee60ad
Update extraRpcs.js (#2175)
dRPCMarketing Oct 28, 2025
c3ba948
Update extraRpcs.js (#2132)
BlessedBe69 Oct 28, 2025
471d42c
Update extraRpcs.js (#2141)
Oct 28, 2025
7705de7
Add Chain 4936(Prodao Mainnet) (#2159)
Kook-Dohyun Oct 28, 2025
512aa9b
Add bloxroute x layer endpoints (#2160)
ron-elmekiesse-bloxroute Oct 28, 2025
1f533b1
Fix DNS of Bloxroute's Base RPC (#2163)
i-Alex Oct 28, 2025
b5faf1c
Adding SteemVM Testnet (#2166)
blazeapps007 Oct 28, 2025
a0727dc
Create chainid-3864.js (#2168)
MaksimDrozd Oct 28, 2025
904e565
Modify GRX Mainnet configuration details (#2169)
dwinea Oct 28, 2025
713eb8f
fix (#2179)
Define101 Oct 28, 2025
37219a0
Add dRPC NodeCloud RPC endpoint for Arc (#2180)
dRPCMarketing Oct 30, 2025
8f528de
Modify studio chain (#2171)
bb-face Oct 30, 2025
ebab848
ICBX Network New RPC Update extraRpcs.js (#2172)
ICBNetwork Oct 30, 2025
b0f3bef
Add JASMY Chain Testnet (#2174)
sresolt Oct 30, 2025
5bf3dae
add Morph Hoodi Testnet (#2190)
SegueII Nov 4, 2025
19fe35b
Add Arc Network (chainId: 123456789) to Chainlist (#2188)
dRPCMarketing Nov 4, 2025
27f7f87
add: xo chain testnet (chainId 1000101) (#2185)
mennatnaga Nov 4, 2025
212125a
Add new Dwellir RPC URLs (#2184)
benjichat Nov 5, 2025
77eb6f8
apply for chainid 19966 (#2176)
Atrnxos Nov 5, 2025
612084c
feat(chain-registry): add CX Chain Mainnet (#2177)
ArrayCodes Nov 5, 2025
6c44ab5
Add mev-commit network. (#2178)
chrmatt Nov 5, 2025
c398259
Add Etherlink Shadownet Testnet (Chain ID: 127823) (#2181)
sistemico Nov 5, 2025
8a61509
add sintrop network (#2183)
emanoeledevapps Nov 5, 2025
02d5d49
feat: update Stable testnet and mainnet information (#2186)
highonrice Nov 5, 2025
098c45d
Add Riche Chain Testnet (45578) (#2187)
marchNum13 Nov 5, 2025
8e8a1f0
Add PulseChainStats RPC endpoint for PulseChain (369) (#2191)
pulsechainstats Nov 5, 2025
288d25d
remove okt from onfinality.io (#2196)
leoonf Nov 5, 2025
550e319
RecorderCoin listing (#2148)
sepp00 Nov 7, 2025
69d3f6f
Add CX Chain Mainnet and Testnet (#2198)
ArrayCodes Nov 11, 2025
ebd78c4
feat: update stable-testnet shortname (#2199)
highonrice Nov 11, 2025
441d473
add default rpc
realdealshaman Nov 11, 2025
e2d1b2f
adds datahaven (#2201)
albertov19 Nov 12, 2025
524c395
feat: added mawari (#2203)
Thektonic Nov 12, 2025
be879da
add onfinality's hyperliquid rpc endpoint (#2210)
leoonf Nov 12, 2025
133bc75
Update R0AR Chain icon (mainnet 193939 + testnet 11166111) to IPFS (#…
th3r0ar Nov 12, 2025
595f102
Add AMR blockchain configuration in amr.json (#2207)
ayanoxamr-lab Nov 12, 2025
afd78a5
Add a Chain 68414 (Henesys) (#2214)
soohanpark Nov 12, 2025
c693a94
Add Denergy Network (chainid: 369369 and 4442) to Chainlist (#2216)
dev-zaid Nov 12, 2025
bbab651
add: Bitmeta Chain (BMC) – chainId 1199 (#2215)
King11919 Nov 14, 2025
b797c50
Add Amazonic Blockchain data to chainid-65.js (#2221)
D-H-O-R-A Nov 17, 2025
853cf76
add Citrea mainnet (#2230)
eyusufatik Nov 17, 2025
6418988
chainid-1919.js (#2228)
Turkchain1919 Nov 19, 2025
cbcab42
feat: add monad mainnet (#2235)
QEDK Nov 19, 2025
c0797b3
Add bloxroute hyperliquid endpoint (#2237)
ncherkas Nov 19, 2025
ae503af
Update chainid-2107.js (#2239)
Aashishquest Nov 19, 2025
737b781
Add dRPC NodeCloud RPC endpoints for Shibarium (#2240)
dRPCMarketing Nov 19, 2025
20e1ee1
remove bad etc rpcs (#2218)
singer-shy Nov 19, 2025
635ced2
add lora chain (#2211)
lucian-ma Nov 19, 2025
3597959
Added OnFinality Dymension (#2192)
Danielvul Nov 19, 2025
02f5faf
wip fix (#2242)
Define101 Nov 19, 2025
5bf67d3
Revert "Add dRPC NodeCloud RPC endpoints for Shibarium (#2240)" (#2243)
Define101 Nov 19, 2025
bb411c2
Revert "wip fix (#2242)" (#2244)
Define101 Nov 19, 2025
b9fe14f
Add new RPCs for Shibarium (#2246)
Define101 Nov 19, 2025
e2e2265
Add more Monad public RPCs (#2248)
iamvukasin Nov 20, 2025
8ee8fdc
Update shortName from 'mon' to 'monad'
Define101 Nov 20, 2025
fa7bcc7
Add chain ID for Monad
Define101 Nov 20, 2025
ed72a59
Add additional Monad and Monad Testnet RPCs (#2253)
iamvukasin Nov 21, 2025
f178e78
Added OnFinality Dymension (#2238)
Daniel-OnFinality Nov 24, 2025
0abd8ac
add chainid 12301 and 12302 (#2241)
hundanwan Nov 24, 2025
22e6c31
Add Eden Testnet (#2249)
Bidon15 Nov 24, 2025
aff1dab
Update Pocket Network Public RPC URLs and Privacy Statement (#2233)
oten91 Nov 25, 2025
06b4a49
Add DMD Diamond mainnet (#2251)
axel-muller Nov 26, 2025
973686b
Add new RPC endpoint for publicnode for Linea chain (59144) (#2256)
krissemmy Nov 26, 2025
82cbd5a
Update extraRpcs.js | ICBX Team (#2261)
ICBNetwork Nov 26, 2025
70b8d84
updating Sophon OS information (#2259)
githubdoramon Nov 27, 2025
4baf80d
Update chainid-531050204.js (#2278)
githubdoramon Nov 27, 2025
25b490a
feat: added table for chain explorers and more (#2262)
lorem-ipsumm Nov 27, 2025
093f42c
Add Spider Node - Monad mainnet RPC (#2266)
Coha05 Nov 28, 2025
8b23b35
Add Memento Testnet (#2269)
hitesh-zeeve Nov 28, 2025
585eabc
Add Wirex testnet (#2270)
hitesh-zeeve Nov 28, 2025
72a479e
Add Memento Mainnet (#2271)
hitesh-zeeve Nov 28, 2025
dbff1b3
Added OnFinality Monad Testnet RPC (#2272)
Daniel-OnFinality Nov 28, 2025
7ecb342
Added onfinality monad endpoint (#2273)
FiveKG Nov 28, 2025
d2c6e47
add rpcs (#2282)
Define101 Nov 28, 2025
be66395
Add extra RPC endpoint for QL1 (chainId 766) (#2274)
FoxxeyOne Nov 28, 2025
63bda51
fix: update Denergy Explorer URL to the correct domain (#2280)
dev-zaid Nov 28, 2025
3df32f7
Add Parallax mainnet (LAX) (#2281)
andrepatta Nov 28, 2025
7adb82e
fix monad stuff (#2284)
Define101 Nov 28, 2025
dc99be5
Fix native token (#2031)
emdin Nov 28, 2025
b2c0c94
Update extraRpcs.js (#2131)
BlessedBe69 Nov 28, 2025
f96dbda
Add new Dwellir RPC URLs (#2200)
benjichat Nov 28, 2025
bc916f4
Add chain registry for chainid 38391207 (Updated Network ID) (#2247)
brantleyglobal Nov 28, 2025
efe65a2
Sort testnets by tvl (#2173)
Caranell Nov 29, 2025
5923622
Update multiple dRPC extraRpcs.js (#2296)
dRPCMarketing Dec 2, 2025
2b3ef65
fix (#2297)
Define101 Dec 2, 2025
a0ae646
Makachain mainnet (#2285)
MeghaZeeve Dec 3, 2025
7053b4e
Add HyperX, chain ID 80808 (#2287)
ryderhiew Dec 3, 2025
0bf5326
fix (#2299)
Define101 Dec 3, 2025
3c49f59
Add Alpha Chain to Chainlist (3111 & 511111) (#2289)
danielzhou82 Dec 4, 2025
0eabf1c
Add SilverBitcoin (Chain ID 5200) network (#2291)
silverbitcoin Dec 4, 2025
bc348a0
Add Alpen Testnet II chain configuration (#2300)
stefanopepe Dec 4, 2025
6ede779
Change Fuel Sepolia testnet RPC endpoint and explorer address. (#2301)
CatspersCoffee Dec 4, 2025
e4359d1
Add thirdweb RPCs for Hedera Mainnet & Testnet (#2260)
0xFirekeeper Dec 4, 2025
18a6908
Add full send rpc (#2265)
antonydenyer Dec 4, 2025
b1e5b35
Revert "Add AMR blockchain configuration in amr.json (#2207)" (#2303)
0xngmi Dec 4, 2025
0df0433
add tests to check for duplicate chainIds in extraRpcs.js (#2307)
mintdart Dec 5, 2025
de84a52
fix workflow (#2308)
mintdart Dec 5, 2025
7d929eb
Add explorers blacklist (#2316)
Caranell Dec 9, 2025
dbd713b
improve tests (#2321)
mintdart Dec 10, 2025
d79500f
add notes network (#2314)
note-design Dec 11, 2025
2946f21
feat(additionalChainRegistry): add Tempo Testnet (#2317)
Zygimantass Dec 11, 2025
dc3046d
Add RPCs to chainid-1776.js (#2318)
frani Dec 11, 2025
c1ffe41
Add Quantum Sharded Network Testnet configuration (#2319)
Vahe327 Dec 11, 2025
448fcbb
Add ETO L1 (Chain ID: 69670) (#2320)
bajpainaman Dec 11, 2025
8971e1f
Add DogeOS Chikyū Testnet (Chain ID: 6281971) (#2264)
sistemico Dec 11, 2025
ffbcc2c
Please add Tatum Monad Mainnet RPC (#2323)
blockchaingirl1407 Dec 15, 2025
edbe184
Please Add Tatum Plume Mainnet RPC endpoint (#2324)
blockchaingirl1407 Dec 15, 2025
e9be533
Update R0AR Chain Mainnet & Testnet Icons to New Permaweb SVG Locatio…
th3r0ar Dec 15, 2025
faee0a3
Add BeeChain Mainnet and BeeChain Testnet (#2327)
wangyujie2024 Dec 15, 2025
cfea301
Add BTB Chain Mainnet (Chain ID 509) (#2328)
sam-bittap Dec 15, 2025
f3ccbf3
Add Entropy Chain registry data (#2329)
King11919 Dec 15, 2025
32552e4
Add L2 Protocol Mainnet (Chain ID: 12216) (#2330)
L2Protocol Dec 15, 2025
2f740d1
Add Apollo Mainnet chain configuration (#2331)
Botlogiclabs Dec 15, 2025
36b4988
replace chainid-2643.json with JS module for loader (#2332)
note-design Dec 15, 2025
e30c55e
Add H2 Mainnet (2582) and H2 Lambda (25821) (#2333)
vangoghl Dec 15, 2025
6b75b1c
Add Buburuza Mainnet (Chain ID 30143370385) (#2334)
Oliver-Backend Dec 15, 2025
0629f4d
Add countzero RPC endpoint (#2335)
c0un7-zero Dec 15, 2025
d6ca35e
Add RPCs to chainId 2999 (bityuan) (#2338)
ByteNavvy Dec 15, 2025
fdf7f17
Add VirBiCoin (Chain ID 329) (#2339)
emerauda Dec 15, 2025
27b02be
Dinari Financial Network - Chain ID:202110 (#2340)
booi Dec 15, 2025
d2e06c3
add brevis provernet (#2341)
hhl42 Dec 15, 2025
7bd4ce5
Fix: Update Somnia Mainnet RPCs (#2342)
emmaodia Dec 15, 2025
8d26991
Feature/add coti rpcs (#2302)
OdedCoti Dec 15, 2025
cbd963c
alphachain-icon (#2304)
freddi8e Dec 15, 2025
9e10f1b
add: Celeschain (Cles) - chainid 22225 (#2306)
ErickTp45 Dec 15, 2025
2b75494
Add new dRPC RPC endpoints and network updates (#2309)
dRPCMarketing Dec 17, 2025
2c769ef
Add Brevis ProverNet Testnet [Chain ID: 999983] (#2345)
hhl42 Dec 23, 2025
3a8b5c4
Added Bloxroute's Monad RPC (#2346)
ncherkas Dec 23, 2025
b8f49d7
Update extraRpcs.js (#2349)
mrspir Dec 23, 2025
b85c855
Add BGGChain configuration for chainId 3005 (#2353)
uti91 Dec 23, 2025
92bec60
Create chainid-3355.js (#2358)
crunkbanks Dec 23, 2025
fba1a4c
Add Anq Chain - Testnet (Chain ID 11417) (#2359)
sxrthxk Dec 23, 2025
d97d67e
Add itani network chain (#2361)
iTaniCore Dec 23, 2025
09c6669
Added Ethiq mainnet (#2362)
VorobevSA Dec 23, 2025
70b0274
Add MON CHAIN (chainId 19901) (#2363)
King11919 Dec 23, 2025
20bfb82
add obsidian chain 1719 (#2365)
HITEYY Dec 23, 2025
7a771f6
Add 0xRPC Mordor Testnet (#2326)
0xRPC Dec 23, 2025
77339be
Fix invalid syntax (#2381)
Caranell Dec 27, 2025
4f379fb
feat: add ValueChain (chainId 286623) (#2385)
ze-codes Jan 5, 2026
c6a153e
Add Creator Chain Testnet (#2369)
bxpana Jan 5, 2026
b2f03a7
TBURN Testnet (#2373)
trustburn79-droid Jan 5, 2026
4c63a5c
Update extraRpcs.js (#2372)
konstantinrm Jan 7, 2026
50cad6c
add midl (#2279)
VanjaRo Jan 7, 2026
ea85975
Remove some 0xRPC.io endpoints (#2384)
0xRPC Jan 8, 2026
3ef0605
Add Japan Open Chain Mainnet (#2387)
cuonghx-dev Jan 8, 2026
f91fc78
Add Svptestnet chain 2517 and mainnet 2518 (#2390)
Zerppen Jan 8, 2026
648f987
Add HairyLabs free public RPC for PulseChain (369) (#2391)
MajorMonty Jan 8, 2026
d5e0d84
Deprecate CoreDAO Testnet 1115 and Remove Deprecated RPC Endpoints (#…
ggcore0 Jan 8, 2026
7cfc3a1
feat: Add new RPC endpoint for Story mainnet (#2367)
dev-minsu Jan 8, 2026
31459ff
Add Dolphinet Mainnet to Chainlist (#2375)
AaronGuan Jan 8, 2026
f8314c5
Add Dolphinet Testnet chain data (#2376)
AaronGuan Jan 8, 2026
81d9370
feat: Blockmaze protocol testnet (#2394)
pk0852 Jan 8, 2026
57c459d
Add TBURN Mainnet (Chain ID 5800) to Chainlist (#2395)
trustburn79-droid Jan 8, 2026
8bf88fd
Add Kalichain configuration for chain ID 6533 (#2292)
Kalichain Jan 8, 2026
231f6c1
add pharos mainnet (#2337)
Index0011 Jan 8, 2026
039a040
add HyperCluster 838838 (#2399)
ryderhiew Jan 13, 2026
47b581b
Add megaeth (#2414)
0xBreadguy Jan 16, 2026
609a525
Update NativeCurrencySymbol of Stable Testnet (#2410)
highonrice Jan 16, 2026
42e4ac2
Update link to RPC and explorer (#2411)
VorobevSA Jan 16, 2026
cb19e1a
opn mainnet chain id 222 (#2415)
deepak-zeeve Jan 16, 2026
84b1f11
add missing chainIds
realdealshaman Jan 16, 2026
75ed01c
Adds Polkadot EVM Details (#2412)
albertov19 Jan 20, 2026
596a865
Add: ITRocket Story mainnet and testnet endpoints (#2416)
itrocket-team Jan 20, 2026
bbcf6c5
Remove GasHawk from list (#2417)
pfedan Jan 20, 2026
23e208c
Add HairyLabs Base RPC and fix privacy policy URL (#2422)
MajorMonty Jan 20, 2026
83adb7b
add RISE Mainnet and Testnet (#2423)
awesamarth Jan 20, 2026
dc2f104
Add new chain XGR Mainnet (#2421)
xGreen-project Jan 23, 2026
379bfe8
Add QELT blockchain mainnet and testnet (#2430)
PRQELT Jan 23, 2026
18c2466
update xlayer to x layer
realdealshaman Jan 23, 2026
00f6059
add new additionalChainRegistry file and fix existing
realdealshaman Jan 23, 2026
36d6bdf
add rpcs
realdealshaman Jan 23, 2026
3cc8b8d
remvoe 195 listings
realdealshaman Jan 23, 2026
4c9f9ed
New RPC link in Bc Hyper Mainnet (#2408)
akashhalder3 Jan 26, 2026
84dc2a0
Removed deprecated Horizen testnet (#2419)
saratnt Jan 26, 2026
a7f2e8e
Add Cosmostation RPC for Pharos Atlantic Testnet (#2425)
Kwonhyukjoon Jan 26, 2026
0684a9a
add rpc (#2431)
Kemperino Jan 26, 2026
7502407
Add XGR Testnet and Icon (#2435)
xGreen-project Jan 26, 2026
677588c
Add BNX Smart Chain (chainId 7777) (#2436)
satlykkarakulow09-collab Jan 26, 2026
5ebeec4
2429 (#2441)
Define101 Jan 27, 2026
7fcdda2
Add YuuChain (chainId 19001) (#2438)
regal619 Jan 28, 2026
53640b3
Fix QELT mainnet and testnet: Add chainIds mapping and update icon fo…
PRQELT Jan 28, 2026
355c5cf
add chain
realdealshaman Jan 30, 2026
e08ac5a
fix chain slug
realdealshaman Jan 30, 2026
c8399d5
Add Ankr RPC for Somnia (#2407)
emmaodia Feb 2, 2026
7772fbc
Add: Sentio free public RPC (#2428)
frozenluo Feb 2, 2026
1966395
add Ethereum RPC via Ankr (NodeInfra) (#2432)
rechnerfarm26-a11y Feb 2, 2026
cc9820b
add Polygon RPC via Ankr (NodeInfra) (#2433)
rechnerfarm26-a11y Feb 2, 2026
0f44b13
Fix Alpen Testnet II RPC and faucet URLs (#2439)
stefanopepe Feb 2, 2026
169ff18
Add XYBERCHAIN Testnet (chainId 9194) (#2446)
Lightspeedke Feb 2, 2026
ce954cc
chainid-13390.js (#2447)
MEECHAIN1 Feb 2, 2026
ab78cd2
Add Datachain Rope (chainId: 314159) (#2449)
KazeONGUENE Feb 2, 2026
a46e4e3
Add Fanatico L1 blockchain (Chain ID: 11111111111) (#2452)
FanaticoSeba Feb 2, 2026
1dbfc24
fix: update Creator Chain testnet (#2454)
bxpana Feb 2, 2026
acb4f6e
Add ByteChain Mainnet (9933) and Testnet (3399) (#2457)
bytexcglobal Feb 2, 2026
a9726dd
remove chains not listed on defillama
realdealshaman Feb 2, 2026
b6ebbe8
include privacy statements in additionalchainregistries
realdealshaman Feb 2, 2026
ca3aed3
fix chainid 1952
realdealshaman Feb 2, 2026
43be65e
use lowercase for file name
realdealshaman Feb 3, 2026
1e759cd
feat: add creator chain mainnet (#2455)
bxpana Feb 5, 2026
66a76fb
Remove 0xrpc gno node (#2456)
0xRPC Feb 5, 2026
a01938b
Create chainid-61564.js (#2461)
iced-lemontea Feb 5, 2026
efd039b
Update native currency details for chainid-1919 (#2467)
Turkchain1919 Feb 5, 2026
9d25f37
feat: add MSC chain 5577 to additionalChainRegistry (#2471)
ajayramola Feb 5, 2026
a1df24a
Add chainId-1330.js (#2472)
mkd951 Feb 5, 2026
e374d0d
mimicate 2473 (#2475)
Define101 Feb 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
278 changes: 278 additions & 0 deletions .github/scripts/validate-chain-files.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,278 @@
import path from 'path';
import { fetchWithCache } from '../../utils/fetch.js';
import fs from 'fs';

const isExtracRpcsFileChanged = (process.env.EXTRA_RPC_CHANGED || '').trim().length > 0;
const addedOrModified = process.env.FILES_CHANGED.split(' ');

// Function to write to step summary
function writeToStepSummary(content) {
if (process.env.GITHUB_STEP_SUMMARY) {
try {
fs.appendFileSync(process.env.GITHUB_STEP_SUMMARY, content + '\n');
} catch (error) {
console.error('Failed to write to step summary:', error.message);
}
}
}

// Function to write errors to a file that persists between steps
function writeErrorsToFile(errors) {
try {
const errorContent = errors.join('\n');
fs.writeFileSync('/tmp/validation-errors.txt', errorContent);
console.log('Errors written to /tmp/validation-errors.txt');
} catch (error) {
console.error('Failed to write errors to file:', error.message);
}
}

// Main async function to run validation
async function runValidation() {
// Collect all errors
const errors = [];

if (isExtracRpcsFileChanged) {
try {
await validateExtracRpcs();
} catch (error) {
errors.push(error.message);
writeToStepSummary(`❌ ${error.message}`);
}
}

// Process chain files sequentially to avoid overwhelming the system
for (const filePath of addedOrModified) {
if (filePath.trim()) {
try {
await validateChainFile(filePath);
} catch (error) {
errors.push(error.message);
writeToStepSummary(`❌ ${error.message}`);
}
}
}

// If there are errors, throw them all at once
if (errors.length > 0) {
const errorSummary = errors.join('\n');
writeToStepSummary(`\n## Validation Summary\n\n${errors.length} validation error(s) found:\n\n${errorSummary}`);
writeErrorsToFile(errors);
throw new Error(`Validation failed with ${errors.length} error(s):\n${errorSummary}`);
}

// Write success message to step summary
writeToStepSummary('✅ All chain files validated successfully!');
}

// Run the validation
runValidation().catch(error => {
console.error('Validation failed:', error.message);
process.exit(1);
});

const rpcTrackingSet = new Set(['none', 'limited', 'yes', 'unspecified']);

// Validate chainid-*.js files
async function validateChainFile(filePath) {
filePath = filePath.trim();
const filename = path.basename(filePath);
try {
if (!filename.startsWith('chainid-') || !filename.endsWith('.js')) {
throw new Error(`${filePath} does not match chainid-*.js pattern`);
}
const { data } = await import(path.join('..', '..', filePath))
const { features, faucets, nativeCurrency, explorers, parent, } = data;

if (typeof data !== 'object' || !data)
throw new Error('Data should be an object: ')

numberCheck(data, 'chainId', true);
numberCheck(data, 'networkId', true);
stringCheck(data, 'name', true);
stringCheck(data, 'shortName', true);
stringCheck(data, 'chain', true);
stringCheck(data, 'icon');
stringCheck(data, 'infoURL')
stringCheck(data, 'title')

stringCheck(nativeCurrency, 'name', true);
stringCheck(nativeCurrency, 'symbol', true);
numberCheck(nativeCurrency, 'decimals', true);

if (typeof explorers === 'object') {
if (!Array.isArray(explorers)) {
throw new Error('Explorers should be an array');
}
explorers.forEach((explorer) => {
stringCheck(explorer, 'name', true);
stringCheck(explorer, 'url', true);
stringCheck(explorer, 'standard');
});
}

if (typeof features === 'object') {
if (!Array.isArray(features)) {
throw new Error('Features should be an array');
}
features.forEach((feature) => {
stringCheck(feature, 'name', true);
});
}

if (Array.isArray(faucets)) {
faucets.forEach((faucet) => {
if (typeof faucet !== 'string') {
throw new Error('Faucets should be an array of strings');
}
});
}

if (!Array.isArray(data.rpc) || data.rpc.length === 0) {
throw new Error('RPCs should be a non-empty array');
}

data.rpc.map(validateRPC)

const { chainIdConfigMap, } = await getChainlistConfig();

if (chainIdConfigMap[data.chainId]) {
console.warn(`Chain ID ${data.chainId} already exists in chainlist.org/rpcs.json`);
if (chainIdConfigMap[data.chainId].shortName !== data.shortName)
throw new Error(`Chain ID ${data.chainId} already exists with a different shortName: ${chainIdConfigMap[data.chainId].shortName}`);

if (chainIdConfigMap[data.chainId].name !== data.name)
throw new Error(`Chain ID ${data.chainId} already exists with a different name: ${chainIdConfigMap[data.chainId].name}`);
}

if (parent) {
stringCheck(parent, 'type', true);
stringCheck(parent, 'chain', true);
if (Array.isArray(parent.bridges)) {
parent.bridges.forEach((bridge) => {
stringCheck(bridge, 'url', true);
});
}
if (!parent.chain.startsWith('eip155-')) {
throw new Error(`Parent chain should start with eip155-: ${parent.chain}`);
}
const parentChainId = parent.chain.split('-')[1]
if (!chainIdConfigMap[parentChainId]) {
throw new Error(`Parent chain ${parentChainId} does not exist in chainlist.org/rpcs.json`);
}
}

} catch (e) {
throw new Error(`Validation failed for ${filename}: ${e.message}`);
}
}

async function validateExtracRpcs() {
try {
const { default: extraRpcs } = await import(path.join('..', '..', 'constants/extraRpcs.js'));
Object.entries(extraRpcs).forEach(([chainId, config]) => {
validateRPCConfig(config, chainId);
})
} catch (e) {
throw new Error(`extracRpcs.js import failed: ${e.message}`);
}
}

function validateRPCConfig(config, configId) {
if (typeof config !== 'object') throw new Error('RPC config should be an object');
if (!Array.isArray(config.rpcs)) throw new Error('RPC config rpc should be an array');
config.rpcs.map(validateRPC)

if (config.hasOwnProperty('rpcWorking') && typeof config.rpcWorking !== 'boolean') {
throw new Error('RPC rpcWorking should be a boolean ' + configId);
}

if (config.hasOwnProperty('websiteDead') && typeof config.websiteDead !== 'boolean' && typeof config.websiteDead !== 'string') {
throw new Error('RPC websiteDead should be a boolean ' + configId);
}

}

function validateRPC(rpc) {
if (typeof rpc === 'string' && rpc.length) return;
if (typeof rpc !== 'object') throw new Error('RPC should be an object')
if (typeof rpc.url !== 'string') throw new Error('RPC url should be a string' + JSON.stringify(rpc));

if (rpc.hasOwnProperty('tracking')) {
if (typeof rpc.tracking !== 'string') {
throw new Error('RPC tracking should be a string ' + rpc.url);
}
if (!rpcTrackingSet.has(rpc.tracking)) {
throw new Error('Unknown rpc tracking status ' + rpc.url);
}
}

if (rpc.hasOwnProperty('trackingDetails') && typeof rpc.trackingDetails !== 'string') {
throw new Error('RPC trackingDetails should be a string ' + rpc.url);
}

if (rpc.hasOwnProperty('name') && typeof rpc.name !== 'string') {
throw new Error('RPC name should be a string ' + rpc.url);
}

}

let chainlistConfig

function getChainlistConfig() {
if (!chainlistConfig) chainlistConfig = _getChainlistConfig()

return chainlistConfig

async function _getChainlistConfig() {
const rpcInfo = await fetchWithCache('https://chainlist.org/rpcs.json')
console.log('Fetched RPC info from chainlist.org/rpcs.json')
const chainIdConfigMap = {}
const shortNameChainIdMap = {}
const nameChainIdMap = {}
rpcInfo.forEach((chain) => {
if (chain.chainId === undefined || chain.name === undefined || chain.shortName === undefined) {
return
}
chainIdConfigMap[chain.chainId] = {
name: chain.name,
shortName: chain.shortName,
rpc: chain.rpc,
website: chain.website,
icon: chain.icon,
tracking: chain.tracking,
trackingDetails: chain.trackingDetails,
}
shortNameChainIdMap[chain.shortName] = chain.chainId
nameChainIdMap[chain.name] = chain.chainId
})

return {
chainIdConfigMap,
shortNameChainIdMap,
nameChainIdMap,
}
}
}

function stringCheck(obj, field, isMandatory = false) {
if (typeof obj !== 'object' || !obj) throw new Error(`Chain ${field} should be an object`);

if (isMandatory && !obj.hasOwnProperty(field)) {
throw new Error(`Chain ${field} is mandatory`);
}
if (obj.hasOwnProperty(field) && typeof obj[field] !== 'string') {
throw new Error(`Chain ${field} is not a string`);
}
}

function numberCheck(obj, field, isMandatory = false) {
if (typeof obj !== 'object' || !obj) throw new Error(`Chain ${field} should be an object`);

if (isMandatory && !obj.hasOwnProperty(field)) {
throw new Error(`Chain ${field} is mandatory`);
}
if (obj.hasOwnProperty(field) && typeof obj[field] !== 'number') {
throw new Error(`Chain ${field} is not a number`);
}
}
27 changes: 27 additions & 0 deletions .github/workflows/check-duplicate-keys.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
name: Check Duplicate Keys

on:
pull_request:
paths:
- 'constants/extraRpcs.js'
- 'constants/chainIds.js'
push:
branches:
- main
paths:
- 'constants/extraRpcs.js'
- 'constants/chainIds.js'

jobs:
check-duplicates:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'

- name: Check for duplicate keys
run: node tests/check-duplicate-keys.js
61 changes: 61 additions & 0 deletions .github/workflows/validate-chain-files.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Validate Chain Files

on:
pull_request_target:
paths:
- 'constants/additionalChainRegistry/*'
- 'constants/extraRpcs.js'

jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 100

- name: Set changed files
id: files
run: |
echo "FILES_CHANGED=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep 'constants/additionalChainRegistry/' | tr '\n' ' ' | sed 's/ $//' || true)" >> $GITHUB_ENV
echo "EXTRA_RPC_CHANGED=$(git diff --name-only ${{ github.event.pull_request.base.sha }} ${{ github.sha }} | grep 'constants/extraRpcs.js' | tr '\n' ' ' | sed 's/ $//' || true)" >> $GITHUB_ENV

- name: Validate chain and extracRpcs files
run: |
node -v
echo "Files changed: $FILES_CHANGED"
echo "Extra RPC files changed: $EXTRA_RPC_CHANGED"
if [ -z "$FILES_CHANGED" ] && [ -z "$EXTRA_RPC_CHANGED" ]; then
echo "No relevant files changed."
exit 0
fi
yarn
ONLY_LIST_FILE=true npm run build
node .github/scripts/validate-chain-files.js

env:
FILES_CHANGED: ${{ env.FILES_CHANGED }}
EXTRA_RPC_CHANGED: ${{ env.EXTRA_RPC_CHANGED }}

- name: Comment on PR if validation fails
if: failure()
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let errorContent = 'See workflow logs for details.';

try {
if (fs.existsSync('/tmp/validation-errors.txt')) {
errorContent = fs.readFileSync('/tmp/validation-errors.txt', 'utf8');
}
} catch (error) {
console.log('Could not read validation errors file:', error.message);
}

github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "Validation failed for chain files. Please check the workflow logs for details.\n\nError message:\n```\n" + errorContent + "\n```"
})
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# generated files
constants/additionalChainRegistry/list.js

# dependencies
/node_modules
/.pnp
Expand Down Expand Up @@ -29,6 +32,10 @@ yarn-error.log*
.env.development.local
.env.test.local
.env.production.local
.env

# vercel
.vercel

# others
build.log
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
sitemap.xml.js
.next
out
public
Loading