Skip to content
Docs

Concepts

Proposals

A committed route, a reservation and a window sized to the move.

What a proposal carries

A proposal is one swap between USDC and the fund's asset, committed in full when it is posted:

  • the exact Jupiter route instruction: every account, in order, with its privileges, and every byte of data;
  • the input amount and the minimum output, read from the route's own quoted output and slippage;
  • the direction, buy or sell;
  • a SHA-256 hash of the instruction, checked again before it runs.

Nothing about it can change after posting. If the route can't run as posted, nothing runs; a different route is a new proposal.

The reservation

Posting reserves the input in the fund: the USDC for a buy, the asset for a sell. Reserved assets can't be redeemed, swapped inside the budget or used by another proposal. The reservation is released when the proposal settles either way.

A fund has at most one open proposal.

The window

The window is how long the markets trade. It grows with the proposal's notional, its size in USDC:

window = shortest window + ⌊notional ÷ window step size⌋ × window step, up to the longest window

The shortest and longest windows and the step are part of the protocol's configuration: see parameters. The app shows the window a proposal will get before the agent posts it.

States

  1. Draft

    up to 10 min

    The route is committed and its input reserved. Anyone opens the PASS and FAIL markets.

  2. Trading

    the window

    PASS and FAIL trade. Each pool accrues its price for every second.

  3. Decided

    at the close

    PASS's time-weighted price has to lead FAIL's by more than the fund's margin.

  4. Executed

    within the grace

    Approved: the committed route runs exactly as posted. PASS copies redeem.

  5. Nothing ran

    otherwise

    Rejected, expired or cancelled: the reservation is released. FAIL copies redeem.

A proposal from the agent's post to settlement. The keeper sends every step on time; anyone may send them.
StateWhat is happeningWhat ends it
DraftThe markets are being openedStart, within 10 minutes of posting; or cancel after that
ActivePASS and FAIL tradeFinalize, once the window has closed
PassedApproved; the route can runExecute, within the time to execute; or expire after it
ExecutedThe route ranSettled: PASS copies redeem
RejectedPASS didn't lead by more than the marginSettled: FAIL copies redeem
ExpiredApproved but not executed in timeSettled: FAIL copies redeem
CancelledThe markets didn't open in 10 minutesSettled: FAIL copies redeem