Where new $OHMV comes from
Supply only grows two ways: bonds mint OHMV to people who pay OHM into the pool, and the Ratchet mints staking emissions when backing sets a new high. This page splits every new token by source, hour by hour, and puts it next to SEMI, the first vault (Robinhood Chain), at the same age.
Where new supply came from
Everything above the 10M launch supply, split by source. Blue is OHMV (or SEMI) minted to bonders; gold is minted to stakers by the Ratchet.
--
New supply, hour by hour
Both tokens started at 10M, so the lines are aligned on launch and drawn in tokens. Solid lines are OHMV, live. Dashed lines are SEMI's history at the same hour of its life.
Cumulative new supply since launch
--
Epochs paid vs not paid
Every cell is one 6-hour window since launch, one row per week (28 windows). The colour is what the epoch tick in that window did. Epoch numbers follow /staking and /rewards: the launch tick sets the mark, and epoch #1 is the first tick after it.
OHMV
--SEMI
----
Supply growth per day
New tokens minted in each 24 hours since launch, stacked by source. Day 1 is the first 24 hours. On All the chart runs to the end of SEMI's history and OHMV's bars stop at its current age.
Day by day, side by side
--
SEMI, every day of its life
--
SEMI vs OHMV over time
snapshotThe two vaults lined up by hours since each launch. Solid is OHMV, rebuilt from Ethereum logs at most every 15 minutes (the pill shows the time its data runs to and how far that is behind the latest block); dashed (or faded) is SEMI at the same hour of its life. Every same-age number in this section is taken at the age of OHMV's latest data point (the "At …h" in the table and the takeaway), not the nearest whole hour. The supply charts, epochs and checkpoint table run to the latest block, so their age can be a few minutes later.
Same age, side by side
----
Volume per day
--
Share of supply staked
--
Holders
--
Market cap
--
Fees collected by the hook
--
Liquidity, backing, rewards and who trades
Pool liquidity
--
Premium over backing
--
Staking reward per epoch
--
Bonds per day
--
Unique traders per day
--
How these were built
Where the data comes from. OHMV's side comes from /api/ohmv-history, which replays every OHMV Transfer, every v4 Swap and ModifyLiquidity on the OHMV pool, the hook's CellsSkimmed, the bond's Bonded, the staker's Staked, Unstaked and EpochNotified, and Chainlink OHM/ETH × ETH/USD rounds since launch. It reruns at most every 15 minutes and checks its supply, pool reserves and stake against the contracts. The copy is cached, so it can reach the page some minutes old: if it runs more than 12 minutes behind the latest block, the page asks once more about 10 seconds later, by when the rebuilt copy is in, and while the page stays open it asks again whenever the data falls 15 minutes behind. If it can't be reached, the page uses the snapshot built into it (--). SEMI is the reference: its history is a fixed replay of Robinhood Chain, pulled --.
Same age. OHMV's numbers are at its latest data point. SEMI's are at exactly the same age: its rows are exact at every whole hour (and at 84.88h), and between two rows the value is interpolated, so the error is at most what SEMI did within that one hour. Supply, bond share and epochs at the top of the page are exact to the second, from the mint events.
Volume is the quote side of every swap on the token's own pool, valued in USD at the time of the swap. The hook's own harvest, compound and bond-donation swaps are left out. Unique traders are the wallets whose token balance moved in the swap's direction, not the transaction sender, because intent fills and bundlers sign for users. Pool liquidity is the vault-owned full-range position (launch seed plus the hook's compounds), both sides at the pool price. Backing is quote in that position ÷ total supply, and premium is price ÷ backing, as in the live tiles.
% staked is the staker's principal (every Staked minus every Unstaked, which equals active + pending) over total supply. OHMV stake in the 6-hour unstake cooldown is not counted. Holders are addresses with a balance above zero; "Excl. protocol" also drops the vault's own contracts and 0xdead. Market cap is pool price × total supply; circulating leaves out the tokens sitting in the pool itself. Fees are the hook's skims on outside swaps; OHMV's hook also takes 5% on its own housekeeping swaps (SEMI's never did), which is shown separately and not counted here. Reward per epoch is minted ÷ earning stake for each EpochNotified, annualised over the hours since the previous tick. SEMI's event reports that earning stake directly; OHMV's reports it after the tick has activated the newly staked tokens, so for OHMV the earning stake is rebuilt as the previous tick's totalActive minus unstakes since (it matches an archive read of totalActive just before each tick); SEMI's ticks were irregular, so its early rates look extreme.
Holders, bonds, sell pressure and dumps
snapshotFour things the supply charts can't show: who holds the supply, what a bond pays against buying on the pool, how new staking emissions compare with what sellers put into the pool, and how long the price takes to recover after a dump. All of it comes from the same Ethereum replay as the charts above.
Holder concentration
--
Bond discount vs the pool
--
Emissions vs sell pressure per day
--
Time to recover after dumps
--
How these were built
Holder concentration is the share of total supply held by the 10 and 50 largest wallets, at every hourly row. The vault's own contracts (pool, hook, staker, bond, AutoStake, Loans, the Cerberus and Kennel Pad contracts, routers, factories and 0xdead) are never counted as holders. With stake counted to stakers, the staker is replayed wallet by wallet from Staked, Unstaked, Withdrawn, Claimed and EpochNotified with the contract's own reward arithmetic, so a wallet's staked principal, its unclaimed rewards and anything still cooling down count as its own. Bonds still vesting count to the bonder (Bonded minus the bond's Claimed), and AutoStake positions count to the depositor (waiting deposits and exits at face value, the rest split by shares from WavePriced and ExitRequested). The per-wallet totals add up to what the staker and bond hold, to the token. Staking contracts as holders uses plain token balances instead, with the staker and AutoStake as single holders. The balances update incrementally with every transfer; the top 10 and 50 are picked once per row.
Bond discount = 1 − (OHM paid ÷ OHMV minted) ÷ pool price. OHM paid is Bonded.ohmIn minus any refund (FloorDonated); the pool price is the one just before the bond's own transaction moved it. The bond quotes 20% more tokens than the lower of spot and a 10-minute TWAP, and 5% is skimmed on the half of the OHM the hook sells, so a bond at spot nets about 14.5%.
Emissions are the OHMV the Ratchet minted to stakers at each tick (EpochNotified.minted), in USD at the pool price and OHM price at that tick. Sells are the OHMV that outside swaps put into the pool, and the OHM they took out, in USD at the time; the hook's own swaps (harvests, bond legs) are left out. Day 1 is the first 24 hours after launch. SEMI uses its own replay: emissions are exact from its mint events (USD at the price row at each mint), sells in USD come from its swap rows, and sells in SEMI are estimated as MU sold ÷ that row's closing price (hourly; 6-hourly after day 30), so they are marked ≈.
Dumps use hourly closing prices. A local high counts as a dump when a later close is at least 15% below it; a new local high starts once the price is 15% above the low. The dump is over at the first hourly close at or above that high. Dumps inside a bigger dump count on their own. SEMI uses its own hourly history (6-hourly after day 30); "same age" stops SEMI at OHMV's current age.
OHMV live
reading…Read from Ethereum each time the page loads, then every two minutes. Dollar values use the OHM price from the site's on-chain oracle.
Checkpoint table
The numbers behind the charts at fixed ages. Bond and emission columns are cumulative new supply in tokens.
How these numbers were made
The highlighted row is OHMV at the latest block the page has read, so its age can be a few minutes past the "At …h" of the SEMI vs OHMV section, which runs to the end of OHMV's rebuilt history. Every new token is a Transfer from the zero address on the token contract. Sent to the staking contract it counts as an emission; sent to the bond contract it counts as a bond. 10M launch supply + emissions + bonds equals totalSupply() for both tokens, emissions equal ratchet.totalMinted(), and OHMV bonds equal bond.totalMintedToken(). Epoch ticks come from the staking contract's EpochNotified events.
OHMV after -- is read from Ethereum when you open the page. SEMI lives on Robinhood Chain, which this site cannot read from the browser, so its history is a fixed snapshot taken --. SEMI has not minted since epoch #81 and its last bond was on 8 Sep, so the snapshot is its current state.
