Public endpoints
This page is a single reference for public RPC URLs, block explorers, chain IDs, faucets, and default ports used across the Elastos stack: the ELA main chain, Elastos Smart Chain (ESC), and Elastos Identity Chain (EID), on mainnet and testnet.
Values here follow ESC/EID node configuration in source and commonly used public providers. Prefer HTTPS endpoints in production; treat URLs as infrastructure that can change; verify against upstream docs if something fails.
Chain IDs at a glance
| Layer | Mainnet | Testnet |
|---|---|---|
| ESC (Smart Chain) | 20 | 21 |
| EID (Identity Chain) | 22 | 23 |
The ELA main chain does not use an EVM chain ID in the same way; its explorers and APIs are keyed by transaction and address on the native layer. ESC and EID are EVM-compatible: use eth_chainId, eth_blockNumber, and related JSON-RPC methods against the HTTPS endpoints below (WebSocket may be offered on the same port as HTTP for self-hosted nodes; see ports).
Verifying ESC/EID JSON-RPC
Quick-check that an HTTPS endpoint matches the expected chain:
curl -s -X POST https://api.elastos.io/esc \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}'
You should see a result of 0x14 (hex for 20) for ESC mainnet. Swap the URL for EID and expect 0x16 (22). For testnet endpoints, expect 0x15 (21) and 0x17 (23) respectively.
Environment and CI
Store RPC URLs in environment variables (for example ESC_RPC_URL, EID_RPC_URL) so local, staging, and production configs differ only by values, not code. In CI, pin a single provider or rotate through a small list with retries to reduce flaky pipelines when a public node is briefly unavailable.
Mainnets
- Main Chain
- ESC
- EID
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| Mainchain | Elastos | N/A | https://blockchain.elastos.io/api/v1/ | https://blockchain.elastos.io |
Mainchain rows point at REST-style base paths (/api/v1/) for the blockchain explorer backend; consult the main chain API documentation for concrete routes.
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| ESC (Smart Chain) | Elastos | 20 | https://api.elastos.io/esc | https://esc.elastos.io |
| ESC | Glide Finance | 20 | https://rpc.glidefinance.io |
ESC rows are EVM JSON-RPC bases: append nothing for standard wallet and ethers/viem usage.
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| EID (Identity Chain) | Elastos | 22 | https://api.elastos.io/eid | https://eid.elastos.io |
EID rows are EVM JSON-RPC bases: append nothing for standard wallet and ethers/viem usage.
Configure more than one RPC (primary + fallbacks) in wallets, indexers, and backends. Public endpoints can rate-limit, restart, or differ by region; failing over to another provider avoids a single point of failure without running your own node.
Testnets
- Main Chain
- ESC
- EID
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| Mainchain Testnet | Elastos | N/A | https://blockchain-testnet.elastos.io/api/v1/ | https://blockchain-testnet.elastos.io |
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| ESC Testnet | Elastos | 21 | https://api-testnet.elastos.io/esc | https://esc-testnet.elastos.io |
| Network | Provider | Chain ID | RPC URL | Explorer |
|---|---|---|---|---|
| EID Testnet | Elastos | 23 | https://api-testnet.elastos.io/eid | https://eid-testnet.elastos.io |
Build and test contracts, DIDs, and integrations on ESC/EID testnet before mainnet. Testnet tokens are free via faucets; state and economics differ from production; never assume testnet behavior matches mainnet for security or economics.
Faucets
- ESC
- EID
| Network | URL |
|---|---|
| ESC Testnet | https://esc-faucet.elastos.io/ |
| Network | URL |
|---|---|
| EID Testnet | https://eid-faucet.elastos.io/ |
Request testnet gas tokens only for development and staging; do not rely on faucet uptime for CI unless you mirror funds or use a funded ephemeral key with care.
Self-hosted node ports
When you run binaries locally or on your own servers, these are the default listener ports (adjust in config if you remap them). P2P ports must be reachable by peers if you participate in the network; JSON-RPC and REST are for your applications and automation.
Open only what you need: typical deployments expose P2P to the world (with firewall rules) while keeping RPC on localhost or a private interface unless you operate a dedicated gateway.
- Main Chain
- ESC
- EID
| Service | Port | Protocol |
|---|---|---|
| ELA Main Chain P2P | 20338 | TCP |
| ELA Main Chain JSON-RPC | 20336 | HTTP |
| ELA Main Chain REST | 20334 | HTTP |
| Arbiter P2P | 20538 | TCP |
| Arbiter JSON-RPC | 20536 | HTTP |
| Service | Port | Protocol |
|---|---|---|
| ESC P2P | 20638 | TCP |
| ESC JSON-RPC | 20636 | HTTP/WS |
| Service | Port | Protocol |
|---|---|---|
| EID P2P | 20648 | TCP |
| EID JSON-RPC | 20646 | HTTP/WS |
Binding JSON-RPC or REST on 0.0.0.0 without firewall rules, TLS, and authentication is unsafe: nodes can be abused for relay spam, resource exhaustion, or worse. Keep self-hosted RPC on private networks or behind a reverse proxy with strict access control; never assume “default” equals “secure.”
MetaMask configuration
Add custom networks in MetaMask (or any EIP-155 wallet) using the fields below. The RPC URL must match the network you are sending transactions on; a wrong chain ID will cause signature mismatch or lost funds relative to user intent.
- Main Chain
- ESC
- EID
The ELA main chain does not use an EVM chain ID in the same way; its explorers and APIs are keyed by transaction and address on the native layer.
- ESC mainnet
- ESC testnet
ESC mainnet
| Field | Value |
|---|---|
| Network Name | Elastos Smart Chain |
| RPC URL | https://api.elastos.io/esc |
| Chain ID | 20 |
| Currency Symbol | ELA |
| Block Explorer | https://esc.elastos.io/ |
ESC testnet
| Field | Value |
|---|---|
| Network Name | ESC Testnet |
| RPC URL | https://api-testnet.elastos.io/esc |
| Chain ID | 21 |
| Currency Symbol | tELA |
| Block Explorer | https://esc-testnet.elastos.io/ |
For EID, use the same custom-network flow with chain ID 22 (mainnet) or 23 (testnet) and the EID RPC URLs from the tables above. MetaMask labels are user-defined; chain ID and RPC must match the network you intend.
See also
- Main chain and sidechain node repositories: verify genesis, bootnodes, and RPC bind addresses in default configs when deploying.
- Application stacks (
ethers,viem,web3.js): pointJsonRpcProvider/createPublicClientat the ESC or EID URLs in this page for the correct chain.
Related topics in this site
Use this page alongside guides for deploying contracts, identity (DID) flows, and cross-chain bridges so every environment (local, CI, production) references the same canonical endpoints and chain IDs.
When you document runbooks for operators, include which RPC is considered authoritative for monitoring (e.g. block height alerts) and fallback order if the primary returns HTTP 429 or timeouts. Keep explorer URLs next to RPC URLs in internal wikis so support can jump from a failing endpoint to a block explorer without guessing.
Libraries
Ethereum-compatible libraries work against ESC and EID when you supply the correct RPC URL and chain ID: configure ethers JsonRpcProvider, viem createPublicClient, or web3.js Web3 with the endpoints in this document. For the native main chain, use the REST/JSON-RPC clients and routes documented for that layer rather than EVM calls.
Trailing slashes and paths
Public gateways sometimes normalize paths; if a client fails with 404 or HTML responses, confirm you are POSTing JSON-RPC to the base URL as shown (no extra path segment unless your provider documents one). Mainchain explorer APIs use explicit /api/v1/ paths; follow the main chain API reference for resource names.