Verified Contract Addresses

Status note (2026-07-29). The vanity-address redeployment is live: canonical registry 0x1111113ccf1426a8e30e2bff5e005d929bf6a90a (deployed 2026-07-19 on Ethereum), canonical router 0x111111338c5091e8440b67b168bae16a668ac0de (2026-07-26, built from the 1inch/swap-vm v1.0.2 git tag). The 2026-07-16 pair (0xe8026b…139b / 0x016b41…b070) moved to the stale/historical list below.

Verification status of the vanity deployment (2026-07-29, this docs review): both contracts are source-verified on Ethereum (Blockscout; on-chain names AquaRouter / AquaSwapVMRouter) and their bytecode was spot-checked as present and identical-length on Ethereum and Base — full 13-chain verification has not been re-run for this generation, so verify per chain before integrating. On-chain checks on Ethereum: the router's AQUA() returns the vanity registry (binding proven), eip712Domain() reports name 1inch SwapVM v1.0 / version 1.0.2, and owner() returns 0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352 for both contracts. Deployment mechanism: the vanity addresses were created through a deployer factory (Ethereum creation txs: factory 0x71481C3B9C6FBa3066AE84961EA22378A80cabe7, method deploy, sender EOA 0x0BD61d605C64A857C3D94779aEf7cA295702b3A2) — unlike the 2026-07-16 generation, which used plain CREATE from the nonce-synchronized deployer EOA 0x72B4736F6e482DB07C4F3d7d3b90A24b2FedBe7a. Either way, address equality across chains does not prove identical bytecode or constructor args — verify per chain. Both repo READMEs remain stale (re-checked 2026-07-29) — do not cite them. The current SDK releases carry the canonical vanity addresses (@1inch/aqua-sdk 0.3.0, @1inch/swap-vm-sdk 0.4.0); releases 0.1.1/0.2.2 and older still return superseded addresses.

Contract Address (all 13 chains) Notes
Aqua (registry; on-chain name AquaRouter) 0x1111113ccf1426a8e30e2bff5e005d929bf6a90a Same AquaRouter source/bytecode as the superseded 0xe8026b…139b registry; redeployed 2026-07-19 (Ethereum block 25567141) to the vanity address on every chain. No EIP-712/ERC-5267 signing domain (eip712Domain() reverts). Owner 0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352 (verified on-chain on Ethereum)
AquaSwapVMRouter v1.0.2 (the deployed SwapVM router) 0x111111338c5091e8440b67b168bae16a668ac0de Deployed 2026-07-26 (Ethereum block 25618917); constructor: aqua = 0x1111113c…a90a (proven via AQUA()), EIP-712 name 1inch SwapVM v1.0, version 1.0.2 (string), owner 0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352. Built from the v1.0.2 git tag (cut 2026-07-26) — adds ProtocolFeeSkipped
KycNFT (taker credential, symbol RES) 0x26FFc7D378E8e49Be2c483295A3e3E511F96a468 Not redeployed — unchanged through the 2026-07-16 and 2026-07 vanity redeployments; configured for all 13 chains including Robinhood Chain (4663)

EIP-712 corrections. Earlier revisions of these docs stated the router's EIP-712 domain name as SwapVMRouter and gave the registry a domain of AquaRouter v1 (integer). Both were wrong: every production router generation (v1.0.1, the 2026-07-16 v1.0.2, and the current vanity router) uses the name 1inch SwapVM v1.0 with a string version (1.0.1 / 1.0.2), and the registry has no EIP-712/ERC-5267 domain at all — there is no EIP712 base contract in 1inch/aqua and eip712Domain() reverts on-chain. Rebuild domain separators with the router's constructor values (note: verifyingContract changes with each router generation); never attempt typed-data signing against the registry.

Source provenance. The current router (0x111111338c…c0de) is built from the v1.0.2 git tag of 1inch/swap-vm (cut 2026-07-26, target commit 32c687c2): relative to v1.0.1 the tag changes only src/instructions/Fee.sol — best-effort protocol-fee collection plus the ProtocolFeeSkipped event, confirmed present in the Blockscout-verified deployed source — and leaves AquaOpcodes.sol and ISwapVM untouched. The earlier 0x016b41…b070 build was the v1.0.1 tag source recompiled with new constructor args (it predates the tag). The main branch (post-PR-#154) carries a renumbered opcode enum with different miss behaviour (UnknownOpcode(uint256) revert, no reserved gaps) that is not deployed anywhere — never derive the live opcode table or revert behaviour from main.

Aggregation executors (routing infrastructure, not part of the Aqua contract surface)

The addresses below belong to the 2026-07-16 generation, redeployed alongside Aqua/SwapVM because they depend on the registry address; same address on every chain: simple 0xd7d7FE53A5FC886e1B69c7213Fb0B24ccE1511a3, protected 0xE3B94BF84310fDcec27A219cA0923F46D7137DC7. The protected executor executes only commands signed by AGGREGATION_EXECUTOR_SIGNER = 0x4447696e7878c0fa2c581768f04c3871a9a57b76. Whether the executors were redeployed again for the vanity-registry generation has not been confirmed in these docs (2026-07-29) — executors are internal 1inch routing infrastructure, deliberately never source-verified (team policy), and their constructor args differ per chain while the address stays identical — a concrete illustration that shared-address equality does not imply identical init code.

Stale / historical (do not cite as current)

  • 0xe8026bf31e58b738647319362581ab11be92139b — universal Aqua registry from 2026-07-16; superseded 2026-07-19 by the vanity registry 0x1111113c…a90a. Historical/decoding only.
  • 0x016b417bc933370f5eacc40b1d58b015ac72b070 — AquaSwapVMRouter v1.0.2-recompile from 2026-07-16, bound to 0xe8026b…139b; superseded by the vanity router 0x111111338c…c0de. Historical/decoding only.
  • 0x1111113db0e0ef9d0e3a50d5f094a3a57a26c0de — first vanity AquaSwapVMRouter (2026-07-19, Ethereum block 25567144); superseded 2026-07-26 by the current router (per the @1inch/swap-vm-sdk 0.4.0 constants note). Historical/decoding only.
  • 0x4a055aa172c98ec32de118b9b5b6ac8b4099a580 — Aqua registry on the original 12 chains until 2026-07-16; superseded by 0xe8026b…139b. Historical/decoding only.
  • 0x3c4758979ec30ca45857cabc2462a70699ed790e — AquaSwapVMRouter v1.0.1 (2026-06-16); superseded 2026-07-16. Historical/decoding only.
  • 0x7c2d4aa5c900c08004fadb1c0d953c5b099fec86 — Robinhood-only registry (CREATE3, 2026-06-10); superseded by the universal registry.
  • 0xa5368dd669c5706256cf417b66e71a1efe1d331a — Robinhood-only SwapVM router (CREATE3, 2026-06-10); superseded by the universal router.
  • 0x499943e74fb0ce105688beee8ef2abec5d936d31 — pre-deployment placeholder in the 1inch/aqua README; never existed on-chain.
  • 0x8fdd04dbf6111437b44bbca99c28882434e0958f — stale router in the 1inch/swap-vm README.
  • 0xdfd05fe230bfe7b212878414270c72c8345506fa — superseded router (2026-03-27, no KYC opcode); historical/decoding only.

Strategies shipped against a superseded registry/router remain active on that deployment until the maker docks and re-ships on the current one — decode their history there, but never route new orders to them.

Ownership: per the PT1-690 deployment report (pipeline aqua-redeploy / prod-v1.0.2, executed 2026-07-16 16:28–16:58 UTC), the 2026-07-16 registry and router were deployed with owner 0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352 on every chain; the current vanity registry and router report the same owner (verified on-chain via owner() on Ethereum, 2026-07-29). That owner is an EOA, held as an interim arrangement — the final ownership transfer will occur once everything is set up and working (blockchain team, 2026-07-17). The KycNFT owner/minter remains the single EOA 0x0bd61D605c64A857c3d94779aEF7cA295702b3A2 (not a multisig; multisig migration proposed, not executed) — the same EOA that sent the vanity-deploy factory transactions. See Supported chains for the chain table.


Per-chain deployment

All three contracts share one address on every chain. Verify on-chain before integrating; a shared address does not by itself guarantee identical bytecode or constructor args across chains — check per chain.

Chain Chain ID Explorer (router)
Ethereum 1 etherscan.io
Optimism 10 optimistic.etherscan.io
BNB Chain 56 bscscan.com
Gnosis 100 gnosisscan.io
Unichain 130 uniscan.xyz
Polygon 137 polygonscan.com
Sonic 146 sonicscan.org
zkSync Era 324 era.zksync.network
Robinhood Chain 4663 robinhoodchain.blockscout.com
Base 8453 basescan.org
Arbitrum 42161 arbiscan.io
Avalanche 43114 snowtrace.io
Linea 59144 lineascan.build

Testnet: from the 2026-07-16 pipeline run, that generation's four contracts (registry, router, both executors) went live on Sepolia (chain ID 11155111). For the vanity generation, as of 2026-07-29 the registry is live on Sepolia at the canonical address but the router is not yet — re-verify on-chain before testnet use. Sepolia is not part of the production Aqua chain set.

Machine-readable

The SDK constants AQUA_CONTRACT_ADDRESSES[chainId] (registry) and AQUA_SWAP_VM_CONTRACT_ADDRESSES[chainId] (router) are the intended integration path, and the current releases carry the canonical vanity addresses (@1inch/aqua-sdk 0.3.0, @1inch/swap-vm-sdk 0.4.0 — verified from the published packages, 2026-07-29). Older releases are wrong: 0.1.1 → 0x4a055a… / Robinhood 0x7c2d4a…; 0.2.2 → 0x3c4758… (its Robinhood entry was wrong even pre-redeploy — it listed 0x3c4758… while Robinhood's actual router at the time was 0xa5368d…). Pin exact SDK versions ≥ 0.3.0 / 0.4.0, or pin from this page: registry 0x1111113ccf1426a8e30e2bff5e005d929bf6a90a, router 0x111111338c5091e8440b67b168bae16a668ac0de, KycNFT 0x26FFc7D378E8e49Be2c483295A3e3E511F96a468. For backfill, read each contract creation block from the block explorer (per-chain; Ethereum: registry 25567141, router 25618917); for older history, decode against the superseded set above.

Did you find what you need?