Skip to content

Universal Router 2.1.2

Choose a tag to compare

@dianakocsis dianakocsis released this 18 Sep 01:44
· 1 commit to release/2.1.x since this release
802fe4c

Universal Router 2.1.2 is the supported release for the 2.1 line and supersedes 2.1.1.

The router source is unchanged from 2.1.1. contracts/ is byte-identical between the two tags; the only differences are the pinned v4-periphery revision and the compiler settings needed to build it. There are no calldata or ABI changes, so 2.1.1 integrators can repoint at the 2.1.2 addresses without re-encoding anything.

What changed

  • Pins v4-periphery to #564.
  • Reduces the UniversalRouter optimizer runs to 3000 via a dedicated compilation profile. 2.1.1 built at the default 4444; with the updated periphery that setting produces a 24,704-byte runtime, 128 bytes over the EIP-170 limit. At 3000 the runtime is 24,380 bytes.
  • Aligns the Hardhat optimizer setting with the shipped artifact so gas snapshots describe what is actually deployed.

Deploy parameter fixes

  • Sepolia, Base Sepolia and Unichain Sepolia previously referenced v4 PoolManager and PositionManager addresses with no onchain activity. A router deployed against those cannot execute any v4 command. All three now point at the live deployments, confirmed by log activity rather than by documentation.
  • Adds deploy parameters for Arc, MegaETH, Robinhood and Tempo.

Deployments

Deployed to 24 chains from this repository, plus HyperEVM via the Uniswap contracts monorepo. Every address was verified onchain: a 24,380-byte runtime and verified source, on Etherscan V2 where available and Sourcify otherwise. For the 24 deployed here, all ten constructor parameters were checked against the deploy script.

Chain Address
Ethereum 0x23617e59A5925b2A4Bf75d73ff6711cD0b29De85
Arbitrum 0x2d01411773c8C24805306E89A41F7855C3c4Fe65
Optimism 0xC09255D86DB563cBc11C2fCf4a0C512e160111B4
Base 0xd6145b2D3F379919E8CdEda7B97e37c4b2Ca9c40
Polygon 0xDc264714F68d84CF29BC605589405E78bDBE7C9f
BNB Chain 0xDc264714F68d84CF29BC605589405E78bDBE7C9f
Linea 0xDc264714F68d84CF29BC605589405E78bDBE7C9f
Avalanche 0x661E93cca42AfacB172121EF892830cA3b70F08d
Blast 0x661E93cca42AfacB172121EF892830cA3b70F08d
Soneium 0x661E93cca42AfacB172121EF892830cA3b70F08d
Ink 0x661E93cca42AfacB172121EF892830cA3b70F08d
Worldchain 0xF025e0Fe9E331A0eF05c2ad3C4E9C64b625cda6f
Zora 0xF025e0Fe9E331A0eF05c2ad3C4E9C64b625cda6f
Celo 0xe2023F3FA515cF070e07fD9d51c1d236e07843f4
Unichain 0xD1b797D92d87B688193A2B976eFc8D577D204343
Monad 0xa6CE4F10d83dBdDAc17E68e1837ca9cE6a1b596e
X Layer 0x1cd182C94fcF42277B80DBB9060F88024809E61E
Arc 0x8702463e73f74d0b6765aBceb314Ef07aCb92650
Robinhood 0x204FAca1764B154221e35c0d20aBb3c525710498
MegaETH 0xAedd1CF4C14e833140A61E9C0d2b73a64795c823
Tempo 0x182a927119D56008d921126764bF884221b10f59
HyperEVM 0xed270a1bcdc63cf1356d695e7f40961d4819d6bf
Sepolia 0x7E4f6c5e954Da5c61B3423D81E2277431Ac043f3
Base Sepolia 0x8702463e73f74d0b6765aBceb314Ef07aCb92650
Unichain Sepolia 0xDf38F24fE153761634Be942F9d859f3DBA857E95

The HyperEVM deployment was carried out separately from the 24 above, using a deploy script that is not committed to this repository. It was built from this tag: its runtime is byte-identical to the deployments above once immutables, the contract address, the chain id and the cached EIP-712 domain separator are accounted for, with the same compiler version and optimizer settings.

Addresses are not uniform across chains. Deployment uses CREATE, so the address depends on the deployer nonce, and chains whose deploy parameters left unsupported unset deployed an UnsupportedProtocol stub first, shifting the router by one nonce.

Full changelog: 2.1.1...2.1.2