Skip to content

feat(deployments): track SwapProxy across 13 chains (incl. Arc 5042 + Robinhood 4663)#150

Closed
david-uniswap wants to merge 3 commits into
mainfrom
david/track-swapproxy-deployments
Closed

feat(deployments): track SwapProxy across 13 chains (incl. Arc 5042 + Robinhood 4663)#150
david-uniswap wants to merge 3 commits into
mainfrom
david/track-swapproxy-deployments

Conversation

@david-uniswap

@david-uniswap david-uniswap commented May 29, 2026

Copy link
Copy Markdown
Collaborator

Pull Request

Description

Tracks the canonical SwapProxy deployment across every chain it exists on by adding its entry (latest + history) to the deployment registry (deployments/json/<chainId>.json).

SwapProxy lives at the deterministic address 0x02e5be68d46dac0b524905bff209cf47ee6db2a9 on every chain. The address is produced by a plain CREATE from deployer 0xb259f71F8Fa2B0165c4d71061C4bf6c77444aC87 at nonce 0 (not CREATE2), so wherever that deployer's first transaction is the SwapProxy creation, the address is identical.

This PR adds SwapProxy tracking for 13 chains:

Chain IDs
Previously deployed 1, 10, 130, 1301, 1868, 4326, 8453, 42220, 42161, 7777777, 11155111
Newly deployed in this effort Arc 5042, Robinhood 4663

Arc and Robinhood were deployed using the canonical nonce-0 deployer so they land at the same 0x02e5…b2a9 address as all other chains.

This is a JSON-only change. Per-chain .md files and index.md are generated artifacts (forge-chronicles in CI) and are intentionally left for that tooling to regenerate.

Fixes # (n/a)

How Has This Been Tested?

No contract code changed — this is deployment-registry metadata only. Verification performed:

  • Confirmed each new deployment landed at 0x02e5…b2a9 and that the on-chain runtime bytecode is byte-identical to the canonical instances (diffed against the captured canonical initcode runtime; Arc == Robinhood == canonical).
  • Verified the deployer was at nonce 0 on each target chain before deploying, and cast compute-address <deployer> --nonce 0 resolves to the canonical address.
  • Validated all modified JSON files parse and that each SwapProxy entry matches the established schema.
  • Arc (5042): SwapProxy is fully verified on explorer.arc.io (v0.8.26, viaIR, optimizer runs 4444, cancun).
  • Robinhood (4663): source is visible on the explorer via a byte-identical verified twin.

Checklist:

Before deployment

  • 100% test and branch coverage — n/a (no contract code changed)
  • check slither for severe issues — n/a
  • fuzz and invariant tests (when applicable) — n/a
  • formal verification (when applicable) — n/a
  • deployment or upgrade scripts ready — deployed via canonical nonce-0 CREATE of the captured initcode

After deployment

  • transfer ownership after deployments (when applicable) — n/a (SwapProxy is ownerless)
  • complete upgrade (when applicable) — n/a
  • generate deployment/upgrade log files — registry entries added; .md/index.md regenerated by CI

Considerations

  • I have followed the contributing guidelines.
  • My code follows the style guidelines of this project and I have run forge fmt and prettier to ensure the code style is valid
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas — n/a (JSON registry only)
  • I have made corresponding changes to the documentation — registry is the documentation; generated .md left to CI
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works — n/a (no code change)
  • New and existing unit tests pass locally with my changes

Additional context

  • The address is deterministic via nonce-0 CREATE, so it matches across all chains regardless of initcode; the bytecode diff confirms the deployed contract is the genuine canonical SwapProxy.
  • Chain 4326 carries the same executable code at 0x02e5…b2a9 but a metadata-stripped (bytecode_hash=none) build; address and behavior are identical.

First-time tracking of SwapProxy in the deployment registry. SwapProxy is
deployed at the deterministic address 0x02e5be68d46dac0b524905bff209cf47ee6db2a9
on every chain (CREATE from deployer 0xb259f71F8Fa2B0165c4d71061C4bf6c77444aC87
at nonce 0, so the address is identical wherever that deployer's first tx is the
SwapProxy creation).

Adds a SwapProxy entry (latest + history) to the 11 chains where the canonical
0x02e5 contract exists AND the creation tx + timestamp were verifiable without an
explorer API key: 1, 10, 130, 1301, 1868, 4326, 8453, 42220, 42161, 7777777,
11155111.

Notes:
- 4326 carries the same executable code at 0x02e5 but a metadata-stripped
  (bytecode_hash=none) build; address and behavior are identical.
- JSON only. The per-chain .md and index.md are generated artifacts produced by
  forge-chronicles in CI and are intentionally left for that tooling to regenerate.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
david-uniswap and others added 2 commits June 1, 2026 10:14
Adds the SwapProxy entry (latest + history) for the two chains it was just
deployed to, at the canonical address 0x02e5be68d46dac0b524905bff209cf47ee6db2a9
(CREATE from deployer 0xb259f71F8Fa2B0165c4d71061C4bf6c77444aC87 at nonce 0, so
the address matches every other chain). Same JSON-only pattern as the prior
cross-chain tracking commit; per-chain .md + index.md are left for CI.

- Arc 5042:       tx 0x373622e70beb01a173a616900a9cf6dc761cb5ba6f0af8df24532e26748e5052
- Robinhood 4663: tx 0x33a2419d00d7073c92da3d303c5bff7252f82ffe78ffe8997a4221dd0faa3f62

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@david-uniswap david-uniswap reopened this Jun 1, 2026
@david-uniswap david-uniswap changed the title feat(deployments): track SwapProxy canonical deployment across chains feat(deployments): track SwapProxy across 13 chains (incl. Arc 5042 + Robinhood 4663) Jun 1, 2026
david-uniswap added a commit that referenced this pull request Jun 3, 2026
Adds the standard SwapProxy entry to each deployments/json/{chainId}.json
`latest` block, matching the existing schema used by other CREATE2 / vanity
contracts (Permit2, CaliburEntry): {address, proxy, deploymentTxn, timestamp,
commitHash}. CREATE2 salt/initcode/build stay in .swapproxy-deploy/create2.json
(the registry never stores those).

Address 0x0000000085E102724e78eCd2F45DC9cA239Affad on all 13 chains. Timestamps
are the real per-chain deploy block times. Supersedes the legacy 0x02e5 entry
tracked in PR #150/#137.

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.

1 participant