Methodology
Methodology
Where every figure on reel comes from, why an unread value is “—” and never zero, and what the app checks before it asks your wallet to sign.
Source hierarchy
reel has no database. Every figure comes from Solana, in this order of authority:
- Program accounts, read over RPC: pools, positions, launches, claim ledgers and the global config. These are the state the program enforces, and they decide what a transaction will do.
- Settled transaction logs: every swap, liquidity change, fee collection and payout emits an event in its transaction. History, charts and activity lists are built from these, fetched and cached on reel's server.
- Third-party data, such as a USD price, only where the chain has no answer. It is labelled with its source, and it never overrides program state.
Lists are getProgramAccounts queries filtered by account type: each reel account starts with an 8-byte tag, such as reelPOOL for pools. Running totals come from counters the program keeps in its own accounts (pools, launches, volume per side, fees per block, burns, prizes), not from adding up a page of results.
Fail-closed display
A figure is either read or shown as unavailable. reel never fills a gap with an estimate.
- A value that could not be read shows as “—” with the reason when one is known, such as “RPC did not answer”. It is never shown as 0, because zero is a claim.
- A control that depends on an unread value stays disabled. You can't trade on a quote the app could not compute.
- A list read in part is labelled as partial. A count from a partial read is a floor, not a total.
- Totals stay in their own quote token. SOL and USDC amounts are never added together unless a labelled price converts them.
The program works the same way where it matters: a pool running Market Guard refuses every swap when its price feed is missing or stale, rather than trading on an old price.
Freshness
Every on-chain read happens at some slot, and the chain moves on. Live figures are read again on a timer while the page is open and visible, and stop while it is hidden. The chain link itself (whether reel's server can reach a Solana RPC, the latest slot and the round trip) is on the status page, read every 10 seconds.
A cached figure is for reading, never for deciding. Nothing cached is used to build a transaction.
Before every wallet request
When you swap, add or remove liquidity, collect or claim, the app is designed to:
- read the accounts involved again, at the latest state;
- quote the action with reel's SDK, which runs the same math as the program, and set your limit from your slippage setting (the least you accept, or the most you pay);
- simulate the transaction and show what it would do;
- only then ask your wallet to sign.
Your wallet shows the final request. If it doesn't match what you asked for, decline: nothing is sent.
Receipt over animation
A transaction moves through distinct states, and the app names each one: preparing, waiting for your approval, sent, confirmed. An approval in your wallet only means you signed; a sent transaction can still fail or expire. A swap counts once the transaction is confirmed, and is final once it is finalized. The explorer link on each confirmation is the record.
Earnings language
Words for money are kept apart because they mean different things:
- Claimable now is what your claim ledger owes you for a token right now (prizes, royalties, referral and recapture credits), plus fees your positions have earned and not collected.
- Lifetime figures come from the ledger's own per-category counters, kept by the program, and from what each position has collected.
- Fees a pool has earned but not yet settled to a position are not shown as yours until the program would pay them.
- Anything unknown is “—”, never an estimate.
Liquidity and market cap
- Liquidity is the real quote token in a pool: what sellers can actually take out. A new token's pool may open with virtual quote, which sets the launch price but can never be withdrawn; it never counts as liquidity, and neither does the token side. In USD, liquidity is that real quote reserve at the quote's price from Jupiter, and "—" where Jupiter has no price. Pool pages, Discover, the landing total,
/api/v1, the MCP server and Scan all use this figure (liquidityQuotein the API, in quote atoms). - Market cap is a token's current supply times its price in its deepest priced reel pool. Burns lower the supply, so the figure follows them.
- Pool APR divides lifetime LP fees, annualised over the pool's age, by every position's value now (real quote plus real tokens at the pool price). It is past fees, not a forecast.
How to check a figure yourself
Open the account on an explorer and read it, or decode it with reel's SDK, which ships the account layouts. A pool's frozen settings, its reserves and its counters are all in the pool account. A transaction's event is in its logs. If the app and the chain disagree, the chain is right; please tell us through the channel on the security page.