Concepts
The minimum vocabulary developers need to integrate Aqua0.
This page describes Aqua0's current architecture (per-asset vaults, a shared capital pool, and venue adapters).
Vaults and strategies
AssetVault: one per asset per chain. Locked liquidity sits here.- Principal: a scalar claim credited when you lock liquidity, denominated in the underlying asset, not a tradeable share. It sits in the vault's shared idle pool until you consent to back a specific strategy.
- Backing a strategy: recorded as a non-transferable, read-only position (an ERC-6909 balance under the hood), not a token transfer.
strategyId: issued once per strategy, so the same strategy resolves to the same backing across every per-asset vault it touches.
Strategies
A strategy is the curve a strategist ships onto a venue, made up of a pricing shape (pegged,
constant-product, or concentrated), a fee, and a token pair, identified by a stable strategyId.
Shipping, unwinding (docking), or resizing (reshipping) a strategy requires a signature from that
strategy's strategist, a role the vault binds per strategy, and the backend relays the call but
can't originate it alone.
Venues
Aqua0 has two venues, 1inch Aqua and Uniswap V4. Both are just-in-time (JIT), meaning neither venue holds capital between swaps, both source liquidity from the same vault mid-swap, and both settle back through the same per-strategy settlement path on the vault. Adding a venue later doesn't need new vault code.
- 1inch Aqua routes single-chain swaps through the
AquaAdapter. It pulls or pushes tokens against the vault only mid-swap. - Uniswap V4 is implemented as a Uniswap V4 hook itself (
V4Adapter). It injects a JIT liquidity range atbeforeSwapand settles it back to the vault atafterSwap.
Liquidity providers
LPs are EOAs or ERC-4337 wallets that lock and withdraw liquidity directly against the vault (msg.sender
as identity, no smart-account factory). Idle principal withdraws instantly, while principal
deployed to a venue withdraws through the async request/claim path, see
Async redeem semantics.
1inch Aqua trader flow
POST /api/swap/quote(venue: "aqua") sizes the trade, andPOST /api/swap/preparereturns calldata forAquaSwapVMRouter.swap.- Trader submits the transaction, and the router settles the pulled/pushed tokens against the vault
mid-swap through the
AquaAdapter. - The router emits
Swapped, and the backend attributes the delta pro-rata across the strategy's backers.
Uniswap V4 trader flow
POST /api/swap/authorize(venue: "v4") returns a backend-signed EIP-712 JIT authorization.- Trader submits a V4 swap with the payload as
hookData. - The
V4Adapterinjects a temporary range atbeforeSwapand settles it back to the vault atafterSwap.
Cross-chain
Capital in one chain's vault can also back a strategy or JIT fill that executes on another chain. Because the destination settlement can't be observed instantly, the source vault carries that in-flight position under a bounded, monitored valuation until the settlement lands and reconciles it exactly, see Non-custodial design for the guarantee behind that step.
Attribution
Same-chain attribution reads straight from settlement events, and the backend maps the delta to
each strategy's backers pro-rata. Poll GET /api/swap/status/{swapId} for a swap's lifecycle. See
the API Reference for the full route table.
Chains
Aqua0's mainnet-beta targets six chains, Base, Avalanche, Arbitrum, Celo,
Monad, and Robinhood. GET /api/vaults/chains is the always-current source for the exact
set the running API currently serves.