Skip to content

feat(universal-router-sdk): update Universal Router v2.2.0 addresses - #738

Merged
dianakocsis merged 1 commit into
mainfrom
feat/ur-sdk-v2-2-0-addresses
Sep 18, 2026
Merged

dianakocsis merged 1 commit into
mainfrom
feat/ur-sdk-v2-2-0-addresses

Conversation

@dianakocsis

Copy link
Copy Markdown
Contributor

Updates V2_2_0 to the routers deployed from universal-router tag 2.2.0 (64027f3), which carries the v4-periphery bump to a7af5b34.

Chain Address Creation block
Ethereum 0xab863E752Bf67D8DCDD929EaAe9Be9dc83Fb3BbB 26006366
Sepolia 0x5093f1CDED83d99FfEd6602dA6260672ae16787c 11732372
Ink 0x8BbCAEb326AD590521a921C9e457Ee09F336B48c 56261823

Each 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 V4Router revert 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_1 on Ink now throws, consistent with how MegaETH already behaves. Callers wanting the 2.1 line on Ink have a real V2_1_2 deployment at 0x661E93cca42AfacB172121EF892830cA3b70F08d.

This is a breaking change for anyone currently calling UNIVERSAL_ROUTER_ADDRESS(V2_1_1, 57073) or UNIVERSAL_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 test passes: 654 hardhat, 80 forge. Lint and build clean.

🤖 Generated with Claude Code

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>
@dianakocsis
dianakocsis requested a review from a team as a code owner September 18, 2026 20:13
@graphite-app
graphite-app Bot requested a review from a team September 18, 2026 20:13
@graphite-app
graphite-app Bot requested a review from a team September 18, 2026 20:13
@github-actions

github-actions Bot commented Sep 18, 2026 •

Copy link
Copy Markdown
Contributor

● Reviewed · against e32a743 · 2026-09-18 20:17 UTC · view run ↗

Note

Approved.

Updates the V2_2_0 router addresses/creation blocks for Ethereum, Sepolia, and Ink, and removes Ink's V2_1_1 alias so it now throws instead of silently serving a v2.2.0 router with divergent exact-output revert semantics.

Assessment

The 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 V2_1_1 on Ink now fails closed, consistent with MegaETH. The three test updates match the new behavior: the two alias assertions expect the exact throw string, and the V2_1_2 coverage test adds Ink alongside MegaETH as a chain with 2.1.2 but no 2.1.1. On-chain address/byte correctness against the actual deployments is external provenance (Etherscan/Sourcify, the deployment PR) and not verifiable from source.

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 @request-claude-review to re-run.

@graphite-app

graphite-app Bot commented Sep 18, 2026

Copy link
Copy Markdown

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.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

✅ Approved — see full review in the sticky comment ↑

@dannythedawger dannythedawger left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@dianakocsis
dianakocsis merged commit 5cdddb0 into main Sep 18, 2026
10 checks passed
@dianakocsis
dianakocsis deleted the feat/ur-sdk-v2-2-0-addresses branch September 18, 2026 21:03
claude Bot pushed a commit that referenced this pull request Sep 18, 2026
#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
claude Bot pushed a commit that referenced this pull request Sep 18, 2026
#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
claude Bot pushed a commit that referenced this pull request Sep 18, 2026
…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
claude Bot pushed a commit that referenced this pull request Sep 18, 2026
#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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants