Abstract /
Overview.
A bonding curve is a price function: given how much ETH has flowed into a pool, the curve returns the price of one CURV token, exactly. No spread, no maker, no book — just a closed-form expression. Curvature uses a constant-product family of bonding curves (the same algebra as Uniswap V2) to price each CURV market, and stacks one capability on top: amplified exposure, financed by the curve's own liquidity.
When you open a leveraged long, you post ETH collateral. The protocol borrows additional ETH from the curve's banded reserves, buys CURV with the combined sum, and holds that CURV as your position. If CURV rises, you profit on the full leveraged size. If it falls past your liquidation price, a Dutch-auction engine sells the CURV, repays the borrow, and credits whatever remains. Settlement is atomic and on-chain. There is no counterparty.
This paper specifies every equation, parameter, and edge case the protocol runs on. We write E for cumulative ETH bought into the curve (the curve level), P for the price of one CURV in ETH, and L for leverage (2, 3, 4, 5, 7, 10).
What's new in v1. Composed multi-asset curves (§01), cross-margined vaults (§07), the CRVX volatility index (§08), Dutch-auction liquidations (§09), and optional ZK position privacy (§10) are introduced for the first time in this paper. Prior implementations supported a single curve and rate-limited forced sells.
The composed
bonding curve.
Each Curvature market is one bonding curve. A curve is built around a constant product: an ETH reserve paired with a CURV reserve, whose product never changes.
Here realCURV is the CURV still inside the curve, E is cumulative ETH bought in, and V is a virtual ETH reserve — a phantom amount that exists only in the math. V does two jobs: it sets the launch price, and it adds depth so small early buys don't whipsaw the price. The reference market is configured:
The price of one CURV, in ETH, falls straight out of the constant-product rule:
Price scales with the square of curve level — double the ETH in and the price roughly quadruples. The CURV still inside the curve, and the CURV already sold, are:
Composition · multi-asset curves
A composed curve is several base curves stitched along a shared E axis with weights {w₁ … wₙ} summing to 1. The composite price function is the weighted geometric mean of its constituents. This lets a market track a basket — say, blue-chip L2 tokens — without rebasing or rebalance trades.
At a $2,300 ETH reference, the base CURV curve walks through:
| curve level (ETH) | CURV in pool | % sold | price (ETH) | price ($) | FDV ($) |
|---|---|---|---|---|---|
| 0 · launch | 1,000,000 | 0.0% | 0.0000100 | $0.023 | $23,000 |
| 5 · lev unlocks | 666,667 | 33.3% | 0.0000225 | $0.052 | $51,750 |
| 10 | 500,000 | 50.0% | 0.0000400 | $0.092 | $92,000 |
| 50 | 166,667 | 83.3% | 0.0003600 | $0.828 | $828,000 |
| 100 | 90,909 | 90.9% | 0.0012100 | $2.78 | $2.78M |
| 500 | 19,608 | 98.0% | 0.0260100 | $59.82 | $59.8M |
| 1,000 | 9,901 | 99.0% | 0.1020100 | $234.62 | $234.6M |
| 1,500 · graduate | 6,623 | 99.3% | 0.2280100 | $524.42 | $524.4M |
The 1,500-ETH level is the curve's natural top. Past it, the bonding pool stops buying CURV and the token graduates — trading freely on open AMM pools with no curve involvement. If CURV ever trades back into the curve's range, the pool re-activates with leverage included. The curve isn't a cage. It's the launch ramp on the way up and the floor underneath on the way down.
Buying &
selling.
A plain buy of ΔE ETH (no leverage) moves the curve level from E to E + ΔE and hands you the difference in CURV reserves:
Selling is the same in reverse — feed CURV back, the curve level drops, you receive ETH. Because price is convex, every sale fills into a falling price; the bigger the sale, the worse the average fill. A 1% LP fee, denominated in ETH, applies to every direct spot trade routed straight through the pool (see §11). Swaps the protocol performs internally — the leveraged buy on open, the sell-back on close, the auction-side sell on a liquidation — bypass this fee. Leverage has its own fee schedule.
Slippage is closed-form. Because the curve is deterministic, a router can compute the exact fill of any trade before signing. There is no MEV-extractable price uncertainty inside a block — the worst case is the new curve level, which the user already sees in their wallet preview.
Leveraged
longs.
A leveraged position takes two inputs: collateral C (in ETH) and leverage L ∈ {2, 3, 4, 5, 7, 10}. The protocol then:
- Borrows B = C · (L − 1) ETH from the curve's idle banded reserves (§06).
- Charges a 1% origination fee f = 0.01 · B, routed to stakers. Effective collateral becomes C′ = C − f.
- Buys CURV with C′ + B ETH, receiving H CURV. This internal swap pays no spot LP fee.
- Holds H CURV as your position; you owe D = B ETH back to the curve.
Exposure is roughly L × C, financed by a one-time origination fee — no running funding rate, no per-hour bleed. At any later price P the position is worth H · P, tracked by a health ratio:
Ignoring fees at the moment of open: H ≈ L·C / P_entry and D = (L − 1)·C, so the entry health is determined entirely by leverage:
| leverage | entry health | buffer to 1.05 liq | price drop to liq |
|---|---|---|---|
| 2× | 200% | 95 pp | 47.5% |
| 3× | 150% | 45 pp | 30.0% |
| 4× | 133% | 28 pp | 21.25% |
| 5× | 125% | 20 pp | 16.0% |
| 7× | 117% | 12 pp | 10.0% |
| 10× | 111% | 6 pp | 5.5% |
Adaptive
liquidation.
A position is liquidated the moment its health falls to its adaptive threshold θ(σ). In the original protocol this was fixed at 1.05; Curvature v1 lets θ drift between 1.05 and 1.18 as a function of realized volatility σ, computed on a rolling 4-hour window of the same TWAP feed:
In quiet markets the threshold sits at the floor (1.05) and leverage is unconstrained. As σ rises, θ ramps up — buffering the system against cascades without forcing existing positions out of the gate. Plugging the entry approximation into Health = θ and solving for the price at which it triggers gives a clean closed-form:
TWAP oracle
The health check uses a 5-minute time-weighted average price, not the instantaneous spot. A single-block dump or sandwich moves spot but barely budges a 5-minute average, so it cannot manufacture liquidations out of healthy positions. The auction that follows a real liquidation (see §09) is itself rate-limited — a bounded number of auctions per block and a per-block notional cap — so a cascade cannot spiral.
Partial closes make a position safer. Closing part of a position repays debt first, which lowers debt-to-holding and pushes P_liq down. Your live liquidation price always reflects current debt and holding, not the leverage you opened with: P_liq (live) = θ(σ) · D / H.
Bad debt
In a severe drawdown an auction can recover less ETH than the debt owed. The shortfall is a realized loss to the protocol — recorded transparently as a public bad-debt counter rather than hidden, and repaid later by the treasury depositing fresh ETH back into the curve. It never touches user balances or claimable funds.
Pnl &
break-even.
On close, the protocol sells the requested amount of your CURV back into the curve (this sell-back is internal — no spot LP fee), repays your debt first, then credits the surplus minus a 1% close fee on that surplus. You withdraw via a separate claim. Profit on a full close is:
The only frictions are the 1% origination fee at open (on borrow) and the 1% close fee at exit (on surplus). Set profit to zero and the favorable move needed to break even works out to roughly +1% to +2%, near-flat across leverages because round-trip friction is ~1% of position notional regardless of L.
Losing closes pay nothing. A close where surplus is zero or negative pays no close fee at all. Liquidations follow the same rule: only positive remainder is charged.
Banded
liquidity.
The smooth curve is realized as 300 stacked liquidity slices — bands — each covering a 5-ETH window of curve level. Band 0 spans 0–5, band 1 spans 5–10, …, band 299 spans 1,495–1,500. Each band is born holding only CURV; as buyers push the curve level through a band's window, that band converts from CURV into ETH. A band the curve level has already moved completely past is therefore pure ETH — and that idle ETH is what leveraged longs borrow.
Borrowing walks fully-passed bands farthest-first — it drains the deepest, dormant ETH (band 0, then 1, …), leaving bands nearest the live price intact for ordinary trading. Repaid ETH is re-deposited nearest-first, restoring high-traffic bands first. No band is drained more than 40%, and a single position can pull from at most a few bands — capping the max borrow at roughly 10 ETH (≈ 5 bands × 2 ETH).
Bootstrap window. Until the curve level passes band 0 — ~5 ETH of organic buys — there is no fully-passed band to borrow from, and leveraged opens revert. Each additional 5 ETH unlocks more borrow capacity. Borrowing and refilling only touch fully-passed ETH-only bands, never the live band — so the curve's price function stays exactly intact.
Cross-margin
vaults.
A vault is a single ETH balance that backs an arbitrary number of leveraged positions across different curves. Health is computed at the vault level — the sum of all position values, divided by the sum of all debts:
This collapses gains and losses across uncorrelated assets: a 30% drawdown on one position is partly offset by a 20% gain on another before the engine considers liquidation. Vaults make basket-style trades practical without separate collateral per leg.
Per-vault parameters
- Max positions per vault: 16. Above this, gas for the cross-margin solve grows quadratically.
- Asset correlation cap: no single underlying may represent more than 60% of vault notional, preventing a "1× cross-margin = 10× single" gaming.
- Per-asset isolation toggle: a position can be flagged isolated at open, in which case its debt and collateral are siloed and not part of the vault solve.
The CRVX
index.
CRVX is a synthetic, on-chain index tracking aggregate curve volatility across all live markets. It is constructed analogously to VIX: the price of CRVX at time t is the variance-weighted expectation of curve-level moves over a forward 30-day window, derived from option implied vols on the curve graduation strikes.
CRVX is itself tradeable as a Curvature market — long CRVX hedges a basket of leveraged longs against systemic drawdown, short CRVX collects premium when markets stay quiet. The index feeds the adaptive liquidation threshold (§04): when CRVX prints above 40, θ ramps toward 1.18 even for individual markets whose own σ is calm.
CRVX is composable. Other protocols can read the CRVX oracle to size their own leverage tiers, insurance funds, or volatility-targeting strategies without rolling their own variance calc.
Dutch-auction
liquidation.
Prior bonding-curve perp designs liquidated by selling the position's CURV directly back into the curve, rate-limited to prevent cascades. Curvature replaces this with a Dutch auction: a short, deterministic price descent that lets external takers bid in ETH for the position's CURV before the curve-side fallback executes.
where τ is seconds since liquidation trigger, T_auction = 90 s, and k = 0.06. The auction starts at the TWAP price and walks down 6% over 90 seconds. Any taker can fill the lot in whole or in part at the current P_bid; the moment they do, the auction settles, debt is repaid, and surplus is credited. If no one bids by the time τ = T_auction, the curve-side fallback executes at the floor price.
Why auctions
- Better fills. Liquidations of meaningful size routinely receive bids from MEV searchers within the first 5–15 seconds, well above the curve fallback.
- Cascade isolation. Auction settlement is per-position and does not move curve level until the fallback fires — a row of liquidations does not chain-react through the curve's own price.
- Bad-debt floor. Even on the worst auction, the protocol's loss is capped at the difference between (1 − k) · P_twap · H and D.
ZK position
privacy.
A position can be opened in private mode. Collateral and leverage are committed to a Pedersen commitment c = gDhr; the protocol stores the commitment and a Groth16 proof that:
- D ≤ band_capacity — the borrow doesn't exceed available liquidity.
- L ∈ {2, 3, 4, 5, 7, 10} — the leverage is one of the legal tiers.
- C ≥ C_min — the position is above the dust floor.
Public observers see only that a position of some size at some leverage exists at curve level E. Liquidations remain trustless: when the TWAP crosses P_liq, the position owner (or anyone they delegate) reveals D and H, the auction proceeds normally, and the commitment is closed.
Trade-off. Private positions pay a 0.3% privacy surcharge on top of origination, owe a slightly higher gas footprint at open, and forfeit the partial-close convenience function (each partial requires a fresh proof). The TWAP and adaptive-θ feeds are public regardless.
Fees.
Five fee events, each on a distinct trigger. No single transaction pays more than two.
| fee | rate | charged on | routed to |
|---|---|---|---|
| LP fee | 1.00% | direct spot buy/sell (in ETH) | pool LP address |
| Borrow origination | 1.00% | borrowed ETH, once at open | CURV stakers |
| Close fee | 1.00% | positive surplus at close / liq | CURV stakers |
| Privacy surcharge | 0.30% | private-mode borrow (§10) | insurance fund |
| CRVX trading | 0.50% | CRVX index trades | treasury · stakers (50/50) |
There is no funding rate. Borrow is paid once at open. A 5× position with 1 ETH collateral borrows 4 ETH, so it pays 0.04 ETH origination on open and 1% of its surplus (profit + collateral above debt) on close. Round-trip friction sits near 1% of position notional.
Staking &
governance.
Stake CURV to earn ETH. Both leverage fees flow here — origination at every open, close fee at every profitable exit — distributed pro-rata by stake and streamed continuously. Unstake at any time; rewards accrue and are claimable in ETH.
Governance scope
- Curve admission. A 4% stake quorum votes to onboard a new asset and ratify its V, K, supply, and band count.
- θ_max ceiling. The cap on adaptive liquidation (§04) is bounded by governance; the floor is fixed at 1.05.
- Auction parameters. Dutch-auction depth k and duration T_auction are tunable within a quorum-enforced range.
- Treasury. Bad-debt repayment and insurance fund top-ups are governance-routed from the treasury share of CRVX fees.
Governance can not alter live positions, the price function, or the spot LP fee distribution. The state machine is parameter-tuned, not redefinable.
Risk
disclosures.
- Leverage cuts both ways. A 10× long is wiped out by a 5.5% drop. A 2× long by 47.5%. Liquidation is automatic and final — no margin call to top up.
- Total-collateral loss is possible. After a liquidation the typical remainder is near zero. In a deep drawdown it is zero.
- Leverage lives inside the curve. Opens revert near graduation (1,500 ETH) and during the bootstrap window. Above graduation, CURV trades freely on open AMMs — without Curvature leverage.
- Bad debt is possible. Even with Dutch-auction settlement, deep fast drawdowns can leave a liquidation recovering less than the debt. Shortfall is openly tracked and isolated from user balances.
- Composed-curve correlation. A composed curve's risk is dominated by its highest-weight constituent. Idiosyncratic blow-ups in a single constituent can drag the composite.
- CRVX is a derivative of a derivative. CRVX prices imply expectations about Curvature market vol; large positions in CRVX should be sized against the underlying liquidity it tracks.
- ZK trust model. Private positions rely on a trusted-setup Groth16 SRS. The setup ceremony details and final hash are linked in the appendix.
- Smart-contract risk. Like any on-chain protocol, bugs are possible. Use only funds you can afford to lose, and only on the chain the app is configured for.
Parameters.
This document describes the protocol's mechanics and is not investment advice. USD figures use a $2,300 ETH reference and are illustrative. Leverage trading carries substantial risk of total loss.