mirror of
https://github.com/hanzoai/bootnode.git
synced 2026-09-30 20:46:32 +00:00
feat: add 26 chains to registry (10 -> 36 total)
L1: Gnosis, Celo, Fantom, Cronos, Moonbeam, Moonriver, Harmony,
Rootstock, Fuse, Metis
L2: zkSync Era, Scroll, Linea, Polygon zkEVM, Blast, Mantle, Mode,
Zora, World Chain, Abstract, Starknet
EVM: Canto, Kaia, Aurora, Boba, Astar
Each chain includes mainnet + testnet networks with chain_id,
explorer_url, native_currency, and public RPC defaults in .env.example.
Adds STARKNET variant to ChainType enum for non-EVM support.
This commit is contained in:
@@ -26,6 +26,7 @@ RATE_LIMIT_REQUESTS=1000
|
||||
RATE_LIMIT_COMPUTE_UNITS=10000
|
||||
|
||||
# Free Public RPC URLs for Development
|
||||
# -- Original chains --
|
||||
ETH_MAINNET_RPC=https://eth.llamarpc.com
|
||||
ETH_SEPOLIA_RPC=https://sepolia.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161
|
||||
POLYGON_MAINNET_RPC=https://polygon.llamarpc.com
|
||||
@@ -43,6 +44,63 @@ BSC_TESTNET_RPC=https://data-seed-prebsc-1-s1.binance.org:8545
|
||||
SOLANA_MAINNET_RPC=https://api.mainnet-beta.solana.com
|
||||
SOLANA_DEVNET_RPC=https://api.devnet.solana.com
|
||||
|
||||
# -- L1 Chains --
|
||||
GNOSIS_MAINNET_RPC=https://rpc.gnosischain.com
|
||||
GNOSIS_CHIADO_RPC=https://rpc.chiadochain.net
|
||||
CELO_MAINNET_RPC=https://forno.celo.org
|
||||
CELO_ALFAJORES_RPC=https://alfajores-forno.celo-testnet.org
|
||||
FANTOM_MAINNET_RPC=https://rpc.ftm.tools
|
||||
FANTOM_TESTNET_RPC=https://rpc.testnet.fantom.network
|
||||
CRONOS_MAINNET_RPC=https://evm.cronos.org
|
||||
CRONOS_TESTNET_RPC=https://evm-t3.cronos.org
|
||||
MOONBEAM_MAINNET_RPC=https://rpc.api.moonbeam.network
|
||||
MOONBEAM_MOONBASE_RPC=https://rpc.api.moonbase.moonbeam.network
|
||||
MOONRIVER_MAINNET_RPC=https://rpc.api.moonriver.moonbeam.network
|
||||
HARMONY_MAINNET_RPC=https://api.harmony.one
|
||||
HARMONY_TESTNET_RPC=https://api.s0.b.hmny.io
|
||||
ROOTSTOCK_MAINNET_RPC=https://public-node.rsk.co
|
||||
ROOTSTOCK_TESTNET_RPC=https://public-node.testnet.rsk.co
|
||||
FUSE_MAINNET_RPC=https://rpc.fuse.io
|
||||
FUSE_SPARK_RPC=https://rpc.fusespark.io
|
||||
METIS_MAINNET_RPC=https://andromeda.metis.io/?owner=1088
|
||||
METIS_SEPOLIA_RPC=https://sepolia.metisdevops.link
|
||||
|
||||
# -- L2 / Rollups --
|
||||
ZKSYNC_MAINNET_RPC=https://mainnet.era.zksync.io
|
||||
ZKSYNC_SEPOLIA_RPC=https://sepolia.era.zksync.dev
|
||||
SCROLL_MAINNET_RPC=https://rpc.scroll.io
|
||||
SCROLL_SEPOLIA_RPC=https://sepolia-rpc.scroll.io
|
||||
LINEA_MAINNET_RPC=https://rpc.linea.build
|
||||
LINEA_SEPOLIA_RPC=https://rpc.sepolia.linea.build
|
||||
POLYGON_ZKEVM_MAINNET_RPC=https://zkevm-rpc.com
|
||||
POLYGON_ZKEVM_TESTNET_RPC=https://rpc.cardona.zkevm-rpc.com
|
||||
BLAST_MAINNET_RPC=https://rpc.blast.io
|
||||
BLAST_SEPOLIA_RPC=https://sepolia.blast.io
|
||||
MANTLE_MAINNET_RPC=https://rpc.mantle.xyz
|
||||
MANTLE_SEPOLIA_RPC=https://rpc.sepolia.mantle.xyz
|
||||
MODE_MAINNET_RPC=https://mainnet.mode.network
|
||||
MODE_SEPOLIA_RPC=https://sepolia.mode.network
|
||||
ZORA_MAINNET_RPC=https://rpc.zora.energy
|
||||
ZORA_SEPOLIA_RPC=https://sepolia.rpc.zora.energy
|
||||
WORLDCHAIN_MAINNET_RPC=https://worldchain-mainnet.g.alchemy.com/public
|
||||
WORLDCHAIN_SEPOLIA_RPC=https://worldchain-sepolia.g.alchemy.com/public
|
||||
ABSTRACT_MAINNET_RPC=https://api.mainnet.abs.xyz
|
||||
ABSTRACT_TESTNET_RPC=https://api.testnet.abs.xyz
|
||||
STARKNET_MAINNET_RPC=https://starknet-mainnet.public.blastapi.io
|
||||
STARKNET_SEPOLIA_RPC=https://starknet-sepolia.public.blastapi.io
|
||||
|
||||
# -- Other EVM --
|
||||
CANTO_MAINNET_RPC=https://canto.slingshot.finance
|
||||
CANTO_TESTNET_RPC=https://canto-testnet.plexnode.wtf
|
||||
KAIA_MAINNET_RPC=https://public-en.node.kaia.io
|
||||
KAIA_KAIROS_RPC=https://public-en-kairos.node.kaia.io
|
||||
AURORA_MAINNET_RPC=https://mainnet.aurora.dev
|
||||
AURORA_TESTNET_RPC=https://testnet.aurora.dev
|
||||
BOBA_MAINNET_RPC=https://mainnet.boba.network
|
||||
BOBA_SEPOLIA_RPC=https://sepolia.boba.network
|
||||
ASTAR_MAINNET_RPC=https://evm.astar.network
|
||||
ASTAR_SHIBUYA_RPC=https://evm.shibuya.astar.network
|
||||
|
||||
# External Services
|
||||
IPFS_GATEWAY=https://ipfs.io/ipfs/
|
||||
|
||||
|
||||
@@ -52,6 +52,7 @@ class Settings(BaseSettings):
|
||||
rate_limit_compute_units: int = 1000 # per minute
|
||||
|
||||
# Chain RPCs (upstream nodes)
|
||||
# -- Original 10 chains --
|
||||
eth_mainnet_rpc: str = ""
|
||||
eth_sepolia_rpc: str = ""
|
||||
eth_holesky_rpc: str = ""
|
||||
@@ -76,6 +77,63 @@ class Settings(BaseSettings):
|
||||
btc_rpc_user: str = "bootnode"
|
||||
btc_rpc_password: str = ""
|
||||
|
||||
# -- L1 Chains --
|
||||
gnosis_mainnet_rpc: str = ""
|
||||
gnosis_chiado_rpc: str = ""
|
||||
celo_mainnet_rpc: str = ""
|
||||
celo_alfajores_rpc: str = ""
|
||||
fantom_mainnet_rpc: str = ""
|
||||
fantom_testnet_rpc: str = ""
|
||||
cronos_mainnet_rpc: str = ""
|
||||
cronos_testnet_rpc: str = ""
|
||||
moonbeam_mainnet_rpc: str = ""
|
||||
moonbeam_moonbase_rpc: str = ""
|
||||
moonriver_mainnet_rpc: str = ""
|
||||
harmony_mainnet_rpc: str = ""
|
||||
harmony_testnet_rpc: str = ""
|
||||
rootstock_mainnet_rpc: str = ""
|
||||
rootstock_testnet_rpc: str = ""
|
||||
fuse_mainnet_rpc: str = ""
|
||||
fuse_spark_rpc: str = ""
|
||||
metis_mainnet_rpc: str = ""
|
||||
metis_sepolia_rpc: str = ""
|
||||
|
||||
# -- L2 / Rollups --
|
||||
zksync_mainnet_rpc: str = ""
|
||||
zksync_sepolia_rpc: str = ""
|
||||
scroll_mainnet_rpc: str = ""
|
||||
scroll_sepolia_rpc: str = ""
|
||||
linea_mainnet_rpc: str = ""
|
||||
linea_sepolia_rpc: str = ""
|
||||
polygon_zkevm_mainnet_rpc: str = ""
|
||||
polygon_zkevm_testnet_rpc: str = ""
|
||||
blast_mainnet_rpc: str = ""
|
||||
blast_sepolia_rpc: str = ""
|
||||
mantle_mainnet_rpc: str = ""
|
||||
mantle_sepolia_rpc: str = ""
|
||||
mode_mainnet_rpc: str = ""
|
||||
mode_sepolia_rpc: str = ""
|
||||
zora_mainnet_rpc: str = ""
|
||||
zora_sepolia_rpc: str = ""
|
||||
worldchain_mainnet_rpc: str = ""
|
||||
worldchain_sepolia_rpc: str = ""
|
||||
abstract_mainnet_rpc: str = ""
|
||||
abstract_testnet_rpc: str = ""
|
||||
starknet_mainnet_rpc: str = ""
|
||||
starknet_sepolia_rpc: str = ""
|
||||
|
||||
# -- Other EVM --
|
||||
canto_mainnet_rpc: str = ""
|
||||
canto_testnet_rpc: str = ""
|
||||
kaia_mainnet_rpc: str = ""
|
||||
kaia_kairos_rpc: str = ""
|
||||
aurora_mainnet_rpc: str = ""
|
||||
aurora_testnet_rpc: str = ""
|
||||
boba_mainnet_rpc: str = ""
|
||||
boba_sepolia_rpc: str = ""
|
||||
astar_mainnet_rpc: str = ""
|
||||
astar_shibuya_rpc: str = ""
|
||||
|
||||
# DataStore (ClickHouse)
|
||||
datastore_url: str = "clickhouse://bootnode:bootnode@localhost:8123/bootnode"
|
||||
datastore_pool_size: int = 10
|
||||
|
||||
@@ -13,6 +13,7 @@ class ChainType(str, Enum):
|
||||
EVM = "evm"
|
||||
SOLANA = "solana"
|
||||
BITCOIN = "bitcoin"
|
||||
STARKNET = "starknet"
|
||||
|
||||
|
||||
@dataclass
|
||||
@@ -312,6 +313,642 @@ class ChainRegistry:
|
||||
},
|
||||
)
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# L1 Chains
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Gnosis (formerly xDai)
|
||||
cls._chains["gnosis"] = Chain(
|
||||
name="Gnosis",
|
||||
slug="gnosis",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=100,
|
||||
is_testnet=False,
|
||||
rpc_env_var="gnosis_mainnet_rpc",
|
||||
explorer_url="https://gnosisscan.io",
|
||||
native_currency="xDAI",
|
||||
),
|
||||
"chiado": Network(
|
||||
name="Chiado",
|
||||
chain_id=10200,
|
||||
is_testnet=True,
|
||||
rpc_env_var="gnosis_chiado_rpc",
|
||||
explorer_url="https://gnosis-chiado.blockscout.com",
|
||||
native_currency="xDAI",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Celo
|
||||
cls._chains["celo"] = Chain(
|
||||
name="Celo",
|
||||
slug="celo",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=42220,
|
||||
is_testnet=False,
|
||||
rpc_env_var="celo_mainnet_rpc",
|
||||
explorer_url="https://celoscan.io",
|
||||
native_currency="CELO",
|
||||
),
|
||||
"alfajores": Network(
|
||||
name="Alfajores",
|
||||
chain_id=44787,
|
||||
is_testnet=True,
|
||||
rpc_env_var="celo_alfajores_rpc",
|
||||
explorer_url="https://alfajores.celoscan.io",
|
||||
native_currency="CELO",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Fantom
|
||||
cls._chains["fantom"] = Chain(
|
||||
name="Fantom",
|
||||
slug="fantom",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Opera",
|
||||
chain_id=250,
|
||||
is_testnet=False,
|
||||
rpc_env_var="fantom_mainnet_rpc",
|
||||
explorer_url="https://ftmscan.com",
|
||||
native_currency="FTM",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=4002,
|
||||
is_testnet=True,
|
||||
rpc_env_var="fantom_testnet_rpc",
|
||||
explorer_url="https://testnet.ftmscan.com",
|
||||
native_currency="FTM",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Cronos
|
||||
cls._chains["cronos"] = Chain(
|
||||
name="Cronos",
|
||||
slug="cronos",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=25,
|
||||
is_testnet=False,
|
||||
rpc_env_var="cronos_mainnet_rpc",
|
||||
explorer_url="https://cronoscan.com",
|
||||
native_currency="CRO",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=338,
|
||||
is_testnet=True,
|
||||
rpc_env_var="cronos_testnet_rpc",
|
||||
explorer_url="https://testnet.cronoscan.com",
|
||||
native_currency="CRO",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Moonbeam
|
||||
cls._chains["moonbeam"] = Chain(
|
||||
name="Moonbeam",
|
||||
slug="moonbeam",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=1284,
|
||||
is_testnet=False,
|
||||
rpc_env_var="moonbeam_mainnet_rpc",
|
||||
explorer_url="https://moonscan.io",
|
||||
native_currency="GLMR",
|
||||
),
|
||||
"moonbase": Network(
|
||||
name="Moonbase Alpha",
|
||||
chain_id=1287,
|
||||
is_testnet=True,
|
||||
rpc_env_var="moonbeam_moonbase_rpc",
|
||||
explorer_url="https://moonbase.moonscan.io",
|
||||
native_currency="DEV",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Moonriver
|
||||
cls._chains["moonriver"] = Chain(
|
||||
name="Moonriver",
|
||||
slug="moonriver",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=1285,
|
||||
is_testnet=False,
|
||||
rpc_env_var="moonriver_mainnet_rpc",
|
||||
explorer_url="https://moonriver.moonscan.io",
|
||||
native_currency="MOVR",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Harmony
|
||||
cls._chains["harmony"] = Chain(
|
||||
name="Harmony",
|
||||
slug="harmony",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet Shard 0",
|
||||
chain_id=1666600000,
|
||||
is_testnet=False,
|
||||
rpc_env_var="harmony_mainnet_rpc",
|
||||
explorer_url="https://explorer.harmony.one",
|
||||
native_currency="ONE",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet Shard 0",
|
||||
chain_id=1666700000,
|
||||
is_testnet=True,
|
||||
rpc_env_var="harmony_testnet_rpc",
|
||||
explorer_url="https://explorer.testnet.harmony.one",
|
||||
native_currency="ONE",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Rootstock (RSK)
|
||||
cls._chains["rootstock"] = Chain(
|
||||
name="Rootstock",
|
||||
slug="rootstock",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=30,
|
||||
is_testnet=False,
|
||||
rpc_env_var="rootstock_mainnet_rpc",
|
||||
explorer_url="https://explorer.rsk.co",
|
||||
native_currency="RBTC",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=31,
|
||||
is_testnet=True,
|
||||
rpc_env_var="rootstock_testnet_rpc",
|
||||
explorer_url="https://explorer.testnet.rsk.co",
|
||||
native_currency="tRBTC",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Fuse
|
||||
cls._chains["fuse"] = Chain(
|
||||
name="Fuse",
|
||||
slug="fuse",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=122,
|
||||
is_testnet=False,
|
||||
rpc_env_var="fuse_mainnet_rpc",
|
||||
explorer_url="https://explorer.fuse.io",
|
||||
native_currency="FUSE",
|
||||
),
|
||||
"spark": Network(
|
||||
name="Spark",
|
||||
chain_id=123,
|
||||
is_testnet=True,
|
||||
rpc_env_var="fuse_spark_rpc",
|
||||
explorer_url="https://explorer.fusespark.io",
|
||||
native_currency="FUSE",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Metis
|
||||
cls._chains["metis"] = Chain(
|
||||
name="Metis",
|
||||
slug="metis",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Andromeda",
|
||||
chain_id=1088,
|
||||
is_testnet=False,
|
||||
rpc_env_var="metis_mainnet_rpc",
|
||||
explorer_url="https://andromeda-explorer.metis.io",
|
||||
native_currency="METIS",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=59902,
|
||||
is_testnet=True,
|
||||
rpc_env_var="metis_sepolia_rpc",
|
||||
explorer_url="https://sepolia-explorer.metisdevops.link",
|
||||
native_currency="tMETIS",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# L2 / Rollups
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# zkSync Era
|
||||
cls._chains["zksync"] = Chain(
|
||||
name="zkSync Era",
|
||||
slug="zksync",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=324,
|
||||
is_testnet=False,
|
||||
rpc_env_var="zksync_mainnet_rpc",
|
||||
explorer_url="https://explorer.zksync.io",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=300,
|
||||
is_testnet=True,
|
||||
rpc_env_var="zksync_sepolia_rpc",
|
||||
explorer_url="https://sepolia.explorer.zksync.io",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Scroll
|
||||
cls._chains["scroll"] = Chain(
|
||||
name="Scroll",
|
||||
slug="scroll",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=534352,
|
||||
is_testnet=False,
|
||||
rpc_env_var="scroll_mainnet_rpc",
|
||||
explorer_url="https://scrollscan.com",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=534351,
|
||||
is_testnet=True,
|
||||
rpc_env_var="scroll_sepolia_rpc",
|
||||
explorer_url="https://sepolia.scrollscan.com",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Linea
|
||||
cls._chains["linea"] = Chain(
|
||||
name="Linea",
|
||||
slug="linea",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=59144,
|
||||
is_testnet=False,
|
||||
rpc_env_var="linea_mainnet_rpc",
|
||||
explorer_url="https://lineascan.build",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=59141,
|
||||
is_testnet=True,
|
||||
rpc_env_var="linea_sepolia_rpc",
|
||||
explorer_url="https://sepolia.lineascan.build",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Polygon zkEVM
|
||||
cls._chains["polygon-zkevm"] = Chain(
|
||||
name="Polygon zkEVM",
|
||||
slug="polygon-zkevm",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=1101,
|
||||
is_testnet=False,
|
||||
rpc_env_var="polygon_zkevm_mainnet_rpc",
|
||||
explorer_url="https://zkevm.polygonscan.com",
|
||||
native_currency="ETH",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Cardona",
|
||||
chain_id=2442,
|
||||
is_testnet=True,
|
||||
rpc_env_var="polygon_zkevm_testnet_rpc",
|
||||
explorer_url="https://cardona-zkevm.polygonscan.com",
|
||||
native_currency="ETH",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Blast
|
||||
cls._chains["blast"] = Chain(
|
||||
name="Blast",
|
||||
slug="blast",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=81457,
|
||||
is_testnet=False,
|
||||
rpc_env_var="blast_mainnet_rpc",
|
||||
explorer_url="https://blastscan.io",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=168587773,
|
||||
is_testnet=True,
|
||||
rpc_env_var="blast_sepolia_rpc",
|
||||
explorer_url="https://sepolia.blastscan.io",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Mantle
|
||||
cls._chains["mantle"] = Chain(
|
||||
name="Mantle",
|
||||
slug="mantle",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=5000,
|
||||
is_testnet=False,
|
||||
rpc_env_var="mantle_mainnet_rpc",
|
||||
explorer_url="https://mantlescan.xyz",
|
||||
native_currency="MNT",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=5003,
|
||||
is_testnet=True,
|
||||
rpc_env_var="mantle_sepolia_rpc",
|
||||
explorer_url="https://sepolia.mantlescan.xyz",
|
||||
native_currency="MNT",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Mode
|
||||
cls._chains["mode"] = Chain(
|
||||
name="Mode",
|
||||
slug="mode",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=34443,
|
||||
is_testnet=False,
|
||||
rpc_env_var="mode_mainnet_rpc",
|
||||
explorer_url="https://explorer.mode.network",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=919,
|
||||
is_testnet=True,
|
||||
rpc_env_var="mode_sepolia_rpc",
|
||||
explorer_url="https://sepolia.explorer.mode.network",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Zora
|
||||
cls._chains["zora"] = Chain(
|
||||
name="Zora",
|
||||
slug="zora",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=7777777,
|
||||
is_testnet=False,
|
||||
rpc_env_var="zora_mainnet_rpc",
|
||||
explorer_url="https://explorer.zora.energy",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=999999999,
|
||||
is_testnet=True,
|
||||
rpc_env_var="zora_sepolia_rpc",
|
||||
explorer_url="https://sepolia.explorer.zora.energy",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# World Chain
|
||||
cls._chains["worldchain"] = Chain(
|
||||
name="World Chain",
|
||||
slug="worldchain",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=480,
|
||||
is_testnet=False,
|
||||
rpc_env_var="worldchain_mainnet_rpc",
|
||||
explorer_url="https://worldscan.org",
|
||||
native_currency="ETH",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=4801,
|
||||
is_testnet=True,
|
||||
rpc_env_var="worldchain_sepolia_rpc",
|
||||
explorer_url="https://sepolia.worldscan.org",
|
||||
native_currency="ETH",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Abstract
|
||||
cls._chains["abstract"] = Chain(
|
||||
name="Abstract",
|
||||
slug="abstract",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=2741,
|
||||
is_testnet=False,
|
||||
rpc_env_var="abstract_mainnet_rpc",
|
||||
explorer_url="https://abscan.org",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=11124,
|
||||
is_testnet=True,
|
||||
rpc_env_var="abstract_testnet_rpc",
|
||||
explorer_url="https://testnet.abscan.org",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Starknet (non-EVM)
|
||||
cls._chains["starknet"] = Chain(
|
||||
name="Starknet",
|
||||
slug="starknet",
|
||||
chain_type=ChainType.STARKNET,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=None,
|
||||
is_testnet=False,
|
||||
rpc_env_var="starknet_mainnet_rpc",
|
||||
explorer_url="https://starkscan.co",
|
||||
native_currency="ETH",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=None,
|
||||
is_testnet=True,
|
||||
rpc_env_var="starknet_sepolia_rpc",
|
||||
explorer_url="https://sepolia.starkscan.co",
|
||||
native_currency="ETH",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# -----------------------------------------------------------
|
||||
# Other EVM Chains
|
||||
# -----------------------------------------------------------
|
||||
|
||||
# Canto
|
||||
cls._chains["canto"] = Chain(
|
||||
name="Canto",
|
||||
slug="canto",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=7700,
|
||||
is_testnet=False,
|
||||
rpc_env_var="canto_mainnet_rpc",
|
||||
explorer_url="https://cantoscan.com",
|
||||
native_currency="CANTO",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=7701,
|
||||
is_testnet=True,
|
||||
rpc_env_var="canto_testnet_rpc",
|
||||
explorer_url="https://testnet.cantoscan.com",
|
||||
native_currency="CANTO",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Klaytn / Kaia
|
||||
cls._chains["kaia"] = Chain(
|
||||
name="Kaia",
|
||||
slug="kaia",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=8217,
|
||||
is_testnet=False,
|
||||
rpc_env_var="kaia_mainnet_rpc",
|
||||
explorer_url="https://kaiascan.io",
|
||||
native_currency="KAIA",
|
||||
),
|
||||
"kairos": Network(
|
||||
name="Kairos",
|
||||
chain_id=1001,
|
||||
is_testnet=True,
|
||||
rpc_env_var="kaia_kairos_rpc",
|
||||
explorer_url="https://kairos.kaiascan.io",
|
||||
native_currency="KAIA",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Aurora (NEAR EVM)
|
||||
cls._chains["aurora"] = Chain(
|
||||
name="Aurora",
|
||||
slug="aurora",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=1313161554,
|
||||
is_testnet=False,
|
||||
rpc_env_var="aurora_mainnet_rpc",
|
||||
explorer_url="https://explorer.aurora.dev",
|
||||
),
|
||||
"testnet": Network(
|
||||
name="Testnet",
|
||||
chain_id=1313161555,
|
||||
is_testnet=True,
|
||||
rpc_env_var="aurora_testnet_rpc",
|
||||
explorer_url="https://testnet.explorer.aurora.dev",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Boba
|
||||
cls._chains["boba"] = Chain(
|
||||
name="Boba",
|
||||
slug="boba",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=288,
|
||||
is_testnet=False,
|
||||
rpc_env_var="boba_mainnet_rpc",
|
||||
explorer_url="https://bobascan.com",
|
||||
),
|
||||
"sepolia": Network(
|
||||
name="Sepolia",
|
||||
chain_id=28882,
|
||||
is_testnet=True,
|
||||
rpc_env_var="boba_sepolia_rpc",
|
||||
explorer_url="https://sepolia.bobascan.com",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
# Astar
|
||||
cls._chains["astar"] = Chain(
|
||||
name="Astar",
|
||||
slug="astar",
|
||||
chain_type=ChainType.EVM,
|
||||
networks={
|
||||
"mainnet": Network(
|
||||
name="Mainnet",
|
||||
chain_id=592,
|
||||
is_testnet=False,
|
||||
rpc_env_var="astar_mainnet_rpc",
|
||||
explorer_url="https://astar.blockscout.com",
|
||||
native_currency="ASTR",
|
||||
),
|
||||
"shibuya": Network(
|
||||
name="Shibuya",
|
||||
chain_id=81,
|
||||
is_testnet=True,
|
||||
rpc_env_var="astar_shibuya_rpc",
|
||||
explorer_url="https://shibuya.blockscout.com",
|
||||
native_currency="SBY",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
cls._initialized = True
|
||||
|
||||
@classmethod
|
||||
|
||||
Reference in New Issue
Block a user