Portal Community

Several operations (router/getAddress, router/isChainSupported, router/getFee, router/convertChainSelector, and optionally lane/getSupportedLanes) take a network config key. The node resolves it against a small, bundled static reference table rather than a live CCIP Directory API call:

Network Native Chain ID CCIP Chain Selector Router Address
ethereum-mainnet 1 5009297550715157269 0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D
arbitrum-mainnet 42161 4949039107694359620 0x141fa059441E0ca23ce184B6A78bafD2A517DdE8
base-mainnet 8453 15971525489660198786 0x881e3A65B4d4a04dD529061dd0071cf975F58bCD
Router addresses beyond Ethereum mainnet are unconfirmed placeholders. Only ethereum-mainnet's CCIP chain selector was independently confirmed against Chainlink's own published CCIP Directory during this node's design review. Every other row — and every Router address, including Ethereum mainnet's — is a representative placeholder pending a live CCIP Directory pull. Router contract addresses are also per-CCIP-version and change whenever Chainlink upgrades the Router contract. Reconcile this table against the live CCIP Directory before relying on it for production traffic beyond simple connectivity testing. See Roadmap.

Why Chain Selectors Are Strings

Every chain selector and on-chain integer in this node's config and output contract is a string, never a number. Ethereum mainnet's own CCIP chain selector, 5009297550715157269, already exceeds JavaScript's safe-integer boundary (2^53 - 1 = 9,007,199,254,740,991) by roughly 500x. Encoding it as a JSON number anywhere in this node's contract would risk silent precision loss the moment it round-trips through a JS-based consumer (Flow Studio's canvas, a browser config editor) — the real CCIP API itself returns these fields as strings for exactly this reason, and this node follows suit for chain selectors, token amounts, and fee amounts alike.

Native Chain ID vs. CCIP Chain Selector

A network has two different numbers that both look like a "chain ID," and they are not interchangeable:

Mixing these up is a common source of confusion when working with any multi-chain protocol (Wormhole has its own third numbering scheme for the same chains). Use router/convertChainSelector (see Router Operations) to convert between a network name, its native chain ID, and its CCIP chain selector rather than hand-mapping them.

Which Operations Need an RPC URL

Only two operations make a real on-chain read and therefore require a configured Chainlink:NetworkRpcUrls:{network} entry (see Configuration):

OperationNeeds RPC?
router/isChainSupported✓ Yes
router/getFee✓ Yes
Every other operationNo

Requesting isChainSupported or getFee for a network with no matching NetworkRpcUrls entry throws a ChainlinkNetworkNotConfiguredException — see Troubleshooting.