Global Flow — Inflow ▲ / Outflow ▼ Across All Vaults (rolling 24h, hourly, UTC)
Every bar is the USD sum of real SPL transfers in/out of every tracked program vault — all custody vaults + TradeVault + RebateVault + staking + swept authority accounts — decoded transaction-by-transaction from pre/post token balances (exact u64) and valued at the on-chain oracle mark observed at capture. Vault→vault internal settlements are excluded (they are not user flows). The meter below is the outflow velocity cap: total outflow across all wallets per rolling hour vs the configured limit.
Trade Side Flow — trader collateral, Inflow ▲ / Outflow ▼ (rolling 24h, hourly, UTC)
Trade side = trader-collateral flows, dominated by TradeVault deposits and withdrawals, plus any custody-pool trade legs that are user-facing (not internal settlements). Each transfer is attributed from its transaction's own instruction names; vault→vault internal settlements are excluded.
Trade side — token breakdown
LP Side Flow — liquidity provision, Inflow ▲ / Outflow ▼ (rolling 24h, hourly, UTC)
LP side = liquidity provision only: add/remove liquidity (incl. compounding sFLP, FLP migration), per pool. Internal vault→vault settlements excluded.
LP side — token breakdown
Every Market Traded On Flash — live collective_position state
All market-sides decoded from the ER every cycle — open interest, collateral liability, open positions, average entry and the live on-chain mark (with synthetic targets like FX / metals / xStocks resolved through their virtual custodies). These values are the program's own Market.collective_position aggregate, decoded with the program's on-chain IDL (this panel displays that aggregate; it does not re-derive it from individual baskets).
Per-Token Flows & Hourly Limits — every custody vault
Active vaults (any flow in 24h) are listed first; quiet vaults are dimmed below. Drawdown 1h = share of the vault drained in the last rolling hour (balance one hour ago is reconstructed from the raw u64 deltas observed in that window). Cap util 1h = this vault's outflow this hour as a share of its per-token cap if one is set, otherwise of the global outflow cap. A · means no flow in that window (hover for detail). Failed txs are also counted, as a supplementary signal.
Governance & Authority Watch — the start of the kill-chain
—A drain often begins with a permission change — an upgrade-authority swap, an unexpected redeploy, or a protocol permission flip — before any money moves. Every field below is read live on-chain: the program upgrade authority + last-deploy slot from the BPF loader, and how upgrades are actually executed — this program's upgrades run through the Squads multisig (verified from the latest on-chain upgrade tx), and the global Perpetuals permission flags. A baseline is taken on first read; any change raises a critical alert.
Global protocol permissions
Top Wallets By Outflow — 1h
—Drains typically loop through a handful of controlled wallets. Single-wallet concentration against the per-wallet hourly cap.
Oracle Guard — FLASH6 Mark vs Pyth
—A manipulated or stale price feed is the classic vault-drain vector. Every custody's on-chain CustomOracle mark (with its on-chain publish_time) is cross-checked against Pyth Lazer — directly (token-gated, via LAZER_ACCESS_TOKEN) or via the Flash V2 API Lazer feed (flashapi.trade/prices, official Lazer ids from /tokens). This compares the value written on-chain against a live read of the Lazer feed, so a mark forged at the on-chain oracle (rather than at Lazer itself) diverges immediately. Paused/closed markets (marketSession + on-chain publish_time) are shown as MARKET IDLE and never alarm. The active source is on the tag.
Active Guard Thresholds
live · protecting the vaultsThese are the exact thresholds the sentinel is enforcing right now — cross any one and it alerts instantly. Detection layer: it pages the operator; halting an outflow on-chain needs a program-level circuit breaker.
Live Transfer Feed — every row is a real confirmed mainnet transaction
Alert Log — guard transitions
—Flow Conservation Proof — baseline + Σ observed deltas == live vault balance (raw u64)
—The dashboard proves it has not missed a transfer: for every vault, the balance at baseline plus the sum of every observed transaction delta must equal the live SPL balance — raw u64, zero tolerance, re-checked every cycle. A transfer landing mid-cycle shows briefly as syncing and must reconcile exactly on the next cycle.