Skip to main content
Helpful?

Uniswap Contract Deployments

The latest version of @uniswap/v3-core, @uniswap/v3-periphery, and @uniswap/swap-router-contracts 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, Goerli, Arbitrum, Optimism, Polygon AddressCelo AddressBNB AddressBase Address
UniswapV3Factory0x1F98431c8aD98523631AE4a59f267346ea31F9840xAfE208a311B21f13EF87E33A90049fC17A7acDEc0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F70x33128a8fC17869897dcE68Ed026d694621f6FDfD
Multicall20x5BA1e12693Dc8F9c48aAD8770482f4739bEeD6960x633987602DE5C4F337e3DbF265303A10803242040x963Df249eD09c358A4819E39d9Cd5736c30871840x091e99cb1C49331a94dD62755D168E941AbD0693
ProxyAdmin0xB753548F6E010e7e680BA186F9Ca1BdAB2E90cf20xc1b262Dd7643D4B7cA9e51631bBd900a564BF49A0xC9A7f5b73E853664044ab31936D0E6583d8b1c790x3334d83e224aF5ef9C2E7DDA7c7C98Efd9621fA9
TickLens0xbfd8137f7d1516D3ea5cA83523914859ec47F5730x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D0xD9270014D396281579760619CCf4c3af0501A47C0x0CdeE061c75D43c82520eD998C23ac2991c9ac6d
Quoter0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB60x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8
SwapRouter0xE592427A0AEce92De3Edee1F18E0157C058615640x5615CDAb10dc425a742d643d949a7F474C01abc4
NFTDescriptor0x42B24A95702b9986e82d421cC3568932790A48Ec0xa9Fd765d85938D278cb0b108DbE4BF71868311860x831d93E55AF23A2977E4DA892d5005f4F29950710xF9d1077fd35670d4ACbD27af82652a8d84577d9F
NonfungibleTokenPositionDescriptor0x91ae842A5Ffd8d12023116943e72A606179294f30x644023b316bB65175C347DE903B60a756F6dd5540x0281E98322e4e8E53491D576Ee6A2BFCE644C55C0x4f225937EDc33EFD6109c4ceF7b560B2D6401009
TransparentUpgradeableProxy0xEe6A57eC80ea46401049E92587E52f5Ec1c247850x505B43c452AA4443e0a6B84bb37771494633Fde90xAec98e489AE35F243eB63452f6ad233A6c97eE970x4615C383F85D0a2BbED973d83ccecf5CB7121463
NonfungiblePositionManager0xC36442b4a4522E871399CD717aBDD847Ab11FE880x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A0x7b8A01B39D58278b5DE7e48c8449c9f4F51706130x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1
V3Migrator0xA5644E29708357803b5A882D272c41cC0dF92B340x3cFd4d48EDfDCC53D3f173F596f621064614C5820x32681814957e0C13117ddc0c2aba232b5c9e760f0x23cF10b1ee3AdfCA73B0eF17C07F7577e7ACd2d7
QuoterV20x61fFE014bA17989E743c5F6cB21bF9697530B21e0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E80x78D78E420Da98ad378D7799bE8f4AF69033EB0770x3d4e44Eb1374240CE5F1B871ab261CD16335B76a
SwapRouter020x68b3465833fb72A70ecDF485E0e4C7bD8665Fc450x5615CDAb10dc425a742d643d949a7F474C01abc40xB971eF87ede563556b2ED4b1C0b0019111Dd85d20x2626664c2603336E57B271c5C0b26F421741e481
Permit20x000000000022d473030f116ddee9f6b43ac78ba30x000000000022d473030f116ddee9f6b43ac78ba30x000000000022d473030f116ddee9f6b43ac78ba30x000000000022D473030F116dDEE9F6B43aC78BA3
UniversalRouter0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD0x5Dc88340E1c5c6366864Ee415d6034cadd1A98970x5302086A3a25d473aAbBd0356eFf8Dd811a4d89B0x198EF79F1F515F02dFE9e3115eD9fC07183f02fC

Sepolia Addresses

ContractEthereum Sepolia AddressBase Sepolia AddressOP Sepolia AddressArbitrum Sepolia
UniswapV3Factory0x0227628f3F023bb0B980b67D528571c95c6DaC1c0x4752ba5DBc23f44D87826276BF6Fd6b1C372aD240x4752ba5DBc23f44D87826276BF6Fd6b1C372aD240x248AB79Bbb9bC29bB72f7Cd42F17e054Fc40188e
Multicall20xD7F33bCdb21b359c8ee6F0251d30E94832baAd070xd867e273eAbD6c853fCd0Ca0bFB6a3aE6491d2C10xd867e273eAbD6c853fCd0Ca0bFB6a3aE6491d2C10x2B718b475e385eD29F56775a66aAB1F5cC6B2A0A
ProxyAdmin``0xD7303474Baca835743B54D73799688990f24a79D0xD7303474Baca835743B54D73799688990f24a79D``
TickLens0xd7f33bcdb21b359c8ee6f0251d30e94832baad070xedf6066a2b290C185783862C7F4776A2C8077AD10xedf6066a2b290C185783862C7F4776A2C8077AD10x0fd18587734e5C2dcE2dccDcC7DD1EC89ba557d9
NFTDescriptor``0x4e0caFF1Df1cCd7CF782FDdeD77f020699B57f1a0x4e0caFF1Df1cCd7CF782FDdeD77f020699B57f1a``
NonfungibleTokenPositionDescriptor``0xd7c6e867591608D32Fe476d0DbDc95d0cf584c8F0xd7c6e867591608D32Fe476d0DbDc95d0cf584c8F``
TransparentUpgradeableProxy``0x1E2A708040Eb6Ed08893E27E35D399e8E8e7857E0x1E2A708040Eb6Ed08893E27E35D399e8E8e7857E``
NonfungiblePositionManager0x1238536071E1c677A632429e3655c799b22cDA520x27F971cb582BF9E50F397e4d29a5C7A34f11faA20x27F971cb582BF9E50F397e4d29a5C7A34f11faA20x6b2937Bde17889EDCf8fbD8dE31C3C2a70Bc4d65
V3Migrator0x729004182cF005CEC8Bd85df140094b6aCbe8b150xCbf8b7f80800bd4888Fbc7bf1713B80FE4E23E100xCbf8b7f80800bd4888Fbc7bf1713B80FE4E23E100x398f43ef2c67B941147157DA1c5a868E906E043D
QuoterV20xEd1f6473345F45b75F8179591dd5bA1888cf2FB30xC5290058841028F1614F3A6F0F5816cAd0df5E270xC5290058841028F1614F3A6F0F5816cAd0df5E270x2779a0CC1c3e0E44D2542EC3e79e3864Ae93Ef0B
SwapRouter020x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc40x94cC0AaC535CCDB3C01d6787D6413C739ae12bc40x101F443B4d1b059569D643917553c771E1b9663E
Permit20x000000000022D473030F116dDEE9F6B43aC78BA30x000000000022d473030f116ddee9f6b43ac78ba30x000000000022d473030f116ddee9f6b43ac78ba30x000000000022d473030f116ddee9f6b43ac78ba3
UniversalRouter0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD0x050E797f3625EC8785265e1d9BDd4799b97528A10xD5bBa708b39537d33F2812E5Ea032622456F1A950x4A7b5Da61326A6379179b40d00F57E5bbDC962c2
v3StakerAddress``0x62725F55f50bdE240aCa3e740D47298CAc8d57D50x62725F55f50bdE240aCa3e740D47298CAc8d57D5``

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

Uniswap V3 Staker

An up-to-date list of deploy addresses by chain is hosted on Github for the UniswapV3Staker contract.

Universal Router

The UniversalRouter contract is the current preferred entrypoint for ERC20 and NFT swaps, replacing, among other contracts, SwapRouter02. An up-to-date list of deploy addresses by chain is hosted on Github.

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
Goerli5WETH0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6
Arbitrum42161WETH0x82aF49447D8a07e3bd95BD0d56f35241523fBab1
Arbitrum Goerli421613WETH0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3
Optimism10WETH0x4200000000000000000000000000000000000006
Optimism Goerli420WETH0x4200000000000000000000000000000000000006
Polygon137WMATIC0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270
Polygon Mumbai80001WMATIC0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889
Binance Smart Chain56WBNB0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c
Base8453WETH0x4200000000000000000000000000000000000006
Helpful?