Parametric LP cover · Uniswap v4 · 1inch Aqua · Arbitrum

LP cover
that deploys
itself.

Airbag is parametric, provably-solvent cover for Uniswap v4 liquidity providers. A v4 hook measures your impermanent loss on-chain; underwriters back the cover from their own wallets through 1inch Aqua. When the loss passes 0.5%, the payout fires automatically — no claims desk, no custody.

non-custodial/auto-payout/solvency on-chain/transferable cover
wstETH / WETH · Uniswap v4 poolpays past 0.5% LP loss
LP loss 0.00%status armed
// why now

0x00 LPs earn fees, then lose more than they earned.

Liquidity providers make DEXs work. When the two tokens in a pool move apart, an LP ends up worse off than if they had just held the tokens — impermanent loss. It often eats more than the fees, and there is nothing to insure it with: on-chain cover barely exists, and what does exist pays out after committee votes and waiting periods.

49.5%
of Uniswap v3 LPs lost money

Half of liquidity providers did worse than simply holding the two tokens (pools over $10M, May–Sep 2021).

Loesch et al. ↗
$260M
lost vs $199M earned

In the same study, impermanent loss was bigger than all the fees the LPs collected.

arXiv 2111.09192 ↗
< 2%
of DeFi TVL is insured

On-chain insurance capital is in the hundreds of millions against ~$100B of TVL — over 98% of deposits are naked.

bex.co ↗
1 tx
Airbag payout time

Parametric trigger + keeper: once the hook sees the loss, one keeper transaction pays the holder. No claim at all.

try it ↗
// lifecycle

0x01 From reserve to payout. Four calls.

The whole protocol, start to finish — covered end-to-end by the Lifecycle test suite against the real Aqua contract.

01

Underwriter ships a reserve. It never leaves their wallet.

An underwriter commits USDG to a cover market through 1inch Aqua. Aqua records a virtual balance — the tokens stay in the underwriter's own wallet, free to sit in a vault and earn yield. No pool, no custody, no TVL honeypot.

aqua.ship() → CoverApp.registerMarket() · reserve authenticated on-chain
02

Buyers pay a risk-curve premium. They get a note.

Premium is priced on a utilization curve — the fuller the book, the pricier the cover. It's pushed straight into the underwriter's reserve, and the buyer receives an ERC-6909 CoverNote: transferable, so cover can be sold or assigned.

quotePremium() → buyPolicy() → aqua.push(premium) · note minted
03

The pool moves. The airbag deploys — by itself.

A Uniswap v4 hook measures the LP's impermanent loss from the pool's own prices. Past the deductible, a permissionless keeper calls payout and the money lands in whoever holds the note — pulled straight from the underwriter's reserve in one transaction. No claim form, no committee, no waiting period. If the loss deepens later, the difference is paid too.

CoverHook loss → keeper payout() → aqua.pull() → note holder
04

Nothing happens. The underwriter keeps the premium.

Policies that lapse are settled by anyone — a keeper, the underwriter — which frees the capacity for the next buyer. The underwriter's P&L is simply premiums earned minus payouts made, and it's verifiable on-chain at every block.

expire() → capacity recycled · aqua.dock() to close the market
// solvency

0x02 It can't sell cover it can't pay.

Every market enforces a solvency floor: outstanding cover can never exceed a fixed share of the reserve. Try to oversell and the transaction reverts. Anyone can read solvency() and check the backing at any block.

example market
floor 80%
covered 580kbacking 1.0M USDG
backing = reserve + premiums − payouts
outstanding ≤ backing × maxUtil
aqua balance == underwriter wallet ✓ asserted in tests
invariant fuzz 8,192 random buys × 128 runs ✓ never over capacity
// products

0x03 One engine. Pluggable cover.

The core CoverApp handles reserves, pricing, notes and payouts. What counts as an "event" is a plug-in: the Uniswap v4 LP-loss trigger, the built-in depeg band, or any contract implementing ITrigger.

live · 01

Uniswap v4 LP-loss cover

CoverHook measures an LP's real impermanent loss on a v4 pool; ILTrigger pays it out with a deductible, a cap, and a same-block manipulation guard.

live · 02

Stablecoin depeg cover

Oracle band trigger (Chainlink / Pyth adapters with staleness checks). Pays 100% of notional — pushed automatically.

live · 03

Tokenized-stock gap cover

Proportional payout when a tokenized stock gaps down — pays by how far it fell below the strike, not all-or-nothing.

reserve

Tranched reserve

Junior first-loss / senior-protected waterfall. Two risk appetites, one reserve.

reserve

Yield reserve

The reserve earns savings-vault yield while it backs cover, withdrawn just-in-time only when a payout fires. Underwriters stack premium + vault APY.

live · marketplace

Underwriters compete

Every underwriter publishes their own risk curve; the CoverRouter splits each order across the cheapest ones in one atomic transaction.

// stack

0x04 Built on rails that already exist.

No new token, no new pool. Airbag composes infrastructure that's already live.

loss oracle
Uniswap v4

A hook on the pool records each LP's entry and exit, so the loss is measured by the pool itself.

reserve rail
1inch Aqua

Shared-liquidity virtual balances: capital stays in the maker's wallet.

settlement
USDG

Paxos-issued, regulated stablecoin — premiums and payouts in the demo are in USDG.

chain
Arbitrum

Cheap enough to make per-policy notes and permissionless expiry practical.

Buckle up.
Pools move.

Become an LP, buy cover on your position, crash the pool, and watch the airbag deploy. Stablecoin depeg and stock cover run on the same engine.