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
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
On chain · Solana
Volatility Pools program
Markets, rules and payouts
Price feed accounts
One per underlying
Vaults and positions
One vault per market
Clients
Web app
pools.movex.market
Any wallet or script
Permissionless instructions
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.
| Account | Seeds | Holds |
|---|---|---|
| Market | market, underlying, session, tier | Threshold, the 20 samples, times, prices, pool totals, fee, state |
| Vault | vault, market | The deposits of one market |
| Position | position, market, user, side | One participant's deposit on one side, and whether it was claimed |
| PriceFeed | price_feed, underlying | Latest 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.
