Skip to content

feat(ink): deploy missing periphery + SwapProxy to Ink (57073)#152

Merged
marktoda merged 1 commit into
david/swapproxy-create2from
david/ink-deployment
Jun 9, 2026
Merged

feat(ink): deploy missing periphery + SwapProxy to Ink (57073)#152
marktoda merged 1 commit into
david/swapproxy-create2from
david/ink-deployment

Conversation

@david-uniswap

@david-uniswap david-uniswap commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Completes the Ink (chain 57073) Uniswap deployment by deploying the periphery that was missing and recording it in the registry. The pre-existing v2/v3 (Protofire) and v4 core + the Jan-2025 UniversalRouter are adopted as-is (deploy:false, addresses recorded).

Stacked on #151 (SwapProxy CREATE2). Merge #151 first; this branch includes its commits.

Deployed & verified

All 9 source-verified on explorer.inkonchain.com:

Contract Address
PermissionsAdapterFactory 0xd8eeBA7c373d612F24660e45Fa96f5d95B0C9d16
View Quoter (view-quoter-v3) 0x89e5db8b5aa49aa85ac63f691524311aeb649eba
MixedRouteQuoterV2 0x1f7d7550b1b028f7571e69a784071f0205fd2efa
UniversalRouter#v2.2 0x28bd21bb4ea4fda370d8d7544992038375d8d456
Calibur (CaliburEntry) 0x000000009b1d0af20d8c6d0a44e162d11f9b8f00
FeeOnTransferDetector 0x282a3c4d320cc7f0d5eaf56b8029e4b88338f0a3
FeeCollector 0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7
ERC7914Detector 0xc470458fc6a7e43471b31e6a2eb2612215a7102e
SwapProxy (CREATE2) 0x0000000085E102724e78eCd2F45DC9cA239Affad

Ownership

  • FeeCollector deployed under the deployer EOA, then transferOwnership'd to the canonical AWS KMS fee owner 0xbE84D31B2eE049DCb1d8E7c798511632b44d1b55 (the same owner used on all other fee-collecting chains; an operational key, not the Timelock).
  • v3/v4 governance ownership unchanged (v4 = aliased L1 Timelock 0x2BAD…46CD; v3 factory = cross-chain account → L1 Timelock).

Scope notes

  • The v2.2 UR is keyed UniversalRouter#v2.2; the existing Jan-2025 UniversalRouter (0x112908…) is preserved.
  • PermissionsAdapterFactory is deployed because the v2.2 UR constructor requires it (not the heavier PermissionedPositionManager/Hooks).
  • Skipped per scope: UniswapX reactors, aggregator hooks, PermissionedPositionManager/Hooks, UR v2.0.
  • .md registry left for CI regeneration (per feat(swapproxy): deterministic CREATE2 deployment #151 convention).

Pre-existing v2 / v3 on Ink (adopted, NOT deployed in this PR)

Ink already had Uniswap v2 + v3, deployed by Protofire (deployer EOA 0xC3cd79013d190518C5CDE0805194d31D839b76F7) in Dec 2024 via the governance "[RFC] Deploy Uniswap V3 on Ink" (gov topic 25080) and listed on the official v3 deployments registry. This PR adopts them as-is (the new UR/quoters/etc. wire to these addresses); we did not deploy or modify them. Recorded here for completeness/visibility:

v2:

  • UniswapV2Factory 0xfe57A6BA1951F69aE2Ed4abe23e0f095DF500C04

v3:

  • UniswapV3Factory 0x640887A9ba3A9C53Ed27D0F7e8246A4F933f3424
  • NonfungiblePositionManager 0xC0836E5B058BBE22ae2266e1AC488A1A0fD8DCE8
  • NonfungibleTokenPositionDescriptor (proxy) 0xa1168fd2Cb5acEC1F0B100593A1858f47b399A7B (impl 0x2079bc044AEe33146bB63674DC2502c69E821Af9)
  • NFTDescriptor (library) 0x987ca6B9cC569dE1a0340d2465DA8E4Aa4B14aa5
  • ProxyAdmin 0x9B65c0df5aFffB95E75Aa5cAD81F3Fe2368446f1
  • QuoterV2 0x96b572D2d880cf2Fa2563651BD23ADE6f5516652
  • TickLens 0x3e6Dba802d62aba2361Dd632fbC9f547AA6789aE
  • SwapRouter02 0x177778F19E89dD1012BdBe603F144088A95C4B53
  • UniswapInterfaceMulticall 0xA0fCec583AeE6176527C07B198e5561722332014

(No standalone v2 Router02 — v2 routing goes through SwapRouter02 / the Universal Router. Protofire also deployed an older UniversalRouter 0x9C5577aEF7c2a5C80aA62bA5420170F6b4a302FF, separate from the two URs recorded in this PR.)

Follow-ups (not in this PR)

  • Reclaim the v2 feeToSetter to governance. Ink's v2 Factory (0xfe57A6BA1951F69aE2Ed4abe23e0f095DF500C04) still has feeToSetter = 0xC3cd79013d190518C5CDE0805194d31D839b76F7 — the Protofire deployer EOA from the original v3 RFC deploy, never handed to governance (the v3 factory was migrated to the cross-chain forwarder 0x66c5…0B91 → L1 Timelock; canonical mainnet v2 uses the Timelock as feeToSetter). feeTo is 0x0 (protocol fee off), so there's no active fee, but it's a minor centralization loose end: the holder of that EOA could enable the v2 protocol fee and direct it to themselves. This PR can't fix itsetFeeToSetter is callable only by the current feeToSetter (Protofire's key, which we don't control). Action: flag to Protofire / the Uniswap Accountability Committee to transfer the v2 feeToSetter to the same governance target as v3/v4.

🤖 Generated with Claude Code

Deploys the Uniswap periphery missing on Ink and records addresses (existing v2/v3 Protofire + v4 Jan-2025 cores adopted as-is, deploy:false):
- PermissionsAdapterFactory 0xd8eeBA7c373d612F24660e45Fa96f5d95B0C9d16
- View Quoter 0x89e5db8b5aa49aa85ac63f691524311aeb649eba
- MixedRouteQuoterV2 0x1f7d7550b1b028f7571e69a784071f0205fd2efa
- UniversalRouter#v2.2 0x28bd21bb4ea4fda370d8d7544992038375d8d456 (Across spokePool 0xeF684C38F94F48775959ECf2012D7E864ffb9dd4)
- Calibur/CaliburEntry 0x000000009b1d0af20d8c6d0a44e162d11f9b8f00
- FeeOnTransferDetector 0x282a3c4d320cc7f0d5eaf56b8029e4b88338f0a3
- FeeCollector 0x33e885ed0ec9bf04ecfb19341582aadcb4c8a9e7
- ERC7914Detector 0xc470458fc6a7e43471b31e6a2eb2612215a7102e
- SwapProxy 0x0000000085E102724e78eCd2F45DC9cA239Affad (CREATE2, PR #151 flow)

FeeCollector deployed under deployer EOA then transferOwnership'd to the canonical AWS KMS fee owner 0xbE84D31B2eE049DCb1d8E7c798511632b44d1b55 (matches all other fee-collecting chains). All 9 source-verified on explorer.inkonchain.com.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@marktoda marktoda merged commit d3739da into david/swapproxy-create2 Jun 9, 2026
3 checks passed
david-uniswap added a commit that referenced this pull request Jun 11, 2026


Keeps this PR SwapProxy-only. The Ink v4/periphery registry (deployments/json/57073.json), the regenerated 57073.md, the Deploy-all broadcast, and the deploy task were recorded here via the #152 merge; they now live in the standalone Ink registry PR #153 (off main). The SwapProxy cross-chain record for Ink stays in .swapproxy-deploy/create2.json (this PR's domain).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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