Contract and docs versions. These docs were last reviewed against source on 2026-07-08 (1inch/aqua, 1inch/swap-vm, 1inch/sdks); contract addresses re-verified on-chain on 2026-07-29 after the 2026-07 vanity-address redeployment (registry 2026-07-19, router 2026-07-26), and source provenance re-verified against GitHub and Blockscout on 2026-07-29 (v1.0.2 tag, SDK 0.3.0/0.4.0 constants).
Status note (2026-07-29). The vanity-address redeployment announced on 2026-07-17 has landed: canonical registry
0x1111113ccf1426a8e30e2bff5e005d929bf6a90a, canonical router0x111111338c5091e8440b67b168bae16a668ac0de. The manifest below describes the live vanity deployment; the 2026-07-16 pair moved to the superseded arrays.
Contracts
| Component | Version | Address / note |
|---|---|---|
| AquaSwapVMRouter | v1.0.2 (current) | 0x111111338c5091e8440b67b168bae16a668ac0de, deployed 2026-07-26 (Ethereum block 25618917); on-chain: EIP-712 name 1inch SwapVM v1.0, version 1.0.2 (string), AQUA() = 0x1111113c…a90a. Built from the v1.0.2 git tag (cut 2026-07-26, commit 32c687c2) — adds best-effort protocol-fee collection and ProtocolFeeSkipped |
| AquaSwapVMRouter | superseded | 0x016b41…b070 (2026-07-16, v1.0.1-source recompile); 0x1111113db0…c0de (first vanity router, 2026-07-19–26); 0x3c4758…790e (v1.0.1, 2026-06-16); 0xa5368d…331a (Robinhood CREATE3); 0xdfd05f…06fa (no KYC opcode); 0x8fdd04…958f (older 28-opcode build) — do not target |
| Aqua registry | no signing domain | 0x1111113ccf1426a8e30e2bff5e005d929bf6a90a (vanity, 2026-07-19; same bytecode as the 2026-07-16 registry). No EIP-712/ERC-5267 domain — eip712Domain() reverts. Superseded: 0xe8026b…139b (universal, 2026-07-16), 0x4a055a…a580 (original 12 chains), 0x7c2d4a…ec86 (Robinhood CREATE3) |
| SDK | @1inch/aqua-sdk 0.3.0 · @1inch/swap-vm-sdk 0.4.0 |
Current releases carry the canonical vanity addresses (verified from the published packages, 2026-07-29). Releases ≤ 0.1.1 / 0.2.2 still return superseded addresses — upgrade or pin from Verified contract addresses. Strategy bytecode is opcode-table-versioned. |
Docs
- 2026-07-29 — Vanity redeployment recorded; SDKs and API caught up. The redeployment announced in entry (c) landed in two steps (Ethereum data, per Blockscout creation transactions): registry
0x1111113ccf1426a8e30e2bff5e005d929bf6a90adeployed 2026-07-19 (block 25567141, same bytecode as0xe8026b…139b), and the current router0x111111338c5091e8440b67b168bae16a668ac0dedeployed 2026-07-26 (block 25618917), superseding a first vanity router0x1111113db0e0ef9d0e3a50d5f094a3a57a26c0de(2026-07-19, block 25567144). The vanity addresses are created through a deployer factory (0x71481C…abe7, methoddeploy, sender EOA0x0BD61d…3A2) — unlike the plain-CREATE2026-07-16 generation. Source provenance correction:1inch/swap-vmnow has av1.0.2git tag (cut 2026-07-26, commit32c687c2), retiring entry (b)'s "no v1.0.2 tag" finding; relative to v1.0.1 it changes onlysrc/instructions/Fee.sol(best-effort protocol-fee collection + newProtocolFeeSkipped(bytes32,address,address,uint256)event, topic00x0b2957…6e97, confirmed in the Blockscout-verified deployed source), leavingISwapVMandAquaOpcodes.solunchanged — the 5-argquote/swapsurface and the opcode table carry over. On-chain checks (Ethereum): routerAQUA()= the vanity registry,eip712Domain()=1inch SwapVM v1.0/1.0.2,owner()=0x4134e6…C352for both contracts; both source-verified on Blockscout. SDK releases@1inch/aqua-sdk0.3.0 and@1inch/swap-vm-sdk0.4.0 carry the canonical vanity constants (verified from the published packages) — the "SDKs stale" caveat from entries (a)/(c) is retired. The Aqua API is live (https://api.1inch.com/aqua, e.g.GET /v1.0/strategies/opened; 401 without a key). Still stale: both repo READMEs. Sepolia: the vanity registry is live, the vanity router not yet (2026-07-29). Per-chain verification beyond Ethereum + Base spot checks has not been re-run for this generation. Updated pages: Contract Addresses, Verified Contract Addresses, Events & Interfaces, SDK overview, API introduction/quick start, this Changelog. - 2026-07-17 (d) — Deployment report ingested; ownership and verification finalized. The PT1-690 deployment report (pipeline
aqua-redeploy/prod-v1.0.2, presetaqua v1-r2, executed 2026-07-16 16:28–16:58 UTC) is published at 16/07/2026 update - Aqua + SwapVM v1.0.2 universal redeploy. It confirms: owner0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352on every chain for both registry and router — an interim EOA, with the final ownership transfer to occur once everything is set up and working; constructorname/version=1inch SwapVM v1.0/1.0.2on every chain; the aggregation executors landed at the same addresses on all chains with per-chain constructor args (plain-CREATEaddress equality does not imply identical init code), and the protected executor executes only commands signed byAGGREGATION_EXECUTOR_SIGNER 0x4447696e7878c0fa2c581768f04c3871a9a57b76; executors are deliberately never source-verified (policy). Aqua and the router are source-verified on all chains (in-pipeline everywhere except zkSync Era and the Avalanche registry, completed manually afterwards). The same four contracts are also live on Sepolia (11155111) — testnet, not part of the production chain set. Repo READMEs will be updated after the final (vanity-address) deployment. - 2026-07-17 (c) — Consumer sync confirmed; vanity-address redeployment announced. Backend confirms the 2026-07-16 addresses are in sync across all 1inch platforms — dApp, aqua-api, swap-builder-api, swap-api and FUSE — so the "consumers are still being repointed" caveat from entries (a)/(b) is retired (published npm SDKs remain on the pre-2026-07-16 set). Backend also announced a further redeployment of Aqua and SwapVM to vanity addresses (final addresses not yet available as of 2026-07-17): the registry/router addresses in this manifest will be superseded when it lands, and the address pages carry a dated status note until then. The EIP-712 domain-name findings from entry (b) are with the backend team for the SDK-side fix.
- 2026-07-17 (b) — Source-verification corrections (GitHub review of
1inch/swap-vm,1inch/aqua,1inch/sdks, committed broadcasts, and on-chain state). Four corrections to the entry below and to the address pages: (1) Deployment mechanism — the universal addresses are produced by plainCREATEfrom the nonce-synchronized deployer EOA0x72B4736F6e482DB07C4F3d7d3b90A24b2FedBe7a(broadcasttransactionType: CREATE,to: null; creator confirmed on chains 1, 324, 4663), notCREATE2as first recorded; CREATE3 was used only for the superseded June Robinhood-only pair. Under plainCREATEthe shared address does not commit to init code — address equality across chains does not prove identical bytecode/constructor args; verify per chain. (2) Source provenance — there is no v1.0.2 git tag; the deployed v1.0.2 router is the v1.0.1 tag source (b6e4f971, =release/1.0.1tip) recompiled with new constructor args. The unreleasedmain(19b4d6b, post-PR-#154) carries a renumbered opcode enum (no reserved gaps,UnknownOpcode(uint256)revert) that is not deployed — never derive the live opcode table frommain. (3) Registry signing domain withdrawn — the registry has no EIP-712/ERC-5267 domain (noEIP712base in1inch/aquasrc;eip712Domain()reverts on-chain); the earlierAquaRouter/v1(integer) claim was wrong. Only the router has a signing domain. (4) Opcode-table claims scoped — reserved gaps[0..9]/[22..26]andPanic(0x32)beyond-table behaviour are confirmed for the deployed v1.0.1-source builds (v1.0.1 and the v1.0.2 recompile) and are false onmain. Adjacent stale surfaces flagged for repo owners: swap-vm-sdkconstants.tscomment names the domainAquaSwapVMRouter(actual1inch SwapVM v1.0); swap-vm-sdk 0.2.x listed Robinhood's router as0x3c4758…when it was0xa5368d…; both SDK READMEs still show Unichain as1301(actual130); both contract-repo README address tables remain stale. Per-chain deploy configs (pipelinesswap-vm-4-aqua,full-deploy-factory3) live in internal CI, not GitHub, so per-chain owner values remain unverified beyond Ethereum. - 2026-07-17 (a) — Universal redeployment recorded. On 2026-07-16 Aqua was redeployed on all chains to one universal address set, ending Robinhood's chain-specific deployment: registry
0xe8026bf31e58b738647319362581ab11be92139b, AquaSwapVMRouter v1.0.20x016b417bc933370f5eacc40b1d58b015ac72b070(both Sourcify exact-match verified 2026-07-16). [Correction 2026-07-17 (b): this entry originally said "universalCREATE2address set"; the mechanism is plainCREATEfrom a nonce-synchronized deployer EOA.] The dependent 1inch aggregation executors were redeployed alongside (simple0xd7d7FE53A5FC886e1B69c7213Fb0B24ccE1511a3, protected0xE3B94BF84310fDcec27A219cA0923F46D7137DC7— 1inch routing infrastructure, not part of the Aqua contract surface).KycNFTunchanged (0x26FF…a468). Robinhood Chain (4663) joined the Aqua chain set (now 13 chains). Old registry/routers moved to the superseded list; strategies shipped there remain active until makers re-ship. Consumer services (routing, APIs, SDKs) are being repointed — published SDK releases still return superseded addresses. [Correction 2026-07-17 (c): platform repointing completed — dApp, aqua-api, swap-builder-api, swap-api and FUSE confirmed in sync; only the npm SDKs remain on the old set.] EIP-712 correction: the router domain name is1inch SwapVM v1.0(verified constructor arg for both v1.0.1 and v1.0.2), notSwapVMRouteras stated in the 2026-07-08 review. Updated pages: Contract Addresses, Verified Contract Addresses, Supported chains, this Changelog. - 2026-07-08 — Source-verified Events, Encoding, opcode table, Pegged curve, per-chain deploy blocks; SDK browser + raw-ABI; Access & resolvers; Risks; Data & analytics; comparison, glossary, capability pages. Terminology and trade→swap pass. Rulebook D1/D2 (external docs describe only current state; APIs/MCP/x402 → 1inch Business).
Version manifest (machine-readable)
The block below pins every moving part of the deployed v1.0.2 release — router, registry and KycNFT addresses, the chain set, the opcode-table binding, and the exact SDK package versions — in one JSON object that indexers and CI can diff against. It restates values from the Verified contract addresses, Supported chains and opcode pages; those pages remain the prose source of truth.
All three contracts share one address on every one of the 13 chains, but that is an operational convention, not a guarantee: the addresses come from plain CREATE by a nonce-synchronized deployer EOA and do not commit to init code. Verify each address on-chain per chain before pinning. The manifest carries no cross-chain semantics: each chain is an independent deployment with its own registry state and its own KYC set.
Solidity
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
{
"manifestVersion": "2026-07-29",
"release": "v1.0.2",
"addressModel": "shared-address-across-chains",
"vanityRedeployment": {
"announced": "2026-07-17",
"landedRegistry": "2026-07-19 (Ethereum block 25567141)",
"landedRouter": "2026-07-26 (Ethereum block 25618917; supersedes the 2026-07-19 first vanity router 0x1111113db0e0ef9d0e3a50d5f094a3a57a26c0de)",
"status": "live"
},
"deployment": {
"mechanism": "deployer factory (vanity generation); plain CREATE from 0x72B4736F6e482DB07C4F3d7d3b90A24b2FedBe7a (2026-07-16 generation)",
"factory": "0x71481C3B9C6FBa3066AE84961EA22378A80cabe7 (Ethereum; method deploy, sender 0x0BD61d605C64A857C3D94779aEf7cA295702b3A2)",
"note": "address equality does not commit to init code - verify bytecode and constructor args per chain"
},
"router": {
"name": "AquaSwapVMRouter",
"version": "1.0.2",
"eip712": { "name": "1inch SwapVM v1.0", "version": "1.0.2", "type": "string" },
"address": "0x111111338c5091e8440b67b168bae16a668ac0de",
"deployedAt": "2026-07-26 (Ethereum; per-chain creation blocks differ)",
"owner": "0x4134e66d52EfC4C77DD8Ccc952D87b9E92E0C352 (on-chain owner() check, Ethereum, 2026-07-29; interim EOA - final ownership transfer pending)",
"source": "1inch/swap-vm v1.0.2 tag (commit 32c687c2, cut 2026-07-26; adds Fee.sol best-effort protocol-fee collection + ProtocolFeeSkipped event)"
},
"registry": {
"name": "Aqua",
"onChainName": "AquaRouter",
"eip712": null,
"eip712Note": "no EIP-712/ERC-5267 domain; eip712Domain() reverts - never typed-data sign against the registry",
"address": "0x1111113ccf1426a8e30e2bff5e005d929bf6a90a",
"deployedAt": "2026-07-19 (Ethereum; same bytecode as the 2026-07-16 registry)"
},
"kycNFT": {
"name": "KycNFT",
"symbol": "RES",
"address": "0x26FFc7D378E8e49Be2c483295A3e3E511F96a468",
"redeployed": false
},
"aggregationExecutors": {
"note": "2026-07-16 generation; whether they were redeployed again for the vanity registry is unconfirmed (2026-07-29). 1inch routing infrastructure, not part of the Aqua contract surface; never source-verified (policy); constructor args differ per chain",
"simple": "0xd7d7FE53A5FC886e1B69c7213Fb0B24ccE1511a3",
"protected": "0xE3B94BF84310fDcec27A219cA0923F46D7137DC7",
"protectedSigner": "0x4447696e7878c0fa2c581768f04c3871a9a57b76"
},
"testnet": { "sepolia": 11155111, "note": "vanity registry live on Sepolia; vanity router NOT yet deployed there (2026-07-29); 2026-07-16-generation contracts remain available" },
"verification": {
"aquaAndRouter": "vanity generation: source-verified on Ethereum (Blockscout); bytecode spot-checked on Ethereum + Base; full 13-chain verification not re-run - verify per chain",
"executors": "never verified (policy)"
},
"chains": [1, 10, 56, 100, 130, 137, 146, 324, 4663, 8453, 42161, 43114, 59144],
"unsupportedForAqua": [],
"platformSync": {
"confirmedAt": "2026-07-29",
"inSync": ["dapp", "aqua-api", "swap-builder-api", "swap-api", "fuse", "@1inch/aqua-sdk 0.3.0 (npm)", "@1inch/swap-vm-sdk 0.4.0 (npm)"],
"stale": ["1inch/aqua README", "1inch/swap-vm README"]
},
"supersededRegistries": [
"0xe8026bf31e58b738647319362581ab11be92139b",
"0x4a055aa172c98ec32de118b9b5b6ac8b4099a580",
"0x7c2d4aa5c900c08004fadb1c0d953c5b099fec86"
],
"supersededRouters": [
"0x016b417bc933370f5eacc40b1d58b015ac72b070",
"0x1111113db0e0ef9d0e3a50d5f094a3a57a26c0de",
"0x3c4758979ec30ca45857cabc2462a70699ed790e",
"0xa5368dd669c5706256cf417b66e71a1efe1d331a",
"0xdfd05fe230bfe7b212878414270c72c8345506fa",
"0x8fdd04dbf6111437b44bbca99c28882434e0958f",
"0x499943e74fb0ce105688beee8ef2abec5d936d31"
],
"opcodeTable": {
"boundToRouterVersion": "1.0.2",
"source": "1inch/swap-vm@v1.0.2:src/opcodes/AquaOpcodes.sol (identical to v1.0.1 - the tag changed only Fee.sol)",
"scope": "all deployed v1.0.x builds (v1.0.1 router, the 2026-07-16 v1.0.2 recompile, and the v1.0.2-tag vanity routers)",
"reservedGapIndices": [[0, 9], [22, 26]],
"missBehavior": {
"reservedGap": "no-op",
"beyondTable": "Panic(0x32)"
},
"mainBranchWarning": "undeployed main (post-PR-154) renumbers the enum: no reserved gaps, UnknownOpcode(uint256) revert - NOT deployed; never derive the live table from main"
},
"sdk": {
"@1inch/aqua-sdk": "0.3.0",
"@1inch/swap-vm-sdk": "0.4.0",
"note": "Current releases carry the canonical vanity addresses (verified from the published packages, 2026-07-29). Releases <= 0.1.1 / 0.2.2 return superseded addresses. Pin exact versions."
}
}
Field notes
vanityRedeploymentrecords the redeployment lifecycle: announced 2026-07-17, registry landed 2026-07-19, current router 2026-07-26 (a first vanity router from 2026-07-19 was superseded in between). The 2026-07-16 registry/router moved into the superseded arrays per the protocol this page prescribed.platformSync(2026-07-29): dApp, aqua-api, swap-builder-api, swap-api, FUSE and the current npm SDK releases all carry the vanity addresses; only the two contract-repo READMEs remain stale.router.eip712uses a string version ("1.0.2") and the domain name1inch SwapVM v1.0(verified on-chain viaeip712Domain()— corrects theSwapVMRoutername stated in earlier revisions).registry.eip712is null: the registry has no EIP-712/ERC-5267 domain (eip712Domain()reverts); the earlierAquaRouter/v1(integer) claim is withdrawn. Only the router can be typed-data signed against — andverifyingContractchanges with each router generation.deploymentrecords the per-generation mechanism: the vanity addresses come from a deployer factory (Ethereum creation txs), the 2026-07-16 generation from plainCREATEby a nonce-synchronized EOA. Address equality across chains is an operational convention — it does not prove identical bytecode or constructor args. Vanity-generation source verification has been confirmed on Ethereum (Blockscout); check other chains' explorers per chain.supersededRegistries/supersededRouterslist addresses your indexer should reject as current. They remain live on-chain: strategies shipped there stay active (and decodable) until makers dock and re-ship on the current deployment. Decode historical fills against them only, never route to them.- Robinhood Chain (
4663) joined the chain set with the 2026-07-16 universal redeploy;unsupportedForAquais now empty. Earlier manifests excluded 4663 because its registry was a different CREATE3 address. opcodeTableis source-verified and scoped to the deployed v1.0.x builds (thev1.0.2tag leftAquaOpcodes.solidentical to v1.0.1): a reserved-gap index is a no-op (execution continues, no price, no revert) and an index beyond the registered table reverts with a Solidity array-out-of-boundsPanic(0x32); there is no named runtime error for an unknown opcode in the deployed builds. The undeployedmainbranch renumbers the enum and reverts withUnknownOpcode(uint256)instead — those semantics apply to no deployed router; re-pin this block when the next release actually ships.- Pin the two SDK packages with exact versions (no
^) so an off-cycle patch cannot shift the opcode table under your build. Current releases (0.3.0 / 0.4.0) carry the canonical vanity addresses; anything older does not.
This changelog is an append-only log
This page is an append-only revision log. Entries are added, never rewritten or removed: each carries an ISO date, and history stays intact so a reader can reconstruct what the docs asserted on any past date. When a fact changes, add a new dated entry rather than editing an old one. When the version manifest above changes, bump manifestVersion to the new date and add a matching entry below — the manifest block is the current head; the log is its running history.
Do not rewrite history. Superseded addresses, versions and behaviours are kept on the record (see supersededRouters and the Stale / historical section) precisely so integrators can decode old activity and audit what changed. Correcting an error means appending a dated correction, not silently editing the earlier entry.