ACE · Technical reference

Documentation

The precise version of everything the overview says: how markets are constructed, what a committed bid is, how loans originate, settle, liquidate, and recover — and why none of it needs an oracle.

Rev 1 · draftBuilt on Uniswap v4Oracle NoneAdmin keys None
SEC. 01

System overview

ACE is an open credit market built as a set of Uniswap v4 poolswith the lending book implemented in the pool’s hook. Each market is an ordinary v4 pool: swaps route through it, LPs can exist alongside it, and the hook adds a term-credit facility on top of the same liquidity surface.

The system has no price oracle, no off-chain feeds, and no admin keys. Credit is priced by committed capital: lenders place bids that are binding commitments to buy the collateral asset at a stated price, and everything else — floors, liquidations, recoveries, rates — is derived from those commitments and from prices the market itself prints on-chain.

  • No oracle — the market is the oracle; only persistent on-chain price moves settle anything.
  • Permissionless — markets deploy with one call; no gatekeeper.
  • Reversible — liquidation transfers a right, not the asset; recovery is possible within a window.
  • Open execution — borrows execute against best committed bids the way swaps take the best price.
  • Termed — every loan expires; rollovers reprice at the current rate.
  • Either side first — lenders can commit before any borrower arrives, and vice versa.

Markets are isolated: each is its own pool with its own book. A failure in one market stays with the lenders who chose it. There is no shared pool, no protocol treasury backstop, and no cross-market contagion path.

SEC. 02

Architecture

A market is fully described by its parameter tuple. Deployment is deterministic via CREATE2: the same tuple always resolves to the same address, so a given market can exist exactly once and its address can be computed off-chain before it exists.

struct MarketParams { address base; // collateral asset (what borrowers pledge) address quote; // lend-side asset (what lenders commit) uint32 term; // loan tenor: 30d | 90d | 180d uint32 pending; // persistence window: 24h .. 7d uint16 skimBps; // upward-move skim: 400 .. 2000 bps Ladder ladder; // initial tick grid below the mark } market = CREATE2(keccak256(abi.encode(params))) // one deterministic address per spec — a market can only exist once
ComponentRole
Uniswap v4 poolThe trading venue. Spot execution and the prices it prints are the only price input the system has.
Lending hookHolds the book of committed bids, originates loans, runs the skim, tracks marks, and executes liquidation, recovery, and settlement.
The bookPer-market storage of ticks: price levels with committed quote-side depth, ordered best (highest) first.
MarksOn-chain record of persistent prices — the settlement reference. See Sec. 07.
SEC. 03

Market parameters

All parameters are fixed at deployment. Changing any of them describes a different market at a different address — nothing is upgradable or governable after the fact.

ParameterDomainDescription
baseaddressThe collateral asset. Anything a v4 pool can hold: majors, long-tail tokens, RWAs, wrapped positions.
quoteaddressThe lend side. Bids, loans, fees, and settlement are all denominated in quote.
term30d · 90d · 180dMaximum life of a loan. Every loan in the market shares the term; maturity is absolute (Sec. 09).
pending24h · 48h · 72h · 7dThe persistence window. A liquidation-triggering move must hold this long before title transfers; within it, recovery reverses the liquidation (Sec. 08).
skim4% – 20%Fraction of upward price moves harvested from borrower collateral to amortize debt (Sec. 06). Higher skim suits volatile or yield-bearing collateral.
ladderpresetThe initial tick grid: rung spacing below the mark at deployment (conservative / standard / aggressive). Lenders are free to bid at any tick afterwards.
SEC. 04

The book

The book is a set of ticks: price levels carrying committed quote-side depth. A bid at price p is a binding commitment to buy the base asset at p — it is not a quote, and it cannot be faked, because the capital is escrowed in the market when the bid is placed.

Definitions
B(p) — committed depth at tick p, in quote
D(p) = Σ B(q) for q ≥ p — cumulative depth at or above p
F = max{ p : B(p) > 0 } — the floor: the best committed bid
buffer = (M − F) / M — distance from mark M down to the floor
The floor is the protocol’s core object: the highest price at which real capital stands ready to absorb the asset. Everything above it is unfunded price; everything at or below it is funded.
  • Placement — any address can commit at any tick strictly below the current mark.
  • Priority — execution consumes ticks best-first; within a tick, pro-rata.
  • Withdrawal — unborrowed depth withdraws freely; depth backing open loans is locked until those loans resolve.
SEC. 05

Lending

A lender chooses a tick and an amount, and commits. From that moment the position earns whenever borrowers draw against the book, and it stands as the floor for everyone trading above it.

Return sources

  • Origination — each draw pays a 1% origination fee to the depth it executes against.
  • Skim flow — the collateral skim (Sec. 06) streams through to the lenders funding the position.
  • Discounted acquisition — if title transfers, the lender receives the asset at the price they named — by construction a price they were willing to pay.

Lenders earn all the way down: a falling price unwinds borrower positions into the book rather than past it, so depth keeps collecting fees as it absorbs the move.

Curators

Capital can be committed directly, or through a curator— a vault that spreads idle quote across markets and ticks under a stated mandate. Curators are ordinary lenders from the protocol’s point of view; they hold no special rights.

SEC. 06

Borrowing

Borrows execute the way swaps do: against the best available depth, best tick first. A borrower pledges base collateral, draws quote, and pays the origination fee. There is no rate negotiation — the book is the rate.

Capacity
capacity = (1 − u) · Σ B(p) — undrawn committed depth, u = utilisation

Self-repayment

On upward price moves, the hook skims the configured fraction of the appreciation from the pledged collateral and applies it against the debt. A position that rides a rising market amortizes itself; for yield-bearing collateral (RWAs, LSTs), the skim harvests the native coupon into repayment.

Rollovers

At maturity a loan can roll, but a rollover is a new loan at the current book’s rate — debt never drifts silently under stale terms. If the book has moved against the borrower, rolling is exactly as expensive as it should be.

SEC. 07

The mark & persistence

The markis the protocol’s settlement reference: a price the pool itself has printed and sustained. It is recorded on-chain by the hook from the market’s own trading — no external feed, no keeper, no committee.

The defining rule: a single trade can never settle anything. Trades move spot; only spot that persistsbecomes a mark. A flash crash, an oracle-style wick, or one whale’s dump prints a price for a moment — and a moment is not enough. The pending window (Sec. 08) is the persistence check applied to any move that would transfer value.

Note — wicks don’t settleIf price dips below a tick and returns within the window, nothing happens: no liquidation, no transfer, no state change. Only moves that hold are real to the protocol.
SEC. 08

Liquidation & recovery

When the mark falls to a funded tick, the loans drawn against that depth enter pending liquidation. Nothing is sold — there is no auction, no keeper race, no slippage cascade. The state machine is:

ACTIVE ── mark reaches tick ──▶ PENDING (window = pending param) PENDING ── price recovers in window ──▶ ACTIVE // right returns PENDING ── move holds through window ──▶ TITLE // lender takes the asset
  • Pending — the borrower’s right to the collateral is held, not sold. The position is frozen against the committed price.
  • Recovery — if the mark recovers within the window, the right returns to the borrower and the loan continues unchanged.
  • Title transfer — if the move persists, the lender receives the collateral at the price they committed to. No forced sale means no fire-sale externality for the rest of the market.

A healthy market therefore needs a dependable way for a lender to exit an acquired asset. There are two:

  • Redeem at intrinsic valueHold the asset and redeem it for what it is worth — RWAs, LSTs, veNFTs. No buyer has to show up.
  • Sell into a deep marketSell into existing depth — WETH, BTC, and other liquid assets. The exit is the market that was already there.
SEC. 09

Settlement at term

Every loan is terminal: at maturity it resolves, without exception. The borrower has three outcomes, and all three are final:

OutcomeEffect
RepayDebt is settled in quote; collateral returns to the borrower in full.
RollA new loan opens at the current book’s rate and term; the old one closes. Repricing is mandatory.
DefaultTitle passes to the funding lenders at their committed price — the same settlement as a persistent liquidation.

Because terms are absolute, the book’s exposure has a known horizon: no position can outlive its market’s term, and lender capital is never locked indefinitely.

SEC. 10

Security model

The classic lending-protocol attack is: dump the price, crash the oracle, buy the collateral back cheap. Here the attack decomposes:

  • There is no oracle to crash. The only prices that matter are ones the attacker must trade into existence and sustain through the pending window — against the book’s committed capital.
  • Dumping fills bids lenders already wanted. Selling into the floor is not an exploit; it is the product. The attacker sells at prices lenders pre-committed to pay.
  • Even a successful push settles at committed prices. If a move holds, lenders receive the asset at the price they named — the outcome they signed up for, not a discount seized from them.

Invariants

  • Committed capital is escrowed — depth in the book cannot be faked or withdrawn out from under an open loan.
  • No transfer of value settles inside a single block or a single trade.
  • Markets are isolated — no shared pool, no protocol treasury, no admin key, no upgrade path.
  • Parameters are immutable per market; changing them means a new market at a new address.
SEC. 11

Application surface

Because risk is priced by the market itself, credit reaches assets an oracle could never touch. A partial catalogue of what the primitive supports:

RefApplicationMechanism
APP-01LaunchpadsA bonding-curve launch graduates into its own credit market.
APP-02Prediction marketsMulti-outcome floors, priced by the market at all times.
APP-03NFT / veNFTFloor loan plus a fractionalized remainder; tenor is the exit.
APP-04RWAThe skim harvests the real coupon; permissioned variant for securities.
APP-05CorridorsA bridge as a credit market: tenor-bounded messenger exposure.
APP-06Options incomeA resting bid is a cash-secured put.
APP-07Vesting & lockedLenders bid what delivery at unlock is worth.
APP-08Treasury desksBorrow against the token without dumping it.
APP-09Rent-a-floorA time-locked bid beneath an asset: a guaranteed floor as a subscription.
APP-10Public OTC deskTransparent block trades through the same floor-protected auction.
APP-11BuybacksA standing bid is a buyback that earns lender yield until it fills.
SEC. 12

Glossary

TermDefinition
TickA price level in the book carrying committed quote-side depth.
BidA binding, escrowed commitment to buy the base asset at a tick’s price.
FloorThe best (highest) funded tick — the price real capital stands behind.
MarkAn on-chain recorded price that the pool printed and sustained; the settlement reference.
BufferRelative distance from the mark down to the floor: (M − F) / M.
SkimThe configured fraction of upward collateral moves harvested to amortize debt.
Pending windowThe persistence period a liquidating move must hold before title transfers; recovery reverses it inside the window.
Title transferSettlement of a defaulted or persistently liquidated loan: the lender receives the collateral at their committed price.
TermThe fixed tenor shared by all loans in a market; every loan is terminal.
CuratorA vault that allocates lender capital across markets and ticks under a stated mandate.
LadderThe initial tick grid a market deploys with.
UtilisationThe share of committed depth currently drawn by borrowers.
ACE Technical referenceRev 1 · draftWhitepaper →Overview →