Status note (2026-07-29). The vanity-address redeployment is live: canonical registry
0x1111113ccf1426a8e30e2bff5e005d929bf6a90a(deployed 2026-07-19 on Ethereum), canonical router0x111111338c5091e8440b67b168bae16a668ac0de(2026-07-26, built from the1inch/swap-vmv1.0.2git 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 registry0x1111113c…a90a. Historical/decoding only.0x016b417bc933370f5eacc40b1d58b015ac72b070— AquaSwapVMRouter v1.0.2-recompile from 2026-07-16, bound to0xe8026b…139b; superseded by the vanity router0x111111338c…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-sdk0.4.0 constants note). Historical/decoding only.0x4a055aa172c98ec32de118b9b5b6ac8b4099a580— Aqua registry on the original 12 chains until 2026-07-16; superseded by0xe8026b…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 the1inch/aquaREADME; never existed on-chain.0x8fdd04dbf6111437b44bbca99c28882434e0958f— stale router in the1inch/swap-vmREADME.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.