feat(universal-router-sdk): update Universal Router v2.2.0 addresses - #738
Conversation
Points V2_2_0 at the routers deployed from universal-router tag 2.2.0 (64027f3), which carries the v4-periphery bump to a7af5b34. mainnet 0xab863E752Bf67D8DCDD929EaAe9Be9dc83Fb3BbB block 26006366 sepolia 0x5093f1CDED83d99FfEd6602dA6260672ae16787c block 11732372 ink 0x8BbCAEb326AD590521a921C9e457Ee09F336B48c block 56261823 Also removes Ink's V2_1_1 entry. It was an alias to the v2.2.0 deployment, justified on the grounds that v2.2.0 was a strict superset of v2.1.1 and so served v2.1.1 callers byte-for-byte. That no longer holds: the current v2.2.0 reverts on exact-output partial fills, which v2.1.1 does not. Resolving V2_1_1 on Ink now throws rather than silently returning a router that behaves differently. Callers wanting the 2.1 line on Ink have a real V2_1_2 deployment at 0x661E93cca42AfacB172121EF892830cA3b70F08d. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
● Reviewed · against Note Approved. Updates the AssessmentThe alias removal is a deliberate, documented breaking change — v2.2.0 is no longer byte-for-byte equal to v2.1.1 after the v4-periphery bump, so resolving Tip Teach the reviewer. React 👍 on findings that helped, 👎 on false positives. Reply to push back or add context — we aggregate this weekly to tune the bot. Comment |
Graphite Automations"Request reviewers once CI passes on sdks monorepo" took an action on this PR • (09/18/26)3 reviewers were added and 1 assignee was added to this PR based on Siyu Jiang (See-You John)'s automation. |
There was a problem hiding this comment.
Note
✅ Approved — see full review in the sticky comment ↑
#738) Adds the missing changeset for #738 alongside #736's, then runs `changeset version` so this branch carries the version and changelog output directly. With no pending .changeset/*.md left, merging to main takes the Release workflow's publish path in a single step instead of queueing a separate "Version Packages" PR. @uniswap/universal-router-sdk 5.11.5 -> 5.12.0 (minor) @uniswap/v4-sdk 2.3.3 -> 2.4.0 (minor) @uniswap/router-sdk 2.11.4 -> 2.11.5 (dependent patch) @uniswap/liquidity-launcher-sdk 1.16.2 -> 1.16.3 (dependent patch) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TY25VxgCmFZA6678WWzABk
#738) Runs `changeset version` so this branch carries the version and changelog output directly. With no pending .changeset/*.md left, merging to main takes the Release workflow's publish path in a single step instead of queueing a separate "Version Packages" PR. Rebased onto current main (358d9de), which added #737's still-pending `permposm-deliverygaslimit-redeploy` changeset. That changeset is consumed here too, so this release also ships #737's sdk-core address update and the dependent patch bumps it cascades. @uniswap/universal-router-sdk 5.11.5 -> 5.12.0 (minor) @uniswap/v4-sdk 2.3.3 -> 2.4.0 (minor) @uniswap/sdk-core 7.19.2 -> 7.19.3 (patch, #737) @uniswap/router-sdk 2.11.4 -> 2.11.5 (dependent patch) @uniswap/liquidity-launcher-sdk 1.16.2 -> 1.16.3 (dependent patch) @uniswap/smart-wallet-sdk 2.8.3 -> 2.8.4 (dependent patch) @uniswap/uniswapx-sdk 3.1.1 -> 3.1.2 (dependent patch) @uniswap/v2-sdk 4.21.3 -> 4.21.4 (dependent patch) @uniswap/v3-sdk 3.31.3 -> 3.31.4 (dependent patch) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TY25VxgCmFZA6678WWzABk
…738) Both PRs merged to main without a changeset, so neither shipped. Adds a minor for #736 (new UniversalRouterVersion.V2_1_2 / URVersion.V2_1_2 enum member plus the v2.1.2 config across 24 chains) and a patch for #738 (v2.2.0 address repointing on mainnet, Sepolia and Ink, and the removal of Ink's V2_1_1 alias). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TY25VxgCmFZA6678WWzABk
#738) Runs `changeset version` so this branch carries the version and changelog output directly. With no pending .changeset/*.md left, merging to main takes the Release workflow's publish path in a single step instead of queueing a separate "Version Packages" PR. Rebased onto current main (358d9de), which added #737's still-pending `permposm-deliverygaslimit-redeploy` changeset. That changeset is consumed here too, so this release also ships #737's sdk-core address update and the dependent patch bumps it cascades. @uniswap/universal-router-sdk 5.11.5 -> 5.12.0 (minor, #736 + #738) @uniswap/v4-sdk 2.3.3 -> 2.4.0 (minor, #736) @uniswap/sdk-core 7.19.2 -> 7.19.3 (patch, #737) @uniswap/router-sdk 2.11.4 -> 2.11.5 (dependent patch) @uniswap/liquidity-launcher-sdk 1.16.2 -> 1.16.3 (dependent patch) @uniswap/smart-wallet-sdk 2.8.3 -> 2.8.4 (dependent patch) @uniswap/uniswapx-sdk 3.1.1 -> 3.1.2 (dependent patch) @uniswap/v2-sdk 4.21.3 -> 4.21.4 (dependent patch) @uniswap/v3-sdk 3.31.3 -> 3.31.4 (dependent patch) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TY25VxgCmFZA6678WWzABk
Updates
V2_2_0to the routers deployed from universal-router tag2.2.0(64027f3), which carries the v4-periphery bump toa7af5b34.0xab863E752Bf67D8DCDD929EaAe9Be9dc83Fb3BbB0x5093f1CDED83d99FfEd6602dA6260672ae16787c0x8BbCAEb326AD590521a921C9e457Ee09F336B48cEach was deployed with CREATE2 through the deterministic deployer using a zero salt, carries a 23,233-byte runtime matching the snapshot in Uniswap/universal-router#514, and is verified (Etherscan for mainnet and sepolia, Sourcify for Ink). Deployment PR: Uniswap/contracts#165.
Ink's V2_1_1 entry is removed
Ink has no v2.1.1 router. The entry was an alias to the v2.2.0 deployment, justified in a comment on the grounds that v2.2.0 was a strict superset of v2.1.1 with "no change to any existing command/struct/behavior", so it served v2.1.1 callers byte-for-byte.
That no longer holds. The current v2.2.0 pins v4-periphery past #564, which makes
V4Routerrevert on exact-output partial fills. v2.1.1 does not. Keeping the alias would silently hand v2.1.1 callers a router that behaves differently on exact-output swaps.Resolving
V2_1_1on Ink now throws, consistent with how MegaETH already behaves. Callers wanting the 2.1 line on Ink have a realV2_1_2deployment at0x661E93cca42AfacB172121EF892830cA3b70F08d.This is a breaking change for anyone currently calling
UNIVERSAL_ROUTER_ADDRESS(V2_1_1, 57073)orUNIVERSAL_ROUTER_CREATION_BLOCK(V2_1_1, 57073).Tests
Three tests updated as a consequence: the two Ink alias assertions now expect a throw, and the V2_1_2 coverage test treats Ink alongside MegaETH as a chain with 2.1.2 but no 2.1.1.
bun run testpasses: 654 hardhat, 80 forge. Lint and build clean.🤖 Generated with Claude Code