Volatility Pools

Architecture

One Solana program holds the markets and the funds. A scheduled keeper publishes prices, creates markets and triggers lock and settle; the app reads the chain directly.

Off chain · data

Data sources

Live prices and historical bars

read by the keeper

Off chain · keeper (scheduled functions)

Publisher

Writes each price feed every minute

Markets

Computes thresholds, creates and seeds markets

Crank

Locks and settles markets on time

signed Solana transactions

On chain · Solana

Volatility Pools program

Markets, rules and payouts

Price feed accounts

One per underlying

Vaults and positions

One vault per market

read over RPC · deposits and claims signed by the wallet

Clients

Web app

pools.movex.market

Any wallet or script

Permissionless instructions

Every keeper action is an ordinary transaction. Lock, settle, void and claims can be submitted by anyone.

Program

The program is written with Anchor. It validates every market at creation, holds deposits in a vault owned by the market, and computes payouts on chain. Its accounts are derived from fixed seeds, so any client can find them without an index.

AccountSeedsHolds
Marketmarket, underlying, session, tierThreshold, the 20 samples, times, prices, pool totals, fee, state
Vaultvault, marketThe deposits of one market
Positionposition, market, user, sideOne participant's deposit on one side, and whether it was claimed
PriceFeedprice_feed, underlyingLatest price, confidence, publish time and publisher

Prices

On devnet, prices come from price feed accounts written by the keeper's publisher. Only the feed's publisher can write to it, each update must be newer than the last, and its confidence interval must be within 1% of the price. When a market locks or settles, the program reads the feed and rejects a price older than 120 seconds.

The crank sends the price update and the lock or settle instruction in the same transaction, so the recorded price is the one published at that moment. The program also supports Pyth price accounts, which is the intended source outside devnet.

Keeper

  • Publisher: every minute. Crypto around the clock; equities during the regular session.
  • Markets: creates the next hourly markets and daily ladders ahead of time, computes their thresholds, and seeds both sides so every market starts with liquidity.
  • Crank: every minute, locks and settles the markets that are due.

Every job is idempotent, so running it twice has the same effect as running it once. Market creation is retried on later schedules if a run fails.

Devnet addresses

Program
7L9xYzMLHNRtnQYB9w7Djx4UAAmW3CnJxLHhEHJnRW6Q
USDX mint
8opqdnKkNEgneiJWkfW8EExTfpKssRqXuR6BBY86uYCu
Collateral
USDX, 6 decimals, test token with no value. The faucet gives 10,000 USDX per address every 24 hours.

Trust assumptions on devnet

Try it