Simple Base SwapSimple Base SwapOpen app
← All articles
Sep 5, 2026·5 min read

Why the Same Token Has a Different Address on Every Chain

baseguidestokensbeginners
base

If you have ever copied a token's contract address from Etherscan and then gone looking for that same address on Basescan, you have probably noticed something confusing: it is not there. The token exists on both networks under the same name and the same ticker, but the address is completely different. This is not a bug, and it is not evidence that something is wrong. It is just how tokens get deployed, and understanding it will save you a failed lookup or a moment of panic the first time you notice it.

A contract is deployed once, on one chain

A token like USDC is not a single object that floats between networks. It is a smart contract, a piece of code with its own storage, sitting at a specific address on a specific chain. When Circle wanted USDC to exist on Base, it did not move the Ethereum contract over. It deployed a new, separate contract on Base, with its own address, its own balance ledger, and its own history starting from zero.

The two contracts are connected by policy and by trust in the issuer, not by any shared code or shared address. Circle promises that native USDC on Base is backed the same way as USDC on Ethereum, and that promise is what makes the two interchangeable in practice. But at the technical level, they are two different contracts that happen to represent the same asset.

Native USDC on Ethereum lives at 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48. Native USDC on Base lives at 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913, deployed when Circle brought native USDC to Base in September 2023. Neither address works on the other chain. Paste the Ethereum address into a Base explorer and you will find nothing, because that address was never used there.

Base even had two different USDCs at once

USDC on Base is actually a good example of how far this can go, because for a while there were two separate USDC style tokens on the same chain. Before Circle issued native USDC directly on Base, a bridged version called USDbC existed, created by locking real USDC on Ethereum and minting a wrapped stand in on Base at a different address, 0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA. It behaved like USDC and was worth a dollar, but it was a wrapped claim on locked collateral rather than USDC issued directly by Circle on Base.

Once native USDC launched, most wallets, exchanges and liquidity pools migrated over, and USDbC has been fading out since. Some of it is still around. If you ever see a token labeled USDbC in a wallet, that is what it is: an older, bridged stand in, not the same contract as the native USDC that Simple Base Swap and most apps use today.

The exception that proves the rule: predeploys

There is one interesting exception to "every chain gets its own address," and it involves WETH, the wrapped version of ETH used throughout DeFi. On Ethereum, WETH lives at 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2. On Base, WETH lives at 0x4200000000000000000000000000000000000006. Those are different from each other, as you would now expect. But that Base address is not unique to Base. Optimism, World Chain, and other networks built on the same underlying OP Stack technology all place WETH at that identical address.

This happens because chains built on the OP Stack, Base included, deploy a fixed set of core contracts at genesis, called predeploys, at addresses reserved specifically for that purpose. WETH is one of them. Any two OP Stack chains that include this predeploy will have it at the same address by design, not by coincidence. It is a useful pattern for infrastructure that every chain needs, but it is the exception. Ordinary tokens, including USDC, are deployed independently by whoever issues them and get whatever address happens to result from that deployment.

Why this is worth knowing

Day to day, you do not need to think about any of this. Simple Base Swap already resolves the correct, current Base address for the tokens it lists, so you are not the one deciding which USDC contract to trust. The practical value of understanding this shows up in two places.

First, if you are ever importing a custom token by pasting an address, the chain matters as much as the address itself. A correct address copied from the wrong network's explorer will simply fail to resolve, or worse, might coincidentally match something unrelated and unverified on Base. Always confirm you are copying from a source that is specifically listing the Base deployment.

Second, if you see an unfamiliar variant name like USDbC sitting in your wallet, or notice a token's address does not match what you expected from another chain, this is the explanation. It does not mean you were scammed. It means you are looking at a different, legitimate deployment of a related asset, and it is worth checking which one you actually want to hold or swap before assuming they are interchangeable.

The calm summary

A token is not one thing that exists everywhere. It is a separate contract on each chain it appears on, each with its own address, deployed independently unless it is one of the small set of predeploys that OP Stack chains share by design. USDC on Base and USDC on Ethereum are connected by Circle's backing, not by shared code. Knowing this turns a confusing mismatch into a boring, expected fact the first time you run into it.

Sources: USDC Now Available Natively on Base, Circle, What Is USDbC? Coinbase's Bridged USDC on Base Explained, USDC Token, BaseScan, Wrapped Ether Token, BaseScan

Ready to try it yourself?

Create a non-custodial wallet on Base in seconds. No account, no sign-up.

Open the web app