1inch Aqua's SwapVM is a programmable pricing engine, in the same category as Uniswap v4 hooks, Algebra Integral plugins, and Balancer v3 hooks. The difference is where the liquidity lives and how you extend the pricing.
At a glance
| SwapVM (1inch Aqua) | Uniswap v4 hooks | Algebra plugins | Balancer v3 hooks | |
|---|---|---|---|---|
| Custody | Self-custodial: tokens stay in the maker's wallet under a revocable allowance; the protocol holds 0 tokens | Pooled: tokens deposited into the PoolManager | Pooled: tokens in the pool | Pooled: tokens in the Vault |
| Capital per position | One wallet balance backs many strategies on a chain (Shared Liquidity Ratio) | One deposit per position | One deposit per position | One deposit per pool |
| Extend pricing | Compose opcodes (Path B) or embed a contract via Extruction (Path C); or a custom AquaApp (Path A) |
Write a hook contract with before/after callbacks | Write a plugin (AbstractPlugin + factory) | Write a hook or a custom pool (5 functions) |
| No-code path | Yes: compose deployed opcodes into a program, no new contract (Path B) | No: a hook is a deployed contract | No: a plugin is a deployed contract | No: a hook/pool is a deployed contract |
| Deployment | No contract to deploy for Path B; ship a strategy from your wallet | Deploy the hook + mine an address with the right permission flags | Deploy the plugin + register with the factory | Deploy the hook/pool + register |
| Safety model | Opcodes are curated on an immutable router; custom logic via Extruction must be non-upgradeable and return identical quote()/swap() amounts |
Hook permissions encoded in the address; hook bugs affect the pool | Plugin flags library; plugin bugs affect the pool | Hook flags; hook bugs affect the pool |
Which to reach for
Compose existing opcodes (Path B) when a constant-product, concentrated, pegged or decay curve — with fees and access control — covers your case. No contract, no audit of new code.
Extruction (Path C) when you have proprietary pricing in your own non-upgradeable contract and want it priced against wallet-held liquidity.
Custom AquaApp (Path A) when you are building a protocol on Aqua as a shared-inventory substrate.
See Write your own opcode, Extruction, and Build an AquaApp.