Base chain ID, RPC URL and network config
Last updated:
Base network identifiers
| Identifier | Value | Source |
|---|---|---|
| Chain ID | 8453 (0x2105)eth_chainId returns the hex form. | Base docs: connecting to Base |
| Network ID | 8453Returned by net_version (checked on mainnet.base.org, 23.09.2026). | ethereum.org JSON-RPC API (net_version) |
| CAIP-2 ID | eip155:8453The chain identifier multichain wallets and WalletConnect use. | CAIP-2 eip155 namespace |
| Currency symbol | ETH | Triport chain registry |
The chain ID is signed into every transaction (EIP-155); the network ID is what net_version reports. They are separate values that happen to match on most chains — see chain ID vs network ID and the chain ID glossary entry.
Base RPC URLs
| Triport RPC URL (header auth) | https://triport.io/rpc/base |
|---|---|
| Triport RPC URL (keyed) | https://triport.io/r/<API_KEY>/rpc/base |
| Triport WebSocket URL (keyed) | wss://triport.io/ws/base/<API_KEY> |
| Required scope | base:rpc |
| Public RPC by Base | https://mainnet.base.orgRate-limited public endpoint: Base's docs say its RPCs "are rate-limited, they are not suitable for production apps". Base docs: run a Base node · Base docs: connecting to Base |
Public-endpoint limits are as each operator publishes them, checked 23 September 2026.
Plans and per-category rate limits: pricing. Network overview: Base RPC; method reference: Base documentation.
Add Base to MetaMask, viem, Hardhat or Foundry
wallet_addEthereumChain (EIP-3085) requires only chainId, as a hex string — 0x2105, not 8453. The MetaMask block below also fills chainName, nativeCurrency (name, symbol, decimals) and rpcUrls, which a wallet uses to display and reach the network. A wallet cannot send the x-token header, so rpcUrls holds the keyed URL with your API key in the path — paste your key below; the placeholder URL answers 401 until you do.
MetaMask
{
"method": "wallet_addEthereumChain",
"params": [{
"chainId": "0x2105",
"chainName": "Base",
"nativeCurrency": { "name": "ETH", "symbol": "ETH", "decimals": 18 },
"rpcUrls": ["https://triport.io/r/<API_KEY>/rpc/base"]
}]
}viem
import { createPublicClient, defineChain, http } from "viem";
export const base = defineChain({
id: 8453,
name: "Base",
nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 },
rpcUrls: { default: { http: ["https://triport.io/r/<API_KEY>/rpc/base"], webSocket: ["wss://triport.io/ws/base/<API_KEY>"] } },
});
export const client = createPublicClient({ chain: base, transport: http() });ethers v6
import { JsonRpcProvider, Network } from "ethers";
const network = Network.from({ name: "base", chainId: 8453 });
export const provider = new JsonRpcProvider("https://triport.io/r/<API_KEY>/rpc/base", network, { staticNetwork: network });Hardhat
// hardhat.config.ts
export default {
networks: {
base: { url: "https://triport.io/r/<API_KEY>/rpc/base", chainId: 8453 },
},
};Foundry
# foundry.toml
[rpc_endpoints]
base = "https://triport.io/r/<API_KEY>/rpc/base"wagmi
import { createConfig, http } from "wagmi";
import { base } from "./base-chain";
export const config = createConfig({
chains: [base],
transports: { [base.id]: http("https://triport.io/r/<API_KEY>/rpc/base") },
});curl (header auth)
curl https://triport.io/rpc/base \
-H "x-token: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'Keys in URLs vs headers
A keyed URL is the same credential as a header, in a less private place: it lands in shell history, CI logs and screenshots. Use it only where a header is impossible (wallets, hardhat.config, foundry.toml), send x-token from server code, and rotate a key that leaked.
Verify you are on Base mainnet
Call eth_chainId first. It must return 0x2105 — a client whose configured chain ID disagrees with the reply refuses to connect, which explains most failures when adding a network by hand.
curl https://triport.io/rpc/base \
-H "x-token: <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}'Sources: the chain's own documentation and the CAIP-2 namespace specs cited in the tables above; EVM chain IDs come from Triport's chain registry and match them.
FAQ
- What is the Base chain ID?
- 8453 in decimal, 0x2105 in hex — eth_chainId returns the hex form. The CAIP-2 ID is eip155:8453.
- Is Base mainnet chain ID 8453?
- Yes. Base mainnet is chain ID 8453 (0x2105), as listed in Base's own documentation. Base Sepolia is a separate testnet with its own chain ID.
- What is the Base network ID?
- net_version returns 8453, the same number as the chain ID. Sign with the chain ID from eth_chainId: under EIP-155 the chain ID is part of the transaction signature, the network ID is not.
- What is the Base RPC URL?
- On Triport: https://triport.io/rpc/base with your API key in the x-token header, or https://triport.io/r/<API_KEY>/rpc/base where a header is impossible (wallets, config files). WebSocket: wss://triport.io/ws/base. Base also runs a public endpoint, https://mainnet.base.org; it is rate-limited, and the limits its operator publishes are cited in the RPC URL table.
- How do I add Base to MetaMask?
- Call wallet_addEthereumChain (EIP-3085) with chainId "0x2105" — a hex string, not the decimal 8453 — chainName "Base", nativeCurrency ETH with 18 decimals, and your keyed RPC URL in rpcUrls. The MetaMask block on this page is the exact request.
- Is my API key sent to Triport when I use this page?
- No. Snippets are generated in your browser: the key is never submitted, never stored and never written into the page URL, which is why this page has no shareable link.