From be6f58356342bd8a781e6fab58ce10dea031b3eb Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Mon, 29 Dec 2025 20:45:19 -0300 Subject: [PATCH 1/7] feat: Add RPC metadata for supported networks Add RPC endpoint metadata from chainlist.org for community contributions. - Create RPC schema with tracking, provider, isOpenSource fields - Add RPC data for 7 networks: Ethereum (1), Optimism (10), Base (8453), Arbitrum (42161), BNB Chain (56), BNB Testnet (97), Sepolia (11155111) - Update validation script to validate RPC files - Update build script to generate dist/rpcs/ output - Add import-rpcs script to sync from chainlist.org --- data/rpcs/1.json | 503 ++++++++++++++++++++++++++++++++++++++++ data/rpcs/10.json | 209 +++++++++++++++++ data/rpcs/11155111.json | 195 ++++++++++++++++ data/rpcs/42161.json | 188 +++++++++++++++ data/rpcs/56.json | 349 ++++++++++++++++++++++++++++ data/rpcs/8453.json | 209 +++++++++++++++++ data/rpcs/97.json | 118 ++++++++++ package.json | 1 + schemas/rpc.schema.json | 61 +++++ scripts/build.ts | 61 +++++ scripts/import-rpcs.ts | 150 ++++++++++++ scripts/validate.ts | 78 +++++++ 12 files changed, 2122 insertions(+) create mode 100644 data/rpcs/1.json create mode 100644 data/rpcs/10.json create mode 100644 data/rpcs/11155111.json create mode 100644 data/rpcs/42161.json create mode 100644 data/rpcs/56.json create mode 100644 data/rpcs/8453.json create mode 100644 data/rpcs/97.json create mode 100644 schemas/rpc.schema.json create mode 100644 scripts/import-rpcs.ts diff --git a/data/rpcs/1.json b/data/rpcs/1.json new file mode 100644 index 0000000000..7ecc512715 --- /dev/null +++ b/data/rpcs/1.json @@ -0,0 +1,503 @@ +{ + "chainId": 1, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/eth", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/eth", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://eth.blockrazor.xyz", + "tracking": "none", + "isOpenSource": false, + "provider": "BlockRazor", + "isPublic": true + }, + { + "url": "https://eth.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://rpc.flashbots.net", + "tracking": "none", + "isOpenSource": false, + "provider": "Flashbots", + "isPublic": true + }, + { + "url": "https://eth.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://eth.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://eth.merkle.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Merkle", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io", + "tracking": "none", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/eth/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://rpc.payload.de", + "tracking": "none", + "isOpenSource": false, + "provider": "Payload", + "isPublic": true + }, + { + "url": "https://eth.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://ethereum-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://ethereum-json-rpc.stakely.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Stakely", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/ethereum/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://go.getblock.io/aefd01aa907c4805ba3c00a9e5b48c6b", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.builder0x69.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zmok.io/mainnet/oaen6dy8ff6hju9k", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.lokibuilder.xyz/wallet", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.polysplit.cloud/v1/chain/1", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.nodifi.ai/api/rpc/free", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.public.curie.radiumblock.co/http/ethereum", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.public.curie.radiumblock.co/ws/ethereum", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.fullsend.to", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://ethereum.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://eth-mainnet.diamondswap.org/rpc", + "tracking": "limited", + "isOpenSource": false, + "provider": "DiamondSwap", + "isPublic": true + }, + { + "url": "https://ethereum-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://eth.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/eth", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/ethereum-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://ethereum.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://eth-mainnet-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://rpc.graffiti.farm", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/eth/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-ethereum-mainnet-reth.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/eth-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://rpc.flashbots.net/fast", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Flashbots", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/fast", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/noreverts", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/fullprivacy", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/eth", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://ethereum.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://api.securerpc.com/v1", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://mainnet.eth.cloud.ava.do", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereumnodelight.app.runonflux.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://main-light.eth.linkpool.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.mycryptoapi.com/eth", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.blocknative.com/boost", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://mainnet.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://virtual.mainnet.rpc.tenderly.co/7355b215-ef17-4e3e-8f64-d494284ef18a", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://virtual.mainnet.rpc.tenderly.co/5804dcf7-70e6-4988-b2b0-3672193e0c91", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/mainnet", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://eth-mainnet.nodereal.io/v1/1659dfb40aa24bbb8153a677b98064d7", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://virginia.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://uk.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://singapore.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://cloudflare-eth.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://openapi.bitstack.com/v1/wNFxbiJyQsSeLrX8RRCHi7NpRxrlErZk/DjShIqLishPCTB9HiMkPHXjUM9CNM9Na/ETH/mainnet", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://core.gashawk.io/rpc", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.eth.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.chain49.com/ethereum?api_key=14d1a8b86d8a4b4797938332394203dc", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://services.tokenview.io/vipapi/nodeservice/eth?apikey=qVHq2o6jpaakcw3lRstl", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth.nodeconnect.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereum-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://public-eth.nownodes.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth1.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/10.json b/data/rpcs/10.json new file mode 100644 index 0000000000..ecb93b581e --- /dev/null +++ b/data/rpcs/10.json @@ -0,0 +1,209 @@ +{ + "chainId": 10, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/op", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/op", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://optimism.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-op-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://optimism.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/op/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://optimism.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://optimism-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/optimism/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://optimism-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://optimism.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://optimism-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://optimism.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/optimism-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://optimism.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://opt-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/opt/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-optimism-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/opt-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://mainnet.optimism.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Optimism", + "isPublic": true + }, + { + "url": "https://optimism.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://opt-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://optimism.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/optimism", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://rpc.optimism.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://optimism-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://go.getblock.io/e8a75f8dcf614861becfbcb185be6eb4", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.buildbear.io/esquivelfabian", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://optimism.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/11155111.json b/data/rpcs/11155111.json new file mode 100644 index 0000000000..7e8315bc3e --- /dev/null +++ b/data/rpcs/11155111.json @@ -0,0 +1,195 @@ +{ + "chainId": 11155111, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/sep", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/sepolia", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/eth/sepolia/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://eth-sepolia-testnet.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://eth-sepolia.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://eth-sepolia.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/ethereum-sepolia", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://eth-sepolia-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://eth-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/sepolia/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/eth-sepolia", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://sepolia.drpc.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/eth/sepolia", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://rpc.sepolia.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Sepolia", + "isPublic": true + }, + { + "url": "https://rpc2.sepolia.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Sepolia", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://rpc.sepolia.ethpandaops.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-sepolia.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://sepolia.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/sepolia", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://sphinx.shardeum.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://dapps.shardeum.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/42161.json b/data/rpcs/42161.json new file mode 100644 index 0000000000..c150a251cf --- /dev/null +++ b/data/rpcs/42161.json @@ -0,0 +1,188 @@ +{ + "chainId": 42161, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/arb", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://arbitrum.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-arb-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://arbitrum.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/arbitrum/one/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://arb-one.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://arbitrum-one-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/arbitrum-one/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://arbitrum-one.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://arbitrum.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://arbitrum-one-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://arbitrum.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/arbitrum", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/arbitrum-one", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://arbitrum.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://arb-mainnet-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/arb/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-arbitrum-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/arb-one", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://arb1.arbitrum.io/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Arbitrum", + "isPublic": true + }, + { + "url": "https://arbitrum.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://arb-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://arbitrum.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://rpc.arb1.arbitrum.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://arb1.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://arb-one-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/56.json b/data/rpcs/56.json new file mode 100644 index 0000000000..94a2c39f08 --- /dev/null +++ b/data/rpcs/56.json @@ -0,0 +1,349 @@ +{ + "chainId": 56, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/bnb", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://bsc.blockrazor.xyz", + "tracking": "none", + "isOpenSource": false, + "provider": "BlockRazor", + "isPublic": true + }, + { + "url": "https://bsc.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-bsc-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://binance.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://bsc.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/bsc/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://bsc.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://bsc-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://rpc.polysplit.cloud/v1/chain/56", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc-bsc.48.club", + "tracking": "limited", + "isOpenSource": false, + "provider": "48 Club", + "isPublic": true + }, + { + "url": "https://0.48.club", + "tracking": "limited", + "isOpenSource": false, + "provider": "48 Club", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://bsc.blockpi.network/v1/rpc/private", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://binance-smart-chain-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://bnb.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/bsc", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/bsc-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://bsc.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://go.getblock.io/cc778cdbdf5c4b028ec9456e0e6c0cf3", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/bsc/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-bsc-mainnet-full.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/bsc-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://bsc-dataseed.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bnb.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed6.dict.life", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bscrpc.com", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc.rpcgator.com", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://nodes.vefinetwork.org/smartchain", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://binance.nodereal.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://services.tokenview.io/vipapi/nodeservice/bsc?apikey=gVFJX5OyPdc2kHH7youg", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://public-bsc.nownodes.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/8453.json b/data/rpcs/8453.json new file mode 100644 index 0000000000..c8f3808ac8 --- /dev/null +++ b/data/rpcs/8453.json @@ -0,0 +1,209 @@ +{ + "chainId": 8453, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/base", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://base.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://base.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://base.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/base/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://base.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://base-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://base-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://base.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://base-mainnet.diamondswap.org/rpc", + "tracking": "limited", + "isOpenSource": false, + "provider": "DiamondSwap", + "isPublic": true + }, + { + "url": "https://base-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://base.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/base", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/base-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://base.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/base/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-base-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/base-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://mainnet.base.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Base", + "isPublic": true + }, + { + "url": "https://developer-access-mainnet.base.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Base", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/base", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://base.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://li-fi-base.intustechno.workers.dev/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/base", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://base-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.numa.network/base", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] +} diff --git a/data/rpcs/97.json b/data/rpcs/97.json new file mode 100644 index 0000000000..9ae29eef6b --- /dev/null +++ b/data/rpcs/97.json @@ -0,0 +1,118 @@ +{ + "chainId": 97, + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://bsc-testnet.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/bsc/testnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://bsc-testnet-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://bsc-testnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://bnb-testnet.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/bsc-testnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://bsc-testnet.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://bsc-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/bsc-testnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s1.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s2.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s2.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s3.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s3.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsctestapi.terminet.io/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Terminet", + "isPublic": true + } + ] +} diff --git a/package.json b/package.json index 7d771b504d..764d14a16d 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "add-token": "tsx scripts/add-token.ts", "add-app": "tsx scripts/add-app.ts", "add-org": "tsx scripts/add-org.ts", + "import-rpcs": "tsx scripts/import-rpcs.ts", "lint": "biome check .", "format": "biome format --write ." }, diff --git a/schemas/rpc.schema.json b/schemas/rpc.schema.json new file mode 100644 index 0000000000..e9dda34fc9 --- /dev/null +++ b/schemas/rpc.schema.json @@ -0,0 +1,61 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://metadata.openscan.io/schemas/rpc.schema.json", + "title": "RPC Endpoints", + "description": "RPC endpoint metadata for blockchain networks. Each file contains endpoints for a single chain, including privacy tracking information and provider details.", + "type": "object", + "required": ["chainId", "endpoints"], + "properties": { + "chainId": { + "type": "integer", + "description": "Chain ID this RPC configuration belongs to" + }, + "updatedAt": { + "type": "string", + "format": "date", + "description": "Last update date (YYYY-MM-DD)" + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/rpcEndpoint" + }, + "description": "List of RPC endpoints" + } + }, + "definitions": { + "rpcEndpoint": { + "type": "object", + "required": ["url", "tracking", "isOpenSource", "provider", "isPublic"], + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "RPC endpoint URL (HTTP, HTTPS, or WSS)" + }, + "tracking": { + "type": "string", + "enum": ["none", "limited", "yes", "unspecified"], + "default": "unspecified", + "description": "Privacy tracking status: none (no tracking), limited (minimal tracking), yes (tracks users), unspecified (unknown)" + }, + "isOpenSource": { + "type": "boolean", + "description": "Whether the RPC provider is open source" + }, + "provider": { + "type": "string", + "maxLength": 64, + "description": "RPC provider name (e.g., 'Ankr', 'LlamaNodes', 'PublicNode')" + }, + "isPublic": { + "type": "boolean", + "default": true, + "description": "Whether this is a public endpoint (no API key required)" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false +} diff --git a/scripts/build.ts b/scripts/build.ts index bc71c63e18..b1ecd01151 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -12,6 +12,7 @@ interface BuildManifest { counts: { tokens: number; networks: number; + rpcs: number; apps: number; organizations: number; supporters: number; @@ -316,6 +317,63 @@ function buildNetworks(): number { return networks.length; } +function buildRpcs(): number { + const rpcsDir = path.join(ROOT_DIR, "data/rpcs"); + const distRpcsDir = path.join(DIST_DIR, "rpcs"); + ensureDir(distRpcsDir); + + let totalEndpoints = 0; + + if (!fs.existsSync(rpcsDir)) return totalEndpoints; + + const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); + const allRpcs: { chainId: number; endpointCount: number }[] = []; + + for (const rpcFile of rpcFiles) { + if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; + + const chainId = Number.parseInt(rpcFile.name.replace(".json", ""), 10); + if (Number.isNaN(chainId)) continue; + + const srcPath = path.join(rpcsDir, rpcFile.name); + const destPath = path.join(distRpcsDir, rpcFile.name); + + try { + const content = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + + // Copy individual chain RPC file + fs.copyFileSync(srcPath, destPath); + + const endpointCount = content.endpoints?.length || 0; + totalEndpoints += endpointCount; + allRpcs.push({ chainId, endpointCount }); + + console.log( + ` Built rpcs/${chainId}.json (${endpointCount} endpoints)`, + ); + } catch (e) { + console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + } + } + + // Write summary file + if (allRpcs.length > 0) { + const summary = { + updatedAt: new Date().toISOString(), + count: allRpcs.length, + totalEndpoints, + chains: allRpcs.sort((a, b) => a.chainId - b.chainId), + }; + + fs.writeFileSync( + path.join(distRpcsDir, "all.json"), + formatJson(summary), + ); + } + + return totalEndpoints; +} + function buildApps(): number { const appsDir = path.join(ROOT_DIR, "data/apps"); const apps = loadJsonFilesFromDir(appsDir); @@ -535,6 +593,7 @@ const addressCount = buildAddresses(); const eventCount = buildEvents(); const tokenCount = buildTokens(); const networkCount = buildNetworks(); +const rpcCount = buildRpcs(); const appCount = buildApps(); const orgCount = buildOrganizations(); const supporterCount = buildSupporters(); @@ -563,6 +622,7 @@ const manifest: BuildManifest = { counts: { tokens: tokenCount, networks: networkCount, + rpcs: rpcCount, apps: appCount, organizations: orgCount, supporters: supporterCount, @@ -579,6 +639,7 @@ console.log(` Addresses: ${addressCount}`); console.log(` Events: ${eventCount}`); console.log(` Tokens: ${tokenCount}`); console.log(` Networks: ${networkCount}`); +console.log(` RPCs: ${rpcCount} endpoints`); console.log(` Apps: ${appCount}`); console.log(` Organizations: ${orgCount}`); console.log(` Supporters: ${supporterCount}`); diff --git a/scripts/import-rpcs.ts b/scripts/import-rpcs.ts new file mode 100644 index 0000000000..9471aa433f --- /dev/null +++ b/scripts/import-rpcs.ts @@ -0,0 +1,150 @@ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const ROOT_DIR = path.resolve(__dirname, ".."); +const RPCS_DIR = path.join(ROOT_DIR, "data/rpcs"); + +// Chain IDs to import from chainlist +const SUPPORTED_CHAINS = [1, 10, 56, 97, 8453, 42161, 11155111]; + +interface ChainlistRpc { + url: string; + tracking?: string; + isOpenSource?: boolean; +} + +interface ChainlistNetwork { + chainId: number; + name: string; + rpc: ChainlistRpc[]; +} + +interface RpcEndpoint { + url: string; + tracking: string; + isOpenSource: boolean; + provider: string; + isPublic: boolean; +} + +// Map known RPC providers by URL patterns +function getProvider(url: string): string | undefined { + const patterns: Record = { + "llamarpc.com": "LlamaNodes", + "1rpc.io": "1RPC", + "publicnode.com": "PublicNode", + "meowrpc.com": "MeowRPC", + "drpc.org": "dRPC", + "omniatech.io": "Omnia", + "ankr.com": "Ankr", + "flashbots.net": "Flashbots", + "mevblocker.io": "MEV Blocker", + "blockrazor.xyz": "BlockRazor", + "pocket.network": "Pocket Network", + "subquery.network": "SubQuery", + "0xrpc.io": "0xRPC", + "stakely.io": "Stakely", + "alchemy.com": "Alchemy", + "infura.io": "Infura", + "quicknode.com": "QuickNode", + "blastapi.io": "Blast", + "nodies.app": "Nodies", + "unifra.io": "Unifra", + "blockpi.network": "BlockPI", + "zan.top": "ZAN", + "stackup.sh": "Stackup", + "onfinality.io": "OnFinality", + "therpc.io": "TheRPC", + "notadegen.com": "NotADegen", + "tenderly.co": "Tenderly", + "stateless.solutions": "Stateless", + "payload.de": "Payload", + "merkle.io": "Merkle", + "fastnode.io": "FastNode", + "poolz.finance": "Poolz", + "diamondswap.org": "DiamondSwap", + "bnbchain.org": "BNB Chain", + "optimism.io": "Optimism", + "arbitrum.io": "Arbitrum", + "base.org": "Base", + "sepolia.org": "Sepolia", + "terminet.io": "Terminet", + "48.club": "48 Club", + }; + + for (const [pattern, provider] of Object.entries(patterns)) { + if (url.includes(pattern)) { + return provider; + } + } + return undefined; +} + +async function importFromChainlist(): Promise { + console.log("Fetching RPC data from chainlist.org...\n"); + + const response = await fetch("https://chainlist.org/rpcs.json"); + if (!response.ok) { + throw new Error(`Failed to fetch: ${response.status} ${response.statusText}`); + } + + const networks: ChainlistNetwork[] = await response.json(); + + if (!fs.existsSync(RPCS_DIR)) { + fs.mkdirSync(RPCS_DIR, { recursive: true }); + } + + for (const chainId of SUPPORTED_CHAINS) { + const network = networks.find((n) => n.chainId === chainId); + + if (!network) { + console.log(` Chain ${chainId}: Not found in chainlist`); + continue; + } + + // Filter to public HTTP/HTTPS endpoints only (skip WebSocket) + const endpoints: RpcEndpoint[] = network.rpc + .filter((rpc) => { + const url = rpc.url; + return ( + (url.startsWith("https://") || url.startsWith("http://")) && + !url.includes("${") // Exclude template URLs with API keys + ); + }) + .map((rpc) => ({ + url: rpc.url, + tracking: rpc.tracking || "unspecified", + isOpenSource: rpc.isOpenSource ?? false, + provider: getProvider(rpc.url) || "Unknown", + isPublic: true, + })); + + // Sort: prefer tracking "none" first, then by provider name + endpoints.sort((a, b) => { + const trackingOrder = { none: 0, limited: 1, unspecified: 2, yes: 3 }; + const aOrder = trackingOrder[a.tracking as keyof typeof trackingOrder] ?? 2; + const bOrder = trackingOrder[b.tracking as keyof typeof trackingOrder] ?? 2; + if (aOrder !== bOrder) return aOrder - bOrder; + return (a.provider || "").localeCompare(b.provider || ""); + }); + + const output = { + chainId, + updatedAt: new Date().toISOString().split("T")[0], + endpoints, + }; + + const filePath = path.join(RPCS_DIR, `${chainId}.json`); + fs.writeFileSync(filePath, JSON.stringify(output, null, 2) + "\n"); + console.log(` Chain ${chainId} (${network.name}): Imported ${endpoints.length} endpoints`); + } + + console.log("\nImport complete!"); +} + +importFromChainlist().catch((e) => { + console.error("Import failed:", e); + process.exit(1); +}); diff --git a/scripts/validate.ts b/scripts/validate.ts index 38a0a1a51c..8165c25512 100644 --- a/scripts/validate.ts +++ b/scripts/validate.ts @@ -41,6 +41,9 @@ const eventSchema = JSON.parse( const addressSchema = JSON.parse( fs.readFileSync(path.join(ROOT_DIR, "schemas/address.schema.json"), "utf-8"), ); +const rpcSchema = JSON.parse( + fs.readFileSync(path.join(ROOT_DIR, "schemas/rpc.schema.json"), "utf-8") +); const validateToken = ajv.compile(tokenSchema); const validateNetwork = ajv.compile(networkSchema); @@ -50,6 +53,7 @@ const validateSupporter = ajv.compile(supporterSchema); const validateDonation = ajv.compile(donationSchema); const validateEvent = ajv.compile(eventSchema); const validateAddress = ajv.compile(addressSchema); +const validateRpc = ajv.compile(rpcSchema); interface ValidationResult { file: string; @@ -403,6 +407,80 @@ if (fs.existsSync(donationsFile)) { checkDuplicates(); +// Validate RPC files +const rpcsDir = path.join(ROOT_DIR, "data/rpcs"); +if (fs.existsSync(rpcsDir)) { + const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); + + for (const rpcFile of rpcFiles) { + if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; + + const filePath = path.join(rpcsDir, rpcFile.name); + const expectedChainId = parseInt(rpcFile.name.replace(".json", ""), 10); + + try { + const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); + const isValid = validateRpc(content); + + if (!isValid) { + results.push({ + file: filePath, + valid: false, + errors: validateRpc.errors?.map( + (e) => `${e.instancePath} ${e.message}` + ), + }); + } else { + const additionalErrors: string[] = []; + + // Check chainId matches filename + if (!isNaN(expectedChainId) && content.chainId !== expectedChainId) { + additionalErrors.push( + `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}` + ); + } + + // Check for duplicate URLs + const urls = new Set(); + for (const endpoint of content.endpoints || []) { + if (urls.has(endpoint.url)) { + additionalErrors.push(`Duplicate RPC URL: ${endpoint.url}`); + } + urls.add(endpoint.url); + } + + // Validate URL protocols + for (const endpoint of content.endpoints || []) { + const url = endpoint.url; + if (!url.startsWith("https://") && !url.startsWith("wss://") && !url.startsWith("http://")) { + additionalErrors.push(`Invalid URL protocol: ${url}`); + } + // WebSocket endpoints should use wss:// or ws:// + if (endpoint.isWebSocket && !url.startsWith("wss://") && !url.startsWith("ws://")) { + additionalErrors.push(`WebSocket endpoint should use ws(s):// protocol: ${url}`); + } + } + + if (additionalErrors.length > 0) { + results.push({ + file: filePath, + valid: false, + errors: additionalErrors, + }); + } else { + results.push({ file: filePath, valid: true }); + } + } + } catch (e) { + results.push({ + file: filePath, + valid: false, + errors: [`Failed to parse JSON: ${e}`], + }); + } + } +} + // Validate events files const eventsDir = path.join(ROOT_DIR, "data/events"); if (fs.existsSync(eventsDir)) { From 18bd799cb40a3b4664848e3408135961d3e3ccb3 Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Thu, 12 Feb 2026 12:38:44 -0300 Subject: [PATCH 2/7] feat: Align RPC metadata with CAIP-2 network identifiers Add networkId (CAIP-2 string, e.g. "eip155:1") to RPC schema, data files, and build output. Replace hardcoded SUPPORTED_CHAINS in import script with dynamic derivation from data/networks.json. Add networkId consistency validation for EVM chains. --- data/rpcs/1.json | 1003 ++++++++++++++++++++------------------- data/rpcs/10.json | 415 ++++++++-------- data/rpcs/11155111.json | 387 +++++++-------- data/rpcs/42161.json | 373 +++++++-------- data/rpcs/56.json | 695 +++++++++++++-------------- data/rpcs/8453.json | 415 ++++++++-------- data/rpcs/97.json | 233 ++++----- schemas/rpc.schema.json | 123 ++--- scripts/build.ts | 21 +- scripts/import-rpcs.ts | 275 ++++++----- scripts/validate.ts | 166 ++++--- 11 files changed, 2088 insertions(+), 2018 deletions(-) diff --git a/data/rpcs/1.json b/data/rpcs/1.json index 7ecc512715..85e18818ad 100644 --- a/data/rpcs/1.json +++ b/data/rpcs/1.json @@ -1,503 +1,504 @@ { - "chainId": 1, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://0xrpc.io/eth", - "tracking": "none", - "isOpenSource": false, - "provider": "0xRPC", - "isPublic": true - }, - { - "url": "https://1rpc.io/eth", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://eth.blockrazor.xyz", - "tracking": "none", - "isOpenSource": false, - "provider": "BlockRazor", - "isPublic": true - }, - { - "url": "https://eth.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://rpc.flashbots.net", - "tracking": "none", - "isOpenSource": false, - "provider": "Flashbots", - "isPublic": true - }, - { - "url": "https://eth.llamarpc.com", - "tracking": "none", - "isOpenSource": true, - "provider": "LlamaNodes", - "isPublic": true - }, - { - "url": "https://eth.meowrpc.com", - "tracking": "none", - "isOpenSource": false, - "provider": "MeowRPC", - "isPublic": true - }, - { - "url": "https://eth.merkle.io", - "tracking": "none", - "isOpenSource": false, - "provider": "Merkle", - "isPublic": true - }, - { - "url": "https://rpc.mevblocker.io", - "tracking": "none", - "isOpenSource": false, - "provider": "MEV Blocker", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/eth/mainnet/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://rpc.payload.de", - "tracking": "none", - "isOpenSource": false, - "provider": "Payload", - "isPublic": true - }, - { - "url": "https://eth.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://ethereum-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://ethereum-json-rpc.stakely.io", - "tracking": "none", - "isOpenSource": false, - "provider": "Stakely", - "isPublic": true - }, - { - "url": "https://api.stateless.solutions/ethereum/v1/demo", - "tracking": "none", - "isOpenSource": false, - "provider": "Stateless", - "isPublic": true - }, - { - "url": "https://go.getblock.io/aefd01aa907c4805ba3c00a9e5b48c6b", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.builder0x69.io", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zmok.io/mainnet/oaen6dy8ff6hju9k", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.lokibuilder.xyz/wallet", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.polysplit.cloud/v1/chain/1", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.nodifi.ai/api/rpc/free", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.public.curie.radiumblock.co/http/ethereum", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.public.curie.radiumblock.co/ws/ethereum", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.fullsend.to", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth-mainnet.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://ethereum.public.blockpi.network/v1/rpc/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "BlockPI", - "isPublic": true - }, - { - "url": "https://eth-mainnet.diamondswap.org/rpc", - "tracking": "limited", - "isOpenSource": false, - "provider": "DiamondSwap", - "isPublic": true - }, - { - "url": "https://ethereum-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://eth.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://rpc.poolz.finance/eth", - "tracking": "limited", - "isOpenSource": false, - "provider": "Poolz", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/ethereum-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://ethereum.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://eth-mainnet-public.unifra.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unifra", - "isPublic": true - }, - { - "url": "https://rpc.graffiti.farm", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/eth/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api-ethereum-mainnet-reth.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/eth-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://rpc.flashbots.net/fast", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Flashbots", - "isPublic": true - }, - { - "url": "https://rpc.mevblocker.io/fast", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "MEV Blocker", - "isPublic": true - }, - { - "url": "https://rpc.mevblocker.io/noreverts", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "MEV Blocker", - "isPublic": true - }, - { - "url": "https://rpc.mevblocker.io/fullprivacy", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "MEV Blocker", - "isPublic": true - }, - { - "url": "https://rpc.notadegen.com/eth", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "NotADegen", - "isPublic": true - }, - { - "url": "https://ethereum.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://api.securerpc.com/v1", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://mainnet.eth.cloud.ava.do", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://ethereumnodelight.app.runonflux.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://main-light.eth.linkpool.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.mycryptoapi.com/eth", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.blocknative.com/boost", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth-mainnet.g.alchemy.com/v2/demo", - "tracking": "yes", - "isOpenSource": false, - "provider": "Alchemy", - "isPublic": true - }, - { - "url": "https://mainnet.gateway.tenderly.co", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://virtual.mainnet.rpc.tenderly.co/7355b215-ef17-4e3e-8f64-d494284ef18a", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://virtual.mainnet.rpc.tenderly.co/5804dcf7-70e6-4988-b2b0-3672193e0c91", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://gateway.tenderly.co/public/mainnet", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://eth-mainnet.nodereal.io/v1/1659dfb40aa24bbb8153a677b98064d7", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://virginia.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://uk.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://singapore.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://cloudflare-eth.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://openapi.bitstack.com/v1/wNFxbiJyQsSeLrX8RRCHi7NpRxrlErZk/DjShIqLishPCTB9HiMkPHXjUM9CNM9Na/ETH/mainnet", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://core.gashawk.io/rpc", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.eth.gateway.fm", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.chain49.com/ethereum?api_key=14d1a8b86d8a4b4797938332394203dc", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://services.tokenview.io/vipapi/nodeservice/eth?apikey=qVHq2o6jpaakcw3lRstl", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth.nodeconnect.org", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://ethereum-mainnet.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://public-eth.nownodes.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth1.lava.build", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 1, + "networkId": "eip155:1", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/eth", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/eth", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://eth.blockrazor.xyz", + "tracking": "none", + "isOpenSource": false, + "provider": "BlockRazor", + "isPublic": true + }, + { + "url": "https://eth.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://rpc.flashbots.net", + "tracking": "none", + "isOpenSource": false, + "provider": "Flashbots", + "isPublic": true + }, + { + "url": "https://eth.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://eth.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://eth.merkle.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Merkle", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io", + "tracking": "none", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/eth/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://rpc.payload.de", + "tracking": "none", + "isOpenSource": false, + "provider": "Payload", + "isPublic": true + }, + { + "url": "https://eth.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://ethereum-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://ethereum-json-rpc.stakely.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Stakely", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/ethereum/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://go.getblock.io/aefd01aa907c4805ba3c00a9e5b48c6b", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.builder0x69.io", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zmok.io/mainnet/oaen6dy8ff6hju9k", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.lokibuilder.xyz/wallet", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.polysplit.cloud/v1/chain/1", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.nodifi.ai/api/rpc/free", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.public.curie.radiumblock.co/http/ethereum", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.public.curie.radiumblock.co/ws/ethereum", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.fullsend.to", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://ethereum.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://eth-mainnet.diamondswap.org/rpc", + "tracking": "limited", + "isOpenSource": false, + "provider": "DiamondSwap", + "isPublic": true + }, + { + "url": "https://ethereum-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://eth.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/eth", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/ethereum-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://ethereum.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://eth-mainnet-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://rpc.graffiti.farm", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/eth/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-ethereum-mainnet-reth.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/eth-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://rpc.flashbots.net/fast", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Flashbots", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/fast", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/noreverts", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.mevblocker.io/fullprivacy", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "MEV Blocker", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/eth", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://ethereum.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://api.securerpc.com/v1", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://mainnet.eth.cloud.ava.do", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereumnodelight.app.runonflux.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://main-light.eth.linkpool.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.mycryptoapi.com/eth", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.blocknative.com/boost", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://mainnet.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://virtual.mainnet.rpc.tenderly.co/7355b215-ef17-4e3e-8f64-d494284ef18a", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://virtual.mainnet.rpc.tenderly.co/5804dcf7-70e6-4988-b2b0-3672193e0c91", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/mainnet", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://eth-mainnet.nodereal.io/v1/1659dfb40aa24bbb8153a677b98064d7", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://virginia.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://uk.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://singapore.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://cloudflare-eth.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://openapi.bitstack.com/v1/wNFxbiJyQsSeLrX8RRCHi7NpRxrlErZk/DjShIqLishPCTB9HiMkPHXjUM9CNM9Na/ETH/mainnet", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://core.gashawk.io/rpc", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.eth.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.chain49.com/ethereum?api_key=14d1a8b86d8a4b4797938332394203dc", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://services.tokenview.io/vipapi/nodeservice/eth?apikey=qVHq2o6jpaakcw3lRstl", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth.nodeconnect.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereum-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://public-eth.nownodes.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth1.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/10.json b/data/rpcs/10.json index ecb93b581e..289abfcc9c 100644 --- a/data/rpcs/10.json +++ b/data/rpcs/10.json @@ -1,209 +1,210 @@ { - "chainId": 10, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://0xrpc.io/op", - "tracking": "none", - "isOpenSource": false, - "provider": "0xRPC", - "isPublic": true - }, - { - "url": "https://1rpc.io/op", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://optimism.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://public-op-mainnet.fastnode.io", - "tracking": "none", - "isOpenSource": false, - "provider": "FastNode", - "isPublic": true - }, - { - "url": "https://optimism.meowrpc.com", - "tracking": "none", - "isOpenSource": false, - "provider": "MeowRPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/op/mainnet/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://optimism.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://optimism-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://api.stateless.solutions/optimism/v1/demo", - "tracking": "none", - "isOpenSource": false, - "provider": "Stateless", - "isPublic": true - }, - { - "url": "https://optimism-mainnet.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://optimism.public.blockpi.network/v1/rpc/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "BlockPI", - "isPublic": true - }, - { - "url": "https://optimism-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://optimism.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/optimism-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://optimism.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://opt-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/opt/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api-optimism-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/opt-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://mainnet.optimism.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Optimism", - "isPublic": true - }, - { - "url": "https://optimism.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://opt-mainnet.g.alchemy.com/v2/demo", - "tracking": "yes", - "isOpenSource": false, - "provider": "Alchemy", - "isPublic": true - }, - { - "url": "https://optimism.gateway.tenderly.co", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://gateway.tenderly.co/public/optimism", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://rpc.optimism.gateway.fm", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://optimism-mainnet.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://go.getblock.io/e8a75f8dcf614861becfbcb185be6eb4", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.buildbear.io/esquivelfabian", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://optimism.lava.build", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 10, + "networkId": "eip155:10", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/op", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/op", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://optimism.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-op-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://optimism.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/op/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://optimism.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://optimism-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/optimism/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://optimism-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://optimism.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://optimism-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://optimism.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/optimism-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://optimism.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://opt-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/opt/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-optimism-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/opt-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://mainnet.optimism.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Optimism", + "isPublic": true + }, + { + "url": "https://optimism.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://opt-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://optimism.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/optimism", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://rpc.optimism.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://optimism-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://go.getblock.io/e8a75f8dcf614861becfbcb185be6eb4", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.buildbear.io/esquivelfabian", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://optimism.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/11155111.json b/data/rpcs/11155111.json index 7e8315bc3e..c78bcef602 100644 --- a/data/rpcs/11155111.json +++ b/data/rpcs/11155111.json @@ -1,195 +1,196 @@ { - "chainId": 11155111, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://0xrpc.io/sep", - "tracking": "none", - "isOpenSource": false, - "provider": "0xRPC", - "isPublic": true - }, - { - "url": "https://1rpc.io/sepolia", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/eth/sepolia/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://eth-sepolia-testnet.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://ethereum-sepolia-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://eth-sepolia.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://ethereum-sepolia-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://eth-sepolia.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/ethereum-sepolia", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://ethereum-sepolia.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://eth-sepolia-public.unifra.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unifra", - "isPublic": true - }, - { - "url": "https://eth-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/sepolia/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/eth-sepolia", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Alchemy", - "isPublic": true - }, - { - "url": "https://sepolia.drpc.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://rpc.notadegen.com/eth/sepolia", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "NotADegen", - "isPublic": true - }, - { - "url": "https://rpc.sepolia.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Sepolia", - "isPublic": true - }, - { - "url": "https://rpc2.sepolia.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Sepolia", - "isPublic": true - }, - { - "url": "https://ethereum-sepolia.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://rpc.sepolia.ethpandaops.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://eth-sepolia.g.alchemy.com/v2/demo", - "tracking": "yes", - "isOpenSource": false, - "provider": "Alchemy", - "isPublic": true - }, - { - "url": "https://sepolia.gateway.tenderly.co", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://gateway.tenderly.co/public/sepolia", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://sphinx.shardeum.org", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://dapps.shardeum.org", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://ethereum-sepolia.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 11155111, + "networkId": "eip155:11155111", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://0xrpc.io/sep", + "tracking": "none", + "isOpenSource": false, + "provider": "0xRPC", + "isPublic": true + }, + { + "url": "https://1rpc.io/sepolia", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/eth/sepolia/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://eth-sepolia-testnet.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://eth-sepolia.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://eth-sepolia.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/ethereum-sepolia", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://eth-sepolia-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://eth-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/sepolia/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/eth-sepolia", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://sepolia.drpc.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/eth/sepolia", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://rpc.sepolia.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Sepolia", + "isPublic": true + }, + { + "url": "https://rpc2.sepolia.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Sepolia", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://rpc.sepolia.ethpandaops.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://eth-sepolia.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://sepolia.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/sepolia", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://sphinx.shardeum.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://dapps.shardeum.org", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://ethereum-sepolia.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/42161.json b/data/rpcs/42161.json index c150a251cf..0a9fc9cda8 100644 --- a/data/rpcs/42161.json +++ b/data/rpcs/42161.json @@ -1,188 +1,189 @@ { - "chainId": 42161, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://1rpc.io/arb", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://arbitrum.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://public-arb-mainnet.fastnode.io", - "tracking": "none", - "isOpenSource": false, - "provider": "FastNode", - "isPublic": true - }, - { - "url": "https://arbitrum.meowrpc.com", - "tracking": "none", - "isOpenSource": false, - "provider": "MeowRPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/arbitrum/one/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://arb-one.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://arbitrum-one-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://api.stateless.solutions/arbitrum-one/v1/demo", - "tracking": "none", - "isOpenSource": false, - "provider": "Stateless", - "isPublic": true - }, - { - "url": "https://arbitrum-one.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://arbitrum.public.blockpi.network/v1/rpc/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "BlockPI", - "isPublic": true - }, - { - "url": "https://arbitrum-one-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://arbitrum.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://rpc.poolz.finance/arbitrum", - "tracking": "limited", - "isOpenSource": false, - "provider": "Poolz", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/arbitrum-one", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://arbitrum.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://arb-mainnet-public.unifra.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unifra", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/arb/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api-arbitrum-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/arb-one", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://arb1.arbitrum.io/rpc", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Arbitrum", - "isPublic": true - }, - { - "url": "https://arbitrum.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://arb-mainnet.g.alchemy.com/v2/demo", - "tracking": "yes", - "isOpenSource": false, - "provider": "Alchemy", - "isPublic": true - }, - { - "url": "https://arbitrum.gateway.tenderly.co", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://rpc.arb1.arbitrum.gateway.fm", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://arb1.lava.build", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://arb-one-mainnet.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 42161, + "networkId": "eip155:42161", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/arb", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://arbitrum.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-arb-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://arbitrum.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/arbitrum/one/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://arb-one.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://arbitrum-one-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://api.stateless.solutions/arbitrum-one/v1/demo", + "tracking": "none", + "isOpenSource": false, + "provider": "Stateless", + "isPublic": true + }, + { + "url": "https://arbitrum-one.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://arbitrum.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://arbitrum-one-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://arbitrum.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/arbitrum", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/arbitrum-one", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://arbitrum.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://arb-mainnet-public.unifra.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unifra", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/arb/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-arbitrum-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/arb-one", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://arb1.arbitrum.io/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Arbitrum", + "isPublic": true + }, + { + "url": "https://arbitrum.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://arb-mainnet.g.alchemy.com/v2/demo", + "tracking": "yes", + "isOpenSource": false, + "provider": "Alchemy", + "isPublic": true + }, + { + "url": "https://arbitrum.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://rpc.arb1.arbitrum.gateway.fm", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://arb1.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://arb-one-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/56.json b/data/rpcs/56.json index 94a2c39f08..aae0a45e66 100644 --- a/data/rpcs/56.json +++ b/data/rpcs/56.json @@ -1,349 +1,350 @@ { - "chainId": 56, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://1rpc.io/bnb", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://bsc.blockrazor.xyz", - "tracking": "none", - "isOpenSource": false, - "provider": "BlockRazor", - "isPublic": true - }, - { - "url": "https://bsc.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://public-bsc-mainnet.fastnode.io", - "tracking": "none", - "isOpenSource": false, - "provider": "FastNode", - "isPublic": true - }, - { - "url": "https://binance.llamarpc.com", - "tracking": "none", - "isOpenSource": true, - "provider": "LlamaNodes", - "isPublic": true - }, - { - "url": "https://bsc.meowrpc.com", - "tracking": "none", - "isOpenSource": false, - "provider": "MeowRPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/bsc/mainnet/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://bsc.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://bsc-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://rpc.polysplit.cloud/v1/chain/56", - "tracking": "none", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc-bsc.48.club", - "tracking": "limited", - "isOpenSource": false, - "provider": "48 Club", - "isPublic": true - }, - { - "url": "https://0.48.club", - "tracking": "limited", - "isOpenSource": false, - "provider": "48 Club", - "isPublic": true - }, - { - "url": "https://bsc-mainnet.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://bsc.blockpi.network/v1/rpc/private", - "tracking": "limited", - "isOpenSource": false, - "provider": "BlockPI", - "isPublic": true - }, - { - "url": "https://binance-smart-chain-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://bnb.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://rpc.poolz.finance/bsc", - "tracking": "limited", - "isOpenSource": false, - "provider": "Poolz", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/bsc-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://bsc.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://go.getblock.io/cc778cdbdf5c4b028ec9456e0e6c0cf3", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/bsc/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api-bsc-mainnet-full.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/bsc-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://bsc-dataseed.bnbchain.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bsc-dataseed1.bnbchain.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bsc-dataseed2.bnbchain.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bsc-dataseed3.bnbchain.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bsc-dataseed4.bnbchain.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bnb.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://bsc-dataseed1.defibit.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed1.ninicoin.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed2.defibit.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed3.defibit.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed4.defibit.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed2.ninicoin.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed3.ninicoin.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed4.ninicoin.io", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-dataseed6.dict.life", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bscrpc.com", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc.rpcgator.com", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://nodes.vefinetwork.org/smartchain", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://binance.nodereal.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://services.tokenview.io/vipapi/nodeservice/bsc?apikey=gVFJX5OyPdc2kHH7youg", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://bsc-mainnet.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://public-bsc.nownodes.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 56, + "networkId": "eip155:56", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/bnb", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://bsc.blockrazor.xyz", + "tracking": "none", + "isOpenSource": false, + "provider": "BlockRazor", + "isPublic": true + }, + { + "url": "https://bsc.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://public-bsc-mainnet.fastnode.io", + "tracking": "none", + "isOpenSource": false, + "provider": "FastNode", + "isPublic": true + }, + { + "url": "https://binance.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://bsc.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/bsc/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://bsc.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://bsc-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://rpc.polysplit.cloud/v1/chain/56", + "tracking": "none", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc-bsc.48.club", + "tracking": "limited", + "isOpenSource": false, + "provider": "48 Club", + "isPublic": true + }, + { + "url": "https://0.48.club", + "tracking": "limited", + "isOpenSource": false, + "provider": "48 Club", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://bsc.blockpi.network/v1/rpc/private", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://binance-smart-chain-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://bnb.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/bsc", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/bsc-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://bsc.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://go.getblock.io/cc778cdbdf5c4b028ec9456e0e6c0cf3", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/bsc/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-bsc-mainnet-full.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/bsc-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://bsc-dataseed.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.bnbchain.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bnb.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed1.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.defibit.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed2.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed3.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed4.ninicoin.io", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-dataseed6.dict.life", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bscrpc.com", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc.rpcgator.com", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.rpcfast.com?api_key=xbhWBI1Wkguk8SNMu1bvvLurPGLXmgwYeC4S6g2H7WdwFigZSmPWVZRxrskEQwIf", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://nodes.vefinetwork.org/smartchain", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://binance.nodereal.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://services.tokenview.io/vipapi/nodeservice/bsc?apikey=gVFJX5OyPdc2kHH7youg", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://bsc-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://public-bsc.nownodes.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/8453.json b/data/rpcs/8453.json index c8f3808ac8..7c2670ef8a 100644 --- a/data/rpcs/8453.json +++ b/data/rpcs/8453.json @@ -1,209 +1,210 @@ { - "chainId": 8453, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://1rpc.io/base", - "tracking": "none", - "isOpenSource": false, - "provider": "1RPC", - "isPublic": true - }, - { - "url": "https://base.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://base.llamarpc.com", - "tracking": "none", - "isOpenSource": true, - "provider": "LlamaNodes", - "isPublic": true - }, - { - "url": "https://base.meowrpc.com", - "tracking": "none", - "isOpenSource": false, - "provider": "MeowRPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/base/mainnet/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://base.api.pocket.network", - "tracking": "none", - "isOpenSource": false, - "provider": "Pocket Network", - "isPublic": true - }, - { - "url": "https://base-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://base-mainnet.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://base.public.blockpi.network/v1/rpc/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "BlockPI", - "isPublic": true - }, - { - "url": "https://base-mainnet.diamondswap.org/rpc", - "tracking": "limited", - "isOpenSource": false, - "provider": "DiamondSwap", - "isPublic": true - }, - { - "url": "https://base-public.nodies.app", - "tracking": "limited", - "isOpenSource": false, - "provider": "Nodies", - "isPublic": true - }, - { - "url": "https://base.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://rpc.poolz.finance/base", - "tracking": "limited", - "isOpenSource": false, - "provider": "Poolz", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/base-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://base.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://rpc.owlracle.info/base/70d38ce1826c4a60bb2a8e05a6c8b20f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api-base-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/base-mainnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://mainnet.base.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Base", - "isPublic": true - }, - { - "url": "https://developer-access-mainnet.base.org", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Base", - "isPublic": true - }, - { - "url": "https://rpc.notadegen.com/base", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "NotADegen", - "isPublic": true - }, - { - "url": "https://base.rpc.subquery.network/public", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "SubQuery", - "isPublic": true - }, - { - "url": "https://li-fi-base.intustechno.workers.dev/rpc", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://base.gateway.tenderly.co", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://gateway.tenderly.co/public/base", - "tracking": "yes", - "isOpenSource": false, - "provider": "Tenderly", - "isPublic": true - }, - { - "url": "https://base-mainnet.gateway.tatum.io", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://base.lava.build", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://rpc.numa.network/base", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://base.rpc.blxrbdn.com", - "tracking": "yes", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - } - ] + "chainId": 8453, + "networkId": "eip155:8453", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://1rpc.io/base", + "tracking": "none", + "isOpenSource": false, + "provider": "1RPC", + "isPublic": true + }, + { + "url": "https://base.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://base.llamarpc.com", + "tracking": "none", + "isOpenSource": true, + "provider": "LlamaNodes", + "isPublic": true + }, + { + "url": "https://base.meowrpc.com", + "tracking": "none", + "isOpenSource": false, + "provider": "MeowRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/base/mainnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://base.api.pocket.network", + "tracking": "none", + "isOpenSource": false, + "provider": "Pocket Network", + "isPublic": true + }, + { + "url": "https://base-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://base-mainnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://base.public.blockpi.network/v1/rpc/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "BlockPI", + "isPublic": true + }, + { + "url": "https://base-mainnet.diamondswap.org/rpc", + "tracking": "limited", + "isOpenSource": false, + "provider": "DiamondSwap", + "isPublic": true + }, + { + "url": "https://base-public.nodies.app", + "tracking": "limited", + "isOpenSource": false, + "provider": "Nodies", + "isPublic": true + }, + { + "url": "https://base.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://rpc.poolz.finance/base", + "tracking": "limited", + "isOpenSource": false, + "provider": "Poolz", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/base-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://base.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://rpc.owlracle.info/base/70d38ce1826c4a60bb2a8e05a6c8b20f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api-base-mainnet-archive.n.dwellir.com/2ccf18bf-2916-4198-8856-42172854353c", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/base-mainnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://mainnet.base.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Base", + "isPublic": true + }, + { + "url": "https://developer-access-mainnet.base.org", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Base", + "isPublic": true + }, + { + "url": "https://rpc.notadegen.com/base", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "NotADegen", + "isPublic": true + }, + { + "url": "https://base.rpc.subquery.network/public", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "SubQuery", + "isPublic": true + }, + { + "url": "https://li-fi-base.intustechno.workers.dev/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.gateway.tenderly.co", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://gateway.tenderly.co/public/base", + "tracking": "yes", + "isOpenSource": false, + "provider": "Tenderly", + "isPublic": true + }, + { + "url": "https://base-mainnet.gateway.tatum.io", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.lava.build", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://rpc.numa.network/base", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://base.rpc.blxrbdn.com", + "tracking": "yes", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + } + ] } diff --git a/data/rpcs/97.json b/data/rpcs/97.json index 9ae29eef6b..056a1d8a48 100644 --- a/data/rpcs/97.json +++ b/data/rpcs/97.json @@ -1,118 +1,119 @@ { - "chainId": 97, - "updatedAt": "2025-12-29", - "endpoints": [ - { - "url": "https://bsc-testnet.drpc.org", - "tracking": "none", - "isOpenSource": false, - "provider": "dRPC", - "isPublic": true - }, - { - "url": "https://endpoints.omniatech.io/v1/bsc/testnet/public", - "tracking": "none", - "isOpenSource": false, - "provider": "Omnia", - "isPublic": true - }, - { - "url": "https://bsc-testnet-rpc.publicnode.com", - "tracking": "none", - "isOpenSource": false, - "provider": "PublicNode", - "isPublic": true - }, - { - "url": "https://bsc-testnet.public.blastapi.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "Blast", - "isPublic": true - }, - { - "url": "https://bnb-testnet.api.onfinality.io/public", - "tracking": "limited", - "isOpenSource": false, - "provider": "OnFinality", - "isPublic": true - }, - { - "url": "https://public.stackup.sh/api/v1/node/bsc-testnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "Stackup", - "isPublic": true - }, - { - "url": "https://bsc-testnet.therpc.io", - "tracking": "limited", - "isOpenSource": false, - "provider": "TheRPC", - "isPublic": true - }, - { - "url": "https://bsc-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", - "tracking": "limited", - "isOpenSource": false, - "provider": "Unknown", - "isPublic": true - }, - { - "url": "https://api.zan.top/bsc-testnet", - "tracking": "limited", - "isOpenSource": false, - "provider": "ZAN", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-2-s1.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-1-s2.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-2-s2.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-1-s3.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://data-seed-prebsc-2-s3.bnbchain.org:8545", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "BNB Chain", - "isPublic": true - }, - { - "url": "https://bsctestapi.terminet.io/rpc", - "tracking": "unspecified", - "isOpenSource": false, - "provider": "Terminet", - "isPublic": true - } - ] + "chainId": 97, + "networkId": "eip155:97", + "updatedAt": "2025-12-29", + "endpoints": [ + { + "url": "https://bsc-testnet.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + }, + { + "url": "https://endpoints.omniatech.io/v1/bsc/testnet/public", + "tracking": "none", + "isOpenSource": false, + "provider": "Omnia", + "isPublic": true + }, + { + "url": "https://bsc-testnet-rpc.publicnode.com", + "tracking": "none", + "isOpenSource": false, + "provider": "PublicNode", + "isPublic": true + }, + { + "url": "https://bsc-testnet.public.blastapi.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "Blast", + "isPublic": true + }, + { + "url": "https://bnb-testnet.api.onfinality.io/public", + "tracking": "limited", + "isOpenSource": false, + "provider": "OnFinality", + "isPublic": true + }, + { + "url": "https://public.stackup.sh/api/v1/node/bsc-testnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "Stackup", + "isPublic": true + }, + { + "url": "https://bsc-testnet.therpc.io", + "tracking": "limited", + "isOpenSource": false, + "provider": "TheRPC", + "isPublic": true + }, + { + "url": "https://bsc-testnet.4everland.org/v1/37fa9972c1b1cd5fab542c7bdd4cde2f", + "tracking": "limited", + "isOpenSource": false, + "provider": "Unknown", + "isPublic": true + }, + { + "url": "https://api.zan.top/bsc-testnet", + "tracking": "limited", + "isOpenSource": false, + "provider": "ZAN", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s1.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s1.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s2.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s2.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-1-s3.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://data-seed-prebsc-2-s3.bnbchain.org:8545", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "BNB Chain", + "isPublic": true + }, + { + "url": "https://bsctestapi.terminet.io/rpc", + "tracking": "unspecified", + "isOpenSource": false, + "provider": "Terminet", + "isPublic": true + } + ] } diff --git a/schemas/rpc.schema.json b/schemas/rpc.schema.json index e9dda34fc9..520f498c20 100644 --- a/schemas/rpc.schema.json +++ b/schemas/rpc.schema.json @@ -1,61 +1,66 @@ { - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "https://metadata.openscan.io/schemas/rpc.schema.json", - "title": "RPC Endpoints", - "description": "RPC endpoint metadata for blockchain networks. Each file contains endpoints for a single chain, including privacy tracking information and provider details.", - "type": "object", - "required": ["chainId", "endpoints"], - "properties": { - "chainId": { - "type": "integer", - "description": "Chain ID this RPC configuration belongs to" - }, - "updatedAt": { - "type": "string", - "format": "date", - "description": "Last update date (YYYY-MM-DD)" - }, - "endpoints": { - "type": "array", - "items": { - "$ref": "#/definitions/rpcEndpoint" - }, - "description": "List of RPC endpoints" - } - }, - "definitions": { - "rpcEndpoint": { - "type": "object", - "required": ["url", "tracking", "isOpenSource", "provider", "isPublic"], - "properties": { - "url": { - "type": "string", - "format": "uri", - "description": "RPC endpoint URL (HTTP, HTTPS, or WSS)" - }, - "tracking": { - "type": "string", - "enum": ["none", "limited", "yes", "unspecified"], - "default": "unspecified", - "description": "Privacy tracking status: none (no tracking), limited (minimal tracking), yes (tracks users), unspecified (unknown)" - }, - "isOpenSource": { - "type": "boolean", - "description": "Whether the RPC provider is open source" - }, - "provider": { - "type": "string", - "maxLength": 64, - "description": "RPC provider name (e.g., 'Ankr', 'LlamaNodes', 'PublicNode')" - }, - "isPublic": { - "type": "boolean", - "default": true, - "description": "Whether this is a public endpoint (no API key required)" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://metadata.openscan.io/schemas/rpc.schema.json", + "title": "RPC Endpoints", + "description": "RPC endpoint metadata for blockchain networks. Each file contains endpoints for a single chain, including privacy tracking information and provider details.", + "type": "object", + "required": ["chainId", "endpoints"], + "properties": { + "chainId": { + "type": "integer", + "description": "Chain ID this RPC configuration belongs to" + }, + "networkId": { + "type": "string", + "pattern": "^[a-z0-9]+:[a-zA-Z0-9]+$", + "description": "CAIP-2 network identifier (e.g., 'eip155:1' for Ethereum mainnet)" + }, + "updatedAt": { + "type": "string", + "format": "date", + "description": "Last update date (YYYY-MM-DD)" + }, + "endpoints": { + "type": "array", + "items": { + "$ref": "#/definitions/rpcEndpoint" + }, + "description": "List of RPC endpoints" + } + }, + "definitions": { + "rpcEndpoint": { + "type": "object", + "required": ["url", "tracking", "isOpenSource", "provider", "isPublic"], + "properties": { + "url": { + "type": "string", + "format": "uri", + "description": "RPC endpoint URL (HTTP, HTTPS, or WSS)" + }, + "tracking": { + "type": "string", + "enum": ["none", "limited", "yes", "unspecified"], + "default": "unspecified", + "description": "Privacy tracking status: none (no tracking), limited (minimal tracking), yes (tracks users), unspecified (unknown)" + }, + "isOpenSource": { + "type": "boolean", + "description": "Whether the RPC provider is open source" + }, + "provider": { + "type": "string", + "maxLength": 64, + "description": "RPC provider name (e.g., 'Ankr', 'LlamaNodes', 'PublicNode')" + }, + "isPublic": { + "type": "boolean", + "default": true, + "description": "Whether this is a public endpoint (no API key required)" + } + }, + "additionalProperties": false + } + }, + "additionalProperties": false } diff --git a/scripts/build.ts b/scripts/build.ts index b1ecd01151..595c41497b 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -327,7 +327,11 @@ function buildRpcs(): number { if (!fs.existsSync(rpcsDir)) return totalEndpoints; const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); - const allRpcs: { chainId: number; endpointCount: number }[] = []; + const allRpcs: { + chainId: number; + networkId?: string; + endpointCount: number; + }[] = []; for (const rpcFile of rpcFiles) { if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; @@ -346,11 +350,13 @@ function buildRpcs(): number { const endpointCount = content.endpoints?.length || 0; totalEndpoints += endpointCount; - allRpcs.push({ chainId, endpointCount }); + allRpcs.push({ + chainId, + ...(content.networkId && { networkId: content.networkId as string }), + endpointCount, + }); - console.log( - ` Built rpcs/${chainId}.json (${endpointCount} endpoints)`, - ); + console.log(` Built rpcs/${chainId}.json (${endpointCount} endpoints)`); } catch (e) { console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); } @@ -365,10 +371,7 @@ function buildRpcs(): number { chains: allRpcs.sort((a, b) => a.chainId - b.chainId), }; - fs.writeFileSync( - path.join(distRpcsDir, "all.json"), - formatJson(summary), - ); + fs.writeFileSync(path.join(distRpcsDir, "all.json"), formatJson(summary)); } return totalEndpoints; diff --git a/scripts/import-rpcs.ts b/scripts/import-rpcs.ts index 9471aa433f..2400473ab8 100644 --- a/scripts/import-rpcs.ts +++ b/scripts/import-rpcs.ts @@ -5,146 +5,175 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT_DIR = path.resolve(__dirname, ".."); const RPCS_DIR = path.join(ROOT_DIR, "data/rpcs"); +const NETWORKS_FILE = path.join(ROOT_DIR, "data/networks.json"); -// Chain IDs to import from chainlist -const SUPPORTED_CHAINS = [1, 10, 56, 97, 8453, 42161, 11155111]; +interface NetworkEntry { + chainId: number; + type?: string; + name: string; +} + +function getSupportedChains(): number[] { + const content = JSON.parse(fs.readFileSync(NETWORKS_FILE, "utf-8")); + const networks: NetworkEntry[] = content.networks || []; + + // Filter to EVM networks (chainlist only has EVM RPCs) + // Networks with a `type` field use it; otherwise assume EVM if chainId is present + return networks + .filter((n) => { + if (n.type) return n.type === "evm"; + return typeof n.chainId === "number"; + }) + .map((n) => n.chainId); +} interface ChainlistRpc { - url: string; - tracking?: string; - isOpenSource?: boolean; + url: string; + tracking?: string; + isOpenSource?: boolean; } interface ChainlistNetwork { - chainId: number; - name: string; - rpc: ChainlistRpc[]; + chainId: number; + name: string; + rpc: ChainlistRpc[]; } interface RpcEndpoint { - url: string; - tracking: string; - isOpenSource: boolean; - provider: string; - isPublic: boolean; + url: string; + tracking: string; + isOpenSource: boolean; + provider: string; + isPublic: boolean; } // Map known RPC providers by URL patterns function getProvider(url: string): string | undefined { - const patterns: Record = { - "llamarpc.com": "LlamaNodes", - "1rpc.io": "1RPC", - "publicnode.com": "PublicNode", - "meowrpc.com": "MeowRPC", - "drpc.org": "dRPC", - "omniatech.io": "Omnia", - "ankr.com": "Ankr", - "flashbots.net": "Flashbots", - "mevblocker.io": "MEV Blocker", - "blockrazor.xyz": "BlockRazor", - "pocket.network": "Pocket Network", - "subquery.network": "SubQuery", - "0xrpc.io": "0xRPC", - "stakely.io": "Stakely", - "alchemy.com": "Alchemy", - "infura.io": "Infura", - "quicknode.com": "QuickNode", - "blastapi.io": "Blast", - "nodies.app": "Nodies", - "unifra.io": "Unifra", - "blockpi.network": "BlockPI", - "zan.top": "ZAN", - "stackup.sh": "Stackup", - "onfinality.io": "OnFinality", - "therpc.io": "TheRPC", - "notadegen.com": "NotADegen", - "tenderly.co": "Tenderly", - "stateless.solutions": "Stateless", - "payload.de": "Payload", - "merkle.io": "Merkle", - "fastnode.io": "FastNode", - "poolz.finance": "Poolz", - "diamondswap.org": "DiamondSwap", - "bnbchain.org": "BNB Chain", - "optimism.io": "Optimism", - "arbitrum.io": "Arbitrum", - "base.org": "Base", - "sepolia.org": "Sepolia", - "terminet.io": "Terminet", - "48.club": "48 Club", - }; - - for (const [pattern, provider] of Object.entries(patterns)) { - if (url.includes(pattern)) { - return provider; - } - } - return undefined; + const patterns: Record = { + "llamarpc.com": "LlamaNodes", + "1rpc.io": "1RPC", + "publicnode.com": "PublicNode", + "meowrpc.com": "MeowRPC", + "drpc.org": "dRPC", + "omniatech.io": "Omnia", + "ankr.com": "Ankr", + "flashbots.net": "Flashbots", + "mevblocker.io": "MEV Blocker", + "blockrazor.xyz": "BlockRazor", + "pocket.network": "Pocket Network", + "subquery.network": "SubQuery", + "0xrpc.io": "0xRPC", + "stakely.io": "Stakely", + "alchemy.com": "Alchemy", + "infura.io": "Infura", + "quicknode.com": "QuickNode", + "blastapi.io": "Blast", + "nodies.app": "Nodies", + "unifra.io": "Unifra", + "blockpi.network": "BlockPI", + "zan.top": "ZAN", + "stackup.sh": "Stackup", + "onfinality.io": "OnFinality", + "therpc.io": "TheRPC", + "notadegen.com": "NotADegen", + "tenderly.co": "Tenderly", + "stateless.solutions": "Stateless", + "payload.de": "Payload", + "merkle.io": "Merkle", + "fastnode.io": "FastNode", + "poolz.finance": "Poolz", + "diamondswap.org": "DiamondSwap", + "bnbchain.org": "BNB Chain", + "optimism.io": "Optimism", + "arbitrum.io": "Arbitrum", + "base.org": "Base", + "sepolia.org": "Sepolia", + "terminet.io": "Terminet", + "48.club": "48 Club", + }; + + for (const [pattern, provider] of Object.entries(patterns)) { + if (url.includes(pattern)) { + return provider; + } + } + return undefined; } async function importFromChainlist(): Promise { - console.log("Fetching RPC data from chainlist.org...\n"); - - const response = await fetch("https://chainlist.org/rpcs.json"); - if (!response.ok) { - throw new Error(`Failed to fetch: ${response.status} ${response.statusText}`); - } - - const networks: ChainlistNetwork[] = await response.json(); - - if (!fs.existsSync(RPCS_DIR)) { - fs.mkdirSync(RPCS_DIR, { recursive: true }); - } - - for (const chainId of SUPPORTED_CHAINS) { - const network = networks.find((n) => n.chainId === chainId); - - if (!network) { - console.log(` Chain ${chainId}: Not found in chainlist`); - continue; - } - - // Filter to public HTTP/HTTPS endpoints only (skip WebSocket) - const endpoints: RpcEndpoint[] = network.rpc - .filter((rpc) => { - const url = rpc.url; - return ( - (url.startsWith("https://") || url.startsWith("http://")) && - !url.includes("${") // Exclude template URLs with API keys - ); - }) - .map((rpc) => ({ - url: rpc.url, - tracking: rpc.tracking || "unspecified", - isOpenSource: rpc.isOpenSource ?? false, - provider: getProvider(rpc.url) || "Unknown", - isPublic: true, - })); - - // Sort: prefer tracking "none" first, then by provider name - endpoints.sort((a, b) => { - const trackingOrder = { none: 0, limited: 1, unspecified: 2, yes: 3 }; - const aOrder = trackingOrder[a.tracking as keyof typeof trackingOrder] ?? 2; - const bOrder = trackingOrder[b.tracking as keyof typeof trackingOrder] ?? 2; - if (aOrder !== bOrder) return aOrder - bOrder; - return (a.provider || "").localeCompare(b.provider || ""); - }); - - const output = { - chainId, - updatedAt: new Date().toISOString().split("T")[0], - endpoints, - }; - - const filePath = path.join(RPCS_DIR, `${chainId}.json`); - fs.writeFileSync(filePath, JSON.stringify(output, null, 2) + "\n"); - console.log(` Chain ${chainId} (${network.name}): Imported ${endpoints.length} endpoints`); - } - - console.log("\nImport complete!"); + const supportedChains = getSupportedChains(); + console.log( + `Fetching RPC data from chainlist.org for ${supportedChains.length} chains...\n`, + ); + + const response = await fetch("https://chainlist.org/rpcs.json"); + if (!response.ok) { + throw new Error( + `Failed to fetch: ${response.status} ${response.statusText}`, + ); + } + + const networks: ChainlistNetwork[] = await response.json(); + + if (!fs.existsSync(RPCS_DIR)) { + fs.mkdirSync(RPCS_DIR, { recursive: true }); + } + + for (const chainId of supportedChains) { + const network = networks.find((n) => n.chainId === chainId); + + if (!network) { + console.log(` Chain ${chainId}: Not found in chainlist`); + continue; + } + + // Filter to public HTTP/HTTPS endpoints only (skip WebSocket) + const endpoints: RpcEndpoint[] = network.rpc + .filter((rpc) => { + const url = rpc.url; + return ( + (url.startsWith("https://") || url.startsWith("http://")) && + !url.includes("${") // Exclude template URLs with API keys + ); + }) + .map((rpc) => ({ + url: rpc.url, + tracking: rpc.tracking || "unspecified", + isOpenSource: rpc.isOpenSource ?? false, + provider: getProvider(rpc.url) || "Unknown", + isPublic: true, + })); + + // Sort: prefer tracking "none" first, then by provider name + endpoints.sort((a, b) => { + const trackingOrder = { none: 0, limited: 1, unspecified: 2, yes: 3 }; + const aOrder = + trackingOrder[a.tracking as keyof typeof trackingOrder] ?? 2; + const bOrder = + trackingOrder[b.tracking as keyof typeof trackingOrder] ?? 2; + if (aOrder !== bOrder) return aOrder - bOrder; + return (a.provider || "").localeCompare(b.provider || ""); + }); + + const networkId = `eip155:${chainId}`; + const output = { + chainId, + networkId, + updatedAt: new Date().toISOString().split("T")[0], + endpoints, + }; + + const filePath = path.join(RPCS_DIR, `${chainId}.json`); + fs.writeFileSync(filePath, `${JSON.stringify(output, null, 2)}\n`); + console.log( + ` Chain ${chainId} (${network.name}): Imported ${endpoints.length} endpoints`, + ); + } + + console.log("\nImport complete!"); } importFromChainlist().catch((e) => { - console.error("Import failed:", e); - process.exit(1); + console.error("Import failed:", e); + process.exit(1); }); diff --git a/scripts/validate.ts b/scripts/validate.ts index 8165c25512..5e23bf1228 100644 --- a/scripts/validate.ts +++ b/scripts/validate.ts @@ -42,7 +42,7 @@ const addressSchema = JSON.parse( fs.readFileSync(path.join(ROOT_DIR, "schemas/address.schema.json"), "utf-8"), ); const rpcSchema = JSON.parse( - fs.readFileSync(path.join(ROOT_DIR, "schemas/rpc.schema.json"), "utf-8") + fs.readFileSync(path.join(ROOT_DIR, "schemas/rpc.schema.json"), "utf-8"), ); const validateToken = ajv.compile(tokenSchema); @@ -410,75 +410,101 @@ checkDuplicates(); // Validate RPC files const rpcsDir = path.join(ROOT_DIR, "data/rpcs"); if (fs.existsSync(rpcsDir)) { - const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); - - for (const rpcFile of rpcFiles) { - if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; - - const filePath = path.join(rpcsDir, rpcFile.name); - const expectedChainId = parseInt(rpcFile.name.replace(".json", ""), 10); - - try { - const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); - const isValid = validateRpc(content); - - if (!isValid) { - results.push({ - file: filePath, - valid: false, - errors: validateRpc.errors?.map( - (e) => `${e.instancePath} ${e.message}` - ), - }); - } else { - const additionalErrors: string[] = []; - - // Check chainId matches filename - if (!isNaN(expectedChainId) && content.chainId !== expectedChainId) { - additionalErrors.push( - `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}` - ); - } - - // Check for duplicate URLs - const urls = new Set(); - for (const endpoint of content.endpoints || []) { - if (urls.has(endpoint.url)) { - additionalErrors.push(`Duplicate RPC URL: ${endpoint.url}`); - } - urls.add(endpoint.url); - } - - // Validate URL protocols - for (const endpoint of content.endpoints || []) { - const url = endpoint.url; - if (!url.startsWith("https://") && !url.startsWith("wss://") && !url.startsWith("http://")) { - additionalErrors.push(`Invalid URL protocol: ${url}`); - } - // WebSocket endpoints should use wss:// or ws:// - if (endpoint.isWebSocket && !url.startsWith("wss://") && !url.startsWith("ws://")) { - additionalErrors.push(`WebSocket endpoint should use ws(s):// protocol: ${url}`); - } - } - - if (additionalErrors.length > 0) { - results.push({ - file: filePath, - valid: false, - errors: additionalErrors, - }); - } else { - results.push({ file: filePath, valid: true }); - } - } - } catch (e) { - results.push({ - file: filePath, - valid: false, - errors: [`Failed to parse JSON: ${e}`], - }); - } - } + const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); + + for (const rpcFile of rpcFiles) { + if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; + + const filePath = path.join(rpcsDir, rpcFile.name); + const expectedChainId = Number.parseInt( + rpcFile.name.replace(".json", ""), + 10, + ); + + try { + const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); + const isValid = validateRpc(content); + + if (!isValid) { + results.push({ + file: filePath, + valid: false, + errors: validateRpc.errors?.map( + (e) => `${e.instancePath} ${e.message}`, + ), + }); + } else { + const additionalErrors: string[] = []; + + // Check chainId matches filename + if ( + !Number.isNaN(expectedChainId) && + content.chainId !== expectedChainId + ) { + additionalErrors.push( + `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}`, + ); + } + + // Validate networkId consistency: should match eip155:{chainId} for EVM chains + if (content.networkId) { + const expectedNetworkId = `eip155:${content.chainId}`; + if (content.networkId !== expectedNetworkId) { + additionalErrors.push( + `networkId mismatch: expected ${expectedNetworkId} but got ${content.networkId}`, + ); + } + } + + // Check for duplicate URLs + const urls = new Set(); + for (const endpoint of content.endpoints || []) { + if (urls.has(endpoint.url)) { + additionalErrors.push(`Duplicate RPC URL: ${endpoint.url}`); + } + urls.add(endpoint.url); + } + + // Validate URL protocols + for (const endpoint of content.endpoints || []) { + const url = endpoint.url; + if ( + !url.startsWith("https://") && + !url.startsWith("wss://") && + !url.startsWith("http://") + ) { + additionalErrors.push(`Invalid URL protocol: ${url}`); + } + // WebSocket endpoints should use wss:// or ws:// + if ( + endpoint.isWebSocket && + !url.startsWith("wss://") && + !url.startsWith("ws://") + ) { + additionalErrors.push( + `WebSocket endpoint should use ws(s):// protocol: ${url}`, + ); + } + } + + if (additionalErrors.length > 0) { + results.push({ + file: filePath, + valid: false, + errors: additionalErrors, + }); + } else { + results.push({ file: filePath, valid: true }); + } + } + } catch (e) { + results.push({ + file: filePath, + valid: false, + errors: [`Failed to parse JSON: ${e}`], + }); + } + } } // Validate events files From 71ed0be8f08745d294ff11d4670eafa1ccedd117 Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Fri, 13 Feb 2026 12:27:59 -0300 Subject: [PATCH 3/7] feat: Restructure data directories by network type (evm/btc) Organize per-network data under network type subdirectories to support multi-chain architecture. EVM networks use chain IDs, Bitcoin networks use slugs. Add Bitcoin Testnet4 network and RPC endpoint. --- ...d7a2d6e13d351e157e2a0396dac810d6af390.json | 0 ...50d5630B4cF539739dF2C5dAcb4c659F2488D.json | 0 data/events/{ => evm}/1/common.json | 0 data/networks.json | 22 + data/rpcs/btc/mainnet.json | 34 ++ data/rpcs/btc/testnet4.json | 13 + data/rpcs/{ => evm}/1.json | 0 data/rpcs/{ => evm}/10.json | 0 data/rpcs/{ => evm}/11155111.json | 0 data/rpcs/{ => evm}/42161.json | 0 data/rpcs/{ => evm}/56.json | 0 data/rpcs/{ => evm}/8453.json | 0 data/rpcs/{ => evm}/97.json | 0 ...0000000085d4780b73119b644ae5ecd22b376.json | 0 ...0000000095413afc295d19edeb1ad7b71c952.json | 0 ...1d2021f89dc339f60fff84546ea23e337750f.json | 0 ...a0d235c4abf4bcf4787af4cf447de572ef828.json | 0 ...fd409e1d7a124bd7017459dfea2f387b6d5cd.json | 0 ...185f2135308bad17527004364ebcc2d37e5f6.json | 0 ...4906da0bf32d5479e25f46056d22f08464cab.json | 0 ...87046fbb341d058f17cbc4c1133f25a20a52f.json | 0 ...529c00c6401aef6d220be8c6ea1667f6ad93e.json | 0 ...0bf8fcb7bf5412187a595ab97a3609160b5c6.json | 0 ...38f3b5175bebc262bf23753c1e53d03432bde.json | 0 ...775f648430679a709e98d2b0cb6250d2887ef.json | 0 ...d2fb29fb7d3cfee444a200298f468908cc942.json | 0 ...111111117dc0aa78b770fa6a738034120c302.json | 0 ...70e6868f88f6557b76120662c1b3e50a646bf.json | 0 ...6688345527be1f37e9e627da0837d6f08c925.json | 0 ...649ea73beab28c5b49b26eb48f7ead6d4c898.json | 0 ...4c048f83bd7e37d49ea4c83a07267ec4203da.json | 0 ...f8c2467924be0ae7b5347228cabf260318753.json | 0 ...84fba666a33d37592fa2633fd49a74dd93a88.json | 0 ...5365e9f78359a9b6ad760e32412f4a445e862.json | 0 ...e4e63778b4f12a199c062f3efdd288afcbce8.json | 0 ...270557c1f68cfb577b856766310bf8b47fd9c.json | 0 ...840a85d5af5bf1d1762f925bdaddc4201f984.json | 0 ...0fac5e5542a773aa44fbcfedf7c193bc2c599.json | 0 ...5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json | 0 ...91e99afe9f32eaa6214f7b7629768c40eeb39.json | 0 ...1cb76718cdef2155fc47b5286d82e6eda273f.json | 0 ...53a6c91143bfd6c7d363b546e62a9a2489a20.json | 0 ...2b6a60d23ca0dfca7761b7ab56459d9c964d0.json | 0 ...5badade8e6dff049820680d1f14bd3903a5d0.json | 0 ...0000000000000000000000000000000000042.json | 0 ...1937a7508860f876c9c0a2a617e7d9e945d4b.json | 0 ...f6f5d44e70224e2e23fdcdd2c053f30ada28b.json | 0 ...20e6096b25eadb88358cb44068a3248254675.json | 0 ...e164684812dfb684ac36457e7fa805087c68e.json | 0 ...edd5852cd905f086c759e8383e09bff1e68b3.json | 0 ...24452801aced8b2f0aebe155379bb5d594381.json | 0 ...5361fd6b4bb609fa63c81a2be19d873717870.json | 0 ...fbd56cd56c3e72c1403e103b45db9da5b9d2b.json | 0 ...254c83eb525f9fcf346490bbb3ed28a81c667.json | 0 ...bb145d64652a948d72533023f6e7a623c7c53.json | 0 ...1c9771902476076ecfc8b2a83ad6b9355a4c9.json | 0 ...910771af9ca656af840dff83e8264ecf986ca.json | 0 ...cab2ec69124574082676e6f654a18df49a048.json | 0 ...3d291dbcf85356a21ba090e6db59121208b44.json | 0 ...b1ec28d129707052df4df418d58a2d46d5f51.json | 0 ...d872a1b094fc48f5de31d3b73f2d9be47def1.json | 0 ...8fcbea516cf06857215779fd812ca3bef1b32.json | 0 ...0d9827e0c53e4799bb226655a1de152a425a5.json | 0 ...422345238f34275888049021821e8e08caa1f.json | 0 ...8805a4e8be255a32880fdec7f6728c6568ba0.json | 0 ...4d786628fea6478f785a6d7e704777c86a7c6.json | 0 ...3b0049f904d730db3c36a31167d9d4121fa6b.json | 0 ...90a50137e1f645c9ef4a0d3a4f01477738406.json | 0 ...3d8cea23066d098a15582d81a598b4e8391f4.json | 0 ...a3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json | 0 ...c6ad92fd080e4004b2312b45f796a192d27a0.json | 0 ...0e776880c02933d47db1b9fc05908e5386b96.json | 0 ...2508145454ce325ddbe47a25d4ec3d2311933.json | 0 ...75474e89094c44da98b954eedeac495271d0f.json | 0 ...595068778dd592e39a122f4f5a5cf09c90fe2.json | 0 ...ee5e31d828de241282b9606c8e98ea48526e2.json | 0 ...037ef9ad2725eb40118bb1702ebb27e4aeb24.json | 0 ...a43be0b1d33b726f0ca3b8de60b3482b8b050.json | 0 ...0d4a6237c257fff2db00fa0510deeecd303eb.json | 0 ...68b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json | 0 ...0b4b9a0110cdc71fb720908340c03f9bc03ec.json | 0 ...31f58b43240c9718dd58b4967c5114342a86c.json | 0 ...77feddddffc19ff86db637967013e6c6a116c.json | 0 ...8c0be72be218b41c608b7fe7c5bb630736c71.json | 0 ...afa7b718fb893db30a3abc0cfc608aacfebb0.json | 0 ...9c581f595b53c5cb19bd0b3f8da6c935e2ca0.json | 0 ...66500c84a76ad7e9c93437bfc5ac33e2ddae9.json | 0 ...507121b80c02388fad14726482e061b8da827.json | 0 ...62fe4487e1351b47ba49809ebd60ed085bf52.json | 0 ...b784b7ed66730e8b1dbd9820afd29931aab03.json | 0 ...20f44975d03b1b09e64809b757c47f942beea.json | 0 ...d955acef822db058eb8505911ed77f175b99e.json | 0 ...377367054516e17014ccded1e7d814edc9ce4.json | 0 ...1bee2ba0df28761afff119d66390d594cd280.json | 0 ...0cab2b38dba80c64b7734e58ee1db38b8992e.json | 0 ...9137d39326ad0cd6491fb5cc0cba0e089b6a9.json | 0 ...70d67f660d95d5be530380d0ec0bd388289e1.json | 0 ...6c1e31e14520e676a687f0a93788b716beff5.json | 0 ...a2db1b7008b6c776d4faaca729d6d4a4aa551.json | 0 ...d61b0a150d79219dcf64e1e6cc01f0b64c4ce.json | 0 ...da4048cd07ab37855c090aaf366e4ce1b9f48.json | 0 ...3037ee2218799597d83d4a5b6f3b6778218d9.json | 0 ...8a9c45b2eca8864373a26d1459e3dff1e17f3.json | 0 ...9a5de30e57443bff2a8307a4256c8797a3497.json | 0 ...2b13ce7f2e80a01932b42553652e053d6ed8e.json | 0 ...f72aa9304c8b593d555f12ef6589cc3a579a2.json | 0 ...73e1ff0b80914ab6fe0444e65848c4c34450b.json | 0 ...86991c6218b36c1d19d4a2e9eb0ce3606eb48.json | 0 ...7000000f279d81a1d3cc75430faa017fa5a2e.json | 0 ...aa113cbe53436df28ff0aee54275c13b40975.json | 0 ...3356610840701bdf5611a53974510ae27e2e1.json | 0 ...b1b31ce002fbf2058d22f30f95d405200a15b.json | 0 ...3b02cf0a4b149d2ad41910cb81e23e1c41c32.json | 0 ...3b19d2931d498c5b318df961919bb4aee87a5.json | 0 ...1eb5908cfc3cdf91f9b8b3a74108598009096.json | 0 ...f88cea01475125522e117bfe45cf32044e238.json | 0 ...e018457b222d93114458476f3e3416abbe38f.json | 0 ...ab96520de3a18e5e111b5eaab095312d7fe84.json | 0 ...46a60368a7bd060eec7df8cba43b7ef41ad85.json | 0 ...7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json | 0 ...d80f5fefcddaa212212f028021b41ded428cf.json | 0 ...e3cd837ddf8e4c57f05d70ab865de6e193bbb.json | 0 ...721bcf8d664c30412cfbc6cf7a15145234ad1.json | 0 ...77482e45f1f44de1745f52c74426c631bdd52.json | 0 ...00000625a3754423978a60c9317c58a424e3d.json | 0 ...e17ef65f82ab018d8edd776e8dd940327b28b.json | 0 ...bca6a901c926f240b89eacb641d8aec7aeafd.json | 0 ...ca0eda7647a8ab7c2061c2e118a18a936f13d.json | 0 ...531da5cf5857e7cfaa92426877b022e612cf8.json | 0 ...895146f7af43049ca1c1ae358b0541ea49704.json | 0 ...495efe5db9ce00f80364c8b423567e58d2110.json | 0 ...e94cb662c3520282e6f5717214004a7f26888.json | 0 ...1a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json | 0 ...aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json | 0 ...360217d8f7ab5e7c516566761ea12ce7f9d72.json | 0 ...1b7e65ffc80de234bbb6667abdd46593d34f0.json | 0 ...b36dd2fb59d3b98deff88425a3f425ee469ed.json | 0 ...4e90c64b2c07662a292be6244bdf05cda44a7.json | 0 ...7c0000ab88b473b1f5afd9ef808440eed33bf.json | 0 ...fa225d80b9c7d42f96e9570156c65d6caaa25.json | 0 ...fe23c85820f7b72d0926fc9b05b43e359b7ee.json | 0 ...c122c6b73ff809c693db761e7baebe62b6a2e.json | 0 ...2eb1b1e90b638588728b4130137d262c87cae.json | 0 ...114cd6ee289accf82350c8d8487fedb8a0c07.json | 0 ...a59c85ae9d8edefec411d448f90841571b89c.json | 0 ...49664cd82660aae99bedc034a0dea8a0bd517.json | 0 ...3a949740bb3306d119cc777fa900ba034cd52.json | 0 ...7838f5c461feff7fe49ea5ebaf7728bb0adfa.json | 0 ...17f958d2ee523a2206206994597c13d831ec7.json | 0 ...5f211ab05b1c97d595516f45794528a807ad8.json | 0 ...35d45d973e3ec169d2276ddab16f1e407384f.json | 0 ...74d5c2e2928dea5f71b9825b8b646686bd200.json | 0 ...a4e8a7bcba345f687a2f1456f5edd9ce97202.json | 0 ...b3b32b6c345a34ff64674606124dd5aceca30.json | 0 ...2a5c287993345a840db3b0845fbc70f5935a5.json | 0 ...d2489571d322189246dafa5ebde1f4699f498.json | 0 ...3bf9167f50cdeb3ae105f56099aaab9061f83.json | 0 ...af388653567af2f388e6224dc7c4b3241c544.json | 0 ...e65822b568b3903685a7c9f496cf7656cc6c2.json | 0 ...1903cbc70a74d22900a5de66a2dda66507255.json | 0 ...e7e7c23978c3caec3c3548e3d615c346e79ff.json | 0 ...9cbd94d3791c9250152bd8dfbdf380e2a3b9c.json | 0 ...a6f8e4a5e8ab82f62fe7c39859fa577269be3.json | 0 ...c30065b384f05761f15d0cc899d4f9f9cc0eb.json | 0 ...4206dfe8de6ec6920ff4d779b0d950605fb53.json | 0 ...c639c533813f4aa9d7837caf62653d097ff85.json | 0 ...2b1c2345538c0c6f582fcb022739c4a194ebb.json | 0 ...cc4dd073734da055fbf44a2b4667d5e5fe5d2.json | 0 ...6092f143378750bb29b79ed961ab195cceea5.json | 0 ...d870790dc77a83dd1d18184acc7439a53f475.json | 0 ...a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json | 0 ...ef8f50246f725885102e8238cbba33f276747.json | 0 ...0000000000000000000000000000000000006.json | 0 ...0000000000000000000000000000000000042.json | 0 ...9c236320b8f15ef0a657054b84d90bfbeded3.json | 0 ...fff6f753d7c11a56a52fe47a177a87e431655.json | 0 ...7baba0d66083c52009271faf3f50dcc01023c.json | 0 ...1677344d3cb0d7d465c10b72a8f60699c062d.json | 0 ...cea5bb16181e7b4109c9c2143c24a1c2205be.json | 0 ...6411765af15bddd26f8f544a34cc40cb9838b.json | 0 ...180fcce6836688e9084f035309e29bf0a2095.json | 0 ...9d7ad17242c41f7131d257212c54a0e816691.json | 0 ...b31fb4af56892a25e32cfc43de717950c9278.json | 0 ...c764cbc14f9669b88837ca1490cca17c31607.json | 0 ...0daec35af8ff88c16bdf0418774cb3d7599b4.json | 0 ...125e8653821e851f12a49f7765db9a9ce7384.json | 0 ...f28f2f1a3c87f0f938b96d27520d9751ec8d9.json | 0 ...5aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json | 0 ...008aa00579c1307b0ef2c499ad98a8ce58e58.json | 0 ...0e827af36c94d2ac33a39bce1fe78631088db.json | 0 ...ef72be871e61ed4fbbc7630889bee758eb81d.json | 0 ...305eb78a432ced5c4d14cac27e8ed569a2e26.json | 0 ...028f5f1d5ede59748ffcee5532509976840e0.json | 0 ...aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json | 0 ...b6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json | 0 ...195aefa3650a6908f15cdac7d92f8a5791b0b.json | 0 ...f6cc3050cc02f967db1ee48330ba23276a492.json | 0 ...2222222228d8ba445958a75a0704d566bf2c8.json | 0 ...11a12da28e8f0f528d9ee5e7039e22f91cf18.json | 0 ...b1ff1c6989f006a1185318ed4e7b5796e66e1.json | 0 ...f949f8a4e094d1b49a23ea9241d289b7b2819.json | 0 ...0009cbd5d07dd0cecc66161fc93d7c9000da1.json | 0 ...ff44d5d932cbd77b52e5612ba0529dc6226f1.json | 0 ...46478f9e5ea86d57387849598dbfb2e964b02.json | 0 ...4e1157f35e1dad95dc3f822a9d18c40e360e2.json | 0 ...794692724153d1488ccdbe0c56c252596735f.json | 0 ...b128ba8c78aabc59d4c64cee7ff28e9379921.json | 0 ...d4b196cb0c7b01d743fbc6116a902379c7238.json | 0 ...94a729c2450ad26072b3d33adfff1cc69b3f3.json | 0 ...9d38820dfd117c3fa1f22a697dba58d90ba06.json | 0 ...9E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json | 0 ...877a7b0d9e8603169ddbd7836e478b4624789.json | 0 ...7cf9254734c6eb452a7bb9aaf97b392258b21.json | 0 ...CA4c6E2525C09c95269055B46f16b1459BF9d.json | 0 ...9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json | 0 ...e23fb1079ea71e0a56f48a2aa51851d8433d0.json | 0 ...382073c7a0addbb56ac6af1808fa49e377b75.json | 0 ...d97673B9E0B3AA53a06439F71fDc1facE393B.json | 0 ...8dbdd856501fcd9aaf1e62eae57a9f0629a3c.json | 0 ...F74A6568E9f0e42a587C9363C9BcC582dcC6c.json | 0 ...9976782d46cc05630d1f6ebab18b2324d6b14.json | 0 ...54a6e9a984069379fae1a4fc4dbae93b3bccd.json | 0 ...f868e0be5597d5db7feb59e1cadbb0fdda50a.json | 0 ...00b1d8e8ef31e21c99d1db9a6444d3adf1270.json | 0 ...370d5cd63279efa6d502dab29171933a610af.json | 0 ...3f4ca1d028320a707d99520abfefca3998b7f.json | 0 ...d67037b42cf73acf2047067bd4f2c47d9bfd6.json | 0 ...1bca1f2de4661ed88a30c99a7a9449aa84174.json | 0 ...a66557a79263275826ad31a4cddc2789334bd.json | 0 ...9bbc92bd86f8075d1decc58c7f4e0107f286b.json | 0 ...eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json | 0 ...99c542cef5e3811e1192ce70d8cc03d5c3359.json | 0 ...32fa6df82ead1e2ef74d17b76547eddfaff89.json | 0 ...728d8d964fd00c2d0aad81718b71311fef68a.json | 0 ...0bca35ec356bd5dddfebbd1fc0fd03fabad39.json | 0 ...a84c73811e1839f75d86d75d88cca0c241ff4.json | 0 ...5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json | 0 ...2b58c013d7601147dcdd68c143a77499f5531.json | 0 ...99774020da444af134c82fa83e3810b309991.json | 0 ...5884c4392d348587b19cb9eaaf157f13271cd.json | 0 ...e7c3c6ef65ee26975b12293ca1aad7e1daed2.json | 0 ...e624106cb12e168e6533f8ec7c82263358940.json | 0 ...a06447ff6fcf75d803135a7de15ce88c1d4ec.json | 0 ...b23fd6bc0add59e62ac25578270cff1b9f619.json | 0 ...753dd7087cac61ab5644b308642cc1c33dc13.json | 0 ...5b9d2254a7ae468c0e9dd10ccea3a837aef5c.json | 0 ...35f11c86623dec8a25696e1c19a8659cbf95d.json | 0 ...cf7ad23cd3cadbd9735aff958023239c6a063.json | 0 ...1012b13ca4d3d0cdc72a177df3ef03b0e76a3.json | 0 ...c5fd7b07e95ee044ddeba0e97a665f142394f.json | 0 ...57f48f0deb89f569dfbe6e2b7f46d33606fd4.json | 0 ...a99a148fa48d14ed51d610c367c61876997f1.json | 0 ...c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json | 0 ...eaad8d922b1083446dc23f610c2567fb5180f.json | 0 ...a073c31bf03b8acf7c28ef0738decf3695683.json | 0 ...32d05d31c914a87c6611c10748aeb04b58e8f.json | 0 ...7d422809852031b44ab29eec9f1eff2a58756.json | 0 ...f932a45c0f255f85145f286ea0b292b21c90b.json | 0 ...6d1dc155634fbc732f92e853b10b288ad5a1d.json | 0 ...52e49357fd4daf2c15e02058dce6bc0057db4.json | 0 ...eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json | 0 ...80f6761f1af8d9aa9c466984b80dab9a8c9e8.json | 0 ...db42b0eb46d95f990bedd4695a6e3fa034978.json | 0 ...d51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json | 0 ...acad7975960833f374622fad08b90ed67d1b5.json | 0 ...4baa9d35ee54ffbcb2608e20786473c7aa49f.json | 0 ...c002b466eec40dae837fc4be5c67993ddbd6f.json | 0 ...11fd286c5ec11c3b683caa813b77f5163a122.json | 0 ...cc4dd073734da055fbf44a2b4667d5e5fe5d2.json | 0 ...6092f143378750bb29b79ed961ab195cceea5.json | 0 ...a2543b76a4166549f7aab2e75bef0aefc5b0f.json | 0 ...2cc23568ea640225c2467653db90e9250aaa0.json | 0 ...b7902d4134bf98a28b963d26de779af92a212.json | 0 ...51007a407ca6feffe80b3cb397736d2cf4dbe.json | 0 ...907f9a368ad0a51be60f7da3b97cf940982d8.json | 0 ...6e0c36d275367b8c502090edf38289b3dea0d.json | 0 ...52cf164e64adcbad318c3a1e222e9eba4ce42.json | 0 ...bde0d7dbd336b79148aa742883198bbf60342.json | 0 ...9d7b546e38e414f7e9822514be443a4800529.json | 0 ...1677344d3cb0d7d465c10b72a8f60699c062d.json | 0 ...5439389e0797ab35752b4f43a14c004f22a9c.json | 0 ...5884c4392d348587b19cb9eaaf157f13271cd.json | 0 ...c06790b3e3e3c38e12ee22f8183b37a13ee55.json | 0 ...f586b7370b14163171544fca24abcc0862ac5.json | 0 ...f49447d8a07e3bd95bd0d56f35241523fbab1.json | 0 ...ce59144191c1204e64559fe8253a0e49e6548.json | 0 ...346b6bc2548da6a1e7d98e9a421b42541425b.json | 0 ...f299715d94d8a7e6f5eaa8e654e8c74a988a7.json | 0 ...862f60edef4452f25b4160f177db44deb6cf1.json | 0 ...8d065e77c8cc2239327c5edb3a432268e5831.json | 0 ...ddd1f9d7f570dc94a51479a000e3bce967196.json | 0 ...42f0b6def4ce0383636770ef773390d85c61a.json | 0 ...0009cbd5d07dd0cecc66161fc93d7c9000da1.json | 0 ...cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json | 0 ...0dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json | 0 ...855ced3e5a59aaa267abdddb0db21ccfe5072.json | 0 ...f4df75117a78c1a5a0dbb814af92458539fb4.json | 0 ...f8980b0f1e64a2062791cc3b0871572f1f7f0.json | 0 ...a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json | 0 ...86bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json | 0 ...70a61a04b1ca14834a43f5de4533ebddb5cc8.json | 0 ...901b0e25deb55a87524f0cc164e9644020eba.json | 0 ...9fabb73bd3ade0a17ecc321fd13a19e81ce82.json | 0 ...3a705fc54725037cc9e008bdede697f62f335.json | 0 ...d82428437127bf1608f699cd651e6abf9766e.json | 0 ...16e85a25aeb13065688cafb43044c2ef86784.json | 0 ...39ef78684453bfdfb47825f8a5f714f12623a.json | 0 ...3f329e8be154074d8769d1ffa4ee058b1dbc3.json | 0 ...f0da169ceb9fc7b3144628db156f3f6c60dbe.json | 0 ...0ed0880ac9a755fd29b2688956bd959f933f8.json | 0 ...632378e573c6be1ac2f97fcdf00515d0aa91b.json | 0 ...9e4544c4bb03966803b044a93563bd2d0dd4d.json | 0 ...2200efb3400fabb9aacf31297cbdd1d435d47.json | 0 ...8665cbb7b2485a8855a139b75d5e34ab0db94.json | 0 ...ead2563dcbf3bf2c9407fea4dc236faba485a.json | 0 ...17003473389a42daf6a0a729f6fdb328bbbd7.json | 0 ...e071bd9b1c4b00a0b92d298c512478cad67e8.json | 0 ...398326f99059ff775485246999027b3197955.json | 0 ...6fb708fc5732dec1afc8d8556423a2edccbd6.json | 0 ...a5d26f7765ecb712c0924e4de545b89fd43df.json | 0 ...da599bb2cccfcf6fdfd7d81743cabae698889.json | 0 ...1842cff838120271d772c6994f051d418a4ad.json | 0 ...3609fce4d1d8dc0c979aab8c869ea2c873402.json | 0 ...0d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json | 0 ...d400f88c167884bbcc41c5fea407ed4d2f8a0.json | 0 ...1a5ae2a3bf98aeaf342d26b30a79438c9142e.json | 0 ...76a51cc950d9822d68b83fe1ad97b32cd580d.json | 0 ...795a6f4d97e7887c79bea79aba5cc76444adf.json | 0 ...5ab58d8d978db963e63f2bfb7121627e3a739.json | 0 ...4088a740c695e156f91f5cc086a06bb78b827.json | 0 ...abcb37c3a4b64f74f59301aff131a1becc787.json | 0 ...ae424d960c26247dd6c32edc70b295c744c43.json | 0 ...cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json | 0 ...140a22578168fd562dccf235e5d43a02ce9b1.json | 0 ...2724c6683b7e57334c4e856f4c9965ed682bd.json | 0 ...de646e7208a4ef112cb6ed5038fa6cc6b12e3.json | 0 ...bb5389c92bdda8a3747ddb454cb7a64626c63.json | 0 ...fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json | 0 ...952b35f24acf7fc0487d01c8d5690a60dba07.json | 0 ...7cea3dedca5984780bafc599bd69add087d56.json | 0 ...0bf9cf54bb92f17374d9e9a321e6a111a51bd.json | 0 ...115445bff7b52feb98650c87f44907e58f802.json | 0 ...146bf3146100cfe5db4129cf6c82b0ef4ad8c.json | 0 ...9f0b51438fd612f6fd59c1dbb3ea319f433ba.json | 0 ...0599ae5a44757c0af6f9ec3b93da8976c150a.json | 0 ...5e30da8f98308edb960aa94c0db47230d2b9c.json | 0 ...8d8a44db98b23bf096a382e016e29a5ce0ffe.json | 0 ...88484e1ab980daef53a9755241d759c5b7d60.json | 0 ...7e060c0406f8ab7b64e3bee036a37e5a62853.json | 0 ...e328455c4059eeb9e3f84b5543f74e24e7e1b.json | 0 ...5ee4640b0a3b87705b0a4b45d227ba60ca2ad.json | 0 ...a460413dd4e964f96d8dfc56e7223ce88cd85.json | 0 ...2d631c92b1acdfcdd51a0f7145a50130050c4.json | 0 ...cc4dd073734da055fbf44a2b4667d5e5fe5d2.json | 0 ...ec1ac929a17481446a76ff9b95b9a64f298cf.json | 0 ...6966b799c4d5b13be962e1d117b56327fda66.json | 0 ...aa50979d5f3de3bd1eeb40e81137f22ab794b.json | 0 ...6092f143378750bb29b79ed961ab195cceea5.json | 0 ...2decb4bfc9c76f0309b8e88dec3a601fe25a8.json | 0 ...3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json | 0 ...56acb9ea78330f947bd57c54119debda7af71.json | 0 ...d3a13ef0c6366220f989157009e501e7938f8.json | 0 ...5913c90fcc1a6ce9a358911721eeb942013a1.json | 0 ...181499736d0c0cc614dbb145e2ec1ac86b8c6.json | 0 ...2b27da26848c2b19cea6fd25d2c9944f9488e.json | 0 ...6ad95859b6ab773f55f8d94b4b9d443ee931f.json | 0 ...8734d47fc9692176b5085e0f52ee0da5d47f1.json | 0 ...ac0e078398c154edfadd9ef675d30be60af93.json | 0 ...0000000000000000000000000000000000006.json | 0 ...1b7a9c75199271f773ebd9a499dbd165c3191.json | 0 ...4e862860bed51a9570b96d89af5e1b0efefed.json | 0 ...fd6be4a90f2620860d680c0d4d5fb53d1a825.json | 0 ...5725949a6f0c72e6c4a641f24049a917db0cb.json | 0 ...492a33e447cdb854c7fc19f1e57e8bfa1777d.json | 0 ...f27101965dd16442e59d40670faf5ebb142e4.json | 0 ...d6469f597452b5a7536e2cd98fde4c1247ee4.json | 0 ...5eee11cf8398102fdad704c9e96607675467a.json | 0 ...a1ff2b6bab83b63cd9ad0787074081a52ef34.json | 0 ...3e35cc302bfa44cb36dc52a6d85b7e508de5a.json | 0 ...06e401c06ac8513145b7687a14804d17f814b.json | 0 ...1b130d297cc43754afba22e5eac0fbf8db75b.json | 0 ...5884c4392d348587b19cb9eaaf157f13271cd.json | 0 ...087d713be963bf307b18f2ff8122ef9a63ae9.json | 0 ...b91d9be155a6db01f749217d76ff02a7227f2.json | 0 ...9a065d17d6d4a55dc13649901fdbb98b2afba.json | 0 ...d174e80f264448ebee8c88a7c4476aaf58ea6.json | 0 ...c137fa70c8691f0e44dc420a5e53c168921dc.json | 0 ...589fcd6edb6e08f4c7c32d4f71b54bda02913.json | 0 ...b150bdc53a65fe94dea0c9ba0a6daf8c6e196.json | 0 ...1cb2e82cc95c01e42206f8d1f417fe53e7af0.json | 0 ...181a94a35a4569e4529a3cdfb74e38fd98631.json | 0 ...bed087ff0241e04e98d807de3c3dd97eaa381.json | 0 ...6f5433671751c3276a065f57e5a02d2817973.json | 0 ...028f5f1d5ede59748ffcee5532509976840e0.json | 0 ...9b4f43d9a33fcdcf397b9cc7aa909012709fd.json | 0 ...68d155d17cb30e311367c2ef1e82ab6022b67.json | 0 ...6452dbac151be02b16ca17d8919826072f64a.json | 0 ...bd2486aaf3b5c0fc3fd868558b082a531b2b4.json | 0 ...e221fe9eef5aba221c348ba20a1bf5e73624c.json | 0 ...dda8762c24da9487f5fa026a9b64b695a07ea.json | 0 ...5cc21fd487b8fcc2f632f3f4e8d37262a0842.json | 0 ...5647ea894030a4e9801ec03479739fa2485f0.json | 0 ...ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json | 0 ...ba3fcea344f92d9239c08c0568f6f2f0ee452.json | 0 ...06ca72996e49bbadba9e6bb98e0adfe5b40f6.json | 0 ...02fe9359fd9a28f877a67e36b0f050d81a3cc.json | 0 ...d8f8a8d49439357d3cf46ca2e720702f132b8.json | 0 ...8749c24af4797808364d71d71539bc01e76d4.json | 0 ...7c0000ab88b473b1f5afd9ef808440eed33bf.json | 0 ...ff230365bd730ee4b352cc2492cedac49383e.json | 0 ...172dc5ffc46d228838446c57c1227e0b82049.json | 0 ...3ef56d303ae4faaba0592388f19d7c3399fb4.json | 0 ...aec86b65d86f6a7b5b1b0c42ffa531710b6ca.json | 0 ...3422497e61e13543bea06989c0789117555c5.json | 0 ...53af74a4bf62ae5511055290838050bf764df.json | 0 ...66342c4d449bc9f53a865d5cb90586f405215.json | 0 ...b3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json | 0 ...e879087ebd0e8a77d66870012b5e0dffd0fa4.json | 0 ...817a28e8b93b03976fbd4a3ddbc9f7d176c22.json | 0 ...97aaf77993922ac4be4da8fbc9a2425322677.json | 0 ...0df7142f60f7f3847463a509fd8969e3e3a27.json | 0 ...932ca12afa26665dc4dde7e27be02a7c02e50.json | 0 ...0dd3317535ec4f4d29adf9d620b3d8d5d5069.json | 0 ...8fd17d9840595845582fcb047df13f006787d.json | 0 ...e3743e9fac8bb60408797607352e24db7d65e.json | 0 ...4c96c8593536e31f229ea8f37b2ada2699bb2.json | 0 ...9dcdc9e23a9068bf557ad5b186675c61d33ea.json | 0 schemas/rpc.schema.json | 6 +- scripts/build.ts | 396 ++++++++++-------- scripts/import-rpcs.ts | 2 +- scripts/validate.ts | 308 ++++++++------ 431 files changed, 465 insertions(+), 316 deletions(-) rename data/addresses/{ => evm}/1/0xd5bd7a2d6e13d351e157e2a0396dac810d6af390.json (100%) rename data/events/{ => evm}/1/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D.json (100%) rename data/events/{ => evm}/1/common.json (100%) create mode 100644 data/rpcs/btc/mainnet.json create mode 100644 data/rpcs/btc/testnet4.json rename data/rpcs/{ => evm}/1.json (100%) rename data/rpcs/{ => evm}/10.json (100%) rename data/rpcs/{ => evm}/11155111.json (100%) rename data/rpcs/{ => evm}/42161.json (100%) rename data/rpcs/{ => evm}/56.json (100%) rename data/rpcs/{ => evm}/8453.json (100%) rename data/rpcs/{ => evm}/97.json (100%) rename data/tokens/{ => evm}/1/0x0000000000085d4780b73119b644ae5ecd22b376.json (100%) rename data/tokens/{ => evm}/1/0x0000000000095413afc295d19edeb1ad7b71c952.json (100%) rename data/tokens/{ => evm}/1/0x0391d2021f89dc339f60fff84546ea23e337750f.json (100%) rename data/tokens/{ => evm}/1/0x04fa0d235c4abf4bcf4787af4cf447de572ef828.json (100%) rename data/tokens/{ => evm}/1/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd.json (100%) rename data/tokens/{ => evm}/1/0x090185f2135308bad17527004364ebcc2d37e5f6.json (100%) rename data/tokens/{ => evm}/1/0x0954906da0bf32d5479e25f46056d22f08464cab.json (100%) rename data/tokens/{ => evm}/1/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f.json (100%) rename data/tokens/{ => evm}/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.json (100%) rename data/tokens/{ => evm}/1/0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6.json (100%) rename data/tokens/{ => evm}/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.json (100%) rename data/tokens/{ => evm}/1/0x0d8775f648430679a709e98d2b0cb6250d2887ef.json (100%) rename data/tokens/{ => evm}/1/0x0f5d2fb29fb7d3cfee444a200298f468908cc942.json (100%) rename data/tokens/{ => evm}/1/0x111111111117dc0aa78b770fa6a738034120c302.json (100%) rename data/tokens/{ => evm}/1/0x12970e6868f88f6557b76120662c1b3e50a646bf.json (100%) rename data/tokens/{ => evm}/1/0x1456688345527be1f37e9e627da0837d6f08c925.json (100%) rename data/tokens/{ => evm}/1/0x152649ea73beab28c5b49b26eb48f7ead6d4c898.json (100%) rename data/tokens/{ => evm}/1/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da.json (100%) rename data/tokens/{ => evm}/1/0x163f8c2467924be0ae7b5347228cabf260318753.json (100%) rename data/tokens/{ => evm}/1/0x18084fba666a33d37592fa2633fd49a74dd93a88.json (100%) rename data/tokens/{ => evm}/1/0x1985365e9f78359a9b6ad760e32412f4a445e862.json (100%) rename data/tokens/{ => evm}/1/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8.json (100%) rename data/tokens/{ => evm}/1/0x1ce270557c1f68cfb577b856766310bf8b47fd9c.json (100%) rename data/tokens/{ => evm}/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.json (100%) rename data/tokens/{ => evm}/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.json (100%) rename data/tokens/{ => evm}/1/0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json (100%) rename data/tokens/{ => evm}/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.json (100%) rename data/tokens/{ => evm}/1/0x3231cb76718cdef2155fc47b5286d82e6eda273f.json (100%) rename data/tokens/{ => evm}/1/0x32353a6c91143bfd6c7d363b546e62a9a2489a20.json (100%) rename data/tokens/{ => evm}/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.json (100%) rename data/tokens/{ => evm}/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.json (100%) rename data/tokens/{ => evm}/1/0x4200000000000000000000000000000000000042.json (100%) rename data/tokens/{ => evm}/1/0x4691937a7508860f876c9c0a2a617e7d9e945d4b.json (100%) rename data/tokens/{ => evm}/1/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b.json (100%) rename data/tokens/{ => evm}/1/0x4a220e6096b25eadb88358cb44068a3248254675.json (100%) rename data/tokens/{ => evm}/1/0x4a3e164684812dfb684ac36457e7fa805087c68e.json (100%) rename data/tokens/{ => evm}/1/0x4c9edd5852cd905f086c759e8383e09bff1e68b3.json (100%) rename data/tokens/{ => evm}/1/0x4d224452801aced8b2f0aebe155379bb5d594381.json (100%) rename data/tokens/{ => evm}/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.json (100%) rename data/tokens/{ => evm}/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.json (100%) rename data/tokens/{ => evm}/1/0x4f9254c83eb525f9fcf346490bbb3ed28a81c667.json (100%) rename data/tokens/{ => evm}/1/0x4fabb145d64652a948d72533023f6e7a623c7c53.json (100%) rename data/tokens/{ => evm}/1/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9.json (100%) rename data/tokens/{ => evm}/1/0x514910771af9ca656af840dff83e8264ecf986ca.json (100%) rename data/tokens/{ => evm}/1/0x524cab2ec69124574082676e6f654a18df49a048.json (100%) rename data/tokens/{ => evm}/1/0x5283d291dbcf85356a21ba090e6db59121208b44.json (100%) rename data/tokens/{ => evm}/1/0x57ab1ec28d129707052df4df418d58a2d46d5f51.json (100%) rename data/tokens/{ => evm}/1/0x582d872a1b094fc48f5de31d3b73f2d9be47def1.json (100%) rename data/tokens/{ => evm}/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.json (100%) rename data/tokens/{ => evm}/1/0x5af0d9827e0c53e4799bb226655a1de152a425a5.json (100%) rename data/tokens/{ => evm}/1/0x5e8422345238f34275888049021821e8e08caa1f.json (100%) rename data/tokens/{ => evm}/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.json (100%) rename data/tokens/{ => evm}/1/0x60e4d786628fea6478f785a6d7e704777c86a7c6.json (100%) rename data/tokens/{ => evm}/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.json (100%) rename data/tokens/{ => evm}/1/0x61e90a50137e1f645c9ef4a0d3a4f01477738406.json (100%) rename data/tokens/{ => evm}/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.json (100%) rename data/tokens/{ => evm}/1/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json (100%) rename data/tokens/{ => evm}/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.json (100%) rename data/tokens/{ => evm}/1/0x6810e776880c02933d47db1b9fc05908e5386b96.json (100%) rename data/tokens/{ => evm}/1/0x6982508145454ce325ddbe47a25d4ec3d2311933.json (100%) rename data/tokens/{ => evm}/1/0x6b175474e89094c44da98b954eedeac495271d0f.json (100%) rename data/tokens/{ => evm}/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.json (100%) rename data/tokens/{ => evm}/1/0x6c6ee5e31d828de241282b9606c8e98ea48526e2.json (100%) rename data/tokens/{ => evm}/1/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24.json (100%) rename data/tokens/{ => evm}/1/0x6e2a43be0b1d33b726f0ca3b8de60b3482b8b050.json (100%) rename data/tokens/{ => evm}/1/0x6f40d4a6237c257fff2db00fa0510deeecd303eb.json (100%) rename data/tokens/{ => evm}/1/0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json (100%) rename data/tokens/{ => evm}/1/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec.json (100%) rename data/tokens/{ => evm}/1/0x75231f58b43240c9718dd58b4967c5114342a86c.json (100%) rename data/tokens/{ => evm}/1/0x77777feddddffc19ff86db637967013e6c6a116c.json (100%) rename data/tokens/{ => evm}/1/0x7a58c0be72be218b41c608b7fe7c5bb630736c71.json (100%) rename data/tokens/{ => evm}/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.json (100%) rename data/tokens/{ => evm}/1/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0.json (100%) rename data/tokens/{ => evm}/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.json (100%) rename data/tokens/{ => evm}/1/0x808507121b80c02388fad14726482e061b8da827.json (100%) rename data/tokens/{ => evm}/1/0x80c62fe4487e1351b47ba49809ebd60ed085bf52.json (100%) rename data/tokens/{ => evm}/1/0x80fb784b7ed66730e8b1dbd9820afd29931aab03.json (100%) rename data/tokens/{ => evm}/1/0x83f20f44975d03b1b09e64809b757c47f942beea.json (100%) rename data/tokens/{ => evm}/1/0x853d955acef822db058eb8505911ed77f175b99e.json (100%) rename data/tokens/{ => evm}/1/0x865377367054516e17014ccded1e7d814edc9ce4.json (100%) rename data/tokens/{ => evm}/1/0x8821bee2ba0df28761afff119d66390d594cd280.json (100%) rename data/tokens/{ => evm}/1/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e.json (100%) rename data/tokens/{ => evm}/1/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9.json (100%) rename data/tokens/{ => evm}/1/0x8e870d67f660d95d5be530380d0ec0bd388289e1.json (100%) rename data/tokens/{ => evm}/1/0x92d6c1e31e14520e676a687f0a93788b716beff5.json (100%) rename data/tokens/{ => evm}/1/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551.json (100%) rename data/tokens/{ => evm}/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.json (100%) rename data/tokens/{ => evm}/1/0x967da4048cd07ab37855c090aaf366e4ce1b9f48.json (100%) rename data/tokens/{ => evm}/1/0x9813037ee2218799597d83d4a5b6f3b6778218d9.json (100%) rename data/tokens/{ => evm}/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.json (100%) rename data/tokens/{ => evm}/1/0x9d39a5de30e57443bff2a8307a4256c8797a3497.json (100%) rename data/tokens/{ => evm}/1/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e.json (100%) rename data/tokens/{ => evm}/1/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2.json (100%) rename data/tokens/{ => evm}/1/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b.json (100%) rename data/tokens/{ => evm}/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json (100%) rename data/tokens/{ => evm}/1/0xa117000000f279d81a1d3cc75430faa017fa5a2e.json (100%) rename data/tokens/{ => evm}/1/0xa1faa113cbe53436df28ff0aee54275c13b40975.json (100%) rename data/tokens/{ => evm}/1/0xa2e3356610840701bdf5611a53974510ae27e2e1.json (100%) rename data/tokens/{ => evm}/1/0xa35b1b31ce002fbf2058d22f30f95d405200a15b.json (100%) rename data/tokens/{ => evm}/1/0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32.json (100%) rename data/tokens/{ => evm}/1/0xa693b19d2931d498c5b318df961919bb4aee87a5.json (100%) rename data/tokens/{ => evm}/1/0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096.json (100%) rename data/tokens/{ => evm}/1/0xaaef88cea01475125522e117bfe45cf32044e238.json (100%) rename data/tokens/{ => evm}/1/0xac3e018457b222d93114458476f3e3416abbe38f.json (100%) rename data/tokens/{ => evm}/1/0xae7ab96520de3a18e5e111b5eaab095312d7fe84.json (100%) rename data/tokens/{ => evm}/1/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85.json (100%) rename data/tokens/{ => evm}/1/0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json (100%) rename data/tokens/{ => evm}/1/0xb23d80f5fefcddaa212212f028021b41ded428cf.json (100%) rename data/tokens/{ => evm}/1/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb.json (100%) rename data/tokens/{ => evm}/1/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1.json (100%) rename data/tokens/{ => evm}/1/0xb8c77482e45f1f44de1745f52c74426c631bdd52.json (100%) rename data/tokens/{ => evm}/1/0xba100000625a3754423978a60c9317c58a424e3d.json (100%) rename data/tokens/{ => evm}/1/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b.json (100%) rename data/tokens/{ => evm}/1/0xbbbbca6a901c926f240b89eacb641d8aec7aeafd.json (100%) rename data/tokens/{ => evm}/1/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d.json (100%) rename data/tokens/{ => evm}/1/0xbd3531da5cf5857e7cfaa92426877b022e612cf8.json (100%) rename data/tokens/{ => evm}/1/0xbe9895146f7af43049ca1c1ae358b0541ea49704.json (100%) rename data/tokens/{ => evm}/1/0xbf5495efe5db9ce00f80364c8b423567e58d2110.json (100%) rename data/tokens/{ => evm}/1/0xc00e94cb662c3520282e6f5717214004a7f26888.json (100%) rename data/tokens/{ => evm}/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json (100%) rename data/tokens/{ => evm}/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json (100%) rename data/tokens/{ => evm}/1/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72.json (100%) rename data/tokens/{ => evm}/1/0xc221b7e65ffc80de234bbb6667abdd46593d34f0.json (100%) rename data/tokens/{ => evm}/1/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed.json (100%) rename data/tokens/{ => evm}/1/0xc944e90c64b2c07662a292be6244bdf05cda44a7.json (100%) rename data/tokens/{ => evm}/1/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json (100%) rename data/tokens/{ => evm}/1/0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25.json (100%) rename data/tokens/{ => evm}/1/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee.json (100%) rename data/tokens/{ => evm}/1/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e.json (100%) rename data/tokens/{ => evm}/1/0xd1d2eb1b1e90b638588728b4130137d262c87cae.json (100%) rename data/tokens/{ => evm}/1/0xd26114cd6ee289accf82350c8d8487fedb8a0c07.json (100%) rename data/tokens/{ => evm}/1/0xd31a59c85ae9d8edefec411d448f90841571b89c.json (100%) rename data/tokens/{ => evm}/1/0xd4949664cd82660aae99bedc034a0dea8a0bd517.json (100%) rename data/tokens/{ => evm}/1/0xd533a949740bb3306d119cc777fa900ba034cd52.json (100%) rename data/tokens/{ => evm}/1/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa.json (100%) rename data/tokens/{ => evm}/1/0xdac17f958d2ee523a2206206994597c13d831ec7.json (100%) rename data/tokens/{ => evm}/1/0xdb25f211ab05b1c97d595516f45794528a807ad8.json (100%) rename data/tokens/{ => evm}/1/0xdc035d45d973e3ec169d2276ddab16f1e407384f.json (100%) rename data/tokens/{ => evm}/1/0xdd974d5c2e2928dea5f71b9825b8b646686bd200.json (100%) rename data/tokens/{ => evm}/1/0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202.json (100%) rename data/tokens/{ => evm}/1/0xe28b3b32b6c345a34ff64674606124dd5aceca30.json (100%) rename data/tokens/{ => evm}/1/0xe2f2a5c287993345a840db3b0845fbc70f5935a5.json (100%) rename data/tokens/{ => evm}/1/0xe41d2489571d322189246dafa5ebde1f4699f498.json (100%) rename data/tokens/{ => evm}/1/0xec53bf9167f50cdeb3ae105f56099aaab9061f83.json (100%) rename data/tokens/{ => evm}/1/0xed5af388653567af2f388e6224dc7c4b3241c544.json (100%) rename data/tokens/{ => evm}/1/0xf17e65822b568b3903685a7c9f496cf7656cc6c2.json (100%) rename data/tokens/{ => evm}/1/0xf411903cbc70a74d22900a5de66a2dda66507255.json (100%) rename data/tokens/{ => evm}/1/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff.json (100%) rename data/tokens/{ => evm}/1/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c.json (100%) rename data/tokens/{ => evm}/1/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3.json (100%) rename data/tokens/{ => evm}/1/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb.json (100%) rename data/tokens/{ => evm}/10/0x0994206dfe8de6ec6920ff4d779b0d950605fb53.json (100%) rename data/tokens/{ => evm}/10/0x0b2c639c533813f4aa9d7837caf62653d097ff85.json (100%) rename data/tokens/{ => evm}/10/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb.json (100%) rename data/tokens/{ => evm}/10/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json (100%) rename data/tokens/{ => evm}/10/0x2416092f143378750bb29b79ed961ab195cceea5.json (100%) rename data/tokens/{ => evm}/10/0x2e3d870790dc77a83dd1d18184acc7439a53f475.json (100%) rename data/tokens/{ => evm}/10/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json (100%) rename data/tokens/{ => evm}/10/0x3e7ef8f50246f725885102e8238cbba33f276747.json (100%) rename data/tokens/{ => evm}/10/0x4200000000000000000000000000000000000006.json (100%) rename data/tokens/{ => evm}/10/0x4200000000000000000000000000000000000042.json (100%) rename data/tokens/{ => evm}/10/0x5029c236320b8f15ef0a657054b84d90bfbeded3.json (100%) rename data/tokens/{ => evm}/10/0x5a5fff6f753d7c11a56a52fe47a177a87e431655.json (100%) rename data/tokens/{ => evm}/10/0x5d47baba0d66083c52009271faf3f50dcc01023c.json (100%) rename data/tokens/{ => evm}/10/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json (100%) rename data/tokens/{ => evm}/10/0x67ccea5bb16181e7b4109c9c2143c24a1c2205be.json (100%) rename data/tokens/{ => evm}/10/0x6806411765af15bddd26f8f544a34cc40cb9838b.json (100%) rename data/tokens/{ => evm}/10/0x68f180fcce6836688e9084f035309e29bf0a2095.json (100%) rename data/tokens/{ => evm}/10/0x6fd9d7ad17242c41f7131d257212c54a0e816691.json (100%) rename data/tokens/{ => evm}/10/0x76fb31fb4af56892a25e32cfc43de717950c9278.json (100%) rename data/tokens/{ => evm}/10/0x7f5c764cbc14f9669b88837ca1490cca17c31607.json (100%) rename data/tokens/{ => evm}/10/0x8700daec35af8ff88c16bdf0418774cb3d7599b4.json (100%) rename data/tokens/{ => evm}/10/0x8ae125e8653821e851f12a49f7765db9a9ce7384.json (100%) rename data/tokens/{ => evm}/10/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9.json (100%) rename data/tokens/{ => evm}/10/0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json (100%) rename data/tokens/{ => evm}/10/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58.json (100%) rename data/tokens/{ => evm}/10/0x9560e827af36c94d2ac33a39bce1fe78631088db.json (100%) rename data/tokens/{ => evm}/10/0x9bcef72be871e61ed4fbbc7630889bee758eb81d.json (100%) rename data/tokens/{ => evm}/10/0x9c7305eb78a432ced5c4d14cac27e8ed569a2e26.json (100%) rename data/tokens/{ => evm}/10/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json (100%) rename data/tokens/{ => evm}/10/0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json (100%) rename data/tokens/{ => evm}/10/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json (100%) rename data/tokens/{ => evm}/10/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b.json (100%) rename data/tokens/{ => evm}/10/0xb8df6cc3050cc02f967db1ee48330ba23276a492.json (100%) rename data/tokens/{ => evm}/10/0xba12222222228d8ba445958a75a0704d566bf2c8.json (100%) rename data/tokens/{ => evm}/10/0xbc011a12da28e8f0f528d9ee5e7039e22f91cf18.json (100%) rename data/tokens/{ => evm}/10/0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1.json (100%) rename data/tokens/{ => evm}/10/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819.json (100%) rename data/tokens/{ => evm}/10/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json (100%) rename data/tokens/{ => evm}/10/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1.json (100%) rename data/tokens/{ => evm}/10/0xdfa46478f9e5ea86d57387849598dbfb2e964b02.json (100%) rename data/tokens/{ => evm}/10/0xfa14e1157f35e1dad95dc3f822a9d18c40e360e2.json (100%) rename data/tokens/{ => evm}/10/0xfdb794692724153d1488ccdbe0c56c252596735f.json (100%) rename data/tokens/{ => evm}/10/0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921.json (100%) rename data/tokens/{ => evm}/11155111/0x1c7d4b196cb0c7b01d743fbc6116a902379c7238.json (100%) rename data/tokens/{ => evm}/11155111/0x68194a729c2450ad26072b3d33adfff1cc69b3f3.json (100%) rename data/tokens/{ => evm}/11155111/0x7169d38820dfd117c3fa1f22a697dba58d90ba06.json (100%) rename data/tokens/{ => evm}/11155111/0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json (100%) rename data/tokens/{ => evm}/11155111/0x779877a7b0d9e8603169ddbd7836e478b4624789.json (100%) rename data/tokens/{ => evm}/11155111/0x8267cf9254734c6eb452a7bb9aaf97b392258b21.json (100%) rename data/tokens/{ => evm}/11155111/0x93fCA4c6E2525C09c95269055B46f16b1459BF9d.json (100%) rename data/tokens/{ => evm}/11155111/0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json (100%) rename data/tokens/{ => evm}/11155111/0xaa8e23fb1079ea71e0a56f48a2aa51851d8433d0.json (100%) rename data/tokens/{ => evm}/11155111/0xb19382073c7a0addbb56ac6af1808fa49e377b75.json (100%) rename data/tokens/{ => evm}/11155111/0xc21d97673B9E0B3AA53a06439F71fDc1facE393B.json (100%) rename data/tokens/{ => evm}/11155111/0xc558dbdd856501fcd9aaf1e62eae57a9f0629a3c.json (100%) rename data/tokens/{ => evm}/11155111/0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c.json (100%) rename data/tokens/{ => evm}/11155111/0xfff9976782d46cc05630d1f6ebab18b2324d6b14.json (100%) rename data/tokens/{ => evm}/137/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd.json (100%) rename data/tokens/{ => evm}/137/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a.json (100%) rename data/tokens/{ => evm}/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270.json (100%) rename data/tokens/{ => evm}/137/0x172370d5cd63279efa6d502dab29171933a610af.json (100%) rename data/tokens/{ => evm}/137/0x1a13f4ca1d028320a707d99520abfefca3998b7f.json (100%) rename data/tokens/{ => evm}/137/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6.json (100%) rename data/tokens/{ => evm}/137/0x2791bca1f2de4661ed88a30c99a7a9449aa84174.json (100%) rename data/tokens/{ => evm}/137/0x2b4a66557a79263275826ad31a4cddc2789334bd.json (100%) rename data/tokens/{ => evm}/137/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b.json (100%) rename data/tokens/{ => evm}/137/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json (100%) rename data/tokens/{ => evm}/137/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359.json (100%) rename data/tokens/{ => evm}/137/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89.json (100%) rename data/tokens/{ => evm}/137/0x50b728d8d964fd00c2d0aad81718b71311fef68a.json (100%) rename data/tokens/{ => evm}/137/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39.json (100%) rename data/tokens/{ => evm}/137/0x580a84c73811e1839f75d86d75d88cca0c241ff4.json (100%) rename data/tokens/{ => evm}/137/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json (100%) rename data/tokens/{ => evm}/137/0x5fe2b58c013d7601147dcdd68c143a77499f5531.json (100%) rename data/tokens/{ => evm}/137/0x61299774020da444af134c82fa83e3810b309991.json (100%) rename data/tokens/{ => evm}/137/0x6985884c4392d348587b19cb9eaaf157f13271cd.json (100%) rename data/tokens/{ => evm}/137/0x6a3e7c3c6ef65ee26975b12293ca1aad7e1daed2.json (100%) rename data/tokens/{ => evm}/137/0x6e4e624106cb12e168e6533f8ec7c82263358940.json (100%) rename data/tokens/{ => evm}/137/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec.json (100%) rename data/tokens/{ => evm}/137/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619.json (100%) rename data/tokens/{ => evm}/137/0x831753dd7087cac61ab5644b308642cc1c33dc13.json (100%) rename data/tokens/{ => evm}/137/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c.json (100%) rename data/tokens/{ => evm}/137/0x86935f11c86623dec8a25696e1c19a8659cbf95d.json (100%) rename data/tokens/{ => evm}/137/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063.json (100%) rename data/tokens/{ => evm}/137/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3.json (100%) rename data/tokens/{ => evm}/137/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f.json (100%) rename data/tokens/{ => evm}/137/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4.json (100%) rename data/tokens/{ => evm}/137/0xa3fa99a148fa48d14ed51d610c367c61876997f1.json (100%) rename data/tokens/{ => evm}/137/0xa93c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json (100%) rename data/tokens/{ => evm}/137/0xb33eaad8d922b1083446dc23f610c2567fb5180f.json (100%) rename data/tokens/{ => evm}/137/0xbbba073c31bf03b8acf7c28ef0738decf3695683.json (100%) rename data/tokens/{ => evm}/137/0xc2132d05d31c914a87c6611c10748aeb04b58e8f.json (100%) rename data/tokens/{ => evm}/137/0xc3c7d422809852031b44ab29eec9f1eff2a58756.json (100%) rename data/tokens/{ => evm}/137/0xd6df932a45c0f255f85145f286ea0b292b21c90b.json (100%) rename data/tokens/{ => evm}/137/0xdb46d1dc155634fbc732f92e853b10b288ad5a1d.json (100%) rename data/tokens/{ => evm}/137/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4.json (100%) rename data/tokens/{ => evm}/137/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json (100%) rename data/tokens/{ => evm}/42161/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8.json (100%) rename data/tokens/{ => evm}/42161/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978.json (100%) rename data/tokens/{ => evm}/42161/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json (100%) rename data/tokens/{ => evm}/42161/0x17dacad7975960833f374622fad08b90ed67d1b5.json (100%) rename data/tokens/{ => evm}/42161/0x17f4baa9d35ee54ffbcb2608e20786473c7aa49f.json (100%) rename data/tokens/{ => evm}/42161/0x17fc002b466eec40dae837fc4be5c67993ddbd6f.json (100%) rename data/tokens/{ => evm}/42161/0x18c11fd286c5ec11c3b683caa813b77f5163a122.json (100%) rename data/tokens/{ => evm}/42161/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json (100%) rename data/tokens/{ => evm}/42161/0x2416092f143378750bb29b79ed961ab195cceea5.json (100%) rename data/tokens/{ => evm}/42161/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f.json (100%) rename data/tokens/{ => evm}/42161/0x3082cc23568ea640225c2467653db90e9250aaa0.json (100%) rename data/tokens/{ => evm}/42161/0x32eb7902d4134bf98a28b963d26de779af92a212.json (100%) rename data/tokens/{ => evm}/42161/0x35751007a407ca6feffe80b3cb397736d2cf4dbe.json (100%) rename data/tokens/{ => evm}/42161/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8.json (100%) rename data/tokens/{ => evm}/42161/0x3f56e0c36d275367b8c502090edf38289b3dea0d.json (100%) rename data/tokens/{ => evm}/42161/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42.json (100%) rename data/tokens/{ => evm}/42161/0x539bde0d7dbd336b79148aa742883198bbf60342.json (100%) rename data/tokens/{ => evm}/42161/0x5979d7b546e38e414f7e9822514be443a4800529.json (100%) rename data/tokens/{ => evm}/42161/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json (100%) rename data/tokens/{ => evm}/42161/0x6325439389e0797ab35752b4f43a14c004f22a9c.json (100%) rename data/tokens/{ => evm}/42161/0x6985884c4392d348587b19cb9eaaf157f13271cd.json (100%) rename data/tokens/{ => evm}/42161/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55.json (100%) rename data/tokens/{ => evm}/42161/0x6daf586b7370b14163171544fca24abcc0862ac5.json (100%) rename data/tokens/{ => evm}/42161/0x82af49447d8a07e3bd95bd0d56f35241523fbab1.json (100%) rename data/tokens/{ => evm}/42161/0x912ce59144191c1204e64559fe8253a0e49e6548.json (100%) rename data/tokens/{ => evm}/42161/0x93b346b6bc2548da6a1e7d98e9a421b42541425b.json (100%) rename data/tokens/{ => evm}/42161/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7.json (100%) rename data/tokens/{ => evm}/42161/0xa0b862f60edef4452f25b4160f177db44deb6cf1.json (100%) rename data/tokens/{ => evm}/42161/0xaf88d065e77c8cc2239327c5edb3a432268e5831.json (100%) rename data/tokens/{ => evm}/42161/0xba5ddd1f9d7f570dc94a51479a000e3bce967196.json (100%) rename data/tokens/{ => evm}/42161/0xd4d42f0b6def4ce0383636770ef773390d85c61a.json (100%) rename data/tokens/{ => evm}/42161/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json (100%) rename data/tokens/{ => evm}/42161/0xe31cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json (100%) rename data/tokens/{ => evm}/42161/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json (100%) rename data/tokens/{ => evm}/42161/0xede855ced3e5a59aaa267abdddb0db21ccfe5072.json (100%) rename data/tokens/{ => evm}/42161/0xf97f4df75117a78c1a5a0dbb814af92458539fb4.json (100%) rename data/tokens/{ => evm}/42161/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0.json (100%) rename data/tokens/{ => evm}/42161/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json (100%) rename data/tokens/{ => evm}/42161/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json (100%) rename data/tokens/{ => evm}/42161/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8.json (100%) rename data/tokens/{ => evm}/56/0x0a8901b0e25deb55a87524f0cc164e9644020eba.json (100%) rename data/tokens/{ => evm}/56/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.json (100%) rename data/tokens/{ => evm}/56/0x0eb3a705fc54725037cc9e008bdede697f62f335.json (100%) rename data/tokens/{ => evm}/56/0x101d82428437127bf1608f699cd651e6abf9766e.json (100%) rename data/tokens/{ => evm}/56/0x14016e85a25aeb13065688cafb43044c2ef86784.json (100%) rename data/tokens/{ => evm}/56/0x16939ef78684453bfdfb47825f8a5f714f12623a.json (100%) rename data/tokens/{ => evm}/56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.json (100%) rename data/tokens/{ => evm}/56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.json (100%) rename data/tokens/{ => evm}/56/0x2170ed0880ac9a755fd29b2688956bd959f933f8.json (100%) rename data/tokens/{ => evm}/56/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.json (100%) rename data/tokens/{ => evm}/56/0x2859e4544c4bb03966803b044a93563bd2d0dd4d.json (100%) rename data/tokens/{ => evm}/56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.json (100%) rename data/tokens/{ => evm}/56/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.json (100%) rename data/tokens/{ => evm}/56/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.json (100%) rename data/tokens/{ => evm}/56/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.json (100%) rename data/tokens/{ => evm}/56/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.json (100%) rename data/tokens/{ => evm}/56/0x55d398326f99059ff775485246999027b3197955.json (100%) rename data/tokens/{ => evm}/56/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.json (100%) rename data/tokens/{ => evm}/56/0x570a5d26f7765ecb712c0924e4de545b89fd43df.json (100%) rename data/tokens/{ => evm}/56/0x5f0da599bb2cccfcf6fdfd7d81743cabae698889.json (100%) rename data/tokens/{ => evm}/56/0x5f41842cff838120271d772c6994f051d418a4ad.json (100%) rename data/tokens/{ => evm}/56/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.json (100%) rename data/tokens/{ => evm}/56/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json (100%) rename data/tokens/{ => evm}/56/0x715d400f88c167884bbcc41c5fea407ed4d2f8a0.json (100%) rename data/tokens/{ => evm}/56/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.json (100%) rename data/tokens/{ => evm}/56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.json (100%) rename data/tokens/{ => evm}/56/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.json (100%) rename data/tokens/{ => evm}/56/0x9c65ab58d8d978db963e63f2bfb7121627e3a739.json (100%) rename data/tokens/{ => evm}/56/0xa184088a740c695e156f91f5cc086a06bb78b827.json (100%) rename data/tokens/{ => evm}/56/0xb86abcb37c3a4b64f74f59301aff131a1becc787.json (100%) rename data/tokens/{ => evm}/56/0xba2ae424d960c26247dd6c32edc70b295c744c43.json (100%) rename data/tokens/{ => evm}/56/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json (100%) rename data/tokens/{ => evm}/56/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.json (100%) rename data/tokens/{ => evm}/56/0xcc42724c6683b7e57334c4e856f4c9965ed682bd.json (100%) rename data/tokens/{ => evm}/56/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3.json (100%) rename data/tokens/{ => evm}/56/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.json (100%) rename data/tokens/{ => evm}/56/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json (100%) rename data/tokens/{ => evm}/56/0xdf7952b35f24acf7fc0487d01c8d5690a60dba07.json (100%) rename data/tokens/{ => evm}/56/0xe9e7cea3dedca5984780bafc599bd69add087d56.json (100%) rename data/tokens/{ => evm}/56/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.json (100%) rename data/tokens/{ => evm}/56/0xfb6115445bff7b52feb98650c87f44907e58f802.json (100%) rename data/tokens/{ => evm}/56/0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c.json (100%) rename data/tokens/{ => evm}/56/0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba.json (100%) rename data/tokens/{ => evm}/8453/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a.json (100%) rename data/tokens/{ => evm}/8453/0x0555e30da8f98308edb960aa94c0db47230d2b9c.json (100%) rename data/tokens/{ => evm}/8453/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe.json (100%) rename data/tokens/{ => evm}/8453/0x09188484e1ab980daef53a9755241d759c5b7d60.json (100%) rename data/tokens/{ => evm}/8453/0x0a27e060c0406f8ab7b64e3bee036a37e5a62853.json (100%) rename data/tokens/{ => evm}/8453/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b.json (100%) rename data/tokens/{ => evm}/8453/0x1a35ee4640b0a3b87705b0a4b45d227ba60ca2ad.json (100%) rename data/tokens/{ => evm}/8453/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85.json (100%) rename data/tokens/{ => evm}/8453/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4.json (100%) rename data/tokens/{ => evm}/8453/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json (100%) rename data/tokens/{ => evm}/8453/0x217ec1ac929a17481446a76ff9b95b9a64f298cf.json (100%) rename data/tokens/{ => evm}/8453/0x22e6966b799c4d5b13be962e1d117b56327fda66.json (100%) rename data/tokens/{ => evm}/8453/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b.json (100%) rename data/tokens/{ => evm}/8453/0x2416092f143378750bb29b79ed961ab195cceea5.json (100%) rename data/tokens/{ => evm}/8453/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8.json (100%) rename data/tokens/{ => evm}/8453/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json (100%) rename data/tokens/{ => evm}/8453/0x2da56acb9ea78330f947bd57c54119debda7af71.json (100%) rename data/tokens/{ => evm}/8453/0x2dad3a13ef0c6366220f989157009e501e7938f8.json (100%) rename data/tokens/{ => evm}/8453/0x3055913c90fcc1a6ce9a358911721eeb942013a1.json (100%) rename data/tokens/{ => evm}/8453/0x368181499736d0c0cc614dbb145e2ec1ac86b8c6.json (100%) rename data/tokens/{ => evm}/8453/0x3992b27da26848c2b19cea6fd25d2c9944f9488e.json (100%) rename data/tokens/{ => evm}/8453/0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f.json (100%) rename data/tokens/{ => evm}/8453/0x4158734d47fc9692176b5085e0f52ee0da5d47f1.json (100%) rename data/tokens/{ => evm}/8453/0x417ac0e078398c154edfadd9ef675d30be60af93.json (100%) rename data/tokens/{ => evm}/8453/0x4200000000000000000000000000000000000006.json (100%) rename data/tokens/{ => evm}/8453/0x4621b7a9c75199271f773ebd9a499dbd165c3191.json (100%) rename data/tokens/{ => evm}/8453/0x4ed4e862860bed51a9570b96d89af5e1b0efefed.json (100%) rename data/tokens/{ => evm}/8453/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825.json (100%) rename data/tokens/{ => evm}/8453/0x50c5725949a6f0c72e6c4a641f24049a917db0cb.json (100%) rename data/tokens/{ => evm}/8453/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d.json (100%) rename data/tokens/{ => evm}/8453/0x532f27101965dd16442e59d40670faf5ebb142e4.json (100%) rename data/tokens/{ => evm}/8453/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4.json (100%) rename data/tokens/{ => evm}/8453/0x5875eee11cf8398102fdad704c9e96607675467a.json (100%) rename data/tokens/{ => evm}/8453/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34.json (100%) rename data/tokens/{ => evm}/8453/0x60a3e35cc302bfa44cb36dc52a6d85b7e508de5a.json (100%) rename data/tokens/{ => evm}/8453/0x63706e401c06ac8513145b7687a14804d17f814b.json (100%) rename data/tokens/{ => evm}/8453/0x6921b130d297cc43754afba22e5eac0fbf8db75b.json (100%) rename data/tokens/{ => evm}/8453/0x6985884c4392d348587b19cb9eaaf157f13271cd.json (100%) rename data/tokens/{ => evm}/8453/0x78a087d713be963bf307b18f2ff8122ef9a63ae9.json (100%) rename data/tokens/{ => evm}/8453/0x7c6b91d9be155a6db01f749217d76ff02a7227f2.json (100%) rename data/tokens/{ => evm}/8453/0x7d49a065d17d6d4a55dc13649901fdbb98b2afba.json (100%) rename data/tokens/{ => evm}/8453/0x7fcd174e80f264448ebee8c88a7c4476aaf58ea6.json (100%) rename data/tokens/{ => evm}/8453/0x820c137fa70c8691f0e44dc420a5e53c168921dc.json (100%) rename data/tokens/{ => evm}/8453/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.json (100%) rename data/tokens/{ => evm}/8453/0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196.json (100%) rename data/tokens/{ => evm}/8453/0x8901cb2e82cc95c01e42206f8d1f417fe53e7af0.json (100%) rename data/tokens/{ => evm}/8453/0x940181a94a35a4569e4529a3cdfb74e38fd98631.json (100%) rename data/tokens/{ => evm}/8453/0x949bed087ff0241e04e98d807de3c3dd97eaa381.json (100%) rename data/tokens/{ => evm}/8453/0x9a26f5433671751c3276a065f57e5a02d2817973.json (100%) rename data/tokens/{ => evm}/8453/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json (100%) rename data/tokens/{ => evm}/8453/0xa449b4f43d9a33fcdcf397b9cc7aa909012709fd.json (100%) rename data/tokens/{ => evm}/8453/0xa7d68d155d17cb30e311367c2ef1e82ab6022b67.json (100%) rename data/tokens/{ => evm}/8453/0xab36452dbac151be02b16ca17d8919826072f64a.json (100%) rename data/tokens/{ => evm}/8453/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4.json (100%) rename data/tokens/{ => evm}/8453/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c.json (100%) rename data/tokens/{ => evm}/8453/0xba0dda8762c24da9487f5fa026a9b64b695a07ea.json (100%) rename data/tokens/{ => evm}/8453/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842.json (100%) rename data/tokens/{ => evm}/8453/0xbc45647ea894030a4e9801ec03479739fa2485f0.json (100%) rename data/tokens/{ => evm}/8453/0xbe3ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json (100%) rename data/tokens/{ => evm}/8453/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452.json (100%) rename data/tokens/{ => evm}/8453/0xc2106ca72996e49bbadba9e6bb98e0adfe5b40f6.json (100%) rename data/tokens/{ => evm}/8453/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.json (100%) rename data/tokens/{ => evm}/8453/0xca5d8f8a8d49439357d3cf46ca2e720702f132b8.json (100%) rename data/tokens/{ => evm}/8453/0xcb28749c24af4797808364d71d71539bc01e76d4.json (100%) rename data/tokens/{ => evm}/8453/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json (100%) rename data/tokens/{ => evm}/8453/0xcc7ff230365bd730ee4b352cc2492cedac49383e.json (100%) rename data/tokens/{ => evm}/8453/0xcde172dc5ffc46d228838446c57c1227e0b82049.json (100%) rename data/tokens/{ => evm}/8453/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4.json (100%) rename data/tokens/{ => evm}/8453/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca.json (100%) rename data/tokens/{ => evm}/8453/0xddb3422497e61e13543bea06989c0789117555c5.json (100%) rename data/tokens/{ => evm}/8453/0xe3b53af74a4bf62ae5511055290838050bf764df.json (100%) rename data/tokens/{ => evm}/8453/0xeb466342c4d449bc9f53a865d5cb90586f405215.json (100%) rename data/tokens/{ => evm}/8453/0xecbb3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json (100%) rename data/tokens/{ => evm}/8453/0xed4e879087ebd0e8a77d66870012b5e0dffd0fa4.json (100%) rename data/tokens/{ => evm}/8453/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22.json (100%) rename data/tokens/{ => evm}/8453/0xefb97aaf77993922ac4be4da8fbc9a2425322677.json (100%) rename data/tokens/{ => evm}/8453/0xf0d0df7142f60f7f3847463a509fd8969e3e3a27.json (100%) rename data/tokens/{ => evm}/8453/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50.json (100%) rename data/tokens/{ => evm}/8453/0xf7a0dd3317535ec4f4d29adf9d620b3d8d5d5069.json (100%) rename data/tokens/{ => evm}/8453/0xfaf8fd17d9840595845582fcb047df13f006787d.json (100%) rename data/tokens/{ => evm}/8453/0xfc5e3743e9fac8bb60408797607352e24db7d65e.json (100%) rename data/tokens/{ => evm}/8453/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2.json (100%) rename data/tokens/{ => evm}/8453/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea.json (100%) diff --git a/data/addresses/1/0xd5bd7a2d6e13d351e157e2a0396dac810d6af390.json b/data/addresses/evm/1/0xd5bd7a2d6e13d351e157e2a0396dac810d6af390.json similarity index 100% rename from data/addresses/1/0xd5bd7a2d6e13d351e157e2a0396dac810d6af390.json rename to data/addresses/evm/1/0xd5bd7a2d6e13d351e157e2a0396dac810d6af390.json diff --git a/data/events/1/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D.json b/data/events/evm/1/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D.json similarity index 100% rename from data/events/1/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D.json rename to data/events/evm/1/0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D.json diff --git a/data/events/1/common.json b/data/events/evm/1/common.json similarity index 100% rename from data/events/1/common.json rename to data/events/evm/1/common.json diff --git a/data/networks.json b/data/networks.json index 9602dc2dc2..df6b2b0ca3 100644 --- a/data/networks.json +++ b/data/networks.json @@ -316,6 +316,28 @@ "description": "Bitcoin Core repository" } ] + }, + { + "type": "bitcoin", + "networkId": "bip122:00000000da84f2bafbbc53dee25a72ae", + "name": "Bitcoin Testnet4", + "shortName": "Testnet4", + "description": "Bitcoin testnet for developers (testnet4)", + "currency": "tBTC", + "color": "#F7931A", + "isTestnet": true, + "links": [ + { + "name": "Mempool Explorer", + "url": "https://mempool.space/testnet4", + "description": "Mempool.space testnet4 explorer" + }, + { + "name": "GitHub", + "url": "https://github.com/bitcoin/bitcoin", + "description": "Bitcoin Core repository" + } + ] } ] } diff --git a/data/rpcs/btc/mainnet.json b/data/rpcs/btc/mainnet.json new file mode 100644 index 0000000000..61b03e27a1 --- /dev/null +++ b/data/rpcs/btc/mainnet.json @@ -0,0 +1,34 @@ +{ + "networkId": "bip122:000000000019d6689c085ae165831e93", + "updatedAt": "2026-02-12", + "endpoints": [ + { + "url": "https://mempool.space/api", + "tracking": "none", + "isOpenSource": true, + "provider": "Mempool.space", + "isPublic": true + }, + { + "url": "https://blockstream.info/api", + "tracking": "limited", + "isOpenSource": true, + "provider": "Blockstream", + "isPublic": true + }, + { + "url": "https://blockchain.info", + "tracking": "yes", + "isOpenSource": false, + "provider": "Blockchain.com", + "isPublic": true + }, + { + "url": "https://btc.drpc.org", + "tracking": "none", + "isOpenSource": false, + "provider": "dRPC", + "isPublic": true + } + ] +} diff --git a/data/rpcs/btc/testnet4.json b/data/rpcs/btc/testnet4.json new file mode 100644 index 0000000000..904737da65 --- /dev/null +++ b/data/rpcs/btc/testnet4.json @@ -0,0 +1,13 @@ +{ + "networkId": "bip122:00000000da84f2bafbbc53dee25a72ae", + "updatedAt": "2026-02-13", + "endpoints": [ + { + "url": "https://mempool.space/testnet4/api", + "tracking": "none", + "isOpenSource": true, + "provider": "Mempool.space", + "isPublic": true + } + ] +} diff --git a/data/rpcs/1.json b/data/rpcs/evm/1.json similarity index 100% rename from data/rpcs/1.json rename to data/rpcs/evm/1.json diff --git a/data/rpcs/10.json b/data/rpcs/evm/10.json similarity index 100% rename from data/rpcs/10.json rename to data/rpcs/evm/10.json diff --git a/data/rpcs/11155111.json b/data/rpcs/evm/11155111.json similarity index 100% rename from data/rpcs/11155111.json rename to data/rpcs/evm/11155111.json diff --git a/data/rpcs/42161.json b/data/rpcs/evm/42161.json similarity index 100% rename from data/rpcs/42161.json rename to data/rpcs/evm/42161.json diff --git a/data/rpcs/56.json b/data/rpcs/evm/56.json similarity index 100% rename from data/rpcs/56.json rename to data/rpcs/evm/56.json diff --git a/data/rpcs/8453.json b/data/rpcs/evm/8453.json similarity index 100% rename from data/rpcs/8453.json rename to data/rpcs/evm/8453.json diff --git a/data/rpcs/97.json b/data/rpcs/evm/97.json similarity index 100% rename from data/rpcs/97.json rename to data/rpcs/evm/97.json diff --git a/data/tokens/1/0x0000000000085d4780b73119b644ae5ecd22b376.json b/data/tokens/evm/1/0x0000000000085d4780b73119b644ae5ecd22b376.json similarity index 100% rename from data/tokens/1/0x0000000000085d4780b73119b644ae5ecd22b376.json rename to data/tokens/evm/1/0x0000000000085d4780b73119b644ae5ecd22b376.json diff --git a/data/tokens/1/0x0000000000095413afc295d19edeb1ad7b71c952.json b/data/tokens/evm/1/0x0000000000095413afc295d19edeb1ad7b71c952.json similarity index 100% rename from data/tokens/1/0x0000000000095413afc295d19edeb1ad7b71c952.json rename to data/tokens/evm/1/0x0000000000095413afc295d19edeb1ad7b71c952.json diff --git a/data/tokens/1/0x0391d2021f89dc339f60fff84546ea23e337750f.json b/data/tokens/evm/1/0x0391d2021f89dc339f60fff84546ea23e337750f.json similarity index 100% rename from data/tokens/1/0x0391d2021f89dc339f60fff84546ea23e337750f.json rename to data/tokens/evm/1/0x0391d2021f89dc339f60fff84546ea23e337750f.json diff --git a/data/tokens/1/0x04fa0d235c4abf4bcf4787af4cf447de572ef828.json b/data/tokens/evm/1/0x04fa0d235c4abf4bcf4787af4cf447de572ef828.json similarity index 100% rename from data/tokens/1/0x04fa0d235c4abf4bcf4787af4cf447de572ef828.json rename to data/tokens/evm/1/0x04fa0d235c4abf4bcf4787af4cf447de572ef828.json diff --git a/data/tokens/1/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd.json b/data/tokens/evm/1/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd.json similarity index 100% rename from data/tokens/1/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd.json rename to data/tokens/evm/1/0x056fd409e1d7a124bd7017459dfea2f387b6d5cd.json diff --git a/data/tokens/1/0x090185f2135308bad17527004364ebcc2d37e5f6.json b/data/tokens/evm/1/0x090185f2135308bad17527004364ebcc2d37e5f6.json similarity index 100% rename from data/tokens/1/0x090185f2135308bad17527004364ebcc2d37e5f6.json rename to data/tokens/evm/1/0x090185f2135308bad17527004364ebcc2d37e5f6.json diff --git a/data/tokens/1/0x0954906da0bf32d5479e25f46056d22f08464cab.json b/data/tokens/evm/1/0x0954906da0bf32d5479e25f46056d22f08464cab.json similarity index 100% rename from data/tokens/1/0x0954906da0bf32d5479e25f46056d22f08464cab.json rename to data/tokens/evm/1/0x0954906da0bf32d5479e25f46056d22f08464cab.json diff --git a/data/tokens/1/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f.json b/data/tokens/evm/1/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f.json similarity index 100% rename from data/tokens/1/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f.json rename to data/tokens/evm/1/0x0ab87046fbb341d058f17cbc4c1133f25a20a52f.json diff --git a/data/tokens/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.json b/data/tokens/evm/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.json similarity index 100% rename from data/tokens/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.json rename to data/tokens/evm/1/0x0bc529c00c6401aef6d220be8c6ea1667f6ad93e.json diff --git a/data/tokens/1/0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6.json b/data/tokens/evm/1/0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6.json similarity index 100% rename from data/tokens/1/0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6.json rename to data/tokens/evm/1/0x0c10bf8fcb7bf5412187a595ab97a3609160b5c6.json diff --git a/data/tokens/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.json b/data/tokens/evm/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.json similarity index 100% rename from data/tokens/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.json rename to data/tokens/evm/1/0x0d438f3b5175bebc262bf23753c1e53d03432bde.json diff --git a/data/tokens/1/0x0d8775f648430679a709e98d2b0cb6250d2887ef.json b/data/tokens/evm/1/0x0d8775f648430679a709e98d2b0cb6250d2887ef.json similarity index 100% rename from data/tokens/1/0x0d8775f648430679a709e98d2b0cb6250d2887ef.json rename to data/tokens/evm/1/0x0d8775f648430679a709e98d2b0cb6250d2887ef.json diff --git a/data/tokens/1/0x0f5d2fb29fb7d3cfee444a200298f468908cc942.json b/data/tokens/evm/1/0x0f5d2fb29fb7d3cfee444a200298f468908cc942.json similarity index 100% rename from data/tokens/1/0x0f5d2fb29fb7d3cfee444a200298f468908cc942.json rename to data/tokens/evm/1/0x0f5d2fb29fb7d3cfee444a200298f468908cc942.json diff --git a/data/tokens/1/0x111111111117dc0aa78b770fa6a738034120c302.json b/data/tokens/evm/1/0x111111111117dc0aa78b770fa6a738034120c302.json similarity index 100% rename from data/tokens/1/0x111111111117dc0aa78b770fa6a738034120c302.json rename to data/tokens/evm/1/0x111111111117dc0aa78b770fa6a738034120c302.json diff --git a/data/tokens/1/0x12970e6868f88f6557b76120662c1b3e50a646bf.json b/data/tokens/evm/1/0x12970e6868f88f6557b76120662c1b3e50a646bf.json similarity index 100% rename from data/tokens/1/0x12970e6868f88f6557b76120662c1b3e50a646bf.json rename to data/tokens/evm/1/0x12970e6868f88f6557b76120662c1b3e50a646bf.json diff --git a/data/tokens/1/0x1456688345527be1f37e9e627da0837d6f08c925.json b/data/tokens/evm/1/0x1456688345527be1f37e9e627da0837d6f08c925.json similarity index 100% rename from data/tokens/1/0x1456688345527be1f37e9e627da0837d6f08c925.json rename to data/tokens/evm/1/0x1456688345527be1f37e9e627da0837d6f08c925.json diff --git a/data/tokens/1/0x152649ea73beab28c5b49b26eb48f7ead6d4c898.json b/data/tokens/evm/1/0x152649ea73beab28c5b49b26eb48f7ead6d4c898.json similarity index 100% rename from data/tokens/1/0x152649ea73beab28c5b49b26eb48f7ead6d4c898.json rename to data/tokens/evm/1/0x152649ea73beab28c5b49b26eb48f7ead6d4c898.json diff --git a/data/tokens/1/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da.json b/data/tokens/evm/1/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da.json similarity index 100% rename from data/tokens/1/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da.json rename to data/tokens/evm/1/0x15d4c048f83bd7e37d49ea4c83a07267ec4203da.json diff --git a/data/tokens/1/0x163f8c2467924be0ae7b5347228cabf260318753.json b/data/tokens/evm/1/0x163f8c2467924be0ae7b5347228cabf260318753.json similarity index 100% rename from data/tokens/1/0x163f8c2467924be0ae7b5347228cabf260318753.json rename to data/tokens/evm/1/0x163f8c2467924be0ae7b5347228cabf260318753.json diff --git a/data/tokens/1/0x18084fba666a33d37592fa2633fd49a74dd93a88.json b/data/tokens/evm/1/0x18084fba666a33d37592fa2633fd49a74dd93a88.json similarity index 100% rename from data/tokens/1/0x18084fba666a33d37592fa2633fd49a74dd93a88.json rename to data/tokens/evm/1/0x18084fba666a33d37592fa2633fd49a74dd93a88.json diff --git a/data/tokens/1/0x1985365e9f78359a9b6ad760e32412f4a445e862.json b/data/tokens/evm/1/0x1985365e9f78359a9b6ad760e32412f4a445e862.json similarity index 100% rename from data/tokens/1/0x1985365e9f78359a9b6ad760e32412f4a445e862.json rename to data/tokens/evm/1/0x1985365e9f78359a9b6ad760e32412f4a445e862.json diff --git a/data/tokens/1/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8.json b/data/tokens/evm/1/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8.json similarity index 100% rename from data/tokens/1/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8.json rename to data/tokens/evm/1/0x1a7e4e63778b4f12a199c062f3efdd288afcbce8.json diff --git a/data/tokens/1/0x1ce270557c1f68cfb577b856766310bf8b47fd9c.json b/data/tokens/evm/1/0x1ce270557c1f68cfb577b856766310bf8b47fd9c.json similarity index 100% rename from data/tokens/1/0x1ce270557c1f68cfb577b856766310bf8b47fd9c.json rename to data/tokens/evm/1/0x1ce270557c1f68cfb577b856766310bf8b47fd9c.json diff --git a/data/tokens/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.json b/data/tokens/evm/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.json similarity index 100% rename from data/tokens/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.json rename to data/tokens/evm/1/0x1f9840a85d5af5bf1d1762f925bdaddc4201f984.json diff --git a/data/tokens/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.json b/data/tokens/evm/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.json similarity index 100% rename from data/tokens/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.json rename to data/tokens/evm/1/0x2260fac5e5542a773aa44fbcfedf7c193bc2c599.json diff --git a/data/tokens/1/0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json b/data/tokens/evm/1/0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json similarity index 100% rename from data/tokens/1/0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json rename to data/tokens/evm/1/0x2af5d2ad76741191d15dfe7bf6ac92d4bd912ca3.json diff --git a/data/tokens/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.json b/data/tokens/evm/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.json similarity index 100% rename from data/tokens/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.json rename to data/tokens/evm/1/0x2b591e99afe9f32eaa6214f7b7629768c40eeb39.json diff --git a/data/tokens/1/0x3231cb76718cdef2155fc47b5286d82e6eda273f.json b/data/tokens/evm/1/0x3231cb76718cdef2155fc47b5286d82e6eda273f.json similarity index 100% rename from data/tokens/1/0x3231cb76718cdef2155fc47b5286d82e6eda273f.json rename to data/tokens/evm/1/0x3231cb76718cdef2155fc47b5286d82e6eda273f.json diff --git a/data/tokens/1/0x32353a6c91143bfd6c7d363b546e62a9a2489a20.json b/data/tokens/evm/1/0x32353a6c91143bfd6c7d363b546e62a9a2489a20.json similarity index 100% rename from data/tokens/1/0x32353a6c91143bfd6c7d363b546e62a9a2489a20.json rename to data/tokens/evm/1/0x32353a6c91143bfd6c7d363b546e62a9a2489a20.json diff --git a/data/tokens/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.json b/data/tokens/evm/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.json similarity index 100% rename from data/tokens/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.json rename to data/tokens/evm/1/0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0.json diff --git a/data/tokens/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.json b/data/tokens/evm/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.json similarity index 100% rename from data/tokens/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.json rename to data/tokens/evm/1/0x3845badade8e6dff049820680d1f14bd3903a5d0.json diff --git a/data/tokens/1/0x4200000000000000000000000000000000000042.json b/data/tokens/evm/1/0x4200000000000000000000000000000000000042.json similarity index 100% rename from data/tokens/1/0x4200000000000000000000000000000000000042.json rename to data/tokens/evm/1/0x4200000000000000000000000000000000000042.json diff --git a/data/tokens/1/0x4691937a7508860f876c9c0a2a617e7d9e945d4b.json b/data/tokens/evm/1/0x4691937a7508860f876c9c0a2a617e7d9e945d4b.json similarity index 100% rename from data/tokens/1/0x4691937a7508860f876c9c0a2a617e7d9e945d4b.json rename to data/tokens/evm/1/0x4691937a7508860f876c9c0a2a617e7d9e945d4b.json diff --git a/data/tokens/1/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b.json b/data/tokens/evm/1/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b.json similarity index 100% rename from data/tokens/1/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b.json rename to data/tokens/evm/1/0x49cf6f5d44e70224e2e23fdcdd2c053f30ada28b.json diff --git a/data/tokens/1/0x4a220e6096b25eadb88358cb44068a3248254675.json b/data/tokens/evm/1/0x4a220e6096b25eadb88358cb44068a3248254675.json similarity index 100% rename from data/tokens/1/0x4a220e6096b25eadb88358cb44068a3248254675.json rename to data/tokens/evm/1/0x4a220e6096b25eadb88358cb44068a3248254675.json diff --git a/data/tokens/1/0x4a3e164684812dfb684ac36457e7fa805087c68e.json b/data/tokens/evm/1/0x4a3e164684812dfb684ac36457e7fa805087c68e.json similarity index 100% rename from data/tokens/1/0x4a3e164684812dfb684ac36457e7fa805087c68e.json rename to data/tokens/evm/1/0x4a3e164684812dfb684ac36457e7fa805087c68e.json diff --git a/data/tokens/1/0x4c9edd5852cd905f086c759e8383e09bff1e68b3.json b/data/tokens/evm/1/0x4c9edd5852cd905f086c759e8383e09bff1e68b3.json similarity index 100% rename from data/tokens/1/0x4c9edd5852cd905f086c759e8383e09bff1e68b3.json rename to data/tokens/evm/1/0x4c9edd5852cd905f086c759e8383e09bff1e68b3.json diff --git a/data/tokens/1/0x4d224452801aced8b2f0aebe155379bb5d594381.json b/data/tokens/evm/1/0x4d224452801aced8b2f0aebe155379bb5d594381.json similarity index 100% rename from data/tokens/1/0x4d224452801aced8b2f0aebe155379bb5d594381.json rename to data/tokens/evm/1/0x4d224452801aced8b2f0aebe155379bb5d594381.json diff --git a/data/tokens/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.json b/data/tokens/evm/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.json similarity index 100% rename from data/tokens/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.json rename to data/tokens/evm/1/0x4e15361fd6b4bb609fa63c81a2be19d873717870.json diff --git a/data/tokens/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.json b/data/tokens/evm/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.json similarity index 100% rename from data/tokens/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.json rename to data/tokens/evm/1/0x4e3fbd56cd56c3e72c1403e103b45db9da5b9d2b.json diff --git a/data/tokens/1/0x4f9254c83eb525f9fcf346490bbb3ed28a81c667.json b/data/tokens/evm/1/0x4f9254c83eb525f9fcf346490bbb3ed28a81c667.json similarity index 100% rename from data/tokens/1/0x4f9254c83eb525f9fcf346490bbb3ed28a81c667.json rename to data/tokens/evm/1/0x4f9254c83eb525f9fcf346490bbb3ed28a81c667.json diff --git a/data/tokens/1/0x4fabb145d64652a948d72533023f6e7a623c7c53.json b/data/tokens/evm/1/0x4fabb145d64652a948d72533023f6e7a623c7c53.json similarity index 100% rename from data/tokens/1/0x4fabb145d64652a948d72533023f6e7a623c7c53.json rename to data/tokens/evm/1/0x4fabb145d64652a948d72533023f6e7a623c7c53.json diff --git a/data/tokens/1/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9.json b/data/tokens/evm/1/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9.json similarity index 100% rename from data/tokens/1/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9.json rename to data/tokens/evm/1/0x50d1c9771902476076ecfc8b2a83ad6b9355a4c9.json diff --git a/data/tokens/1/0x514910771af9ca656af840dff83e8264ecf986ca.json b/data/tokens/evm/1/0x514910771af9ca656af840dff83e8264ecf986ca.json similarity index 100% rename from data/tokens/1/0x514910771af9ca656af840dff83e8264ecf986ca.json rename to data/tokens/evm/1/0x514910771af9ca656af840dff83e8264ecf986ca.json diff --git a/data/tokens/1/0x524cab2ec69124574082676e6f654a18df49a048.json b/data/tokens/evm/1/0x524cab2ec69124574082676e6f654a18df49a048.json similarity index 100% rename from data/tokens/1/0x524cab2ec69124574082676e6f654a18df49a048.json rename to data/tokens/evm/1/0x524cab2ec69124574082676e6f654a18df49a048.json diff --git a/data/tokens/1/0x5283d291dbcf85356a21ba090e6db59121208b44.json b/data/tokens/evm/1/0x5283d291dbcf85356a21ba090e6db59121208b44.json similarity index 100% rename from data/tokens/1/0x5283d291dbcf85356a21ba090e6db59121208b44.json rename to data/tokens/evm/1/0x5283d291dbcf85356a21ba090e6db59121208b44.json diff --git a/data/tokens/1/0x57ab1ec28d129707052df4df418d58a2d46d5f51.json b/data/tokens/evm/1/0x57ab1ec28d129707052df4df418d58a2d46d5f51.json similarity index 100% rename from data/tokens/1/0x57ab1ec28d129707052df4df418d58a2d46d5f51.json rename to data/tokens/evm/1/0x57ab1ec28d129707052df4df418d58a2d46d5f51.json diff --git a/data/tokens/1/0x582d872a1b094fc48f5de31d3b73f2d9be47def1.json b/data/tokens/evm/1/0x582d872a1b094fc48f5de31d3b73f2d9be47def1.json similarity index 100% rename from data/tokens/1/0x582d872a1b094fc48f5de31d3b73f2d9be47def1.json rename to data/tokens/evm/1/0x582d872a1b094fc48f5de31d3b73f2d9be47def1.json diff --git a/data/tokens/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.json b/data/tokens/evm/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.json similarity index 100% rename from data/tokens/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.json rename to data/tokens/evm/1/0x5a98fcbea516cf06857215779fd812ca3bef1b32.json diff --git a/data/tokens/1/0x5af0d9827e0c53e4799bb226655a1de152a425a5.json b/data/tokens/evm/1/0x5af0d9827e0c53e4799bb226655a1de152a425a5.json similarity index 100% rename from data/tokens/1/0x5af0d9827e0c53e4799bb226655a1de152a425a5.json rename to data/tokens/evm/1/0x5af0d9827e0c53e4799bb226655a1de152a425a5.json diff --git a/data/tokens/1/0x5e8422345238f34275888049021821e8e08caa1f.json b/data/tokens/evm/1/0x5e8422345238f34275888049021821e8e08caa1f.json similarity index 100% rename from data/tokens/1/0x5e8422345238f34275888049021821e8e08caa1f.json rename to data/tokens/evm/1/0x5e8422345238f34275888049021821e8e08caa1f.json diff --git a/data/tokens/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.json b/data/tokens/evm/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.json similarity index 100% rename from data/tokens/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.json rename to data/tokens/evm/1/0x5f98805a4e8be255a32880fdec7f6728c6568ba0.json diff --git a/data/tokens/1/0x60e4d786628fea6478f785a6d7e704777c86a7c6.json b/data/tokens/evm/1/0x60e4d786628fea6478f785a6d7e704777c86a7c6.json similarity index 100% rename from data/tokens/1/0x60e4d786628fea6478f785a6d7e704777c86a7c6.json rename to data/tokens/evm/1/0x60e4d786628fea6478f785a6d7e704777c86a7c6.json diff --git a/data/tokens/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.json b/data/tokens/evm/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.json similarity index 100% rename from data/tokens/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.json rename to data/tokens/evm/1/0x6123b0049f904d730db3c36a31167d9d4121fa6b.json diff --git a/data/tokens/1/0x61e90a50137e1f645c9ef4a0d3a4f01477738406.json b/data/tokens/evm/1/0x61e90a50137e1f645c9ef4a0d3a4f01477738406.json similarity index 100% rename from data/tokens/1/0x61e90a50137e1f645c9ef4a0d3a4f01477738406.json rename to data/tokens/evm/1/0x61e90a50137e1f645c9ef4a0d3a4f01477738406.json diff --git a/data/tokens/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.json b/data/tokens/evm/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.json similarity index 100% rename from data/tokens/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.json rename to data/tokens/evm/1/0x6243d8cea23066d098a15582d81a598b4e8391f4.json diff --git a/data/tokens/1/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json b/data/tokens/evm/1/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json similarity index 100% rename from data/tokens/1/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json rename to data/tokens/evm/1/0x64aa3364f17a4d01c6f1751fd97c2bd3d7e7f1d5.json diff --git a/data/tokens/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.json b/data/tokens/evm/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.json similarity index 100% rename from data/tokens/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.json rename to data/tokens/evm/1/0x674c6ad92fd080e4004b2312b45f796a192d27a0.json diff --git a/data/tokens/1/0x6810e776880c02933d47db1b9fc05908e5386b96.json b/data/tokens/evm/1/0x6810e776880c02933d47db1b9fc05908e5386b96.json similarity index 100% rename from data/tokens/1/0x6810e776880c02933d47db1b9fc05908e5386b96.json rename to data/tokens/evm/1/0x6810e776880c02933d47db1b9fc05908e5386b96.json diff --git a/data/tokens/1/0x6982508145454ce325ddbe47a25d4ec3d2311933.json b/data/tokens/evm/1/0x6982508145454ce325ddbe47a25d4ec3d2311933.json similarity index 100% rename from data/tokens/1/0x6982508145454ce325ddbe47a25d4ec3d2311933.json rename to data/tokens/evm/1/0x6982508145454ce325ddbe47a25d4ec3d2311933.json diff --git a/data/tokens/1/0x6b175474e89094c44da98b954eedeac495271d0f.json b/data/tokens/evm/1/0x6b175474e89094c44da98b954eedeac495271d0f.json similarity index 100% rename from data/tokens/1/0x6b175474e89094c44da98b954eedeac495271d0f.json rename to data/tokens/evm/1/0x6b175474e89094c44da98b954eedeac495271d0f.json diff --git a/data/tokens/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.json b/data/tokens/evm/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.json similarity index 100% rename from data/tokens/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.json rename to data/tokens/evm/1/0x6b3595068778dd592e39a122f4f5a5cf09c90fe2.json diff --git a/data/tokens/1/0x6c6ee5e31d828de241282b9606c8e98ea48526e2.json b/data/tokens/evm/1/0x6c6ee5e31d828de241282b9606c8e98ea48526e2.json similarity index 100% rename from data/tokens/1/0x6c6ee5e31d828de241282b9606c8e98ea48526e2.json rename to data/tokens/evm/1/0x6c6ee5e31d828de241282b9606c8e98ea48526e2.json diff --git a/data/tokens/1/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24.json b/data/tokens/evm/1/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24.json similarity index 100% rename from data/tokens/1/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24.json rename to data/tokens/evm/1/0x6de037ef9ad2725eb40118bb1702ebb27e4aeb24.json diff --git a/data/tokens/1/0x6e2a43be0b1d33b726f0ca3b8de60b3482b8b050.json b/data/tokens/evm/1/0x6e2a43be0b1d33b726f0ca3b8de60b3482b8b050.json similarity index 100% rename from data/tokens/1/0x6e2a43be0b1d33b726f0ca3b8de60b3482b8b050.json rename to data/tokens/evm/1/0x6e2a43be0b1d33b726f0ca3b8de60b3482b8b050.json diff --git a/data/tokens/1/0x6f40d4a6237c257fff2db00fa0510deeecd303eb.json b/data/tokens/evm/1/0x6f40d4a6237c257fff2db00fa0510deeecd303eb.json similarity index 100% rename from data/tokens/1/0x6f40d4a6237c257fff2db00fa0510deeecd303eb.json rename to data/tokens/evm/1/0x6f40d4a6237c257fff2db00fa0510deeecd303eb.json diff --git a/data/tokens/1/0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json b/data/tokens/evm/1/0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json similarity index 100% rename from data/tokens/1/0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json rename to data/tokens/evm/1/0x73968b9a57c6e53d41345fd57a6e6ae27d6cdb2f.json diff --git a/data/tokens/1/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec.json b/data/tokens/evm/1/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec.json similarity index 100% rename from data/tokens/1/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec.json rename to data/tokens/evm/1/0x7420b4b9a0110cdc71fb720908340c03f9bc03ec.json diff --git a/data/tokens/1/0x75231f58b43240c9718dd58b4967c5114342a86c.json b/data/tokens/evm/1/0x75231f58b43240c9718dd58b4967c5114342a86c.json similarity index 100% rename from data/tokens/1/0x75231f58b43240c9718dd58b4967c5114342a86c.json rename to data/tokens/evm/1/0x75231f58b43240c9718dd58b4967c5114342a86c.json diff --git a/data/tokens/1/0x77777feddddffc19ff86db637967013e6c6a116c.json b/data/tokens/evm/1/0x77777feddddffc19ff86db637967013e6c6a116c.json similarity index 100% rename from data/tokens/1/0x77777feddddffc19ff86db637967013e6c6a116c.json rename to data/tokens/evm/1/0x77777feddddffc19ff86db637967013e6c6a116c.json diff --git a/data/tokens/1/0x7a58c0be72be218b41c608b7fe7c5bb630736c71.json b/data/tokens/evm/1/0x7a58c0be72be218b41c608b7fe7c5bb630736c71.json similarity index 100% rename from data/tokens/1/0x7a58c0be72be218b41c608b7fe7c5bb630736c71.json rename to data/tokens/evm/1/0x7a58c0be72be218b41c608b7fe7c5bb630736c71.json diff --git a/data/tokens/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.json b/data/tokens/evm/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.json similarity index 100% rename from data/tokens/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.json rename to data/tokens/evm/1/0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0.json diff --git a/data/tokens/1/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0.json b/data/tokens/evm/1/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0.json similarity index 100% rename from data/tokens/1/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0.json rename to data/tokens/evm/1/0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0.json diff --git a/data/tokens/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.json b/data/tokens/evm/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.json similarity index 100% rename from data/tokens/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.json rename to data/tokens/evm/1/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9.json diff --git a/data/tokens/1/0x808507121b80c02388fad14726482e061b8da827.json b/data/tokens/evm/1/0x808507121b80c02388fad14726482e061b8da827.json similarity index 100% rename from data/tokens/1/0x808507121b80c02388fad14726482e061b8da827.json rename to data/tokens/evm/1/0x808507121b80c02388fad14726482e061b8da827.json diff --git a/data/tokens/1/0x80c62fe4487e1351b47ba49809ebd60ed085bf52.json b/data/tokens/evm/1/0x80c62fe4487e1351b47ba49809ebd60ed085bf52.json similarity index 100% rename from data/tokens/1/0x80c62fe4487e1351b47ba49809ebd60ed085bf52.json rename to data/tokens/evm/1/0x80c62fe4487e1351b47ba49809ebd60ed085bf52.json diff --git a/data/tokens/1/0x80fb784b7ed66730e8b1dbd9820afd29931aab03.json b/data/tokens/evm/1/0x80fb784b7ed66730e8b1dbd9820afd29931aab03.json similarity index 100% rename from data/tokens/1/0x80fb784b7ed66730e8b1dbd9820afd29931aab03.json rename to data/tokens/evm/1/0x80fb784b7ed66730e8b1dbd9820afd29931aab03.json diff --git a/data/tokens/1/0x83f20f44975d03b1b09e64809b757c47f942beea.json b/data/tokens/evm/1/0x83f20f44975d03b1b09e64809b757c47f942beea.json similarity index 100% rename from data/tokens/1/0x83f20f44975d03b1b09e64809b757c47f942beea.json rename to data/tokens/evm/1/0x83f20f44975d03b1b09e64809b757c47f942beea.json diff --git a/data/tokens/1/0x853d955acef822db058eb8505911ed77f175b99e.json b/data/tokens/evm/1/0x853d955acef822db058eb8505911ed77f175b99e.json similarity index 100% rename from data/tokens/1/0x853d955acef822db058eb8505911ed77f175b99e.json rename to data/tokens/evm/1/0x853d955acef822db058eb8505911ed77f175b99e.json diff --git a/data/tokens/1/0x865377367054516e17014ccded1e7d814edc9ce4.json b/data/tokens/evm/1/0x865377367054516e17014ccded1e7d814edc9ce4.json similarity index 100% rename from data/tokens/1/0x865377367054516e17014ccded1e7d814edc9ce4.json rename to data/tokens/evm/1/0x865377367054516e17014ccded1e7d814edc9ce4.json diff --git a/data/tokens/1/0x8821bee2ba0df28761afff119d66390d594cd280.json b/data/tokens/evm/1/0x8821bee2ba0df28761afff119d66390d594cd280.json similarity index 100% rename from data/tokens/1/0x8821bee2ba0df28761afff119d66390d594cd280.json rename to data/tokens/evm/1/0x8821bee2ba0df28761afff119d66390d594cd280.json diff --git a/data/tokens/1/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e.json b/data/tokens/evm/1/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e.json similarity index 100% rename from data/tokens/1/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e.json rename to data/tokens/evm/1/0x8a90cab2b38dba80c64b7734e58ee1db38b8992e.json diff --git a/data/tokens/1/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9.json b/data/tokens/evm/1/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9.json similarity index 100% rename from data/tokens/1/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9.json rename to data/tokens/evm/1/0x8ce9137d39326ad0cd6491fb5cc0cba0e089b6a9.json diff --git a/data/tokens/1/0x8e870d67f660d95d5be530380d0ec0bd388289e1.json b/data/tokens/evm/1/0x8e870d67f660d95d5be530380d0ec0bd388289e1.json similarity index 100% rename from data/tokens/1/0x8e870d67f660d95d5be530380d0ec0bd388289e1.json rename to data/tokens/evm/1/0x8e870d67f660d95d5be530380d0ec0bd388289e1.json diff --git a/data/tokens/1/0x92d6c1e31e14520e676a687f0a93788b716beff5.json b/data/tokens/evm/1/0x92d6c1e31e14520e676a687f0a93788b716beff5.json similarity index 100% rename from data/tokens/1/0x92d6c1e31e14520e676a687f0a93788b716beff5.json rename to data/tokens/evm/1/0x92d6c1e31e14520e676a687f0a93788b716beff5.json diff --git a/data/tokens/1/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551.json b/data/tokens/evm/1/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551.json similarity index 100% rename from data/tokens/1/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551.json rename to data/tokens/evm/1/0x940a2db1b7008b6c776d4faaca729d6d4a4aa551.json diff --git a/data/tokens/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.json b/data/tokens/evm/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.json similarity index 100% rename from data/tokens/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.json rename to data/tokens/evm/1/0x95ad61b0a150d79219dcf64e1e6cc01f0b64c4ce.json diff --git a/data/tokens/1/0x967da4048cd07ab37855c090aaf366e4ce1b9f48.json b/data/tokens/evm/1/0x967da4048cd07ab37855c090aaf366e4ce1b9f48.json similarity index 100% rename from data/tokens/1/0x967da4048cd07ab37855c090aaf366e4ce1b9f48.json rename to data/tokens/evm/1/0x967da4048cd07ab37855c090aaf366e4ce1b9f48.json diff --git a/data/tokens/1/0x9813037ee2218799597d83d4a5b6f3b6778218d9.json b/data/tokens/evm/1/0x9813037ee2218799597d83d4a5b6f3b6778218d9.json similarity index 100% rename from data/tokens/1/0x9813037ee2218799597d83d4a5b6f3b6778218d9.json rename to data/tokens/evm/1/0x9813037ee2218799597d83d4a5b6f3b6778218d9.json diff --git a/data/tokens/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.json b/data/tokens/evm/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.json similarity index 100% rename from data/tokens/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.json rename to data/tokens/evm/1/0x99d8a9c45b2eca8864373a26d1459e3dff1e17f3.json diff --git a/data/tokens/1/0x9d39a5de30e57443bff2a8307a4256c8797a3497.json b/data/tokens/evm/1/0x9d39a5de30e57443bff2a8307a4256c8797a3497.json similarity index 100% rename from data/tokens/1/0x9d39a5de30e57443bff2a8307a4256c8797a3497.json rename to data/tokens/evm/1/0x9d39a5de30e57443bff2a8307a4256c8797a3497.json diff --git a/data/tokens/1/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e.json b/data/tokens/evm/1/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e.json similarity index 100% rename from data/tokens/1/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e.json rename to data/tokens/evm/1/0x9e32b13ce7f2e80a01932b42553652e053d6ed8e.json diff --git a/data/tokens/1/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2.json b/data/tokens/evm/1/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2.json similarity index 100% rename from data/tokens/1/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2.json rename to data/tokens/evm/1/0x9f8f72aa9304c8b593d555f12ef6589cc3a579a2.json diff --git a/data/tokens/1/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b.json b/data/tokens/evm/1/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b.json similarity index 100% rename from data/tokens/1/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b.json rename to data/tokens/evm/1/0xa0b73e1ff0b80914ab6fe0444e65848c4c34450b.json diff --git a/data/tokens/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json b/data/tokens/evm/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json similarity index 100% rename from data/tokens/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json rename to data/tokens/evm/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json diff --git a/data/tokens/1/0xa117000000f279d81a1d3cc75430faa017fa5a2e.json b/data/tokens/evm/1/0xa117000000f279d81a1d3cc75430faa017fa5a2e.json similarity index 100% rename from data/tokens/1/0xa117000000f279d81a1d3cc75430faa017fa5a2e.json rename to data/tokens/evm/1/0xa117000000f279d81a1d3cc75430faa017fa5a2e.json diff --git a/data/tokens/1/0xa1faa113cbe53436df28ff0aee54275c13b40975.json b/data/tokens/evm/1/0xa1faa113cbe53436df28ff0aee54275c13b40975.json similarity index 100% rename from data/tokens/1/0xa1faa113cbe53436df28ff0aee54275c13b40975.json rename to data/tokens/evm/1/0xa1faa113cbe53436df28ff0aee54275c13b40975.json diff --git a/data/tokens/1/0xa2e3356610840701bdf5611a53974510ae27e2e1.json b/data/tokens/evm/1/0xa2e3356610840701bdf5611a53974510ae27e2e1.json similarity index 100% rename from data/tokens/1/0xa2e3356610840701bdf5611a53974510ae27e2e1.json rename to data/tokens/evm/1/0xa2e3356610840701bdf5611a53974510ae27e2e1.json diff --git a/data/tokens/1/0xa35b1b31ce002fbf2058d22f30f95d405200a15b.json b/data/tokens/evm/1/0xa35b1b31ce002fbf2058d22f30f95d405200a15b.json similarity index 100% rename from data/tokens/1/0xa35b1b31ce002fbf2058d22f30f95d405200a15b.json rename to data/tokens/evm/1/0xa35b1b31ce002fbf2058d22f30f95d405200a15b.json diff --git a/data/tokens/1/0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32.json b/data/tokens/evm/1/0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32.json similarity index 100% rename from data/tokens/1/0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32.json rename to data/tokens/evm/1/0xa663b02cf0a4b149d2ad41910cb81e23e1c41c32.json diff --git a/data/tokens/1/0xa693b19d2931d498c5b318df961919bb4aee87a5.json b/data/tokens/evm/1/0xa693b19d2931d498c5b318df961919bb4aee87a5.json similarity index 100% rename from data/tokens/1/0xa693b19d2931d498c5b318df961919bb4aee87a5.json rename to data/tokens/evm/1/0xa693b19d2931d498c5b318df961919bb4aee87a5.json diff --git a/data/tokens/1/0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096.json b/data/tokens/evm/1/0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096.json similarity index 100% rename from data/tokens/1/0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096.json rename to data/tokens/evm/1/0xa9b1eb5908cfc3cdf91f9b8b3a74108598009096.json diff --git a/data/tokens/1/0xaaef88cea01475125522e117bfe45cf32044e238.json b/data/tokens/evm/1/0xaaef88cea01475125522e117bfe45cf32044e238.json similarity index 100% rename from data/tokens/1/0xaaef88cea01475125522e117bfe45cf32044e238.json rename to data/tokens/evm/1/0xaaef88cea01475125522e117bfe45cf32044e238.json diff --git a/data/tokens/1/0xac3e018457b222d93114458476f3e3416abbe38f.json b/data/tokens/evm/1/0xac3e018457b222d93114458476f3e3416abbe38f.json similarity index 100% rename from data/tokens/1/0xac3e018457b222d93114458476f3e3416abbe38f.json rename to data/tokens/evm/1/0xac3e018457b222d93114458476f3e3416abbe38f.json diff --git a/data/tokens/1/0xae7ab96520de3a18e5e111b5eaab095312d7fe84.json b/data/tokens/evm/1/0xae7ab96520de3a18e5e111b5eaab095312d7fe84.json similarity index 100% rename from data/tokens/1/0xae7ab96520de3a18e5e111b5eaab095312d7fe84.json rename to data/tokens/evm/1/0xae7ab96520de3a18e5e111b5eaab095312d7fe84.json diff --git a/data/tokens/1/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85.json b/data/tokens/evm/1/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85.json similarity index 100% rename from data/tokens/1/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85.json rename to data/tokens/evm/1/0xaea46a60368a7bd060eec7df8cba43b7ef41ad85.json diff --git a/data/tokens/1/0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json b/data/tokens/evm/1/0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json similarity index 100% rename from data/tokens/1/0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json rename to data/tokens/evm/1/0xb0c7a3ba49c7a6eaba6cd4a96c55a1391070ac9a.json diff --git a/data/tokens/1/0xb23d80f5fefcddaa212212f028021b41ded428cf.json b/data/tokens/evm/1/0xb23d80f5fefcddaa212212f028021b41ded428cf.json similarity index 100% rename from data/tokens/1/0xb23d80f5fefcddaa212212f028021b41ded428cf.json rename to data/tokens/evm/1/0xb23d80f5fefcddaa212212f028021b41ded428cf.json diff --git a/data/tokens/1/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb.json b/data/tokens/evm/1/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb.json similarity index 100% rename from data/tokens/1/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb.json rename to data/tokens/evm/1/0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb.json diff --git a/data/tokens/1/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1.json b/data/tokens/evm/1/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1.json similarity index 100% rename from data/tokens/1/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1.json rename to data/tokens/evm/1/0xb50721bcf8d664c30412cfbc6cf7a15145234ad1.json diff --git a/data/tokens/1/0xb8c77482e45f1f44de1745f52c74426c631bdd52.json b/data/tokens/evm/1/0xb8c77482e45f1f44de1745f52c74426c631bdd52.json similarity index 100% rename from data/tokens/1/0xb8c77482e45f1f44de1745f52c74426c631bdd52.json rename to data/tokens/evm/1/0xb8c77482e45f1f44de1745f52c74426c631bdd52.json diff --git a/data/tokens/1/0xba100000625a3754423978a60c9317c58a424e3d.json b/data/tokens/evm/1/0xba100000625a3754423978a60c9317c58a424e3d.json similarity index 100% rename from data/tokens/1/0xba100000625a3754423978a60c9317c58a424e3d.json rename to data/tokens/evm/1/0xba100000625a3754423978a60c9317c58a424e3d.json diff --git a/data/tokens/1/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b.json b/data/tokens/evm/1/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b.json similarity index 100% rename from data/tokens/1/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b.json rename to data/tokens/evm/1/0xbb0e17ef65f82ab018d8edd776e8dd940327b28b.json diff --git a/data/tokens/1/0xbbbbca6a901c926f240b89eacb641d8aec7aeafd.json b/data/tokens/evm/1/0xbbbbca6a901c926f240b89eacb641d8aec7aeafd.json similarity index 100% rename from data/tokens/1/0xbbbbca6a901c926f240b89eacb641d8aec7aeafd.json rename to data/tokens/evm/1/0xbbbbca6a901c926f240b89eacb641d8aec7aeafd.json diff --git a/data/tokens/1/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d.json b/data/tokens/evm/1/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d.json similarity index 100% rename from data/tokens/1/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d.json rename to data/tokens/evm/1/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d.json diff --git a/data/tokens/1/0xbd3531da5cf5857e7cfaa92426877b022e612cf8.json b/data/tokens/evm/1/0xbd3531da5cf5857e7cfaa92426877b022e612cf8.json similarity index 100% rename from data/tokens/1/0xbd3531da5cf5857e7cfaa92426877b022e612cf8.json rename to data/tokens/evm/1/0xbd3531da5cf5857e7cfaa92426877b022e612cf8.json diff --git a/data/tokens/1/0xbe9895146f7af43049ca1c1ae358b0541ea49704.json b/data/tokens/evm/1/0xbe9895146f7af43049ca1c1ae358b0541ea49704.json similarity index 100% rename from data/tokens/1/0xbe9895146f7af43049ca1c1ae358b0541ea49704.json rename to data/tokens/evm/1/0xbe9895146f7af43049ca1c1ae358b0541ea49704.json diff --git a/data/tokens/1/0xbf5495efe5db9ce00f80364c8b423567e58d2110.json b/data/tokens/evm/1/0xbf5495efe5db9ce00f80364c8b423567e58d2110.json similarity index 100% rename from data/tokens/1/0xbf5495efe5db9ce00f80364c8b423567e58d2110.json rename to data/tokens/evm/1/0xbf5495efe5db9ce00f80364c8b423567e58d2110.json diff --git a/data/tokens/1/0xc00e94cb662c3520282e6f5717214004a7f26888.json b/data/tokens/evm/1/0xc00e94cb662c3520282e6f5717214004a7f26888.json similarity index 100% rename from data/tokens/1/0xc00e94cb662c3520282e6f5717214004a7f26888.json rename to data/tokens/evm/1/0xc00e94cb662c3520282e6f5717214004a7f26888.json diff --git a/data/tokens/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json b/data/tokens/evm/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json similarity index 100% rename from data/tokens/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json rename to data/tokens/evm/1/0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f.json diff --git a/data/tokens/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json b/data/tokens/evm/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json similarity index 100% rename from data/tokens/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json rename to data/tokens/evm/1/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.json diff --git a/data/tokens/1/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72.json b/data/tokens/evm/1/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72.json similarity index 100% rename from data/tokens/1/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72.json rename to data/tokens/evm/1/0xc18360217d8f7ab5e7c516566761ea12ce7f9d72.json diff --git a/data/tokens/1/0xc221b7e65ffc80de234bbb6667abdd46593d34f0.json b/data/tokens/evm/1/0xc221b7e65ffc80de234bbb6667abdd46593d34f0.json similarity index 100% rename from data/tokens/1/0xc221b7e65ffc80de234bbb6667abdd46593d34f0.json rename to data/tokens/evm/1/0xc221b7e65ffc80de234bbb6667abdd46593d34f0.json diff --git a/data/tokens/1/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed.json b/data/tokens/evm/1/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed.json similarity index 100% rename from data/tokens/1/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed.json rename to data/tokens/evm/1/0xc5fb36dd2fb59d3b98deff88425a3f425ee469ed.json diff --git a/data/tokens/1/0xc944e90c64b2c07662a292be6244bdf05cda44a7.json b/data/tokens/evm/1/0xc944e90c64b2c07662a292be6244bdf05cda44a7.json similarity index 100% rename from data/tokens/1/0xc944e90c64b2c07662a292be6244bdf05cda44a7.json rename to data/tokens/evm/1/0xc944e90c64b2c07662a292be6244bdf05cda44a7.json diff --git a/data/tokens/1/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json b/data/tokens/evm/1/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json similarity index 100% rename from data/tokens/1/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json rename to data/tokens/evm/1/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json diff --git a/data/tokens/1/0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25.json b/data/tokens/evm/1/0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25.json similarity index 100% rename from data/tokens/1/0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25.json rename to data/tokens/evm/1/0xcc8fa225d80b9c7d42f96e9570156c65d6caaa25.json diff --git a/data/tokens/1/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee.json b/data/tokens/evm/1/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee.json similarity index 100% rename from data/tokens/1/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee.json rename to data/tokens/evm/1/0xcd5fe23c85820f7b72d0926fc9b05b43e359b7ee.json diff --git a/data/tokens/1/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e.json b/data/tokens/evm/1/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e.json similarity index 100% rename from data/tokens/1/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e.json rename to data/tokens/evm/1/0xcf0c122c6b73ff809c693db761e7baebe62b6a2e.json diff --git a/data/tokens/1/0xd1d2eb1b1e90b638588728b4130137d262c87cae.json b/data/tokens/evm/1/0xd1d2eb1b1e90b638588728b4130137d262c87cae.json similarity index 100% rename from data/tokens/1/0xd1d2eb1b1e90b638588728b4130137d262c87cae.json rename to data/tokens/evm/1/0xd1d2eb1b1e90b638588728b4130137d262c87cae.json diff --git a/data/tokens/1/0xd26114cd6ee289accf82350c8d8487fedb8a0c07.json b/data/tokens/evm/1/0xd26114cd6ee289accf82350c8d8487fedb8a0c07.json similarity index 100% rename from data/tokens/1/0xd26114cd6ee289accf82350c8d8487fedb8a0c07.json rename to data/tokens/evm/1/0xd26114cd6ee289accf82350c8d8487fedb8a0c07.json diff --git a/data/tokens/1/0xd31a59c85ae9d8edefec411d448f90841571b89c.json b/data/tokens/evm/1/0xd31a59c85ae9d8edefec411d448f90841571b89c.json similarity index 100% rename from data/tokens/1/0xd31a59c85ae9d8edefec411d448f90841571b89c.json rename to data/tokens/evm/1/0xd31a59c85ae9d8edefec411d448f90841571b89c.json diff --git a/data/tokens/1/0xd4949664cd82660aae99bedc034a0dea8a0bd517.json b/data/tokens/evm/1/0xd4949664cd82660aae99bedc034a0dea8a0bd517.json similarity index 100% rename from data/tokens/1/0xd4949664cd82660aae99bedc034a0dea8a0bd517.json rename to data/tokens/evm/1/0xd4949664cd82660aae99bedc034a0dea8a0bd517.json diff --git a/data/tokens/1/0xd533a949740bb3306d119cc777fa900ba034cd52.json b/data/tokens/evm/1/0xd533a949740bb3306d119cc777fa900ba034cd52.json similarity index 100% rename from data/tokens/1/0xd533a949740bb3306d119cc777fa900ba034cd52.json rename to data/tokens/evm/1/0xd533a949740bb3306d119cc777fa900ba034cd52.json diff --git a/data/tokens/1/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa.json b/data/tokens/evm/1/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa.json similarity index 100% rename from data/tokens/1/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa.json rename to data/tokens/evm/1/0xd5f7838f5c461feff7fe49ea5ebaf7728bb0adfa.json diff --git a/data/tokens/1/0xdac17f958d2ee523a2206206994597c13d831ec7.json b/data/tokens/evm/1/0xdac17f958d2ee523a2206206994597c13d831ec7.json similarity index 100% rename from data/tokens/1/0xdac17f958d2ee523a2206206994597c13d831ec7.json rename to data/tokens/evm/1/0xdac17f958d2ee523a2206206994597c13d831ec7.json diff --git a/data/tokens/1/0xdb25f211ab05b1c97d595516f45794528a807ad8.json b/data/tokens/evm/1/0xdb25f211ab05b1c97d595516f45794528a807ad8.json similarity index 100% rename from data/tokens/1/0xdb25f211ab05b1c97d595516f45794528a807ad8.json rename to data/tokens/evm/1/0xdb25f211ab05b1c97d595516f45794528a807ad8.json diff --git a/data/tokens/1/0xdc035d45d973e3ec169d2276ddab16f1e407384f.json b/data/tokens/evm/1/0xdc035d45d973e3ec169d2276ddab16f1e407384f.json similarity index 100% rename from data/tokens/1/0xdc035d45d973e3ec169d2276ddab16f1e407384f.json rename to data/tokens/evm/1/0xdc035d45d973e3ec169d2276ddab16f1e407384f.json diff --git a/data/tokens/1/0xdd974d5c2e2928dea5f71b9825b8b646686bd200.json b/data/tokens/evm/1/0xdd974d5c2e2928dea5f71b9825b8b646686bd200.json similarity index 100% rename from data/tokens/1/0xdd974d5c2e2928dea5f71b9825b8b646686bd200.json rename to data/tokens/evm/1/0xdd974d5c2e2928dea5f71b9825b8b646686bd200.json diff --git a/data/tokens/1/0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202.json b/data/tokens/evm/1/0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202.json similarity index 100% rename from data/tokens/1/0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202.json rename to data/tokens/evm/1/0xdefa4e8a7bcba345f687a2f1456f5edd9ce97202.json diff --git a/data/tokens/1/0xe28b3b32b6c345a34ff64674606124dd5aceca30.json b/data/tokens/evm/1/0xe28b3b32b6c345a34ff64674606124dd5aceca30.json similarity index 100% rename from data/tokens/1/0xe28b3b32b6c345a34ff64674606124dd5aceca30.json rename to data/tokens/evm/1/0xe28b3b32b6c345a34ff64674606124dd5aceca30.json diff --git a/data/tokens/1/0xe2f2a5c287993345a840db3b0845fbc70f5935a5.json b/data/tokens/evm/1/0xe2f2a5c287993345a840db3b0845fbc70f5935a5.json similarity index 100% rename from data/tokens/1/0xe2f2a5c287993345a840db3b0845fbc70f5935a5.json rename to data/tokens/evm/1/0xe2f2a5c287993345a840db3b0845fbc70f5935a5.json diff --git a/data/tokens/1/0xe41d2489571d322189246dafa5ebde1f4699f498.json b/data/tokens/evm/1/0xe41d2489571d322189246dafa5ebde1f4699f498.json similarity index 100% rename from data/tokens/1/0xe41d2489571d322189246dafa5ebde1f4699f498.json rename to data/tokens/evm/1/0xe41d2489571d322189246dafa5ebde1f4699f498.json diff --git a/data/tokens/1/0xec53bf9167f50cdeb3ae105f56099aaab9061f83.json b/data/tokens/evm/1/0xec53bf9167f50cdeb3ae105f56099aaab9061f83.json similarity index 100% rename from data/tokens/1/0xec53bf9167f50cdeb3ae105f56099aaab9061f83.json rename to data/tokens/evm/1/0xec53bf9167f50cdeb3ae105f56099aaab9061f83.json diff --git a/data/tokens/1/0xed5af388653567af2f388e6224dc7c4b3241c544.json b/data/tokens/evm/1/0xed5af388653567af2f388e6224dc7c4b3241c544.json similarity index 100% rename from data/tokens/1/0xed5af388653567af2f388e6224dc7c4b3241c544.json rename to data/tokens/evm/1/0xed5af388653567af2f388e6224dc7c4b3241c544.json diff --git a/data/tokens/1/0xf17e65822b568b3903685a7c9f496cf7656cc6c2.json b/data/tokens/evm/1/0xf17e65822b568b3903685a7c9f496cf7656cc6c2.json similarity index 100% rename from data/tokens/1/0xf17e65822b568b3903685a7c9f496cf7656cc6c2.json rename to data/tokens/evm/1/0xf17e65822b568b3903685a7c9f496cf7656cc6c2.json diff --git a/data/tokens/1/0xf411903cbc70a74d22900a5de66a2dda66507255.json b/data/tokens/evm/1/0xf411903cbc70a74d22900a5de66a2dda66507255.json similarity index 100% rename from data/tokens/1/0xf411903cbc70a74d22900a5de66a2dda66507255.json rename to data/tokens/evm/1/0xf411903cbc70a74d22900a5de66a2dda66507255.json diff --git a/data/tokens/1/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff.json b/data/tokens/evm/1/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff.json similarity index 100% rename from data/tokens/1/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff.json rename to data/tokens/evm/1/0xf57e7e7c23978c3caec3c3548e3d615c346e79ff.json diff --git a/data/tokens/1/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c.json b/data/tokens/evm/1/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c.json similarity index 100% rename from data/tokens/1/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c.json rename to data/tokens/evm/1/0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c.json diff --git a/data/tokens/1/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3.json b/data/tokens/evm/1/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3.json similarity index 100% rename from data/tokens/1/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3.json rename to data/tokens/evm/1/0xfaba6f8e4a5e8ab82f62fe7c39859fa577269be3.json diff --git a/data/tokens/1/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb.json b/data/tokens/evm/1/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb.json similarity index 100% rename from data/tokens/1/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb.json rename to data/tokens/evm/1/0xfe0c30065b384f05761f15d0cc899d4f9f9cc0eb.json diff --git a/data/tokens/10/0x0994206dfe8de6ec6920ff4d779b0d950605fb53.json b/data/tokens/evm/10/0x0994206dfe8de6ec6920ff4d779b0d950605fb53.json similarity index 100% rename from data/tokens/10/0x0994206dfe8de6ec6920ff4d779b0d950605fb53.json rename to data/tokens/evm/10/0x0994206dfe8de6ec6920ff4d779b0d950605fb53.json diff --git a/data/tokens/10/0x0b2c639c533813f4aa9d7837caf62653d097ff85.json b/data/tokens/evm/10/0x0b2c639c533813f4aa9d7837caf62653d097ff85.json similarity index 100% rename from data/tokens/10/0x0b2c639c533813f4aa9d7837caf62653d097ff85.json rename to data/tokens/evm/10/0x0b2c639c533813f4aa9d7837caf62653d097ff85.json diff --git a/data/tokens/10/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb.json b/data/tokens/evm/10/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb.json similarity index 100% rename from data/tokens/10/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb.json rename to data/tokens/evm/10/0x1f32b1c2345538c0c6f582fcb022739c4a194ebb.json diff --git a/data/tokens/10/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json b/data/tokens/evm/10/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json similarity index 100% rename from data/tokens/10/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json rename to data/tokens/evm/10/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json diff --git a/data/tokens/10/0x2416092f143378750bb29b79ed961ab195cceea5.json b/data/tokens/evm/10/0x2416092f143378750bb29b79ed961ab195cceea5.json similarity index 100% rename from data/tokens/10/0x2416092f143378750bb29b79ed961ab195cceea5.json rename to data/tokens/evm/10/0x2416092f143378750bb29b79ed961ab195cceea5.json diff --git a/data/tokens/10/0x2e3d870790dc77a83dd1d18184acc7439a53f475.json b/data/tokens/evm/10/0x2e3d870790dc77a83dd1d18184acc7439a53f475.json similarity index 100% rename from data/tokens/10/0x2e3d870790dc77a83dd1d18184acc7439a53f475.json rename to data/tokens/evm/10/0x2e3d870790dc77a83dd1d18184acc7439a53f475.json diff --git a/data/tokens/10/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json b/data/tokens/evm/10/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json similarity index 100% rename from data/tokens/10/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json rename to data/tokens/evm/10/0x350a791bfc2c21f9ed5d10980dad2e2638ffa7f6.json diff --git a/data/tokens/10/0x3e7ef8f50246f725885102e8238cbba33f276747.json b/data/tokens/evm/10/0x3e7ef8f50246f725885102e8238cbba33f276747.json similarity index 100% rename from data/tokens/10/0x3e7ef8f50246f725885102e8238cbba33f276747.json rename to data/tokens/evm/10/0x3e7ef8f50246f725885102e8238cbba33f276747.json diff --git a/data/tokens/10/0x4200000000000000000000000000000000000006.json b/data/tokens/evm/10/0x4200000000000000000000000000000000000006.json similarity index 100% rename from data/tokens/10/0x4200000000000000000000000000000000000006.json rename to data/tokens/evm/10/0x4200000000000000000000000000000000000006.json diff --git a/data/tokens/10/0x4200000000000000000000000000000000000042.json b/data/tokens/evm/10/0x4200000000000000000000000000000000000042.json similarity index 100% rename from data/tokens/10/0x4200000000000000000000000000000000000042.json rename to data/tokens/evm/10/0x4200000000000000000000000000000000000042.json diff --git a/data/tokens/10/0x5029c236320b8f15ef0a657054b84d90bfbeded3.json b/data/tokens/evm/10/0x5029c236320b8f15ef0a657054b84d90bfbeded3.json similarity index 100% rename from data/tokens/10/0x5029c236320b8f15ef0a657054b84d90bfbeded3.json rename to data/tokens/evm/10/0x5029c236320b8f15ef0a657054b84d90bfbeded3.json diff --git a/data/tokens/10/0x5a5fff6f753d7c11a56a52fe47a177a87e431655.json b/data/tokens/evm/10/0x5a5fff6f753d7c11a56a52fe47a177a87e431655.json similarity index 100% rename from data/tokens/10/0x5a5fff6f753d7c11a56a52fe47a177a87e431655.json rename to data/tokens/evm/10/0x5a5fff6f753d7c11a56a52fe47a177a87e431655.json diff --git a/data/tokens/10/0x5d47baba0d66083c52009271faf3f50dcc01023c.json b/data/tokens/evm/10/0x5d47baba0d66083c52009271faf3f50dcc01023c.json similarity index 100% rename from data/tokens/10/0x5d47baba0d66083c52009271faf3f50dcc01023c.json rename to data/tokens/evm/10/0x5d47baba0d66083c52009271faf3f50dcc01023c.json diff --git a/data/tokens/10/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json b/data/tokens/evm/10/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json similarity index 100% rename from data/tokens/10/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json rename to data/tokens/evm/10/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json diff --git a/data/tokens/10/0x67ccea5bb16181e7b4109c9c2143c24a1c2205be.json b/data/tokens/evm/10/0x67ccea5bb16181e7b4109c9c2143c24a1c2205be.json similarity index 100% rename from data/tokens/10/0x67ccea5bb16181e7b4109c9c2143c24a1c2205be.json rename to data/tokens/evm/10/0x67ccea5bb16181e7b4109c9c2143c24a1c2205be.json diff --git a/data/tokens/10/0x6806411765af15bddd26f8f544a34cc40cb9838b.json b/data/tokens/evm/10/0x6806411765af15bddd26f8f544a34cc40cb9838b.json similarity index 100% rename from data/tokens/10/0x6806411765af15bddd26f8f544a34cc40cb9838b.json rename to data/tokens/evm/10/0x6806411765af15bddd26f8f544a34cc40cb9838b.json diff --git a/data/tokens/10/0x68f180fcce6836688e9084f035309e29bf0a2095.json b/data/tokens/evm/10/0x68f180fcce6836688e9084f035309e29bf0a2095.json similarity index 100% rename from data/tokens/10/0x68f180fcce6836688e9084f035309e29bf0a2095.json rename to data/tokens/evm/10/0x68f180fcce6836688e9084f035309e29bf0a2095.json diff --git a/data/tokens/10/0x6fd9d7ad17242c41f7131d257212c54a0e816691.json b/data/tokens/evm/10/0x6fd9d7ad17242c41f7131d257212c54a0e816691.json similarity index 100% rename from data/tokens/10/0x6fd9d7ad17242c41f7131d257212c54a0e816691.json rename to data/tokens/evm/10/0x6fd9d7ad17242c41f7131d257212c54a0e816691.json diff --git a/data/tokens/10/0x76fb31fb4af56892a25e32cfc43de717950c9278.json b/data/tokens/evm/10/0x76fb31fb4af56892a25e32cfc43de717950c9278.json similarity index 100% rename from data/tokens/10/0x76fb31fb4af56892a25e32cfc43de717950c9278.json rename to data/tokens/evm/10/0x76fb31fb4af56892a25e32cfc43de717950c9278.json diff --git a/data/tokens/10/0x7f5c764cbc14f9669b88837ca1490cca17c31607.json b/data/tokens/evm/10/0x7f5c764cbc14f9669b88837ca1490cca17c31607.json similarity index 100% rename from data/tokens/10/0x7f5c764cbc14f9669b88837ca1490cca17c31607.json rename to data/tokens/evm/10/0x7f5c764cbc14f9669b88837ca1490cca17c31607.json diff --git a/data/tokens/10/0x8700daec35af8ff88c16bdf0418774cb3d7599b4.json b/data/tokens/evm/10/0x8700daec35af8ff88c16bdf0418774cb3d7599b4.json similarity index 100% rename from data/tokens/10/0x8700daec35af8ff88c16bdf0418774cb3d7599b4.json rename to data/tokens/evm/10/0x8700daec35af8ff88c16bdf0418774cb3d7599b4.json diff --git a/data/tokens/10/0x8ae125e8653821e851f12a49f7765db9a9ce7384.json b/data/tokens/evm/10/0x8ae125e8653821e851f12a49f7765db9a9ce7384.json similarity index 100% rename from data/tokens/10/0x8ae125e8653821e851f12a49f7765db9a9ce7384.json rename to data/tokens/evm/10/0x8ae125e8653821e851f12a49f7765db9a9ce7384.json diff --git a/data/tokens/10/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9.json b/data/tokens/evm/10/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9.json similarity index 100% rename from data/tokens/10/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9.json rename to data/tokens/evm/10/0x8c6f28f2f1a3c87f0f938b96d27520d9751ec8d9.json diff --git a/data/tokens/10/0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json b/data/tokens/evm/10/0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json similarity index 100% rename from data/tokens/10/0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json rename to data/tokens/evm/10/0x9485aca5bbbe1667ad97c7fe7c4531a624c8b1ed.json diff --git a/data/tokens/10/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58.json b/data/tokens/evm/10/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58.json similarity index 100% rename from data/tokens/10/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58.json rename to data/tokens/evm/10/0x94b008aa00579c1307b0ef2c499ad98a8ce58e58.json diff --git a/data/tokens/10/0x9560e827af36c94d2ac33a39bce1fe78631088db.json b/data/tokens/evm/10/0x9560e827af36c94d2ac33a39bce1fe78631088db.json similarity index 100% rename from data/tokens/10/0x9560e827af36c94d2ac33a39bce1fe78631088db.json rename to data/tokens/evm/10/0x9560e827af36c94d2ac33a39bce1fe78631088db.json diff --git a/data/tokens/10/0x9bcef72be871e61ed4fbbc7630889bee758eb81d.json b/data/tokens/evm/10/0x9bcef72be871e61ed4fbbc7630889bee758eb81d.json similarity index 100% rename from data/tokens/10/0x9bcef72be871e61ed4fbbc7630889bee758eb81d.json rename to data/tokens/evm/10/0x9bcef72be871e61ed4fbbc7630889bee758eb81d.json diff --git a/data/tokens/10/0x9c7305eb78a432ced5c4d14cac27e8ed569a2e26.json b/data/tokens/evm/10/0x9c7305eb78a432ced5c4d14cac27e8ed569a2e26.json similarity index 100% rename from data/tokens/10/0x9c7305eb78a432ced5c4d14cac27e8ed569a2e26.json rename to data/tokens/evm/10/0x9c7305eb78a432ced5c4d14cac27e8ed569a2e26.json diff --git a/data/tokens/10/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json b/data/tokens/evm/10/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json similarity index 100% rename from data/tokens/10/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json rename to data/tokens/evm/10/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json diff --git a/data/tokens/10/0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json b/data/tokens/evm/10/0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json similarity index 100% rename from data/tokens/10/0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json rename to data/tokens/evm/10/0x9e5aac1ba1a2e6aed6b32689dfcf62a509ca96f3.json diff --git a/data/tokens/10/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json b/data/tokens/evm/10/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json similarity index 100% rename from data/tokens/10/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json rename to data/tokens/evm/10/0xaddb6a0412de1ba0f936dcaeb8aaa24578dcf3b2.json diff --git a/data/tokens/10/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b.json b/data/tokens/evm/10/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b.json similarity index 100% rename from data/tokens/10/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b.json rename to data/tokens/evm/10/0xb0b195aefa3650a6908f15cdac7d92f8a5791b0b.json diff --git a/data/tokens/10/0xb8df6cc3050cc02f967db1ee48330ba23276a492.json b/data/tokens/evm/10/0xb8df6cc3050cc02f967db1ee48330ba23276a492.json similarity index 100% rename from data/tokens/10/0xb8df6cc3050cc02f967db1ee48330ba23276a492.json rename to data/tokens/evm/10/0xb8df6cc3050cc02f967db1ee48330ba23276a492.json diff --git a/data/tokens/10/0xba12222222228d8ba445958a75a0704d566bf2c8.json b/data/tokens/evm/10/0xba12222222228d8ba445958a75a0704d566bf2c8.json similarity index 100% rename from data/tokens/10/0xba12222222228d8ba445958a75a0704d566bf2c8.json rename to data/tokens/evm/10/0xba12222222228d8ba445958a75a0704d566bf2c8.json diff --git a/data/tokens/10/0xbc011a12da28e8f0f528d9ee5e7039e22f91cf18.json b/data/tokens/evm/10/0xbc011a12da28e8f0f528d9ee5e7039e22f91cf18.json similarity index 100% rename from data/tokens/10/0xbc011a12da28e8f0f528d9ee5e7039e22f91cf18.json rename to data/tokens/evm/10/0xbc011a12da28e8f0f528d9ee5e7039e22f91cf18.json diff --git a/data/tokens/10/0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1.json b/data/tokens/evm/10/0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1.json similarity index 100% rename from data/tokens/10/0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1.json rename to data/tokens/evm/10/0xbc7b1ff1c6989f006a1185318ed4e7b5796e66e1.json diff --git a/data/tokens/10/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819.json b/data/tokens/evm/10/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819.json similarity index 100% rename from data/tokens/10/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819.json rename to data/tokens/evm/10/0xc40f949f8a4e094d1b49a23ea9241d289b7b2819.json diff --git a/data/tokens/10/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json b/data/tokens/evm/10/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json similarity index 100% rename from data/tokens/10/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json rename to data/tokens/evm/10/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json diff --git a/data/tokens/10/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1.json b/data/tokens/evm/10/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1.json similarity index 100% rename from data/tokens/10/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1.json rename to data/tokens/evm/10/0xdc6ff44d5d932cbd77b52e5612ba0529dc6226f1.json diff --git a/data/tokens/10/0xdfa46478f9e5ea86d57387849598dbfb2e964b02.json b/data/tokens/evm/10/0xdfa46478f9e5ea86d57387849598dbfb2e964b02.json similarity index 100% rename from data/tokens/10/0xdfa46478f9e5ea86d57387849598dbfb2e964b02.json rename to data/tokens/evm/10/0xdfa46478f9e5ea86d57387849598dbfb2e964b02.json diff --git a/data/tokens/10/0xfa14e1157f35e1dad95dc3f822a9d18c40e360e2.json b/data/tokens/evm/10/0xfa14e1157f35e1dad95dc3f822a9d18c40e360e2.json similarity index 100% rename from data/tokens/10/0xfa14e1157f35e1dad95dc3f822a9d18c40e360e2.json rename to data/tokens/evm/10/0xfa14e1157f35e1dad95dc3f822a9d18c40e360e2.json diff --git a/data/tokens/10/0xfdb794692724153d1488ccdbe0c56c252596735f.json b/data/tokens/evm/10/0xfdb794692724153d1488ccdbe0c56c252596735f.json similarity index 100% rename from data/tokens/10/0xfdb794692724153d1488ccdbe0c56c252596735f.json rename to data/tokens/evm/10/0xfdb794692724153d1488ccdbe0c56c252596735f.json diff --git a/data/tokens/10/0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921.json b/data/tokens/evm/10/0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921.json similarity index 100% rename from data/tokens/10/0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921.json rename to data/tokens/evm/10/0xfe8b128ba8c78aabc59d4c64cee7ff28e9379921.json diff --git a/data/tokens/11155111/0x1c7d4b196cb0c7b01d743fbc6116a902379c7238.json b/data/tokens/evm/11155111/0x1c7d4b196cb0c7b01d743fbc6116a902379c7238.json similarity index 100% rename from data/tokens/11155111/0x1c7d4b196cb0c7b01d743fbc6116a902379c7238.json rename to data/tokens/evm/11155111/0x1c7d4b196cb0c7b01d743fbc6116a902379c7238.json diff --git a/data/tokens/11155111/0x68194a729c2450ad26072b3d33adfff1cc69b3f3.json b/data/tokens/evm/11155111/0x68194a729c2450ad26072b3d33adfff1cc69b3f3.json similarity index 100% rename from data/tokens/11155111/0x68194a729c2450ad26072b3d33adfff1cc69b3f3.json rename to data/tokens/evm/11155111/0x68194a729c2450ad26072b3d33adfff1cc69b3f3.json diff --git a/data/tokens/11155111/0x7169d38820dfd117c3fa1f22a697dba58d90ba06.json b/data/tokens/evm/11155111/0x7169d38820dfd117c3fa1f22a697dba58d90ba06.json similarity index 100% rename from data/tokens/11155111/0x7169d38820dfd117c3fa1f22a697dba58d90ba06.json rename to data/tokens/evm/11155111/0x7169d38820dfd117c3fa1f22a697dba58d90ba06.json diff --git a/data/tokens/11155111/0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json b/data/tokens/evm/11155111/0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json similarity index 100% rename from data/tokens/11155111/0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json rename to data/tokens/evm/11155111/0x7439E9Bb6D8a84dd3A23fe621A30F95403F87fB9.json diff --git a/data/tokens/11155111/0x779877a7b0d9e8603169ddbd7836e478b4624789.json b/data/tokens/evm/11155111/0x779877a7b0d9e8603169ddbd7836e478b4624789.json similarity index 100% rename from data/tokens/11155111/0x779877a7b0d9e8603169ddbd7836e478b4624789.json rename to data/tokens/evm/11155111/0x779877a7b0d9e8603169ddbd7836e478b4624789.json diff --git a/data/tokens/11155111/0x8267cf9254734c6eb452a7bb9aaf97b392258b21.json b/data/tokens/evm/11155111/0x8267cf9254734c6eb452a7bb9aaf97b392258b21.json similarity index 100% rename from data/tokens/11155111/0x8267cf9254734c6eb452a7bb9aaf97b392258b21.json rename to data/tokens/evm/11155111/0x8267cf9254734c6eb452a7bb9aaf97b392258b21.json diff --git a/data/tokens/11155111/0x93fCA4c6E2525C09c95269055B46f16b1459BF9d.json b/data/tokens/evm/11155111/0x93fCA4c6E2525C09c95269055B46f16b1459BF9d.json similarity index 100% rename from data/tokens/11155111/0x93fCA4c6E2525C09c95269055B46f16b1459BF9d.json rename to data/tokens/evm/11155111/0x93fCA4c6E2525C09c95269055B46f16b1459BF9d.json diff --git a/data/tokens/11155111/0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json b/data/tokens/evm/11155111/0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json similarity index 100% rename from data/tokens/11155111/0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json rename to data/tokens/evm/11155111/0x94a9d9ac8a22534e3faca9f4e7f2e2cf85d5e4c8.json diff --git a/data/tokens/11155111/0xaa8e23fb1079ea71e0a56f48a2aa51851d8433d0.json b/data/tokens/evm/11155111/0xaa8e23fb1079ea71e0a56f48a2aa51851d8433d0.json similarity index 100% rename from data/tokens/11155111/0xaa8e23fb1079ea71e0a56f48a2aa51851d8433d0.json rename to data/tokens/evm/11155111/0xaa8e23fb1079ea71e0a56f48a2aa51851d8433d0.json diff --git a/data/tokens/11155111/0xb19382073c7a0addbb56ac6af1808fa49e377b75.json b/data/tokens/evm/11155111/0xb19382073c7a0addbb56ac6af1808fa49e377b75.json similarity index 100% rename from data/tokens/11155111/0xb19382073c7a0addbb56ac6af1808fa49e377b75.json rename to data/tokens/evm/11155111/0xb19382073c7a0addbb56ac6af1808fa49e377b75.json diff --git a/data/tokens/11155111/0xc21d97673B9E0B3AA53a06439F71fDc1facE393B.json b/data/tokens/evm/11155111/0xc21d97673B9E0B3AA53a06439F71fDc1facE393B.json similarity index 100% rename from data/tokens/11155111/0xc21d97673B9E0B3AA53a06439F71fDc1facE393B.json rename to data/tokens/evm/11155111/0xc21d97673B9E0B3AA53a06439F71fDc1facE393B.json diff --git a/data/tokens/11155111/0xc558dbdd856501fcd9aaf1e62eae57a9f0629a3c.json b/data/tokens/evm/11155111/0xc558dbdd856501fcd9aaf1e62eae57a9f0629a3c.json similarity index 100% rename from data/tokens/11155111/0xc558dbdd856501fcd9aaf1e62eae57a9f0629a3c.json rename to data/tokens/evm/11155111/0xc558dbdd856501fcd9aaf1e62eae57a9f0629a3c.json diff --git a/data/tokens/11155111/0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c.json b/data/tokens/evm/11155111/0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c.json similarity index 100% rename from data/tokens/11155111/0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c.json rename to data/tokens/evm/11155111/0xe9EF74A6568E9f0e42a587C9363C9BcC582dcC6c.json diff --git a/data/tokens/11155111/0xfff9976782d46cc05630d1f6ebab18b2324d6b14.json b/data/tokens/evm/11155111/0xfff9976782d46cc05630d1f6ebab18b2324d6b14.json similarity index 100% rename from data/tokens/11155111/0xfff9976782d46cc05630d1f6ebab18b2324d6b14.json rename to data/tokens/evm/11155111/0xfff9976782d46cc05630d1f6ebab18b2324d6b14.json diff --git a/data/tokens/137/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd.json b/data/tokens/evm/137/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd.json similarity index 100% rename from data/tokens/137/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd.json rename to data/tokens/evm/137/0x03b54a6e9a984069379fae1a4fc4dbae93b3bccd.json diff --git a/data/tokens/137/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a.json b/data/tokens/evm/137/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a.json similarity index 100% rename from data/tokens/137/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a.json rename to data/tokens/evm/137/0x0b3f868e0be5597d5db7feb59e1cadbb0fdda50a.json diff --git a/data/tokens/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270.json b/data/tokens/evm/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270.json similarity index 100% rename from data/tokens/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270.json rename to data/tokens/evm/137/0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270.json diff --git a/data/tokens/137/0x172370d5cd63279efa6d502dab29171933a610af.json b/data/tokens/evm/137/0x172370d5cd63279efa6d502dab29171933a610af.json similarity index 100% rename from data/tokens/137/0x172370d5cd63279efa6d502dab29171933a610af.json rename to data/tokens/evm/137/0x172370d5cd63279efa6d502dab29171933a610af.json diff --git a/data/tokens/137/0x1a13f4ca1d028320a707d99520abfefca3998b7f.json b/data/tokens/evm/137/0x1a13f4ca1d028320a707d99520abfefca3998b7f.json similarity index 100% rename from data/tokens/137/0x1a13f4ca1d028320a707d99520abfefca3998b7f.json rename to data/tokens/evm/137/0x1a13f4ca1d028320a707d99520abfefca3998b7f.json diff --git a/data/tokens/137/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6.json b/data/tokens/evm/137/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6.json similarity index 100% rename from data/tokens/137/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6.json rename to data/tokens/evm/137/0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6.json diff --git a/data/tokens/137/0x2791bca1f2de4661ed88a30c99a7a9449aa84174.json b/data/tokens/evm/137/0x2791bca1f2de4661ed88a30c99a7a9449aa84174.json similarity index 100% rename from data/tokens/137/0x2791bca1f2de4661ed88a30c99a7a9449aa84174.json rename to data/tokens/evm/137/0x2791bca1f2de4661ed88a30c99a7a9449aa84174.json diff --git a/data/tokens/137/0x2b4a66557a79263275826ad31a4cddc2789334bd.json b/data/tokens/evm/137/0x2b4a66557a79263275826ad31a4cddc2789334bd.json similarity index 100% rename from data/tokens/137/0x2b4a66557a79263275826ad31a4cddc2789334bd.json rename to data/tokens/evm/137/0x2b4a66557a79263275826ad31a4cddc2789334bd.json diff --git a/data/tokens/137/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b.json b/data/tokens/evm/137/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b.json similarity index 100% rename from data/tokens/137/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b.json rename to data/tokens/evm/137/0x2c89bbc92bd86f8075d1decc58c7f4e0107f286b.json diff --git a/data/tokens/137/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json b/data/tokens/evm/137/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json similarity index 100% rename from data/tokens/137/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json rename to data/tokens/evm/137/0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7.json diff --git a/data/tokens/137/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359.json b/data/tokens/evm/137/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359.json similarity index 100% rename from data/tokens/137/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359.json rename to data/tokens/evm/137/0x3c499c542cef5e3811e1192ce70d8cc03d5c3359.json diff --git a/data/tokens/137/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89.json b/data/tokens/evm/137/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89.json similarity index 100% rename from data/tokens/137/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89.json rename to data/tokens/evm/137/0x45c32fa6df82ead1e2ef74d17b76547eddfaff89.json diff --git a/data/tokens/137/0x50b728d8d964fd00c2d0aad81718b71311fef68a.json b/data/tokens/evm/137/0x50b728d8d964fd00c2d0aad81718b71311fef68a.json similarity index 100% rename from data/tokens/137/0x50b728d8d964fd00c2d0aad81718b71311fef68a.json rename to data/tokens/evm/137/0x50b728d8d964fd00c2d0aad81718b71311fef68a.json diff --git a/data/tokens/137/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39.json b/data/tokens/evm/137/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39.json similarity index 100% rename from data/tokens/137/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39.json rename to data/tokens/evm/137/0x53e0bca35ec356bd5dddfebbd1fc0fd03fabad39.json diff --git a/data/tokens/137/0x580a84c73811e1839f75d86d75d88cca0c241ff4.json b/data/tokens/evm/137/0x580a84c73811e1839f75d86d75d88cca0c241ff4.json similarity index 100% rename from data/tokens/137/0x580a84c73811e1839f75d86d75d88cca0c241ff4.json rename to data/tokens/evm/137/0x580a84c73811e1839f75d86d75d88cca0c241ff4.json diff --git a/data/tokens/137/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json b/data/tokens/evm/137/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json similarity index 100% rename from data/tokens/137/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json rename to data/tokens/evm/137/0x5cc5b05a8a13e3fbdb0bb9fccd98d38e50f90c38.json diff --git a/data/tokens/137/0x5fe2b58c013d7601147dcdd68c143a77499f5531.json b/data/tokens/evm/137/0x5fe2b58c013d7601147dcdd68c143a77499f5531.json similarity index 100% rename from data/tokens/137/0x5fe2b58c013d7601147dcdd68c143a77499f5531.json rename to data/tokens/evm/137/0x5fe2b58c013d7601147dcdd68c143a77499f5531.json diff --git a/data/tokens/137/0x61299774020da444af134c82fa83e3810b309991.json b/data/tokens/evm/137/0x61299774020da444af134c82fa83e3810b309991.json similarity index 100% rename from data/tokens/137/0x61299774020da444af134c82fa83e3810b309991.json rename to data/tokens/evm/137/0x61299774020da444af134c82fa83e3810b309991.json diff --git a/data/tokens/137/0x6985884c4392d348587b19cb9eaaf157f13271cd.json b/data/tokens/evm/137/0x6985884c4392d348587b19cb9eaaf157f13271cd.json similarity index 100% rename from data/tokens/137/0x6985884c4392d348587b19cb9eaaf157f13271cd.json rename to data/tokens/evm/137/0x6985884c4392d348587b19cb9eaaf157f13271cd.json diff --git a/data/tokens/137/0x6a3e7c3c6ef65ee26975b12293ca1aad7e1daed2.json b/data/tokens/evm/137/0x6a3e7c3c6ef65ee26975b12293ca1aad7e1daed2.json similarity index 100% rename from data/tokens/137/0x6a3e7c3c6ef65ee26975b12293ca1aad7e1daed2.json rename to data/tokens/evm/137/0x6a3e7c3c6ef65ee26975b12293ca1aad7e1daed2.json diff --git a/data/tokens/137/0x6e4e624106cb12e168e6533f8ec7c82263358940.json b/data/tokens/evm/137/0x6e4e624106cb12e168e6533f8ec7c82263358940.json similarity index 100% rename from data/tokens/137/0x6e4e624106cb12e168e6533f8ec7c82263358940.json rename to data/tokens/evm/137/0x6e4e624106cb12e168e6533f8ec7c82263358940.json diff --git a/data/tokens/137/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec.json b/data/tokens/evm/137/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec.json similarity index 100% rename from data/tokens/137/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec.json rename to data/tokens/evm/137/0x6f8a06447ff6fcf75d803135a7de15ce88c1d4ec.json diff --git a/data/tokens/137/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619.json b/data/tokens/evm/137/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619.json similarity index 100% rename from data/tokens/137/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619.json rename to data/tokens/evm/137/0x7ceb23fd6bc0add59e62ac25578270cff1b9f619.json diff --git a/data/tokens/137/0x831753dd7087cac61ab5644b308642cc1c33dc13.json b/data/tokens/evm/137/0x831753dd7087cac61ab5644b308642cc1c33dc13.json similarity index 100% rename from data/tokens/137/0x831753dd7087cac61ab5644b308642cc1c33dc13.json rename to data/tokens/evm/137/0x831753dd7087cac61ab5644b308642cc1c33dc13.json diff --git a/data/tokens/137/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c.json b/data/tokens/evm/137/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c.json similarity index 100% rename from data/tokens/137/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c.json rename to data/tokens/evm/137/0x8505b9d2254a7ae468c0e9dd10ccea3a837aef5c.json diff --git a/data/tokens/137/0x86935f11c86623dec8a25696e1c19a8659cbf95d.json b/data/tokens/evm/137/0x86935f11c86623dec8a25696e1c19a8659cbf95d.json similarity index 100% rename from data/tokens/137/0x86935f11c86623dec8a25696e1c19a8659cbf95d.json rename to data/tokens/evm/137/0x86935f11c86623dec8a25696e1c19a8659cbf95d.json diff --git a/data/tokens/137/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063.json b/data/tokens/evm/137/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063.json similarity index 100% rename from data/tokens/137/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063.json rename to data/tokens/evm/137/0x8f3cf7ad23cd3cadbd9735aff958023239c6a063.json diff --git a/data/tokens/137/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3.json b/data/tokens/evm/137/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3.json similarity index 100% rename from data/tokens/137/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3.json rename to data/tokens/evm/137/0x9a71012b13ca4d3d0cdc72a177df3ef03b0e76a3.json diff --git a/data/tokens/137/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f.json b/data/tokens/evm/137/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f.json similarity index 100% rename from data/tokens/137/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f.json rename to data/tokens/evm/137/0x9c2c5fd7b07e95ee044ddeba0e97a665f142394f.json diff --git a/data/tokens/137/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4.json b/data/tokens/evm/137/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4.json similarity index 100% rename from data/tokens/137/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4.json rename to data/tokens/evm/137/0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4.json diff --git a/data/tokens/137/0xa3fa99a148fa48d14ed51d610c367c61876997f1.json b/data/tokens/evm/137/0xa3fa99a148fa48d14ed51d610c367c61876997f1.json similarity index 100% rename from data/tokens/137/0xa3fa99a148fa48d14ed51d610c367c61876997f1.json rename to data/tokens/evm/137/0xa3fa99a148fa48d14ed51d610c367c61876997f1.json diff --git a/data/tokens/137/0xa93c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json b/data/tokens/evm/137/0xa93c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json similarity index 100% rename from data/tokens/137/0xa93c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json rename to data/tokens/evm/137/0xa93c62d7a23a1d31dcfc4a285401f8d4ed1f5cc4.json diff --git a/data/tokens/137/0xb33eaad8d922b1083446dc23f610c2567fb5180f.json b/data/tokens/evm/137/0xb33eaad8d922b1083446dc23f610c2567fb5180f.json similarity index 100% rename from data/tokens/137/0xb33eaad8d922b1083446dc23f610c2567fb5180f.json rename to data/tokens/evm/137/0xb33eaad8d922b1083446dc23f610c2567fb5180f.json diff --git a/data/tokens/137/0xbbba073c31bf03b8acf7c28ef0738decf3695683.json b/data/tokens/evm/137/0xbbba073c31bf03b8acf7c28ef0738decf3695683.json similarity index 100% rename from data/tokens/137/0xbbba073c31bf03b8acf7c28ef0738decf3695683.json rename to data/tokens/evm/137/0xbbba073c31bf03b8acf7c28ef0738decf3695683.json diff --git a/data/tokens/137/0xc2132d05d31c914a87c6611c10748aeb04b58e8f.json b/data/tokens/evm/137/0xc2132d05d31c914a87c6611c10748aeb04b58e8f.json similarity index 100% rename from data/tokens/137/0xc2132d05d31c914a87c6611c10748aeb04b58e8f.json rename to data/tokens/evm/137/0xc2132d05d31c914a87c6611c10748aeb04b58e8f.json diff --git a/data/tokens/137/0xc3c7d422809852031b44ab29eec9f1eff2a58756.json b/data/tokens/evm/137/0xc3c7d422809852031b44ab29eec9f1eff2a58756.json similarity index 100% rename from data/tokens/137/0xc3c7d422809852031b44ab29eec9f1eff2a58756.json rename to data/tokens/evm/137/0xc3c7d422809852031b44ab29eec9f1eff2a58756.json diff --git a/data/tokens/137/0xd6df932a45c0f255f85145f286ea0b292b21c90b.json b/data/tokens/evm/137/0xd6df932a45c0f255f85145f286ea0b292b21c90b.json similarity index 100% rename from data/tokens/137/0xd6df932a45c0f255f85145f286ea0b292b21c90b.json rename to data/tokens/evm/137/0xd6df932a45c0f255f85145f286ea0b292b21c90b.json diff --git a/data/tokens/137/0xdb46d1dc155634fbc732f92e853b10b288ad5a1d.json b/data/tokens/evm/137/0xdb46d1dc155634fbc732f92e853b10b288ad5a1d.json similarity index 100% rename from data/tokens/137/0xdb46d1dc155634fbc732f92e853b10b288ad5a1d.json rename to data/tokens/evm/137/0xdb46d1dc155634fbc732f92e853b10b288ad5a1d.json diff --git a/data/tokens/137/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4.json b/data/tokens/evm/137/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4.json similarity index 100% rename from data/tokens/137/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4.json rename to data/tokens/evm/137/0xe0b52e49357fd4daf2c15e02058dce6bc0057db4.json diff --git a/data/tokens/137/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json b/data/tokens/evm/137/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json similarity index 100% rename from data/tokens/137/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json rename to data/tokens/evm/137/0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.json diff --git a/data/tokens/42161/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8.json b/data/tokens/evm/42161/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8.json similarity index 100% rename from data/tokens/42161/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8.json rename to data/tokens/evm/42161/0x0c880f6761f1af8d9aa9c466984b80dab9a8c9e8.json diff --git a/data/tokens/42161/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978.json b/data/tokens/evm/42161/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978.json similarity index 100% rename from data/tokens/42161/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978.json rename to data/tokens/evm/42161/0x11cdb42b0eb46d95f990bedd4695a6e3fa034978.json diff --git a/data/tokens/42161/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json b/data/tokens/evm/42161/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json similarity index 100% rename from data/tokens/42161/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json rename to data/tokens/evm/42161/0x13ad51ed4f1b7e9dc168d8a00cb3f4ddd85efa60.json diff --git a/data/tokens/42161/0x17dacad7975960833f374622fad08b90ed67d1b5.json b/data/tokens/evm/42161/0x17dacad7975960833f374622fad08b90ed67d1b5.json similarity index 100% rename from data/tokens/42161/0x17dacad7975960833f374622fad08b90ed67d1b5.json rename to data/tokens/evm/42161/0x17dacad7975960833f374622fad08b90ed67d1b5.json diff --git a/data/tokens/42161/0x17f4baa9d35ee54ffbcb2608e20786473c7aa49f.json b/data/tokens/evm/42161/0x17f4baa9d35ee54ffbcb2608e20786473c7aa49f.json similarity index 100% rename from data/tokens/42161/0x17f4baa9d35ee54ffbcb2608e20786473c7aa49f.json rename to data/tokens/evm/42161/0x17f4baa9d35ee54ffbcb2608e20786473c7aa49f.json diff --git a/data/tokens/42161/0x17fc002b466eec40dae837fc4be5c67993ddbd6f.json b/data/tokens/evm/42161/0x17fc002b466eec40dae837fc4be5c67993ddbd6f.json similarity index 100% rename from data/tokens/42161/0x17fc002b466eec40dae837fc4be5c67993ddbd6f.json rename to data/tokens/evm/42161/0x17fc002b466eec40dae837fc4be5c67993ddbd6f.json diff --git a/data/tokens/42161/0x18c11fd286c5ec11c3b683caa813b77f5163a122.json b/data/tokens/evm/42161/0x18c11fd286c5ec11c3b683caa813b77f5163a122.json similarity index 100% rename from data/tokens/42161/0x18c11fd286c5ec11c3b683caa813b77f5163a122.json rename to data/tokens/evm/42161/0x18c11fd286c5ec11c3b683caa813b77f5163a122.json diff --git a/data/tokens/42161/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json b/data/tokens/evm/42161/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json similarity index 100% rename from data/tokens/42161/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json rename to data/tokens/evm/42161/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json diff --git a/data/tokens/42161/0x2416092f143378750bb29b79ed961ab195cceea5.json b/data/tokens/evm/42161/0x2416092f143378750bb29b79ed961ab195cceea5.json similarity index 100% rename from data/tokens/42161/0x2416092f143378750bb29b79ed961ab195cceea5.json rename to data/tokens/evm/42161/0x2416092f143378750bb29b79ed961ab195cceea5.json diff --git a/data/tokens/42161/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f.json b/data/tokens/evm/42161/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f.json similarity index 100% rename from data/tokens/42161/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f.json rename to data/tokens/evm/42161/0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f.json diff --git a/data/tokens/42161/0x3082cc23568ea640225c2467653db90e9250aaa0.json b/data/tokens/evm/42161/0x3082cc23568ea640225c2467653db90e9250aaa0.json similarity index 100% rename from data/tokens/42161/0x3082cc23568ea640225c2467653db90e9250aaa0.json rename to data/tokens/evm/42161/0x3082cc23568ea640225c2467653db90e9250aaa0.json diff --git a/data/tokens/42161/0x32eb7902d4134bf98a28b963d26de779af92a212.json b/data/tokens/evm/42161/0x32eb7902d4134bf98a28b963d26de779af92a212.json similarity index 100% rename from data/tokens/42161/0x32eb7902d4134bf98a28b963d26de779af92a212.json rename to data/tokens/evm/42161/0x32eb7902d4134bf98a28b963d26de779af92a212.json diff --git a/data/tokens/42161/0x35751007a407ca6feffe80b3cb397736d2cf4dbe.json b/data/tokens/evm/42161/0x35751007a407ca6feffe80b3cb397736d2cf4dbe.json similarity index 100% rename from data/tokens/42161/0x35751007a407ca6feffe80b3cb397736d2cf4dbe.json rename to data/tokens/evm/42161/0x35751007a407ca6feffe80b3cb397736d2cf4dbe.json diff --git a/data/tokens/42161/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8.json b/data/tokens/evm/42161/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8.json similarity index 100% rename from data/tokens/42161/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8.json rename to data/tokens/evm/42161/0x3d9907f9a368ad0a51be60f7da3b97cf940982d8.json diff --git a/data/tokens/42161/0x3f56e0c36d275367b8c502090edf38289b3dea0d.json b/data/tokens/evm/42161/0x3f56e0c36d275367b8c502090edf38289b3dea0d.json similarity index 100% rename from data/tokens/42161/0x3f56e0c36d275367b8c502090edf38289b3dea0d.json rename to data/tokens/evm/42161/0x3f56e0c36d275367b8c502090edf38289b3dea0d.json diff --git a/data/tokens/42161/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42.json b/data/tokens/evm/42161/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42.json similarity index 100% rename from data/tokens/42161/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42.json rename to data/tokens/evm/42161/0x4e352cf164e64adcbad318c3a1e222e9eba4ce42.json diff --git a/data/tokens/42161/0x539bde0d7dbd336b79148aa742883198bbf60342.json b/data/tokens/evm/42161/0x539bde0d7dbd336b79148aa742883198bbf60342.json similarity index 100% rename from data/tokens/42161/0x539bde0d7dbd336b79148aa742883198bbf60342.json rename to data/tokens/evm/42161/0x539bde0d7dbd336b79148aa742883198bbf60342.json diff --git a/data/tokens/42161/0x5979d7b546e38e414f7e9822514be443a4800529.json b/data/tokens/evm/42161/0x5979d7b546e38e414f7e9822514be443a4800529.json similarity index 100% rename from data/tokens/42161/0x5979d7b546e38e414f7e9822514be443a4800529.json rename to data/tokens/evm/42161/0x5979d7b546e38e414f7e9822514be443a4800529.json diff --git a/data/tokens/42161/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json b/data/tokens/evm/42161/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json similarity index 100% rename from data/tokens/42161/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json rename to data/tokens/evm/42161/0x5de1677344d3cb0d7d465c10b72a8f60699c062d.json diff --git a/data/tokens/42161/0x6325439389e0797ab35752b4f43a14c004f22a9c.json b/data/tokens/evm/42161/0x6325439389e0797ab35752b4f43a14c004f22a9c.json similarity index 100% rename from data/tokens/42161/0x6325439389e0797ab35752b4f43a14c004f22a9c.json rename to data/tokens/evm/42161/0x6325439389e0797ab35752b4f43a14c004f22a9c.json diff --git a/data/tokens/42161/0x6985884c4392d348587b19cb9eaaf157f13271cd.json b/data/tokens/evm/42161/0x6985884c4392d348587b19cb9eaaf157f13271cd.json similarity index 100% rename from data/tokens/42161/0x6985884c4392d348587b19cb9eaaf157f13271cd.json rename to data/tokens/evm/42161/0x6985884c4392d348587b19cb9eaaf157f13271cd.json diff --git a/data/tokens/42161/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55.json b/data/tokens/evm/42161/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55.json similarity index 100% rename from data/tokens/42161/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55.json rename to data/tokens/evm/42161/0x6c2c06790b3e3e3c38e12ee22f8183b37a13ee55.json diff --git a/data/tokens/42161/0x6daf586b7370b14163171544fca24abcc0862ac5.json b/data/tokens/evm/42161/0x6daf586b7370b14163171544fca24abcc0862ac5.json similarity index 100% rename from data/tokens/42161/0x6daf586b7370b14163171544fca24abcc0862ac5.json rename to data/tokens/evm/42161/0x6daf586b7370b14163171544fca24abcc0862ac5.json diff --git a/data/tokens/42161/0x82af49447d8a07e3bd95bd0d56f35241523fbab1.json b/data/tokens/evm/42161/0x82af49447d8a07e3bd95bd0d56f35241523fbab1.json similarity index 100% rename from data/tokens/42161/0x82af49447d8a07e3bd95bd0d56f35241523fbab1.json rename to data/tokens/evm/42161/0x82af49447d8a07e3bd95bd0d56f35241523fbab1.json diff --git a/data/tokens/42161/0x912ce59144191c1204e64559fe8253a0e49e6548.json b/data/tokens/evm/42161/0x912ce59144191c1204e64559fe8253a0e49e6548.json similarity index 100% rename from data/tokens/42161/0x912ce59144191c1204e64559fe8253a0e49e6548.json rename to data/tokens/evm/42161/0x912ce59144191c1204e64559fe8253a0e49e6548.json diff --git a/data/tokens/42161/0x93b346b6bc2548da6a1e7d98e9a421b42541425b.json b/data/tokens/evm/42161/0x93b346b6bc2548da6a1e7d98e9a421b42541425b.json similarity index 100% rename from data/tokens/42161/0x93b346b6bc2548da6a1e7d98e9a421b42541425b.json rename to data/tokens/evm/42161/0x93b346b6bc2548da6a1e7d98e9a421b42541425b.json diff --git a/data/tokens/42161/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7.json b/data/tokens/evm/42161/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7.json similarity index 100% rename from data/tokens/42161/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7.json rename to data/tokens/evm/42161/0x9d2f299715d94d8a7e6f5eaa8e654e8c74a988a7.json diff --git a/data/tokens/42161/0xa0b862f60edef4452f25b4160f177db44deb6cf1.json b/data/tokens/evm/42161/0xa0b862f60edef4452f25b4160f177db44deb6cf1.json similarity index 100% rename from data/tokens/42161/0xa0b862f60edef4452f25b4160f177db44deb6cf1.json rename to data/tokens/evm/42161/0xa0b862f60edef4452f25b4160f177db44deb6cf1.json diff --git a/data/tokens/42161/0xaf88d065e77c8cc2239327c5edb3a432268e5831.json b/data/tokens/evm/42161/0xaf88d065e77c8cc2239327c5edb3a432268e5831.json similarity index 100% rename from data/tokens/42161/0xaf88d065e77c8cc2239327c5edb3a432268e5831.json rename to data/tokens/evm/42161/0xaf88d065e77c8cc2239327c5edb3a432268e5831.json diff --git a/data/tokens/42161/0xba5ddd1f9d7f570dc94a51479a000e3bce967196.json b/data/tokens/evm/42161/0xba5ddd1f9d7f570dc94a51479a000e3bce967196.json similarity index 100% rename from data/tokens/42161/0xba5ddd1f9d7f570dc94a51479a000e3bce967196.json rename to data/tokens/evm/42161/0xba5ddd1f9d7f570dc94a51479a000e3bce967196.json diff --git a/data/tokens/42161/0xd4d42f0b6def4ce0383636770ef773390d85c61a.json b/data/tokens/evm/42161/0xd4d42f0b6def4ce0383636770ef773390d85c61a.json similarity index 100% rename from data/tokens/42161/0xd4d42f0b6def4ce0383636770ef773390d85c61a.json rename to data/tokens/evm/42161/0xd4d42f0b6def4ce0383636770ef773390d85c61a.json diff --git a/data/tokens/42161/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json b/data/tokens/evm/42161/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json similarity index 100% rename from data/tokens/42161/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json rename to data/tokens/evm/42161/0xda10009cbd5d07dd0cecc66161fc93d7c9000da1.json diff --git a/data/tokens/42161/0xe31cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json b/data/tokens/evm/42161/0xe31cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json similarity index 100% rename from data/tokens/42161/0xe31cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json rename to data/tokens/evm/42161/0xe31cf085098af22bc5f5ce5f08fbb8e31c7a1e30.json diff --git a/data/tokens/42161/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json b/data/tokens/evm/42161/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json similarity index 100% rename from data/tokens/42161/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json rename to data/tokens/evm/42161/0xec70dcb4a1efa46b8f2d97c310c9c4790ba5ffa8.json diff --git a/data/tokens/42161/0xede855ced3e5a59aaa267abdddb0db21ccfe5072.json b/data/tokens/evm/42161/0xede855ced3e5a59aaa267abdddb0db21ccfe5072.json similarity index 100% rename from data/tokens/42161/0xede855ced3e5a59aaa267abdddb0db21ccfe5072.json rename to data/tokens/evm/42161/0xede855ced3e5a59aaa267abdddb0db21ccfe5072.json diff --git a/data/tokens/42161/0xf97f4df75117a78c1a5a0dbb814af92458539fb4.json b/data/tokens/evm/42161/0xf97f4df75117a78c1a5a0dbb814af92458539fb4.json similarity index 100% rename from data/tokens/42161/0xf97f4df75117a78c1a5a0dbb814af92458539fb4.json rename to data/tokens/evm/42161/0xf97f4df75117a78c1a5a0dbb814af92458539fb4.json diff --git a/data/tokens/42161/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0.json b/data/tokens/evm/42161/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0.json similarity index 100% rename from data/tokens/42161/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0.json rename to data/tokens/evm/42161/0xfa7f8980b0f1e64a2062791cc3b0871572f1f7f0.json diff --git a/data/tokens/42161/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json b/data/tokens/evm/42161/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json similarity index 100% rename from data/tokens/42161/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json rename to data/tokens/evm/42161/0xfc5a1a6eb076a2c7ad06ed22c90d7e710e35ad0a.json diff --git a/data/tokens/42161/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json b/data/tokens/evm/42161/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json similarity index 100% rename from data/tokens/42161/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json rename to data/tokens/evm/42161/0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9.json diff --git a/data/tokens/42161/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8.json b/data/tokens/evm/42161/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8.json similarity index 100% rename from data/tokens/42161/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8.json rename to data/tokens/evm/42161/0xff970a61a04b1ca14834a43f5de4533ebddb5cc8.json diff --git a/data/tokens/56/0x0a8901b0e25deb55a87524f0cc164e9644020eba.json b/data/tokens/evm/56/0x0a8901b0e25deb55a87524f0cc164e9644020eba.json similarity index 100% rename from data/tokens/56/0x0a8901b0e25deb55a87524f0cc164e9644020eba.json rename to data/tokens/evm/56/0x0a8901b0e25deb55a87524f0cc164e9644020eba.json diff --git a/data/tokens/56/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.json b/data/tokens/evm/56/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.json similarity index 100% rename from data/tokens/56/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.json rename to data/tokens/evm/56/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82.json diff --git a/data/tokens/56/0x0eb3a705fc54725037cc9e008bdede697f62f335.json b/data/tokens/evm/56/0x0eb3a705fc54725037cc9e008bdede697f62f335.json similarity index 100% rename from data/tokens/56/0x0eb3a705fc54725037cc9e008bdede697f62f335.json rename to data/tokens/evm/56/0x0eb3a705fc54725037cc9e008bdede697f62f335.json diff --git a/data/tokens/56/0x101d82428437127bf1608f699cd651e6abf9766e.json b/data/tokens/evm/56/0x101d82428437127bf1608f699cd651e6abf9766e.json similarity index 100% rename from data/tokens/56/0x101d82428437127bf1608f699cd651e6abf9766e.json rename to data/tokens/evm/56/0x101d82428437127bf1608f699cd651e6abf9766e.json diff --git a/data/tokens/56/0x14016e85a25aeb13065688cafb43044c2ef86784.json b/data/tokens/evm/56/0x14016e85a25aeb13065688cafb43044c2ef86784.json similarity index 100% rename from data/tokens/56/0x14016e85a25aeb13065688cafb43044c2ef86784.json rename to data/tokens/evm/56/0x14016e85a25aeb13065688cafb43044c2ef86784.json diff --git a/data/tokens/56/0x16939ef78684453bfdfb47825f8a5f714f12623a.json b/data/tokens/evm/56/0x16939ef78684453bfdfb47825f8a5f714f12623a.json similarity index 100% rename from data/tokens/56/0x16939ef78684453bfdfb47825f8a5f714f12623a.json rename to data/tokens/evm/56/0x16939ef78684453bfdfb47825f8a5f714f12623a.json diff --git a/data/tokens/56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.json b/data/tokens/evm/56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.json similarity index 100% rename from data/tokens/56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.json rename to data/tokens/evm/56/0x1af3f329e8be154074d8769d1ffa4ee058b1dbc3.json diff --git a/data/tokens/56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.json b/data/tokens/evm/56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.json similarity index 100% rename from data/tokens/56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.json rename to data/tokens/evm/56/0x1d2f0da169ceb9fc7b3144628db156f3f6c60dbe.json diff --git a/data/tokens/56/0x2170ed0880ac9a755fd29b2688956bd959f933f8.json b/data/tokens/evm/56/0x2170ed0880ac9a755fd29b2688956bd959f933f8.json similarity index 100% rename from data/tokens/56/0x2170ed0880ac9a755fd29b2688956bd959f933f8.json rename to data/tokens/evm/56/0x2170ed0880ac9a755fd29b2688956bd959f933f8.json diff --git a/data/tokens/56/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.json b/data/tokens/evm/56/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.json similarity index 100% rename from data/tokens/56/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.json rename to data/tokens/evm/56/0x250632378e573c6be1ac2f97fcdf00515d0aa91b.json diff --git a/data/tokens/56/0x2859e4544c4bb03966803b044a93563bd2d0dd4d.json b/data/tokens/evm/56/0x2859e4544c4bb03966803b044a93563bd2d0dd4d.json similarity index 100% rename from data/tokens/56/0x2859e4544c4bb03966803b044a93563bd2d0dd4d.json rename to data/tokens/evm/56/0x2859e4544c4bb03966803b044a93563bd2d0dd4d.json diff --git a/data/tokens/56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.json b/data/tokens/evm/56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.json similarity index 100% rename from data/tokens/56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.json rename to data/tokens/evm/56/0x3ee2200efb3400fabb9aacf31297cbdd1d435d47.json diff --git a/data/tokens/56/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.json b/data/tokens/evm/56/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.json similarity index 100% rename from data/tokens/56/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.json rename to data/tokens/evm/56/0x4338665cbb7b2485a8855a139b75d5e34ab0db94.json diff --git a/data/tokens/56/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.json b/data/tokens/evm/56/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.json similarity index 100% rename from data/tokens/56/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.json rename to data/tokens/evm/56/0x47bead2563dcbf3bf2c9407fea4dc236faba485a.json diff --git a/data/tokens/56/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.json b/data/tokens/evm/56/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.json similarity index 100% rename from data/tokens/56/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.json rename to data/tokens/evm/56/0x4bd17003473389a42daf6a0a729f6fdb328bbbd7.json diff --git a/data/tokens/56/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.json b/data/tokens/evm/56/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.json similarity index 100% rename from data/tokens/56/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.json rename to data/tokens/evm/56/0x52ce071bd9b1c4b00a0b92d298c512478cad67e8.json diff --git a/data/tokens/56/0x55d398326f99059ff775485246999027b3197955.json b/data/tokens/evm/56/0x55d398326f99059ff775485246999027b3197955.json similarity index 100% rename from data/tokens/56/0x55d398326f99059ff775485246999027b3197955.json rename to data/tokens/evm/56/0x55d398326f99059ff775485246999027b3197955.json diff --git a/data/tokens/56/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.json b/data/tokens/evm/56/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.json similarity index 100% rename from data/tokens/56/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.json rename to data/tokens/evm/56/0x56b6fb708fc5732dec1afc8d8556423a2edccbd6.json diff --git a/data/tokens/56/0x570a5d26f7765ecb712c0924e4de545b89fd43df.json b/data/tokens/evm/56/0x570a5d26f7765ecb712c0924e4de545b89fd43df.json similarity index 100% rename from data/tokens/56/0x570a5d26f7765ecb712c0924e4de545b89fd43df.json rename to data/tokens/evm/56/0x570a5d26f7765ecb712c0924e4de545b89fd43df.json diff --git a/data/tokens/56/0x5f0da599bb2cccfcf6fdfd7d81743cabae698889.json b/data/tokens/evm/56/0x5f0da599bb2cccfcf6fdfd7d81743cabae698889.json similarity index 100% rename from data/tokens/56/0x5f0da599bb2cccfcf6fdfd7d81743cabae698889.json rename to data/tokens/evm/56/0x5f0da599bb2cccfcf6fdfd7d81743cabae698889.json diff --git a/data/tokens/56/0x5f41842cff838120271d772c6994f051d418a4ad.json b/data/tokens/evm/56/0x5f41842cff838120271d772c6994f051d418a4ad.json similarity index 100% rename from data/tokens/56/0x5f41842cff838120271d772c6994f051d418a4ad.json rename to data/tokens/evm/56/0x5f41842cff838120271d772c6994f051d418a4ad.json diff --git a/data/tokens/56/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.json b/data/tokens/evm/56/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.json similarity index 100% rename from data/tokens/56/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.json rename to data/tokens/evm/56/0x7083609fce4d1d8dc0c979aab8c869ea2c873402.json diff --git a/data/tokens/56/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json b/data/tokens/evm/56/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json similarity index 100% rename from data/tokens/56/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json rename to data/tokens/evm/56/0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c.json diff --git a/data/tokens/56/0x715d400f88c167884bbcc41c5fea407ed4d2f8a0.json b/data/tokens/evm/56/0x715d400f88c167884bbcc41c5fea407ed4d2f8a0.json similarity index 100% rename from data/tokens/56/0x715d400f88c167884bbcc41c5fea407ed4d2f8a0.json rename to data/tokens/evm/56/0x715d400f88c167884bbcc41c5fea407ed4d2f8a0.json diff --git a/data/tokens/56/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.json b/data/tokens/evm/56/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.json similarity index 100% rename from data/tokens/56/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.json rename to data/tokens/evm/56/0x88f1a5ae2a3bf98aeaf342d26b30a79438c9142e.json diff --git a/data/tokens/56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.json b/data/tokens/evm/56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.json similarity index 100% rename from data/tokens/56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.json rename to data/tokens/evm/56/0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d.json diff --git a/data/tokens/56/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.json b/data/tokens/evm/56/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.json similarity index 100% rename from data/tokens/56/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.json rename to data/tokens/evm/56/0x8ff795a6f4d97e7887c79bea79aba5cc76444adf.json diff --git a/data/tokens/56/0x9c65ab58d8d978db963e63f2bfb7121627e3a739.json b/data/tokens/evm/56/0x9c65ab58d8d978db963e63f2bfb7121627e3a739.json similarity index 100% rename from data/tokens/56/0x9c65ab58d8d978db963e63f2bfb7121627e3a739.json rename to data/tokens/evm/56/0x9c65ab58d8d978db963e63f2bfb7121627e3a739.json diff --git a/data/tokens/56/0xa184088a740c695e156f91f5cc086a06bb78b827.json b/data/tokens/evm/56/0xa184088a740c695e156f91f5cc086a06bb78b827.json similarity index 100% rename from data/tokens/56/0xa184088a740c695e156f91f5cc086a06bb78b827.json rename to data/tokens/evm/56/0xa184088a740c695e156f91f5cc086a06bb78b827.json diff --git a/data/tokens/56/0xb86abcb37c3a4b64f74f59301aff131a1becc787.json b/data/tokens/evm/56/0xb86abcb37c3a4b64f74f59301aff131a1becc787.json similarity index 100% rename from data/tokens/56/0xb86abcb37c3a4b64f74f59301aff131a1becc787.json rename to data/tokens/evm/56/0xb86abcb37c3a4b64f74f59301aff131a1becc787.json diff --git a/data/tokens/56/0xba2ae424d960c26247dd6c32edc70b295c744c43.json b/data/tokens/evm/56/0xba2ae424d960c26247dd6c32edc70b295c744c43.json similarity index 100% rename from data/tokens/56/0xba2ae424d960c26247dd6c32edc70b295c744c43.json rename to data/tokens/evm/56/0xba2ae424d960c26247dd6c32edc70b295c744c43.json diff --git a/data/tokens/56/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json b/data/tokens/evm/56/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json similarity index 100% rename from data/tokens/56/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json rename to data/tokens/evm/56/0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c.json diff --git a/data/tokens/56/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.json b/data/tokens/evm/56/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.json similarity index 100% rename from data/tokens/56/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.json rename to data/tokens/evm/56/0xbf5140a22578168fd562dccf235e5d43a02ce9b1.json diff --git a/data/tokens/56/0xcc42724c6683b7e57334c4e856f4c9965ed682bd.json b/data/tokens/evm/56/0xcc42724c6683b7e57334c4e856f4c9965ed682bd.json similarity index 100% rename from data/tokens/56/0xcc42724c6683b7e57334c4e856f4c9965ed682bd.json rename to data/tokens/evm/56/0xcc42724c6683b7e57334c4e856f4c9965ed682bd.json diff --git a/data/tokens/56/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3.json b/data/tokens/evm/56/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3.json similarity index 100% rename from data/tokens/56/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3.json rename to data/tokens/evm/56/0xce7de646e7208a4ef112cb6ed5038fa6cc6b12e3.json diff --git a/data/tokens/56/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.json b/data/tokens/evm/56/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.json similarity index 100% rename from data/tokens/56/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.json rename to data/tokens/evm/56/0xcf6bb5389c92bdda8a3747ddb454cb7a64626c63.json diff --git a/data/tokens/56/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json b/data/tokens/evm/56/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json similarity index 100% rename from data/tokens/56/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json rename to data/tokens/evm/56/0xd41fdb03ba84762dd66a0af1a6c8540ff1ba5dfb.json diff --git a/data/tokens/56/0xdf7952b35f24acf7fc0487d01c8d5690a60dba07.json b/data/tokens/evm/56/0xdf7952b35f24acf7fc0487d01c8d5690a60dba07.json similarity index 100% rename from data/tokens/56/0xdf7952b35f24acf7fc0487d01c8d5690a60dba07.json rename to data/tokens/evm/56/0xdf7952b35f24acf7fc0487d01c8d5690a60dba07.json diff --git a/data/tokens/56/0xe9e7cea3dedca5984780bafc599bd69add087d56.json b/data/tokens/evm/56/0xe9e7cea3dedca5984780bafc599bd69add087d56.json similarity index 100% rename from data/tokens/56/0xe9e7cea3dedca5984780bafc599bd69add087d56.json rename to data/tokens/evm/56/0xe9e7cea3dedca5984780bafc599bd69add087d56.json diff --git a/data/tokens/56/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.json b/data/tokens/evm/56/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.json similarity index 100% rename from data/tokens/56/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.json rename to data/tokens/evm/56/0xf8a0bf9cf54bb92f17374d9e9a321e6a111a51bd.json diff --git a/data/tokens/56/0xfb6115445bff7b52feb98650c87f44907e58f802.json b/data/tokens/evm/56/0xfb6115445bff7b52feb98650c87f44907e58f802.json similarity index 100% rename from data/tokens/56/0xfb6115445bff7b52feb98650c87f44907e58f802.json rename to data/tokens/evm/56/0xfb6115445bff7b52feb98650c87f44907e58f802.json diff --git a/data/tokens/56/0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c.json b/data/tokens/evm/56/0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c.json similarity index 100% rename from data/tokens/56/0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c.json rename to data/tokens/evm/56/0xfce146bf3146100cfe5db4129cf6c82b0ef4ad8c.json diff --git a/data/tokens/56/0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba.json b/data/tokens/evm/56/0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba.json similarity index 100% rename from data/tokens/56/0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba.json rename to data/tokens/evm/56/0xfe19f0b51438fd612f6fd59c1dbb3ea319f433ba.json diff --git a/data/tokens/8453/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a.json b/data/tokens/evm/8453/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a.json similarity index 100% rename from data/tokens/8453/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a.json rename to data/tokens/evm/8453/0x04c0599ae5a44757c0af6f9ec3b93da8976c150a.json diff --git a/data/tokens/8453/0x0555e30da8f98308edb960aa94c0db47230d2b9c.json b/data/tokens/evm/8453/0x0555e30da8f98308edb960aa94c0db47230d2b9c.json similarity index 100% rename from data/tokens/8453/0x0555e30da8f98308edb960aa94c0db47230d2b9c.json rename to data/tokens/evm/8453/0x0555e30da8f98308edb960aa94c0db47230d2b9c.json diff --git a/data/tokens/8453/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe.json b/data/tokens/evm/8453/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe.json similarity index 100% rename from data/tokens/8453/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe.json rename to data/tokens/evm/8453/0x0578d8a44db98b23bf096a382e016e29a5ce0ffe.json diff --git a/data/tokens/8453/0x09188484e1ab980daef53a9755241d759c5b7d60.json b/data/tokens/evm/8453/0x09188484e1ab980daef53a9755241d759c5b7d60.json similarity index 100% rename from data/tokens/8453/0x09188484e1ab980daef53a9755241d759c5b7d60.json rename to data/tokens/evm/8453/0x09188484e1ab980daef53a9755241d759c5b7d60.json diff --git a/data/tokens/8453/0x0a27e060c0406f8ab7b64e3bee036a37e5a62853.json b/data/tokens/evm/8453/0x0a27e060c0406f8ab7b64e3bee036a37e5a62853.json similarity index 100% rename from data/tokens/8453/0x0a27e060c0406f8ab7b64e3bee036a37e5a62853.json rename to data/tokens/evm/8453/0x0a27e060c0406f8ab7b64e3bee036a37e5a62853.json diff --git a/data/tokens/8453/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b.json b/data/tokens/evm/8453/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b.json similarity index 100% rename from data/tokens/8453/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b.json rename to data/tokens/evm/8453/0x0b3e328455c4059eeb9e3f84b5543f74e24e7e1b.json diff --git a/data/tokens/8453/0x1a35ee4640b0a3b87705b0a4b45d227ba60ca2ad.json b/data/tokens/evm/8453/0x1a35ee4640b0a3b87705b0a4b45d227ba60ca2ad.json similarity index 100% rename from data/tokens/8453/0x1a35ee4640b0a3b87705b0a4b45d227ba60ca2ad.json rename to data/tokens/evm/8453/0x1a35ee4640b0a3b87705b0a4b45d227ba60ca2ad.json diff --git a/data/tokens/8453/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85.json b/data/tokens/evm/8453/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85.json similarity index 100% rename from data/tokens/8453/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85.json rename to data/tokens/evm/8453/0x1c7a460413dd4e964f96d8dfc56e7223ce88cd85.json diff --git a/data/tokens/8453/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4.json b/data/tokens/evm/8453/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4.json similarity index 100% rename from data/tokens/8453/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4.json rename to data/tokens/evm/8453/0x1dd2d631c92b1acdfcdd51a0f7145a50130050c4.json diff --git a/data/tokens/8453/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json b/data/tokens/evm/8453/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json similarity index 100% rename from data/tokens/8453/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json rename to data/tokens/evm/8453/0x211cc4dd073734da055fbf44a2b4667d5e5fe5d2.json diff --git a/data/tokens/8453/0x217ec1ac929a17481446a76ff9b95b9a64f298cf.json b/data/tokens/evm/8453/0x217ec1ac929a17481446a76ff9b95b9a64f298cf.json similarity index 100% rename from data/tokens/8453/0x217ec1ac929a17481446a76ff9b95b9a64f298cf.json rename to data/tokens/evm/8453/0x217ec1ac929a17481446a76ff9b95b9a64f298cf.json diff --git a/data/tokens/8453/0x22e6966b799c4d5b13be962e1d117b56327fda66.json b/data/tokens/evm/8453/0x22e6966b799c4d5b13be962e1d117b56327fda66.json similarity index 100% rename from data/tokens/8453/0x22e6966b799c4d5b13be962e1d117b56327fda66.json rename to data/tokens/evm/8453/0x22e6966b799c4d5b13be962e1d117b56327fda66.json diff --git a/data/tokens/8453/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b.json b/data/tokens/evm/8453/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b.json similarity index 100% rename from data/tokens/8453/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b.json rename to data/tokens/evm/8453/0x236aa50979d5f3de3bd1eeb40e81137f22ab794b.json diff --git a/data/tokens/8453/0x2416092f143378750bb29b79ed961ab195cceea5.json b/data/tokens/evm/8453/0x2416092f143378750bb29b79ed961ab195cceea5.json similarity index 100% rename from data/tokens/8453/0x2416092f143378750bb29b79ed961ab195cceea5.json rename to data/tokens/evm/8453/0x2416092f143378750bb29b79ed961ab195cceea5.json diff --git a/data/tokens/8453/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8.json b/data/tokens/evm/8453/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8.json similarity index 100% rename from data/tokens/8453/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8.json rename to data/tokens/evm/8453/0x27d2decb4bfc9c76f0309b8e88dec3a601fe25a8.json diff --git a/data/tokens/8453/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json b/data/tokens/evm/8453/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json similarity index 100% rename from data/tokens/8453/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json rename to data/tokens/evm/8453/0x2ae3f1ec7f1f5012cfeab0185bfc7aa3cf0dec22.json diff --git a/data/tokens/8453/0x2da56acb9ea78330f947bd57c54119debda7af71.json b/data/tokens/evm/8453/0x2da56acb9ea78330f947bd57c54119debda7af71.json similarity index 100% rename from data/tokens/8453/0x2da56acb9ea78330f947bd57c54119debda7af71.json rename to data/tokens/evm/8453/0x2da56acb9ea78330f947bd57c54119debda7af71.json diff --git a/data/tokens/8453/0x2dad3a13ef0c6366220f989157009e501e7938f8.json b/data/tokens/evm/8453/0x2dad3a13ef0c6366220f989157009e501e7938f8.json similarity index 100% rename from data/tokens/8453/0x2dad3a13ef0c6366220f989157009e501e7938f8.json rename to data/tokens/evm/8453/0x2dad3a13ef0c6366220f989157009e501e7938f8.json diff --git a/data/tokens/8453/0x3055913c90fcc1a6ce9a358911721eeb942013a1.json b/data/tokens/evm/8453/0x3055913c90fcc1a6ce9a358911721eeb942013a1.json similarity index 100% rename from data/tokens/8453/0x3055913c90fcc1a6ce9a358911721eeb942013a1.json rename to data/tokens/evm/8453/0x3055913c90fcc1a6ce9a358911721eeb942013a1.json diff --git a/data/tokens/8453/0x368181499736d0c0cc614dbb145e2ec1ac86b8c6.json b/data/tokens/evm/8453/0x368181499736d0c0cc614dbb145e2ec1ac86b8c6.json similarity index 100% rename from data/tokens/8453/0x368181499736d0c0cc614dbb145e2ec1ac86b8c6.json rename to data/tokens/evm/8453/0x368181499736d0c0cc614dbb145e2ec1ac86b8c6.json diff --git a/data/tokens/8453/0x3992b27da26848c2b19cea6fd25d2c9944f9488e.json b/data/tokens/evm/8453/0x3992b27da26848c2b19cea6fd25d2c9944f9488e.json similarity index 100% rename from data/tokens/8453/0x3992b27da26848c2b19cea6fd25d2c9944f9488e.json rename to data/tokens/evm/8453/0x3992b27da26848c2b19cea6fd25d2c9944f9488e.json diff --git a/data/tokens/8453/0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f.json b/data/tokens/evm/8453/0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f.json similarity index 100% rename from data/tokens/8453/0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f.json rename to data/tokens/evm/8453/0x3b86ad95859b6ab773f55f8d94b4b9d443ee931f.json diff --git a/data/tokens/8453/0x4158734d47fc9692176b5085e0f52ee0da5d47f1.json b/data/tokens/evm/8453/0x4158734d47fc9692176b5085e0f52ee0da5d47f1.json similarity index 100% rename from data/tokens/8453/0x4158734d47fc9692176b5085e0f52ee0da5d47f1.json rename to data/tokens/evm/8453/0x4158734d47fc9692176b5085e0f52ee0da5d47f1.json diff --git a/data/tokens/8453/0x417ac0e078398c154edfadd9ef675d30be60af93.json b/data/tokens/evm/8453/0x417ac0e078398c154edfadd9ef675d30be60af93.json similarity index 100% rename from data/tokens/8453/0x417ac0e078398c154edfadd9ef675d30be60af93.json rename to data/tokens/evm/8453/0x417ac0e078398c154edfadd9ef675d30be60af93.json diff --git a/data/tokens/8453/0x4200000000000000000000000000000000000006.json b/data/tokens/evm/8453/0x4200000000000000000000000000000000000006.json similarity index 100% rename from data/tokens/8453/0x4200000000000000000000000000000000000006.json rename to data/tokens/evm/8453/0x4200000000000000000000000000000000000006.json diff --git a/data/tokens/8453/0x4621b7a9c75199271f773ebd9a499dbd165c3191.json b/data/tokens/evm/8453/0x4621b7a9c75199271f773ebd9a499dbd165c3191.json similarity index 100% rename from data/tokens/8453/0x4621b7a9c75199271f773ebd9a499dbd165c3191.json rename to data/tokens/evm/8453/0x4621b7a9c75199271f773ebd9a499dbd165c3191.json diff --git a/data/tokens/8453/0x4ed4e862860bed51a9570b96d89af5e1b0efefed.json b/data/tokens/evm/8453/0x4ed4e862860bed51a9570b96d89af5e1b0efefed.json similarity index 100% rename from data/tokens/8453/0x4ed4e862860bed51a9570b96d89af5e1b0efefed.json rename to data/tokens/evm/8453/0x4ed4e862860bed51a9570b96d89af5e1b0efefed.json diff --git a/data/tokens/8453/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825.json b/data/tokens/evm/8453/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825.json similarity index 100% rename from data/tokens/8453/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825.json rename to data/tokens/evm/8453/0x4f9fd6be4a90f2620860d680c0d4d5fb53d1a825.json diff --git a/data/tokens/8453/0x50c5725949a6f0c72e6c4a641f24049a917db0cb.json b/data/tokens/evm/8453/0x50c5725949a6f0c72e6c4a641f24049a917db0cb.json similarity index 100% rename from data/tokens/8453/0x50c5725949a6f0c72e6c4a641f24049a917db0cb.json rename to data/tokens/evm/8453/0x50c5725949a6f0c72e6c4a641f24049a917db0cb.json diff --git a/data/tokens/8453/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d.json b/data/tokens/evm/8453/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d.json similarity index 100% rename from data/tokens/8453/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d.json rename to data/tokens/evm/8453/0x52b492a33e447cdb854c7fc19f1e57e8bfa1777d.json diff --git a/data/tokens/8453/0x532f27101965dd16442e59d40670faf5ebb142e4.json b/data/tokens/evm/8453/0x532f27101965dd16442e59d40670faf5ebb142e4.json similarity index 100% rename from data/tokens/8453/0x532f27101965dd16442e59d40670faf5ebb142e4.json rename to data/tokens/evm/8453/0x532f27101965dd16442e59d40670faf5ebb142e4.json diff --git a/data/tokens/8453/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4.json b/data/tokens/evm/8453/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4.json similarity index 100% rename from data/tokens/8453/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4.json rename to data/tokens/evm/8453/0x55cd6469f597452b5a7536e2cd98fde4c1247ee4.json diff --git a/data/tokens/8453/0x5875eee11cf8398102fdad704c9e96607675467a.json b/data/tokens/evm/8453/0x5875eee11cf8398102fdad704c9e96607675467a.json similarity index 100% rename from data/tokens/8453/0x5875eee11cf8398102fdad704c9e96607675467a.json rename to data/tokens/evm/8453/0x5875eee11cf8398102fdad704c9e96607675467a.json diff --git a/data/tokens/8453/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34.json b/data/tokens/evm/8453/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34.json similarity index 100% rename from data/tokens/8453/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34.json rename to data/tokens/evm/8453/0x5d3a1ff2b6bab83b63cd9ad0787074081a52ef34.json diff --git a/data/tokens/8453/0x60a3e35cc302bfa44cb36dc52a6d85b7e508de5a.json b/data/tokens/evm/8453/0x60a3e35cc302bfa44cb36dc52a6d85b7e508de5a.json similarity index 100% rename from data/tokens/8453/0x60a3e35cc302bfa44cb36dc52a6d85b7e508de5a.json rename to data/tokens/evm/8453/0x60a3e35cc302bfa44cb36dc52a6d85b7e508de5a.json diff --git a/data/tokens/8453/0x63706e401c06ac8513145b7687a14804d17f814b.json b/data/tokens/evm/8453/0x63706e401c06ac8513145b7687a14804d17f814b.json similarity index 100% rename from data/tokens/8453/0x63706e401c06ac8513145b7687a14804d17f814b.json rename to data/tokens/evm/8453/0x63706e401c06ac8513145b7687a14804d17f814b.json diff --git a/data/tokens/8453/0x6921b130d297cc43754afba22e5eac0fbf8db75b.json b/data/tokens/evm/8453/0x6921b130d297cc43754afba22e5eac0fbf8db75b.json similarity index 100% rename from data/tokens/8453/0x6921b130d297cc43754afba22e5eac0fbf8db75b.json rename to data/tokens/evm/8453/0x6921b130d297cc43754afba22e5eac0fbf8db75b.json diff --git a/data/tokens/8453/0x6985884c4392d348587b19cb9eaaf157f13271cd.json b/data/tokens/evm/8453/0x6985884c4392d348587b19cb9eaaf157f13271cd.json similarity index 100% rename from data/tokens/8453/0x6985884c4392d348587b19cb9eaaf157f13271cd.json rename to data/tokens/evm/8453/0x6985884c4392d348587b19cb9eaaf157f13271cd.json diff --git a/data/tokens/8453/0x78a087d713be963bf307b18f2ff8122ef9a63ae9.json b/data/tokens/evm/8453/0x78a087d713be963bf307b18f2ff8122ef9a63ae9.json similarity index 100% rename from data/tokens/8453/0x78a087d713be963bf307b18f2ff8122ef9a63ae9.json rename to data/tokens/evm/8453/0x78a087d713be963bf307b18f2ff8122ef9a63ae9.json diff --git a/data/tokens/8453/0x7c6b91d9be155a6db01f749217d76ff02a7227f2.json b/data/tokens/evm/8453/0x7c6b91d9be155a6db01f749217d76ff02a7227f2.json similarity index 100% rename from data/tokens/8453/0x7c6b91d9be155a6db01f749217d76ff02a7227f2.json rename to data/tokens/evm/8453/0x7c6b91d9be155a6db01f749217d76ff02a7227f2.json diff --git a/data/tokens/8453/0x7d49a065d17d6d4a55dc13649901fdbb98b2afba.json b/data/tokens/evm/8453/0x7d49a065d17d6d4a55dc13649901fdbb98b2afba.json similarity index 100% rename from data/tokens/8453/0x7d49a065d17d6d4a55dc13649901fdbb98b2afba.json rename to data/tokens/evm/8453/0x7d49a065d17d6d4a55dc13649901fdbb98b2afba.json diff --git a/data/tokens/8453/0x7fcd174e80f264448ebee8c88a7c4476aaf58ea6.json b/data/tokens/evm/8453/0x7fcd174e80f264448ebee8c88a7c4476aaf58ea6.json similarity index 100% rename from data/tokens/8453/0x7fcd174e80f264448ebee8c88a7c4476aaf58ea6.json rename to data/tokens/evm/8453/0x7fcd174e80f264448ebee8c88a7c4476aaf58ea6.json diff --git a/data/tokens/8453/0x820c137fa70c8691f0e44dc420a5e53c168921dc.json b/data/tokens/evm/8453/0x820c137fa70c8691f0e44dc420a5e53c168921dc.json similarity index 100% rename from data/tokens/8453/0x820c137fa70c8691f0e44dc420a5e53c168921dc.json rename to data/tokens/evm/8453/0x820c137fa70c8691f0e44dc420a5e53c168921dc.json diff --git a/data/tokens/8453/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.json b/data/tokens/evm/8453/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.json similarity index 100% rename from data/tokens/8453/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.json rename to data/tokens/evm/8453/0x833589fcd6edb6e08f4c7c32d4f71b54bda02913.json diff --git a/data/tokens/8453/0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196.json b/data/tokens/evm/8453/0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196.json similarity index 100% rename from data/tokens/8453/0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196.json rename to data/tokens/evm/8453/0x88fb150bdc53a65fe94dea0c9ba0a6daf8c6e196.json diff --git a/data/tokens/8453/0x8901cb2e82cc95c01e42206f8d1f417fe53e7af0.json b/data/tokens/evm/8453/0x8901cb2e82cc95c01e42206f8d1f417fe53e7af0.json similarity index 100% rename from data/tokens/8453/0x8901cb2e82cc95c01e42206f8d1f417fe53e7af0.json rename to data/tokens/evm/8453/0x8901cb2e82cc95c01e42206f8d1f417fe53e7af0.json diff --git a/data/tokens/8453/0x940181a94a35a4569e4529a3cdfb74e38fd98631.json b/data/tokens/evm/8453/0x940181a94a35a4569e4529a3cdfb74e38fd98631.json similarity index 100% rename from data/tokens/8453/0x940181a94a35a4569e4529a3cdfb74e38fd98631.json rename to data/tokens/evm/8453/0x940181a94a35a4569e4529a3cdfb74e38fd98631.json diff --git a/data/tokens/8453/0x949bed087ff0241e04e98d807de3c3dd97eaa381.json b/data/tokens/evm/8453/0x949bed087ff0241e04e98d807de3c3dd97eaa381.json similarity index 100% rename from data/tokens/8453/0x949bed087ff0241e04e98d807de3c3dd97eaa381.json rename to data/tokens/evm/8453/0x949bed087ff0241e04e98d807de3c3dd97eaa381.json diff --git a/data/tokens/8453/0x9a26f5433671751c3276a065f57e5a02d2817973.json b/data/tokens/evm/8453/0x9a26f5433671751c3276a065f57e5a02d2817973.json similarity index 100% rename from data/tokens/8453/0x9a26f5433671751c3276a065f57e5a02d2817973.json rename to data/tokens/evm/8453/0x9a26f5433671751c3276a065f57e5a02d2817973.json diff --git a/data/tokens/8453/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json b/data/tokens/evm/8453/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json similarity index 100% rename from data/tokens/8453/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json rename to data/tokens/evm/8453/0x9e1028f5f1d5ede59748ffcee5532509976840e0.json diff --git a/data/tokens/8453/0xa449b4f43d9a33fcdcf397b9cc7aa909012709fd.json b/data/tokens/evm/8453/0xa449b4f43d9a33fcdcf397b9cc7aa909012709fd.json similarity index 100% rename from data/tokens/8453/0xa449b4f43d9a33fcdcf397b9cc7aa909012709fd.json rename to data/tokens/evm/8453/0xa449b4f43d9a33fcdcf397b9cc7aa909012709fd.json diff --git a/data/tokens/8453/0xa7d68d155d17cb30e311367c2ef1e82ab6022b67.json b/data/tokens/evm/8453/0xa7d68d155d17cb30e311367c2ef1e82ab6022b67.json similarity index 100% rename from data/tokens/8453/0xa7d68d155d17cb30e311367c2ef1e82ab6022b67.json rename to data/tokens/evm/8453/0xa7d68d155d17cb30e311367c2ef1e82ab6022b67.json diff --git a/data/tokens/8453/0xab36452dbac151be02b16ca17d8919826072f64a.json b/data/tokens/evm/8453/0xab36452dbac151be02b16ca17d8919826072f64a.json similarity index 100% rename from data/tokens/8453/0xab36452dbac151be02b16ca17d8919826072f64a.json rename to data/tokens/evm/8453/0xab36452dbac151be02b16ca17d8919826072f64a.json diff --git a/data/tokens/8453/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4.json b/data/tokens/evm/8453/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4.json similarity index 100% rename from data/tokens/8453/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4.json rename to data/tokens/evm/8453/0xac1bd2486aaf3b5c0fc3fd868558b082a531b2b4.json diff --git a/data/tokens/8453/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c.json b/data/tokens/evm/8453/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c.json similarity index 100% rename from data/tokens/8453/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c.json rename to data/tokens/evm/8453/0xb6fe221fe9eef5aba221c348ba20a1bf5e73624c.json diff --git a/data/tokens/8453/0xba0dda8762c24da9487f5fa026a9b64b695a07ea.json b/data/tokens/evm/8453/0xba0dda8762c24da9487f5fa026a9b64b695a07ea.json similarity index 100% rename from data/tokens/8453/0xba0dda8762c24da9487f5fa026a9b64b695a07ea.json rename to data/tokens/evm/8453/0xba0dda8762c24da9487f5fa026a9b64b695a07ea.json diff --git a/data/tokens/8453/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842.json b/data/tokens/evm/8453/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842.json similarity index 100% rename from data/tokens/8453/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842.json rename to data/tokens/evm/8453/0xbaa5cc21fd487b8fcc2f632f3f4e8d37262a0842.json diff --git a/data/tokens/8453/0xbc45647ea894030a4e9801ec03479739fa2485f0.json b/data/tokens/evm/8453/0xbc45647ea894030a4e9801ec03479739fa2485f0.json similarity index 100% rename from data/tokens/8453/0xbc45647ea894030a4e9801ec03479739fa2485f0.json rename to data/tokens/evm/8453/0xbc45647ea894030a4e9801ec03479739fa2485f0.json diff --git a/data/tokens/8453/0xbe3ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json b/data/tokens/evm/8453/0xbe3ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json similarity index 100% rename from data/tokens/8453/0xbe3ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json rename to data/tokens/evm/8453/0xbe3ca34d0e3e3616e1c1a8c67e0c1b242d0ec1f4.json diff --git a/data/tokens/8453/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452.json b/data/tokens/evm/8453/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452.json similarity index 100% rename from data/tokens/8453/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452.json rename to data/tokens/evm/8453/0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452.json diff --git a/data/tokens/8453/0xc2106ca72996e49bbadba9e6bb98e0adfe5b40f6.json b/data/tokens/evm/8453/0xc2106ca72996e49bbadba9e6bb98e0adfe5b40f6.json similarity index 100% rename from data/tokens/8453/0xc2106ca72996e49bbadba9e6bb98e0adfe5b40f6.json rename to data/tokens/evm/8453/0xc2106ca72996e49bbadba9e6bb98e0adfe5b40f6.json diff --git a/data/tokens/8453/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.json b/data/tokens/evm/8453/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.json similarity index 100% rename from data/tokens/8453/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.json rename to data/tokens/evm/8453/0xc5102fe9359fd9a28f877a67e36b0f050d81a3cc.json diff --git a/data/tokens/8453/0xca5d8f8a8d49439357d3cf46ca2e720702f132b8.json b/data/tokens/evm/8453/0xca5d8f8a8d49439357d3cf46ca2e720702f132b8.json similarity index 100% rename from data/tokens/8453/0xca5d8f8a8d49439357d3cf46ca2e720702f132b8.json rename to data/tokens/evm/8453/0xca5d8f8a8d49439357d3cf46ca2e720702f132b8.json diff --git a/data/tokens/8453/0xcb28749c24af4797808364d71d71539bc01e76d4.json b/data/tokens/evm/8453/0xcb28749c24af4797808364d71d71539bc01e76d4.json similarity index 100% rename from data/tokens/8453/0xcb28749c24af4797808364d71d71539bc01e76d4.json rename to data/tokens/evm/8453/0xcb28749c24af4797808364d71d71539bc01e76d4.json diff --git a/data/tokens/8453/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json b/data/tokens/evm/8453/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json similarity index 100% rename from data/tokens/8453/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json rename to data/tokens/evm/8453/0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf.json diff --git a/data/tokens/8453/0xcc7ff230365bd730ee4b352cc2492cedac49383e.json b/data/tokens/evm/8453/0xcc7ff230365bd730ee4b352cc2492cedac49383e.json similarity index 100% rename from data/tokens/8453/0xcc7ff230365bd730ee4b352cc2492cedac49383e.json rename to data/tokens/evm/8453/0xcc7ff230365bd730ee4b352cc2492cedac49383e.json diff --git a/data/tokens/8453/0xcde172dc5ffc46d228838446c57c1227e0b82049.json b/data/tokens/evm/8453/0xcde172dc5ffc46d228838446c57c1227e0b82049.json similarity index 100% rename from data/tokens/8453/0xcde172dc5ffc46d228838446c57c1227e0b82049.json rename to data/tokens/evm/8453/0xcde172dc5ffc46d228838446c57c1227e0b82049.json diff --git a/data/tokens/8453/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4.json b/data/tokens/evm/8453/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4.json similarity index 100% rename from data/tokens/8453/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4.json rename to data/tokens/evm/8453/0xcfa3ef56d303ae4faaba0592388f19d7c3399fb4.json diff --git a/data/tokens/8453/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca.json b/data/tokens/evm/8453/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca.json similarity index 100% rename from data/tokens/8453/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca.json rename to data/tokens/evm/8453/0xd9aaec86b65d86f6a7b5b1b0c42ffa531710b6ca.json diff --git a/data/tokens/8453/0xddb3422497e61e13543bea06989c0789117555c5.json b/data/tokens/evm/8453/0xddb3422497e61e13543bea06989c0789117555c5.json similarity index 100% rename from data/tokens/8453/0xddb3422497e61e13543bea06989c0789117555c5.json rename to data/tokens/evm/8453/0xddb3422497e61e13543bea06989c0789117555c5.json diff --git a/data/tokens/8453/0xe3b53af74a4bf62ae5511055290838050bf764df.json b/data/tokens/evm/8453/0xe3b53af74a4bf62ae5511055290838050bf764df.json similarity index 100% rename from data/tokens/8453/0xe3b53af74a4bf62ae5511055290838050bf764df.json rename to data/tokens/evm/8453/0xe3b53af74a4bf62ae5511055290838050bf764df.json diff --git a/data/tokens/8453/0xeb466342c4d449bc9f53a865d5cb90586f405215.json b/data/tokens/evm/8453/0xeb466342c4d449bc9f53a865d5cb90586f405215.json similarity index 100% rename from data/tokens/8453/0xeb466342c4d449bc9f53a865d5cb90586f405215.json rename to data/tokens/evm/8453/0xeb466342c4d449bc9f53a865d5cb90586f405215.json diff --git a/data/tokens/8453/0xecbb3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json b/data/tokens/evm/8453/0xecbb3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json similarity index 100% rename from data/tokens/8453/0xecbb3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json rename to data/tokens/evm/8453/0xecbb3c47d54a9d8bf3cade74e63c6fe3b9fe43b2.json diff --git a/data/tokens/8453/0xed4e879087ebd0e8a77d66870012b5e0dffd0fa4.json b/data/tokens/evm/8453/0xed4e879087ebd0e8a77d66870012b5e0dffd0fa4.json similarity index 100% rename from data/tokens/8453/0xed4e879087ebd0e8a77d66870012b5e0dffd0fa4.json rename to data/tokens/evm/8453/0xed4e879087ebd0e8a77d66870012b5e0dffd0fa4.json diff --git a/data/tokens/8453/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22.json b/data/tokens/evm/8453/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22.json similarity index 100% rename from data/tokens/8453/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22.json rename to data/tokens/evm/8453/0xedc817a28e8b93b03976fbd4a3ddbc9f7d176c22.json diff --git a/data/tokens/8453/0xefb97aaf77993922ac4be4da8fbc9a2425322677.json b/data/tokens/evm/8453/0xefb97aaf77993922ac4be4da8fbc9a2425322677.json similarity index 100% rename from data/tokens/8453/0xefb97aaf77993922ac4be4da8fbc9a2425322677.json rename to data/tokens/evm/8453/0xefb97aaf77993922ac4be4da8fbc9a2425322677.json diff --git a/data/tokens/8453/0xf0d0df7142f60f7f3847463a509fd8969e3e3a27.json b/data/tokens/evm/8453/0xf0d0df7142f60f7f3847463a509fd8969e3e3a27.json similarity index 100% rename from data/tokens/8453/0xf0d0df7142f60f7f3847463a509fd8969e3e3a27.json rename to data/tokens/evm/8453/0xf0d0df7142f60f7f3847463a509fd8969e3e3a27.json diff --git a/data/tokens/8453/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50.json b/data/tokens/evm/8453/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50.json similarity index 100% rename from data/tokens/8453/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50.json rename to data/tokens/evm/8453/0xf6e932ca12afa26665dc4dde7e27be02a7c02e50.json diff --git a/data/tokens/8453/0xf7a0dd3317535ec4f4d29adf9d620b3d8d5d5069.json b/data/tokens/evm/8453/0xf7a0dd3317535ec4f4d29adf9d620b3d8d5d5069.json similarity index 100% rename from data/tokens/8453/0xf7a0dd3317535ec4f4d29adf9d620b3d8d5d5069.json rename to data/tokens/evm/8453/0xf7a0dd3317535ec4f4d29adf9d620b3d8d5d5069.json diff --git a/data/tokens/8453/0xfaf8fd17d9840595845582fcb047df13f006787d.json b/data/tokens/evm/8453/0xfaf8fd17d9840595845582fcb047df13f006787d.json similarity index 100% rename from data/tokens/8453/0xfaf8fd17d9840595845582fcb047df13f006787d.json rename to data/tokens/evm/8453/0xfaf8fd17d9840595845582fcb047df13f006787d.json diff --git a/data/tokens/8453/0xfc5e3743e9fac8bb60408797607352e24db7d65e.json b/data/tokens/evm/8453/0xfc5e3743e9fac8bb60408797607352e24db7d65e.json similarity index 100% rename from data/tokens/8453/0xfc5e3743e9fac8bb60408797607352e24db7d65e.json rename to data/tokens/evm/8453/0xfc5e3743e9fac8bb60408797607352e24db7d65e.json diff --git a/data/tokens/8453/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2.json b/data/tokens/evm/8453/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2.json similarity index 100% rename from data/tokens/8453/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2.json rename to data/tokens/evm/8453/0xfde4c96c8593536e31f229ea8f37b2ada2699bb2.json diff --git a/data/tokens/8453/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea.json b/data/tokens/evm/8453/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea.json similarity index 100% rename from data/tokens/8453/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea.json rename to data/tokens/evm/8453/0xfea9dcdc9e23a9068bf557ad5b186675c61d33ea.json diff --git a/schemas/rpc.schema.json b/schemas/rpc.schema.json index 520f498c20..edeec0a934 100644 --- a/schemas/rpc.schema.json +++ b/schemas/rpc.schema.json @@ -4,16 +4,16 @@ "title": "RPC Endpoints", "description": "RPC endpoint metadata for blockchain networks. Each file contains endpoints for a single chain, including privacy tracking information and provider details.", "type": "object", - "required": ["chainId", "endpoints"], + "required": ["networkId", "endpoints"], "properties": { "chainId": { "type": "integer", - "description": "Chain ID this RPC configuration belongs to" + "description": "EVM chain ID (only for EVM networks, for backward compatibility)" }, "networkId": { "type": "string", "pattern": "^[a-z0-9]+:[a-zA-Z0-9]+$", - "description": "CAIP-2 network identifier (e.g., 'eip155:1' for Ethereum mainnet)" + "description": "CAIP-2 network identifier (e.g., 'eip155:1' for Ethereum, 'bip122:000000000019d6689c085ae165831e93' for Bitcoin)" }, "updatedAt": { "type": "string", diff --git a/scripts/build.ts b/scripts/build.ts index 595c41497b..94fc6f0b38 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -85,71 +85,79 @@ function buildAddresses(): number { if (!fs.existsSync(addressesDir)) return totalAddresses; - const chainDirs = fs.readdirSync(addressesDir, { withFileTypes: true }); - - for (const chainDir of chainDirs) { - if (!chainDir.isDirectory()) continue; - - const chainId = Number.parseInt(chainDir.name, 10); - if (Number.isNaN(chainId)) continue; - - const chainPath = path.join(addressesDir, chainDir.name); - const chainDistDir = path.join(distAddressesDir, chainDir.name); - ensureDir(chainDistDir); - - // Copy individual address files from data to dist - const addressFiles = fs.readdirSync(chainPath, { withFileTypes: true }); - const basicAddresses: { - address: string; - label: string; - supporter?: string; - }[] = []; - - for (const addressFile of addressFiles) { - if (!addressFile.isFile() || !addressFile.name.endsWith(".json")) - continue; - - const srcPath = path.join(chainPath, addressFile.name); - const destPath = path.join(chainDistDir, addressFile.name.toLowerCase()); - - // Copy the file as-is - fs.copyFileSync(srcPath, destPath); + const networkTypeDirs = fs.readdirSync(addressesDir, { + withFileTypes: true, + }); - // Parse for basic info - try { - const addr = JSON.parse(fs.readFileSync(srcPath, "utf-8")); - basicAddresses.push({ - address: (addr.address as string).toLowerCase(), - label: addr.label as string, - ...(addr.supporter && { supporter: addr.supporter as string }), - }); - } catch (e) { - console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; + + const networkType = networkTypeDir.name; + const networkTypePath = path.join(addressesDir, networkType); + const networkTypeDistDir = path.join(distAddressesDir, networkType); + ensureDir(networkTypeDistDir); + + const idDirs = fs.readdirSync(networkTypePath, { withFileTypes: true }); + + for (const idDir of idDirs) { + if (!idDir.isDirectory()) continue; + + const idPath = path.join(networkTypePath, idDir.name); + const idDistDir = path.join(networkTypeDistDir, idDir.name); + ensureDir(idDistDir); + + // Copy individual address files from data to dist + const addressFiles = fs.readdirSync(idPath, { withFileTypes: true }); + const basicAddresses: { + address: string; + label: string; + supporter?: string; + }[] = []; + + for (const addressFile of addressFiles) { + if (!addressFile.isFile() || !addressFile.name.endsWith(".json")) + continue; + + const srcPath = path.join(idPath, addressFile.name); + const destPath = path.join(idDistDir, addressFile.name.toLowerCase()); + + // Copy the file as-is + fs.copyFileSync(srcPath, destPath); + + // Parse for basic info + try { + const addr = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + basicAddresses.push({ + address: (addr.address as string).toLowerCase(), + label: addr.label as string, + ...(addr.supporter && { supporter: addr.supporter as string }), + }); + } catch (e) { + console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + } } - } - if (basicAddresses.length === 0) continue; + if (basicAddresses.length === 0) continue; - // Sort by label - basicAddresses.sort((a, b) => a.label.localeCompare(b.label)); + // Sort by label + basicAddresses.sort((a, b) => a.label.localeCompare(b.label)); - // Write all.json with basic address info - const allOutput = { - chainId, - updatedAt: new Date().toISOString(), - count: basicAddresses.length, - addresses: basicAddresses, - }; + // Write all.json with basic address info + const chainId = Number.parseInt(idDir.name, 10); + const allOutput = { + ...(networkType === "evm" && !Number.isNaN(chainId) && { chainId }), + updatedAt: new Date().toISOString(), + count: basicAddresses.length, + addresses: basicAddresses, + }; - fs.writeFileSync( - path.join(chainDistDir, "all.json"), - formatJson(allOutput), - ); + fs.writeFileSync(path.join(idDistDir, "all.json"), formatJson(allOutput)); - totalAddresses += basicAddresses.length; - console.log( - ` Built addresses/${chainId}/ (${basicAddresses.length} addresses)`, - ); + totalAddresses += basicAddresses.length; + console.log( + ` Built addresses/${networkType}/${idDir.name}/ (${basicAddresses.length} addresses)`, + ); + } } return totalAddresses; @@ -164,54 +172,62 @@ function buildEvents(): number { if (!fs.existsSync(eventsDir)) return totalEvents; - const chainDirs = fs.readdirSync(eventsDir, { withFileTypes: true }); + const networkTypeDirs = fs.readdirSync(eventsDir, { withFileTypes: true }); - for (const chainDir of chainDirs) { - if (!chainDir.isDirectory()) continue; + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; - const chainId = Number.parseInt(chainDir.name, 10); - if (Number.isNaN(chainId)) continue; + const networkType = networkTypeDir.name; + const networkTypePath = path.join(eventsDir, networkType); + const networkTypeDistDir = path.join(distEventsDir, networkType); + ensureDir(networkTypeDistDir); - const chainPath = path.join(eventsDir, chainDir.name); - const chainDistDir = path.join(distEventsDir, chainDir.name); - ensureDir(chainDistDir); + const idDirs = fs.readdirSync(networkTypePath, { withFileTypes: true }); - const eventFiles = fs.readdirSync(chainPath, { withFileTypes: true }); + for (const idDir of idDirs) { + if (!idDir.isDirectory()) continue; - let commonCount = 0; - let addressCount = 0; + const idPath = path.join(networkTypePath, idDir.name); + const idDistDir = path.join(networkTypeDistDir, idDir.name); + ensureDir(idDistDir); - // Copy all event files from data to dist - for (const eventFile of eventFiles) { - if (!eventFile.isFile() || !eventFile.name.endsWith(".json")) continue; + const eventFiles = fs.readdirSync(idPath, { withFileTypes: true }); - const srcPath = path.join(chainPath, eventFile.name); - const destPath = path.join(chainDistDir, eventFile.name.toLowerCase()); + let commonCount = 0; + let addressCount = 0; - // Copy the file as-is - fs.copyFileSync(srcPath, destPath); + // Copy all event files from data to dist + for (const eventFile of eventFiles) { + if (!eventFile.isFile() || !eventFile.name.endsWith(".json")) continue; - // Count events - try { - const events = JSON.parse(fs.readFileSync(srcPath, "utf-8")); - const count = Object.keys(events).length; - if (eventFile.name === "common.json") { - commonCount = count; - } else { - addressCount += count; + const srcPath = path.join(idPath, eventFile.name); + const destPath = path.join(idDistDir, eventFile.name.toLowerCase()); + + // Copy the file as-is + fs.copyFileSync(srcPath, destPath); + + // Count events + try { + const events = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + const count = Object.keys(events).length; + if (eventFile.name === "common.json") { + commonCount = count; + } else { + addressCount += count; + } + } catch (e) { + console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); } - } catch (e) { - console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); } - } - const eventCount = commonCount + addressCount; - if (eventCount === 0) continue; + const eventCount = commonCount + addressCount; + if (eventCount === 0) continue; - totalEvents += eventCount; - console.log( - ` Built events/${chainId}/ (${commonCount} common, ${addressCount} address-specific)`, - ); + totalEvents += eventCount; + console.log( + ` Built events/${networkType}/${idDir.name}/ (${commonCount} common, ${addressCount} address-specific)`, + ); + } } return totalEvents; @@ -226,72 +242,80 @@ function buildTokens(): number { if (!fs.existsSync(tokensDir)) return totalTokens; - const chainDirs = fs.readdirSync(tokensDir, { withFileTypes: true }); - - for (const chainDir of chainDirs) { - if (!chainDir.isDirectory()) continue; - - const chainId = Number.parseInt(chainDir.name, 10); - if (Number.isNaN(chainId)) continue; - - const chainPath = path.join(tokensDir, chainDir.name); - const chainDistDir = path.join(distTokensDir, chainDir.name); - ensureDir(chainDistDir); - - // Copy individual token files from data to dist - const tokenFiles = fs.readdirSync(chainPath, { withFileTypes: true }); - const basicTokens: { - address: string; - name: string; - symbol: string; - decimals: number; - type?: string; - }[] = []; - - for (const tokenFile of tokenFiles) { - if (!tokenFile.isFile() || !tokenFile.name.endsWith(".json")) continue; - - const srcPath = path.join(chainPath, tokenFile.name); - const destPath = path.join(chainDistDir, tokenFile.name.toLowerCase()); - - // Copy the file as-is - fs.copyFileSync(srcPath, destPath); - - // Parse for basic info - try { - const token = JSON.parse(fs.readFileSync(srcPath, "utf-8")); - basicTokens.push({ - address: (token.address as string).toLowerCase(), - name: token.name as string, - symbol: token.symbol as string, - decimals: token.decimals as number, - ...(token.type && { type: token.type as string }), - }); - } catch (e) { - console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + const networkTypeDirs = fs.readdirSync(tokensDir, { withFileTypes: true }); + + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; + + const networkType = networkTypeDir.name; + const networkTypePath = path.join(tokensDir, networkType); + const networkTypeDistDir = path.join(distTokensDir, networkType); + ensureDir(networkTypeDistDir); + + const idDirs = fs.readdirSync(networkTypePath, { withFileTypes: true }); + + for (const idDir of idDirs) { + if (!idDir.isDirectory()) continue; + + const idPath = path.join(networkTypePath, idDir.name); + const idDistDir = path.join(networkTypeDistDir, idDir.name); + ensureDir(idDistDir); + + // Copy individual token files from data to dist + const tokenFiles = fs.readdirSync(idPath, { withFileTypes: true }); + const basicTokens: { + address: string; + name: string; + symbol: string; + decimals: number; + type?: string; + }[] = []; + + for (const tokenFile of tokenFiles) { + if (!tokenFile.isFile() || !tokenFile.name.endsWith(".json")) continue; + + const srcPath = path.join(idPath, tokenFile.name); + const destPath = path.join(idDistDir, tokenFile.name.toLowerCase()); + + // Copy the file as-is + fs.copyFileSync(srcPath, destPath); + + // Parse for basic info + try { + const token = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + basicTokens.push({ + address: (token.address as string).toLowerCase(), + name: token.name as string, + symbol: token.symbol as string, + decimals: token.decimals as number, + ...(token.type && { type: token.type as string }), + }); + } catch (e) { + console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + } } - } - if (basicTokens.length === 0) continue; + if (basicTokens.length === 0) continue; - // Sort by name - basicTokens.sort((a, b) => a.name.localeCompare(b.name)); + // Sort by name + basicTokens.sort((a, b) => a.name.localeCompare(b.name)); - // Write all.json with basic token info - const allOutput = { - chainId, - updatedAt: new Date().toISOString(), - count: basicTokens.length, - tokens: basicTokens, - }; + // Write all.json with basic token info + const chainId = Number.parseInt(idDir.name, 10); + const allOutput = { + ...(networkType === "evm" && !Number.isNaN(chainId) && { chainId }), + updatedAt: new Date().toISOString(), + count: basicTokens.length, + tokens: basicTokens, + }; - fs.writeFileSync( - path.join(chainDistDir, "all.json"), - formatJson(allOutput), - ); + fs.writeFileSync(path.join(idDistDir, "all.json"), formatJson(allOutput)); - totalTokens += basicTokens.length; - console.log(` Built tokens/${chainId}/ (${basicTokens.length} tokens)`); + totalTokens += basicTokens.length; + console.log( + ` Built tokens/${networkType}/${idDir.name}/ (${basicTokens.length} tokens)`, + ); + } } return totalTokens; @@ -326,39 +350,55 @@ function buildRpcs(): number { if (!fs.existsSync(rpcsDir)) return totalEndpoints; - const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); + const networkTypeDirs = fs.readdirSync(rpcsDir, { withFileTypes: true }); const allRpcs: { - chainId: number; - networkId?: string; + networkId: string; + chainId?: number; endpointCount: number; }[] = []; - for (const rpcFile of rpcFiles) { - if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; - const chainId = Number.parseInt(rpcFile.name.replace(".json", ""), 10); - if (Number.isNaN(chainId)) continue; + const networkType = networkTypeDir.name; + const networkTypePath = path.join(rpcsDir, networkType); + const networkTypeDistDir = path.join(distRpcsDir, networkType); + ensureDir(networkTypeDistDir); - const srcPath = path.join(rpcsDir, rpcFile.name); - const destPath = path.join(distRpcsDir, rpcFile.name); + const rpcFiles = fs.readdirSync(networkTypePath, { + withFileTypes: true, + }); - try { - const content = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + for (const rpcFile of rpcFiles) { + if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; - // Copy individual chain RPC file - fs.copyFileSync(srcPath, destPath); + const srcPath = path.join(networkTypePath, rpcFile.name); + const destPath = path.join(networkTypeDistDir, rpcFile.name); - const endpointCount = content.endpoints?.length || 0; - totalEndpoints += endpointCount; - allRpcs.push({ - chainId, - ...(content.networkId && { networkId: content.networkId as string }), - endpointCount, - }); - - console.log(` Built rpcs/${chainId}.json (${endpointCount} endpoints)`); - } catch (e) { - console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + try { + const content = JSON.parse(fs.readFileSync(srcPath, "utf-8")); + + // Copy individual RPC file + fs.copyFileSync(srcPath, destPath); + + const endpointCount = content.endpoints?.length || 0; + totalEndpoints += endpointCount; + allRpcs.push({ + networkId: content.networkId as string, + ...(content.chainId !== undefined && { + chainId: content.chainId as number, + }), + endpointCount, + }); + + const label = + content.chainId !== undefined + ? `rpcs/${networkType}/${rpcFile.name} (chain ${content.chainId}, ${endpointCount} endpoints)` + : `rpcs/${networkType}/${rpcFile.name} (${endpointCount} endpoints)`; + console.log(` Built ${label}`); + } catch (e) { + console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); + } } } @@ -368,7 +408,7 @@ function buildRpcs(): number { updatedAt: new Date().toISOString(), count: allRpcs.length, totalEndpoints, - chains: allRpcs.sort((a, b) => a.chainId - b.chainId), + networks: allRpcs.sort((a, b) => a.networkId.localeCompare(b.networkId)), }; fs.writeFileSync(path.join(distRpcsDir, "all.json"), formatJson(summary)); diff --git a/scripts/import-rpcs.ts b/scripts/import-rpcs.ts index 2400473ab8..24c955b317 100644 --- a/scripts/import-rpcs.ts +++ b/scripts/import-rpcs.ts @@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const ROOT_DIR = path.resolve(__dirname, ".."); -const RPCS_DIR = path.join(ROOT_DIR, "data/rpcs"); +const RPCS_DIR = path.join(ROOT_DIR, "data/rpcs/evm"); const NETWORKS_FILE = path.join(ROOT_DIR, "data/networks.json"); interface NetworkEntry { diff --git a/scripts/validate.ts b/scripts/validate.ts index 5e23bf1228..ace5d99927 100644 --- a/scripts/validate.ts +++ b/scripts/validate.ts @@ -117,17 +117,22 @@ function validateJsonFiles( } } - // Check that chainId in filename matches content for tokens and addresses + // Check that chainId in filename matches content for EVM tokens and addresses if (type === "token" || type === "address") { const parentDir = path.basename(path.dirname(fullPath)); - const expectedChainId = Number.parseInt(parentDir, 10); - if ( - !Number.isNaN(expectedChainId) && - content.chainId !== expectedChainId - ) { - additionalErrors.push( - `chainId mismatch: file is in ${parentDir}/ but chainId is ${content.chainId}`, - ); + const grandparentDir = path.basename( + path.dirname(path.dirname(fullPath)), + ); + if (grandparentDir === "evm") { + const expectedChainId = Number.parseInt(parentDir, 10); + if ( + !Number.isNaN(expectedChainId) && + content.chainId !== expectedChainId + ) { + additionalErrors.push( + `chainId mismatch: file is in ${parentDir}/ but chainId is ${content.chainId}`, + ); + } } } @@ -185,18 +190,27 @@ function checkDuplicates(): void { // Check for duplicate token addresses per chain const tokensDir = path.join(ROOT_DIR, "data/tokens"); if (fs.existsSync(tokensDir)) { - const chainDirs = fs.readdirSync(tokensDir, { withFileTypes: true }); + const networkTypeDirs = fs.readdirSync(tokensDir, { + withFileTypes: true, + }); + + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; + + const networkTypePath = path.join(tokensDir, networkTypeDir.name); + const idDirs = fs.readdirSync(networkTypePath, { + withFileTypes: true, + }); + + for (const idDir of idDirs) { + if (!idDir.isDirectory()) continue; - for (const chainDir of chainDirs) { - if (chainDir.isDirectory()) { const addresses = new Map(); - const chainPath = path.join(tokensDir, chainDir.name); - const files = fs - .readdirSync(chainPath) - .filter((f) => f.endsWith(".json")); + const idPath = path.join(networkTypePath, idDir.name); + const files = fs.readdirSync(idPath).filter((f) => f.endsWith(".json")); for (const file of files) { - const filePath = path.join(chainPath, file); + const filePath = path.join(idPath, file); try { const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); const addr = content.address?.toLowerCase(); @@ -410,139 +424,96 @@ checkDuplicates(); // Validate RPC files const rpcsDir = path.join(ROOT_DIR, "data/rpcs"); if (fs.existsSync(rpcsDir)) { - const rpcFiles = fs.readdirSync(rpcsDir, { withFileTypes: true }); - - for (const rpcFile of rpcFiles) { - if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; + const networkTypeDirs = fs.readdirSync(rpcsDir, { withFileTypes: true }); - const filePath = path.join(rpcsDir, rpcFile.name); - const expectedChainId = Number.parseInt( - rpcFile.name.replace(".json", ""), - 10, - ); - - try { - const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); - const isValid = validateRpc(content); - - if (!isValid) { - results.push({ - file: filePath, - valid: false, - errors: validateRpc.errors?.map( - (e) => `${e.instancePath} ${e.message}`, - ), - }); - } else { - const additionalErrors: string[] = []; - - // Check chainId matches filename - if ( - !Number.isNaN(expectedChainId) && - content.chainId !== expectedChainId - ) { - additionalErrors.push( - `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}`, - ); - } - - // Validate networkId consistency: should match eip155:{chainId} for EVM chains - if (content.networkId) { - const expectedNetworkId = `eip155:${content.chainId}`; - if (content.networkId !== expectedNetworkId) { - additionalErrors.push( - `networkId mismatch: expected ${expectedNetworkId} but got ${content.networkId}`, - ); - } - } - - // Check for duplicate URLs - const urls = new Set(); - for (const endpoint of content.endpoints || []) { - if (urls.has(endpoint.url)) { - additionalErrors.push(`Duplicate RPC URL: ${endpoint.url}`); - } - urls.add(endpoint.url); - } + for (const networkTypeDir of networkTypeDirs) { + if (!networkTypeDir.isDirectory()) continue; - // Validate URL protocols - for (const endpoint of content.endpoints || []) { - const url = endpoint.url; - if ( - !url.startsWith("https://") && - !url.startsWith("wss://") && - !url.startsWith("http://") - ) { - additionalErrors.push(`Invalid URL protocol: ${url}`); - } - // WebSocket endpoints should use wss:// or ws:// - if ( - endpoint.isWebSocket && - !url.startsWith("wss://") && - !url.startsWith("ws://") - ) { - additionalErrors.push( - `WebSocket endpoint should use ws(s):// protocol: ${url}`, - ); - } - } - - if (additionalErrors.length > 0) { - results.push({ - file: filePath, - valid: false, - errors: additionalErrors, - }); - } else { - results.push({ file: filePath, valid: true }); - } - } - } catch (e) { - results.push({ - file: filePath, - valid: false, - errors: [`Failed to parse JSON: ${e}`], - }); - } - } -} - -// Validate events files -const eventsDir = path.join(ROOT_DIR, "data/events"); -if (fs.existsSync(eventsDir)) { - const chainDirs = fs.readdirSync(eventsDir, { withFileTypes: true }); - - for (const chainDir of chainDirs) { - if (!chainDir.isDirectory()) continue; - - const chainPath = path.join(eventsDir, chainDir.name); - const eventFiles = fs.readdirSync(chainPath, { withFileTypes: true }); + const networkType = networkTypeDir.name; + const networkTypePath = path.join(rpcsDir, networkType); + const rpcFiles = fs.readdirSync(networkTypePath, { + withFileTypes: true, + }); - for (const eventFile of eventFiles) { - if (!eventFile.isFile() || !eventFile.name.endsWith(".json")) continue; + for (const rpcFile of rpcFiles) { + if (!rpcFile.isFile() || !rpcFile.name.endsWith(".json")) continue; - const filePath = path.join(chainPath, eventFile.name); + const filePath = path.join(networkTypePath, rpcFile.name); try { - const content = JSON.parse( - fs.readFileSync(filePath, "utf-8"), - ) as Record; - const isValid = validateEvent(content); + const content = JSON.parse(fs.readFileSync(filePath, "utf-8")); + const isValid = validateRpc(content); if (!isValid) { results.push({ file: filePath, valid: false, - errors: validateEvent.errors?.map( + errors: validateRpc.errors?.map( (e) => `${e.instancePath} ${e.message}`, ), }); } else { - // Additional validation: check topic0 hash format const additionalErrors: string[] = []; - for (const topic0 of Object.keys(content)) { - if (!/^0x[a-f0-9]{64}$/.test(topic0)) { - additionalErrors.push(`Invalid topic0 hash format: ${topic0}`); + + if (networkType === "evm") { + // For EVM, check chainId matches filename + const fileBaseName = rpcFile.name.replace(".json", ""); + const expectedChainId = Number.parseInt(fileBaseName, 10); + if ( + !Number.isNaN(expectedChainId) && + content.chainId !== expectedChainId + ) { + additionalErrors.push( + `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}`, + ); + } + + // EVM chain: networkId should match eip155:{chainId} + if (content.networkId && content.chainId !== undefined) { + const expectedNetworkId = `eip155:${content.chainId}`; + if (content.networkId !== expectedNetworkId) { + additionalErrors.push( + `networkId mismatch: expected ${expectedNetworkId} but got ${content.networkId}`, + ); + } + } + } else if (networkType === "btc") { + // BTC: networkId should start with bip122: + if (content.networkId && !content.networkId.startsWith("bip122:")) { + additionalErrors.push( + `networkId should start with bip122: for BTC, got ${content.networkId}`, + ); + } + } + + // Check for duplicate URLs + const urls = new Set(); + for (const endpoint of content.endpoints || []) { + if (urls.has(endpoint.url)) { + additionalErrors.push(`Duplicate RPC URL: ${endpoint.url}`); + } + urls.add(endpoint.url); + } + + // Validate URL protocols + for (const endpoint of content.endpoints || []) { + const url = endpoint.url; + if ( + !url.startsWith("https://") && + !url.startsWith("wss://") && + !url.startsWith("http://") + ) { + additionalErrors.push(`Invalid URL protocol: ${url}`); + } + // WebSocket endpoints should use wss:// or ws:// + if ( + endpoint.isWebSocket && + !url.startsWith("wss://") && + !url.startsWith("ws://") + ) { + additionalErrors.push( + `WebSocket endpoint should use ws(s):// protocol: ${url}`, + ); } } @@ -567,6 +538,75 @@ if (fs.existsSync(eventsDir)) { } } +// Validate events files +const eventsDir = path.join(ROOT_DIR, "data/events"); +if (fs.existsSync(eventsDir)) { + const networkTypeDirsEvents = fs.readdirSync(eventsDir, { + withFileTypes: true, + }); + + for (const networkTypeDir of networkTypeDirsEvents) { + if (!networkTypeDir.isDirectory()) continue; + + const networkTypePath = path.join(eventsDir, networkTypeDir.name); + const idDirs = fs.readdirSync(networkTypePath, { withFileTypes: true }); + + for (const idDir of idDirs) { + if (!idDir.isDirectory()) continue; + + const idPath = path.join(networkTypePath, idDir.name); + const eventFiles = fs.readdirSync(idPath, { withFileTypes: true }); + + for (const eventFile of eventFiles) { + if (!eventFile.isFile() || !eventFile.name.endsWith(".json")) continue; + + const filePath = path.join(idPath, eventFile.name); + + try { + const content = JSON.parse( + fs.readFileSync(filePath, "utf-8"), + ) as Record; + const isValid = validateEvent(content); + + if (!isValid) { + results.push({ + file: filePath, + valid: false, + errors: validateEvent.errors?.map( + (e) => `${e.instancePath} ${e.message}`, + ), + }); + } else { + // Additional validation: check topic0 hash format + const additionalErrors: string[] = []; + for (const topic0 of Object.keys(content)) { + if (!/^0x[a-f0-9]{64}$/.test(topic0)) { + additionalErrors.push(`Invalid topic0 hash format: ${topic0}`); + } + } + + if (additionalErrors.length > 0) { + results.push({ + file: filePath, + valid: false, + errors: additionalErrors, + }); + } else { + results.push({ file: filePath, valid: true }); + } + } + } catch (e) { + results.push({ + file: filePath, + valid: false, + errors: [`Failed to parse JSON: ${e}`], + }); + } + } + } + } +} + // Validate addresses files validateJsonFiles( path.join(ROOT_DIR, "data/addresses"), From 6177a36a5f27d2e573a8308eb4e7d5ae3821b8e0 Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Fri, 13 Feb 2026 12:53:38 -0300 Subject: [PATCH 4/7] docs: Update directory structure for network type organization --- CLAUDE.md | 17 +++++++------ README.md | 76 +++++++++++++++++++++++++++++++++---------------------- 2 files changed, 55 insertions(+), 38 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 69d92012da..6d7465a7e0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,14 +10,15 @@ OpenScan Metadata is a community-driven metadata repository for the OpenScan blo ``` explorer-metadata/ -├── data/ # JSON metadata files -│ ├── tokens/{chainId}/ # Token metadata per chain -│ ├── addresses/{chainId}/ # Verified addresses per chain -│ ├── events/{chainId}/ # Event signatures per chain -│ ├── networks.json # All networks -│ ├── apps/{id}.json # App metadata -│ ├── orgs/{id}.json # Organization metadata -│ └── donations.json # Donations list +├── data/ # JSON metadata files +│ ├── tokens/{networkType}/{id}/ # Token metadata per chain +│ ├── addresses/{networkType}/{id}/ # Verified addresses per chain +│ ├── events/{networkType}/{id}/ # Event signatures per chain +│ ├── rpcs/{networkType}/ # RPC endpoint metadata +│ ├── networks.json # All networks +│ ├── apps/{id}.json # App metadata +│ ├── orgs/{id}.json # Organization metadata +│ └── donations.json # Donations list ├── profiles/ # Markdown profile pages │ ├── tokens/{chainId}/ # Token profiles │ ├── apps/ # App profiles diff --git a/README.md b/README.md index 1111a7b986..5f9ed92b97 100644 --- a/README.md +++ b/README.md @@ -9,26 +9,29 @@ This repository contains verified metadata for tokens, networks, apps, organizat ``` explorer-metadata/ ├── data/ -│ ├── tokens/{chainId}/{address}.json # Token metadata -│ ├── addresses/{chainId}/{address}.json # Verified addresses per chain -│ ├── events/{chainId}/common.json # Common events (ERC20, etc.) -│ ├── events/{chainId}/{address}.json # Address-specific events -│ ├── networks.json # All networks -│ ├── apps/{id}.json # App metadata -│ ├── orgs/{id}.json # Organization metadata -│ └── donations.json # Donations list +│ ├── tokens/{networkType}/{id}/{address}.json # Token metadata +│ ├── addresses/{networkType}/{id}/{addr}.json # Verified addresses per chain +│ ├── events/{networkType}/{id}/common.json # Common events (ERC20, etc.) +│ ├── events/{networkType}/{id}/{addr}.json # Address-specific events +│ ├── rpcs/{networkType}/{id}.json # RPC endpoint metadata +│ ├── networks.json # All networks +│ ├── apps/{id}.json # App metadata +│ ├── orgs/{id}.json # Organization metadata +│ └── donations.json # Donations list ├── profiles/ -│ ├── tokens/{chainId}/{address}.md # Token profiles -│ ├── apps/{id}.md # App profiles -│ └── organizations/{id}.md # Organization profiles +│ ├── tokens/{chainId}/{address}.md # Token profiles +│ ├── apps/{id}.md # App profiles +│ └── organizations/{id}.md # Organization profiles ├── assets/ -│ ├── tokens/{chainId}/{address}.png # Token logos (128x128) -│ ├── networks/{chainId}.svg # Network logos -│ ├── apps/{id}.svg # App logos -│ └── organizations/{id}.svg # Organization logos -└── schemas/ # JSON Schema definitions +│ ├── tokens/{chainId}/{address}.png # Token logos (128x128) +│ ├── networks/{chainId}.svg # Network logos +│ ├── apps/{id}.svg # App logos +│ └── organizations/{id}.svg # Organization logos +└── schemas/ # JSON Schema definitions ``` +**Network types:** Data directories are organized by network type (`evm/`, `btc/`). EVM networks use chain IDs as identifiers (e.g., `evm/1/`), while Bitcoin networks use slugs (e.g., `btc/mainnet/`). + ## Adding Metadata ### Quick Start: Add a Token @@ -255,7 +258,7 @@ Networks are identified using [CAIP-2](https://github.com/ChainAgnostic/CAIPs/bl ### Event -Events are stored per chain with common events in `data/events/{chainId}/common.json` and address-specific events in `data/events/{chainId}/{address}.json`. +Events are stored per chain with common events in `data/events/{networkType}/{id}/common.json` and address-specific events in `data/events/{networkType}/{id}/{address}.json`. #### Common Events (common.json) @@ -293,7 +296,7 @@ Custom events for specific contracts (e.g., Uniswap V2 Router): ### Address -Verified addresses for apps and organizations are stored per chain in `data/addresses/{chainId}/{address}.json`. +Verified addresses for apps and organizations are stored per chain in `data/addresses/{networkType}/{id}/{address}.json`. ```json { @@ -413,15 +416,19 @@ The built metadata is available in the `dist/` folder on the `main` branch. ``` dist/ -├── tokens/{chainId}/ +├── tokens/{networkType}/{id}/ │ ├── all.json # List of all tokens (basic info) │ └── {address}.json # Individual token details -├── addresses/{chainId}/ +├── addresses/{networkType}/{id}/ │ ├── all.json # List of all addresses (basic info) │ └── {address}.json # Individual address details -├── events/{chainId}/ +├── events/{networkType}/{id}/ │ ├── common.json # Common events (ERC20, etc.) │ └── {address}.json # Address-specific events +├── rpcs/ +│ ├── all.json # Summary of all RPC endpoints +│ ├── evm/{chainId}.json # RPC endpoints per EVM chain +│ └── btc/{slug}.json # RPC endpoints per Bitcoin network ├── networks.json # All networks ├── apps.json # All apps ├── organizations.json # All organizations @@ -451,23 +458,32 @@ curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/supporters.json # Get donations list curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/donations.json -# Tokens - list all tokens on a network (basic info) -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/tokens/1/all.json +# Tokens - list all tokens on an EVM network (basic info) +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/tokens/evm/1/all.json # Tokens - get specific token details -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/tokens/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/tokens/evm/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.json -# Addresses - list all addresses on a network -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/addresses/1/all.json +# Addresses - list all addresses on an EVM network +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/addresses/evm/1/all.json # Addresses - get specific address details -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/addresses/1/0x7a250d5630b4cf539739df2c5dacb4c659f2488d.json +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/addresses/evm/1/0x7a250d5630b4cf539739df2c5dacb4c659f2488d.json -# Events - get common events for a network -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/events/1/common.json +# Events - get common events for an EVM network +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/events/evm/1/common.json # Events - get address-specific events -curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/events/1/0x7a250d5630b4cf539739df2c5dacb4c659f2488d.json +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/events/evm/1/0x7a250d5630b4cf539739df2c5dacb4c659f2488d.json + +# RPCs - get all RPC endpoint summaries +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/rpcs/all.json + +# RPCs - get endpoints for a specific EVM chain +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/rpcs/evm/1.json + +# RPCs - get endpoints for Bitcoin mainnet +curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/rpcs/btc/mainnet.json # Get a token profile curl https://cdn.jsdelivr.net/npm/@openscan/metadata/dist/profiles/tokens/1/0x....md From f23602a6def39f0f94d440ac681360ec37a02036 Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Wed, 18 Feb 2026 11:15:34 -0300 Subject: [PATCH 5/7] refactor: Remove redundant chainId from RPC schema and data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit chainId is always derivable from networkId (e.g., eip155:1 → 1), so storing it separately was redundant and a potential source of inconsistency. Scripts now parse chainId from networkId when needed. --- data/rpcs/evm/1.json | 1 - data/rpcs/evm/10.json | 1 - data/rpcs/evm/11155111.json | 1 - data/rpcs/evm/42161.json | 1 - data/rpcs/evm/56.json | 1 - data/rpcs/evm/8453.json | 1 - data/rpcs/evm/97.json | 1 - schemas/rpc.schema.json | 4 ---- scripts/build.ts | 18 ++++++------------ scripts/import-rpcs.ts | 1 - scripts/validate.ts | 31 +++++++++++++++++-------------- 11 files changed, 23 insertions(+), 38 deletions(-) diff --git a/data/rpcs/evm/1.json b/data/rpcs/evm/1.json index 85e18818ad..2b9b2b9aba 100644 --- a/data/rpcs/evm/1.json +++ b/data/rpcs/evm/1.json @@ -1,5 +1,4 @@ { - "chainId": 1, "networkId": "eip155:1", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/10.json b/data/rpcs/evm/10.json index 289abfcc9c..6d28e95642 100644 --- a/data/rpcs/evm/10.json +++ b/data/rpcs/evm/10.json @@ -1,5 +1,4 @@ { - "chainId": 10, "networkId": "eip155:10", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/11155111.json b/data/rpcs/evm/11155111.json index c78bcef602..68c7b22fef 100644 --- a/data/rpcs/evm/11155111.json +++ b/data/rpcs/evm/11155111.json @@ -1,5 +1,4 @@ { - "chainId": 11155111, "networkId": "eip155:11155111", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/42161.json b/data/rpcs/evm/42161.json index 0a9fc9cda8..3481185c02 100644 --- a/data/rpcs/evm/42161.json +++ b/data/rpcs/evm/42161.json @@ -1,5 +1,4 @@ { - "chainId": 42161, "networkId": "eip155:42161", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/56.json b/data/rpcs/evm/56.json index aae0a45e66..5b35aff301 100644 --- a/data/rpcs/evm/56.json +++ b/data/rpcs/evm/56.json @@ -1,5 +1,4 @@ { - "chainId": 56, "networkId": "eip155:56", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/8453.json b/data/rpcs/evm/8453.json index 7c2670ef8a..bdf4118bd9 100644 --- a/data/rpcs/evm/8453.json +++ b/data/rpcs/evm/8453.json @@ -1,5 +1,4 @@ { - "chainId": 8453, "networkId": "eip155:8453", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/data/rpcs/evm/97.json b/data/rpcs/evm/97.json index 056a1d8a48..fd8ad58594 100644 --- a/data/rpcs/evm/97.json +++ b/data/rpcs/evm/97.json @@ -1,5 +1,4 @@ { - "chainId": 97, "networkId": "eip155:97", "updatedAt": "2025-12-29", "endpoints": [ diff --git a/schemas/rpc.schema.json b/schemas/rpc.schema.json index edeec0a934..fa73d4294e 100644 --- a/schemas/rpc.schema.json +++ b/schemas/rpc.schema.json @@ -6,10 +6,6 @@ "type": "object", "required": ["networkId", "endpoints"], "properties": { - "chainId": { - "type": "integer", - "description": "EVM chain ID (only for EVM networks, for backward compatibility)" - }, "networkId": { "type": "string", "pattern": "^[a-z0-9]+:[a-zA-Z0-9]+$", diff --git a/scripts/build.ts b/scripts/build.ts index 94fc6f0b38..af01674600 100644 --- a/scripts/build.ts +++ b/scripts/build.ts @@ -353,7 +353,6 @@ function buildRpcs(): number { const networkTypeDirs = fs.readdirSync(rpcsDir, { withFileTypes: true }); const allRpcs: { networkId: string; - chainId?: number; endpointCount: number; }[] = []; @@ -383,18 +382,13 @@ function buildRpcs(): number { const endpointCount = content.endpoints?.length || 0; totalEndpoints += endpointCount; - allRpcs.push({ - networkId: content.networkId as string, - ...(content.chainId !== undefined && { - chainId: content.chainId as number, - }), - endpointCount, - }); + const networkId = content.networkId as string; + allRpcs.push({ networkId, endpointCount }); - const label = - content.chainId !== undefined - ? `rpcs/${networkType}/${rpcFile.name} (chain ${content.chainId}, ${endpointCount} endpoints)` - : `rpcs/${networkType}/${rpcFile.name} (${endpointCount} endpoints)`; + const chainIdMatch = networkId.match(/^eip155:(\d+)$/); + const label = chainIdMatch + ? `rpcs/${networkType}/${rpcFile.name} (chain ${chainIdMatch[1]}, ${endpointCount} endpoints)` + : `rpcs/${networkType}/${rpcFile.name} (${endpointCount} endpoints)`; console.log(` Built ${label}`); } catch (e) { console.warn(`Warning: Failed to parse ${srcPath}: ${e}`); diff --git a/scripts/import-rpcs.ts b/scripts/import-rpcs.ts index 24c955b317..6169025610 100644 --- a/scripts/import-rpcs.ts +++ b/scripts/import-rpcs.ts @@ -157,7 +157,6 @@ async function importFromChainlist(): Promise { const networkId = `eip155:${chainId}`; const output = { - chainId, networkId, updatedAt: new Date().toISOString().split("T")[0], endpoints, diff --git a/scripts/validate.ts b/scripts/validate.ts index ace5d99927..ccbadb5f0c 100644 --- a/scripts/validate.ts +++ b/scripts/validate.ts @@ -456,25 +456,28 @@ if (fs.existsSync(rpcsDir)) { const additionalErrors: string[] = []; if (networkType === "evm") { - // For EVM, check chainId matches filename + // For EVM, derive chainId from networkId and check it matches filename const fileBaseName = rpcFile.name.replace(".json", ""); const expectedChainId = Number.parseInt(fileBaseName, 10); - if ( - !Number.isNaN(expectedChainId) && - content.chainId !== expectedChainId - ) { - additionalErrors.push( - `chainId mismatch: file is ${rpcFile.name} but chainId is ${content.chainId}`, - ); - } - // EVM chain: networkId should match eip155:{chainId} - if (content.networkId && content.chainId !== undefined) { - const expectedNetworkId = `eip155:${content.chainId}`; - if (content.networkId !== expectedNetworkId) { + if (content.networkId) { + const networkIdMatch = (content.networkId as string).match( + /^eip155:(\d+)$/, + ); + if (!networkIdMatch) { additionalErrors.push( - `networkId mismatch: expected ${expectedNetworkId} but got ${content.networkId}`, + `EVM networkId should match eip155:, got ${content.networkId}`, ); + } else { + const derivedChainId = Number.parseInt(networkIdMatch[1], 10); + if ( + !Number.isNaN(expectedChainId) && + derivedChainId !== expectedChainId + ) { + additionalErrors.push( + `networkId mismatch: file is ${rpcFile.name} but networkId implies chain ${derivedChainId}`, + ); + } } } } else if (networkType === "btc") { From 00a4e6ddb6a7146414868c4e3bd22c72e04d0570 Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Wed, 18 Feb 2026 12:23:37 -0300 Subject: [PATCH 6/7] refactor: Remove redundant RPC data from networks and update Bitcoin Testnet4 link RPC endpoints are already indexed in data/rpcs/ with richer metadata. Replace Mempool Explorer link with bitcoin.org on Bitcoin Testnet4. --- data/networks.json | 62 ++----------------------------------- schemas/network.schema.json | 13 -------- 2 files changed, 3 insertions(+), 72 deletions(-) diff --git a/data/networks.json b/data/networks.json index df6b2b0ca3..2e85aeaba9 100644 --- a/data/networks.json +++ b/data/networks.json @@ -17,13 +17,6 @@ }, "logo": "assets/networks/1.svg", "profile": "profiles/networks/1.md", - "rpc": { - "public": [ - "https://eth.llamarpc.com", - "https://rpc.ankr.com/eth", - "https://ethereum.publicnode.com" - ] - }, "links": [ { "name": "Website", @@ -53,13 +46,6 @@ "color": "#0052FF", "isTestnet": false, "logo": "assets/networks/8453.svg", - "rpc": { - "public": [ - "https://mainnet.base.org", - "https://base.publicnode.com", - "https://rpc.ankr.com/base" - ] - }, "links": [ { "name": "Website", @@ -89,13 +75,6 @@ "color": "#28A0F0", "isTestnet": false, "logo": "assets/networks/42161.svg", - "rpc": { - "public": [ - "https://arb1.arbitrum.io/rpc", - "https://rpc.ankr.com/arbitrum", - "https://arbitrum.publicnode.com" - ] - }, "links": [ { "name": "Website", @@ -130,13 +109,6 @@ "color": "#FF0420", "isTestnet": false, "logo": "assets/networks/10.svg", - "rpc": { - "public": [ - "https://mainnet.optimism.io", - "https://optimism.publicnode.com", - "https://rpc.ankr.com/optimism" - ] - }, "links": [ { "name": "Website", @@ -166,13 +138,6 @@ "color": "#F0B90B", "isTestnet": false, "logo": "assets/networks/56.svg", - "rpc": { - "public": [ - "https://bsc-dataseed.binance.org", - "https://bsc.publicnode.com", - "https://rpc.ankr.com/bsc" - ] - }, "links": [ { "name": "Website", @@ -202,13 +167,6 @@ "color": "#8247E5", "isTestnet": false, "logo": "assets/networks/137.svg", - "rpc": { - "public": [ - "https://polygon-rpc.com", - "https://polygon-bor.publicnode.com", - "https://rpc.ankr.com/polygon" - ] - }, "links": [ { "name": "Website", @@ -238,13 +196,6 @@ "color": "#CFB5F0", "isTestnet": true, "logo": "assets/networks/11155111.svg", - "rpc": { - "public": [ - "https://rpc.sepolia.org", - "https://ethereum-sepolia.publicnode.com", - "https://rpc.ankr.com/eth_sepolia" - ] - }, "links": [ { "name": "Faucet", @@ -269,13 +220,6 @@ "color": "#F0B90B", "isTestnet": true, "logo": "assets/networks/97.svg", - "rpc": { - "public": [ - "https://data-seed-prebsc-1-s1.binance.org:8545", - "https://bsc-testnet.publicnode.com", - "https://rpc.ankr.com/bsc_testnet_chapel" - ] - }, "links": [ { "name": "Faucet", @@ -328,9 +272,9 @@ "isTestnet": true, "links": [ { - "name": "Mempool Explorer", - "url": "https://mempool.space/testnet4", - "description": "Mempool.space testnet4 explorer" + "name": "Website", + "url": "https://bitcoin.org/en/", + "description": "Official Bitcoin website" }, { "name": "GitHub", diff --git a/schemas/network.schema.json b/schemas/network.schema.json index 97d36dbe32..b9d778a063 100644 --- a/schemas/network.schema.json +++ b/schemas/network.schema.json @@ -101,19 +101,6 @@ } } }, - "rpc": { - "type": "object", - "properties": { - "public": { - "type": "array", - "items": { - "type": "string", - "format": "uri" - }, - "description": "Public RPC endpoints" - } - } - }, "links": { "type": "array", "items": { From 68f9ff5f85eb82a8fa8e8e25bb54a6c41d167bbf Mon Sep 17 00:00:00 2001 From: Augusto Lemble Date: Fri, 20 Feb 2026 18:00:08 -0300 Subject: [PATCH 7/7] chore: bump version from 1.0.1 to 1.1.0-alpha.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 764d14a16d..70abd097fd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@openscan/metadata", - "version": "1.0.1", + "version": "1.1.0-alpha.0", "repository": { "type": "git", "url": "https://github.com/openscan-explorer/explorer-metadata"