Skip to main content
Helpful?

Uniswap Contract Deployments

The latest version of @uniswap/v3-core, @uniswap/v3-periphery, @uniswap/swap-router-contracts, and @uniswap/v3-staker are deployed at the addresses listed below. Integrators should no longer assume that they are deployed to the same addresses across chains and be extremely careful to confirm mappings below.

ContractMainnet, Polygon, Optimism, Arbitrum, Testnets AddressCelo Address
UniswapV3Factory0x1F98431c8aD98523631AE4a59f267346ea31F9840xAfE208a311B21f13EF87E33A90049fC17A7acDEc
Multicall20x5BA1e12693Dc8F9c48aAD8770482f4739bEeD6960x633987602DE5C4F337e3DbF265303A1080324204
ProxyAdmin0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf20xc1b262Dd7643D4B7cA9e51631bBd900a564BF49A
TickLens0xbfd8137f7d1516D3ea5cA83523914859ec47F5730x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D
Quoter0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB60x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8
SwapRouter0xE592427A0AEce92De3Edee1F18E0157C058615640x5615CDAb10dc425a742d643d949a7F474C01abc4
NFTDescriptor0x42B24A95702b9986e82d421cC3568932790A48Ec0xa9Fd765d85938D278cb0b108DbE4BF7186831186
NonfungibleTokenPositionDescriptor0x91ae842A5Ffd8d12023116943e72A606179294f30x644023b316bB65175C347DE903B60a756F6dd554
TransparentUpgradeableProxy0xEe6A57eC80ea46401049E92587E52f5Ec1c247850x505B43c452AA4443e0a6B84bb37771494633Fde9
NonfungiblePositionManager0xC36442b4a4522E871399CD717aBDD847Ab11FE880x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A
V3Migrator0xA5644E29708357803b5A882D272c41cC0dF92B340x3cFd4d48EDfDCC53D3f173F596f621064614C582

These addresses are final and were deployed from these npm package versions:

Uniswap Pool Deployments

Every Uniswap pool is a unique instance of the UniswapV3Pool contract and is deployed at its own unique address. The contract source code of the pool will be auto-verified on etherscan. For example, here is the ETH/USDC 0.3% pool on Ethereum mainnet.

You can look up the address of an existing pool on Uniswap Info or by calling the getPool function on the UniswapV3Factory contract.

getPool("0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", 3000)

Wrapped Native Token Addresses

The Uniswap Protocol supports trading of ERC20 tokens. In order to swap a native asset like ETH (or MATIC on Polygon), the Uniswap protocol wraps these assets in an ERC20 wrapped native token contract. The protocol uses the following WETH9 addresses on Ethereum and WMATIC addresses on Polygon.

NetworkChainIdWrapped Native TokenAddress
Ethereum1WETH0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Ropsten3WETH0xc778417E063141139Fce010982780140Aa0cD5Ab
Rinkeby4WETH0xc778417E063141139Fce010982780140Aa0cD5Ab
Goerli5WETH0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6
Kovan42WETH0xd0A1E359811322d97991E03f863a0C30C2cF029C
Optimism10WETH0x4200000000000000000000000000000000000006
Optimistic Kovan69WETH0x4200000000000000000000000000000000000006
Arbitrum One42161WETH0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
Arbitrum Rinkeby421611WETH0xB47e6A5f8b33b3F17603C83a0535A9dcD7E32681
Polygon137WMATIC0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270
Polygon Mumbai80001WMATIC0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889
Helpful?