skills/

contract-addresses

Infrastructuremultichain|#addresses#contracts#tokens#reference
Target:

Install this skill:

$ npx cryptoskills install contract-addresses

Install all 95 skills:

$ npx cryptoskills install --all

Contract Addresses

Canonical contract addresses for major EVM protocols. Reference skill for agents building integrations across Ethereum, Arbitrum, Optimism, Base, and Polygon.

Last verified: February 2026 — All addresses verified onchain via cast code. Always re-verify before mainnet use.

What You Probably Got Wrong

  • Addresses differ across chains — USDC on Arbitrum is NOT the same address as USDC on Ethereum. Never assume cross-chain address parity except for contracts deployed via CREATE2 at deterministic addresses.
  • Bridged vs. native tokens — Many chains have both a bridged USDC (USDC.e) and a native USDC. Using the wrong one causes failed swaps and lost funds. This reference lists the canonical native version where available.
  • Checksums matter — EIP-55 mixed-case checksums prevent sending to mistyped addresses. Always use checksummed addresses.
  • Proxy vs. implementation — Most protocol addresses listed here are proxies. The implementation behind them can change via governance. Verify the proxy's current implementation if you need the ABI.
  • Uniswap has multiple routers — SwapRouter (V3-only), SwapRouter02 (V2+V3), and Universal Router (V2+V3+NFTs) are different contracts. Most integrations should use Universal Router.

Stablecoins

USDC (Circle)

Chain Address Notes
Ethereum 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 Native USDC, 6 decimals
Arbitrum 0xaf88d065e77c8cC2239327C5EDb3A432268e5831 Native USDC (not USDC.e)
Optimism 0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85 Native USDC (not USDC.e)
Base 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 Native USDC
Polygon 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 Native USDC (not USDC.e)

USDC.e (Bridged USDC)

Chain Address Notes
Arbitrum 0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8 Legacy bridged, being deprecated
Optimism 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 Legacy bridged
Polygon 0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174 Legacy bridged

USDT (Tether)

Chain Address Notes
Ethereum 0xdAC17F958D2ee523a2206206994597C13D831ec7 6 decimals, no return value on transfer
Arbitrum 0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9 Bridged USDT
Optimism 0x94b008aA00579c1307B0EF2c499aD98a8ce58e58 Bridged USDT
Polygon 0xc2132D05D31c914a87C6611C10748AEb04B58e8F Bridged USDT

DAI (MakerDAO)

Chain Address Notes
Ethereum 0x6B175474E89094C44Da98b954EedeAC495271d0F 18 decimals
Arbitrum 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 Bridged DAI
Optimism 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 Same address as Arbitrum (CREATE2)
Polygon 0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063 Bridged DAI

Wrapped Tokens

WETH (Wrapped Ether)

Chain Address Notes
Ethereum 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 Canonical WETH9
Arbitrum 0x82aF49447D8a07e3bd95BD0d56f35241523fBab1 WETH on Arbitrum
Optimism 0x4200000000000000000000000000000000000006 Predeploy address
Base 0x4200000000000000000000000000000000000006 Predeploy address (same as OP)
Polygon 0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619 Bridged WETH

wstETH (Lido Wrapped Staked ETH)

Chain Address Notes
Ethereum 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 Canonical wstETH
Arbitrum 0x5979D7b546E38E9aB8E801a884a0710832C3fD7b Bridged wstETH
Optimism 0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb Bridged wstETH
Base 0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452 Bridged wstETH
Polygon 0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD Bridged wstETH

DEX Routers

Uniswap

Contract Ethereum Arbitrum Optimism Base Polygon
Universal Router 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD
SwapRouter02 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45 0x2626664c2603336E57B271c5C0b26F421741e481 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45
V3 Factory 0x1F98431c8aD98523631AE4a59f267346ea31F984 0x1F98431c8aD98523631AE4a59f267346ea31F984 0x1F98431c8aD98523631AE4a59f267346ea31F984 0x33128a8fC17869897dcE68Ed026d694621f6FDfD 0x1F98431c8aD98523631AE4a59f267346ea31F984
V3 NonfungiblePositionManager 0xC36442b4a4522E871399CD717aBDD847Ab11FE88 0xC36442b4a4522E871399CD717aBDD847Ab11FE88 0xC36442b4a4522E871399CD717aBDD847Ab11FE88 0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1 0xC36442b4a4522E871399CD717aBDD847Ab11FE88

Uniswap V2 (Ethereum only)

Contract Address
V2 Router 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
V2 Factory 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f

Lending

Aave V3

Contract Ethereum Arbitrum Optimism Base Polygon
Pool 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2 0x794a61358D6845594F94dc1DB02A252b5b4814aD 0x794a61358D6845594F94dc1DB02A252b5b4814aD 0xA238Dd80C259a72e81d7e4664a9801593F98d1c5 0x794a61358D6845594F94dc1DB02A252b5b4814aD
PoolAddressesProvider 0x2f39d218133AFaB8F2B819B1066c7E434Ad94E9e 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb 0xe20fCBdBfFC4Dd138cE8b2E6FBb6CB49777ad64D 0xa97684ead0e402dC232d5A977953DF7ECBaB3CDb

Compound V3 (Comet)

Market Ethereum Arbitrum Base Polygon
USDC Comet 0xc3d688B66703497DAA19211EEdff47f25384cdc3 0xA5EDBDD9646f8dFF606d7448e414884C7d905dCA 0xb125E6687d4313864e53df431d5425969c15Eb2F 0xF25212E676D1F7F89Cd72fFEe66158f541246445
WETH Comet 0xA17581A9E3356d9A858b789D68B4d866e593aE94 0x6f7D514bbD4aFf3BcD1140B7344b32f063dEe486 0x46e6b214b524310239732D51387075E0e70970bf --

Oracles

Feed Ethereum Arbitrum Optimism Base
ETH/USD 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 0x639Fe6ab55C921f74e7fac1ee960C0B6293ba612 0x13e3Ee699D1909E989722E753853AE30b17e08c5 0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70
BTC/USD 0xF4030086522a5bEEa4988F8cA5B36dbC97BeE88c 0x6ce185860a4963106506C203335A2910413708e9 0xD702DD976Fb76Fffc2D3963D037dfDae5b04E593 --
USDC/USD 0x8fFfFfd4AfB6115b954Bd326cbe7B4BA576818f6 0x50834F3163758fcC1Df9973b6e91f0F0F0434aD3 0x16a9FA2FDa030272Ce99B29CF780dFA30361E0f3 0x7e860098F58bBFC8648a4311b374B1D669a2bc6B
LINK/USD 0x2c1d072e956AFFC0D435Cb7AC38EF18d24d9127c 0x86E53CF1B870786351Da77A57575e79CB55812CB 0xCc232dcFAAE6354cE191Bd574108c1aD03f86229 0x17CAb8FE31cA45e4684E33E3D258F20E88B8fD8B
Contract Ethereum Arbitrum Base
Feed Registry 0x47Fb2585D2C56Fe188D0E6ec628a38b74fCeeeDf -- --
VRF Coordinator V2.5 0xD7f86b4b8Cae7D942340FF628F82735b7a20893a 0x3C0Ca683b403E37668AE3DC4FB62F4B29B6f7a3e 0xd5D517aBE5cF79B7e95eC98dB0f0277788aFF634

Infrastructure

Multicall

Contract Address Chains
Multicall3 0xcA11bde05977b3631167028862bE2a173976CA11 All major EVM chains (deterministic CREATE2 deployment)

CREATE2 Deployers

Contract Address Chains
Deterministic Deployment Proxy 0x4e59b44847b379578588920cA78FbF26c0B4956C All major EVM chains
Create2Deployer (OpenZeppelin) 0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2 All major EVM chains

ENS (Ethereum Only)

Contract Address
ENS Registry 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Public Resolver 0x231b0Ee14048e9dCcD1d247744d114a4EB5E8E63
Reverse Registrar 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
ETH Registrar Controller 0x253553366Da8546fC250F225fe3d25d0C782303b

Safe (Gnosis Safe)

Contract Address Chains
Safe Singleton (1.4.1) 0x41675C099F32341bf84BFc5382aF534df5C7461a All major EVM chains
Safe Proxy Factory (1.4.1) 0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67 All major EVM chains
MultiSend (1.4.1) 0x38869bf66a61cF6bDB996A6aE40D5853Fd43B526 All major EVM chains
Safe Singleton (1.3.0) 0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552 All major EVM chains
Safe Proxy Factory (1.3.0) 0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2 All major EVM chains

Permit2 (Uniswap)

Contract Address Chains
Permit2 0x000000000022D473030F116dDEE9F6B43aC78BA3 All major EVM chains (deterministic CREATE2)

Bridges

Arbitrum Native Bridge

Contract Address Chain
L1 Gateway Router 0x72Ce9c846789fdB6fC1f34aC4AD25Dd9ef7031ef Ethereum
L1 ERC20 Gateway 0xa3A7B6F88361F48403514059F1F16C8E78d60EeC Ethereum
L2 Gateway Router 0x5288c571Fd7aD117beA99bF60FE0846C4E84F933 Arbitrum
Inbox 0x4Dbd4fc535Ac27206064B68FfCf827b0A60BAB3f Ethereum

Optimism Native Bridge

Contract Address Chain
L1StandardBridge (Proxy) 0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1 Ethereum
L2StandardBridge 0x4200000000000000000000000000000000000010 Optimism (predeploy)
L1CrossDomainMessenger (Proxy) 0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1 Ethereum
L2CrossDomainMessenger 0x4200000000000000000000000000000000000007 Optimism (predeploy)
OptimismPortal (Proxy) 0xbEb5Fc579115071764c7423A4f12eDde41f106Ed Ethereum

Base Native Bridge

Contract Address Chain
L1StandardBridge (Proxy) 0x3154Cf16ccdb4C6d922629664174b904d80F2C35 Ethereum
L2StandardBridge 0x4200000000000000000000000000000000000010 Base (predeploy)
L1CrossDomainMessenger (Proxy) 0x866E82a600A1414e583f7F13623F1aC5d58b0Afa Ethereum
L2CrossDomainMessenger 0x4200000000000000000000000000000000000007 Base (predeploy)
OptimismPortal (Proxy) 0x49048044D57e1C92A77f79988d21Fa8fAF36f97B Ethereum

Governance

Major Protocol Governance

Protocol Contract Address Chain
Uniswap Governor Bravo 0x408ED6354d4973f66138C91495F2f2FCbd8724C3 Ethereum
Uniswap Timelock 0x1a9C8182C09F50C8318d769245beA52c32BE35BC Ethereum
Compound Governor Bravo 0xc0Da02939E1441F497fd74F78cE7Decb17B66529 Ethereum
Compound Timelock 0x6d903f6003cca6255D85CcA4D3B5E5146dC33925 Ethereum
Aave Governance V3 0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7 Ethereum

Governance Tokens

Token Address Chain
UNI 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984 Ethereum
COMP 0xc00e94Cb662C3520282E6f5717214004A7f26888 Ethereum
AAVE 0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9 Ethereum
LDO 0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32 Ethereum
LINK 0x514910771AF9Ca656af840dff83E8264EcF986CA Ethereum
MKR 0x9f8F72aA9304c8B593d555F12eF6589cC3A579A2 Ethereum
CRV 0xD533a949740bb3306d119CC777fa900bA034cd52 Ethereum

OP Stack Predeploys

Shared across Optimism, Base, and all OP Stack chains at the same addresses.

Contract Address
L2CrossDomainMessenger 0x4200000000000000000000000000000000000007
L2StandardBridge 0x4200000000000000000000000000000000000010
L2ToL1MessagePasser 0x4200000000000000000000000000000000000016
L1Block 0x4200000000000000000000000000000000000015
GasPriceOracle 0x420000000000000000000000000000000000000F
WETH (predeploy) 0x4200000000000000000000000000000000000006

How to Verify

Always verify addresses onchain before using them in production. Addresses in this reference may become outdated if protocols upgrade their proxies.

Using cast (Foundry)

Check if code exists at an address:

cast code 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 --rpc-url $ETH_RPC_URL

A non-empty response confirms a contract exists. 0x means no contract (EOA or empty).

Verify a token's identity:

cast call 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 "symbol()(string)" --rpc-url $ETH_RPC_URL
cast call 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 "decimals()(uint8)" --rpc-url $ETH_RPC_URL

Check a proxy's implementation:

# EIP-1967 implementation slot
cast storage 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 \
  0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc \
  --rpc-url $ETH_RPC_URL

Using Etherscan API

# Verify contract is verified on Etherscan
curl "https://api.etherscan.io/api?module=contract&action=getabi&address=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&apikey=$ETHERSCAN_API_KEY"

Chain-specific explorers:

  • Ethereum: api.etherscan.io
  • Arbitrum: api.arbiscan.io
  • Optimism: api-optimistic.etherscan.io
  • Base: api.basescan.org
  • Polygon: api.polygonscan.com

Checksum Verification

Verify an address is correctly checksummed:

cast to-check-sum-address 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

Important Caveats

  • Proxy upgrades -- Protocol governance can upgrade proxy implementations. The proxy address stays the same, but behavior may change. Monitor governance proposals for protocols you depend on.
  • Chain-specific behavior -- Same protocol may behave differently across chains. Aave V3 on Ethereum has different parameters (LTV, liquidation thresholds) than on Arbitrum.
  • Deprecated contracts -- USDC.e (bridged) is being phased out in favor of native USDC on L2s. Old router addresses may still work but lack new features.
  • Token decimals -- USDC/USDT use 6 decimals. DAI/WETH use 18. Never assume 18 decimals.
  • USDT non-standard -- USDT's transfer() and approve() do not return a boolean. Use OpenZeppelin's SafeERC20 or viem's built-in handling.

References