Aqua0
Developers

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 at beforeSwap and settles it back to the vault at afterSwap.

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, and POST /api/swap/prepare returns calldata for AquaSwapVMRouter.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 V4Adapter injects a temporary range at beforeSwap and settles it back to the vault at afterSwap.

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.

On this page