Universal Router 2.2.0 adds support for Uniswap v4 permissioned pools.
Highlights
- Extends the v4 router integration with
PermissionedV4Router, preserving standard v4 swaps while adding permissioned-pool support. - Supports swaps through v4 permission adapters.
- Adds Permit2-based payment and wrapping for permissioned tokens.
- Adds
permissionsAdapterFactorytoRouterParameters. - Allows permissioned-pool support to be disabled by configuring the factory as
address(0). - Retains standard v4 pool behavior alongside permissioned-pool routing.
- Sweeps permissions-adapter currencies as their underlying token.
- Pins
v4-peripherytoa7af5b34.
Breaking changes
The Universal Router constructor parameters now include permissionsAdapterFactory. Deployment tooling and constructor encoding must be updated accordingly.
Build
Built at optimizer_runs = 1 with solc 0.8.26 and the cancun EVM version, producing a 23,233-byte runtime. The v4-periphery submodule is pinned to a7af5b34.
Deployments
| Chain | Address |
|---|---|
| Ethereum | 0xab863E752Bf67D8DCDD929EaAe9Be9dc83Fb3BbB |
| Ink | 0x8BbCAEb326AD590521a921C9e457Ee09F336B48c |
| Sepolia | 0x5093f1CDED83d99FfEd6602dA6260672ae16787c |
Each address was deployed with CREATE2 through the deterministic deployer at 0x4e59b44847b379578588920cA78FbF26c0B4956C using a zero salt, and verified onchain: a 23,233-byte runtime, all eleven constructor parameters checked against the deployment transaction, and source verified on Etherscan where available and Sourcify otherwise.
Full changelog: 2.1.1...2.2.0