Skip to main content
World Chain is an OP Stack layer 2, so the standard Ethereum libraries work against a World Chain node without modification. Gas is paid in ETH exactly as on Ethereum mainnet.

Chain configuration

See World Chain methods for per-method availability and Debug and trace APIs for the tracing namespaces.

MetaMask

Add World Chain Mainnet as a custom network. On Chainstack, get your World Chain endpoint, then in MetaMask select Add a custom network and fill in:
  • Network name — World Chain
  • Default RPC URL — your Chainstack World Chain endpoint
  • Chain ID — 480
  • Currency symbol — ETH
  • Block explorer URL — https://worldscan.org

ethers.js

Install ethers.js:

viem

World Chain ships in viem’s bundled chain list as worldchain, so you do not need defineChain:
Pass your Chainstack endpoint to http() as above. The bundled chain definition carries a public RPC URL, and http() with no argument would use that instead of your node.

web3.py

Install web3.py:
web3.py rejects lowercase addresses with InvalidAddress. Wrap any address you did not get from the library itself in Web3.to_checksum_address(), as above.

Three World Chain behaviors that affect tooling

There is no transaction pool to read. The txpool_* namespace is not served — txpool_status, txpool_content, txpool_contentFrom, and txpool_inspect all return -32601. No mode or plan change turns them on, because World Chain is an OP Stack chain and pending transactions stay with the sequencer. Pending-transaction subscriptions succeed and then deliver nothing. eth_subscribe("newPendingTransactions") returns a subscription ID and eth_newPendingTransactionFilter returns a filter ID, so neither call looks like it failed. No transaction ever arrives. newHeads and logs subscriptions both work normally. See What gives you mempool access. Filters are node-local. A Global Node endpoint is load balanced across backends, and a filter created by eth_newFilter or eth_newBlockFilter lives on the backend that created it. A follow-up eth_getFilterChanges that lands elsewhere returns -32602 filter not found. Poll eth_getLogs over an explicit block range instead, or hold a WSS subscription, which keeps one connection to one backend for its lifetime.
Last modified on August 5, 2026