name: contract-addresses
description: Verified contract addresses for major EVM protocols across Ethereum, Arbitrum, Optimism, Base, and Polygon. Covers tokens, DEXes, lending, bridges, and infrastructure. Use as a reference when building integrations — every address is checksummed and should be verified onchain before use in production.
license: Apache-2.0
metadata:
author: cryptoskills
version: "1.0"
chain: multichain
category: Infrastructure
tags:
- addresses
- contracts
- tokens
- reference
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
Chainlink Price Feeds
| 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 |
Chainlink Infrastructure
| 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