Market stats
stats shows the whole comfy market on one page: the day's volume, trades, fees and launches, the 0G in pools, the top movers, the tokens that are trading and the newest trades. This page says where each number comes from and what it leaves out.
Where the numbers come from#
- Every number is read from comfy's public market index, the same one the token pages read. None is typed in by hand.
- The page reads the market every two minutes and keeps the last good reading. It shows when that was, as updated and a time in UTC, and says figures delayed once the figures are more than fifteen minutes behind the clock.
- The index follows the newest blocks of the 0G chain. A figure from the last few blocks can still change if the chain replaces them.
Time windows#
- 24h runs up to the newest block of the reading, the trades of the hour still running included. It counts whole hours in UTC, from the start of the hour 24 hours back, as the token board and the token pages count theirs, so a token's 24h volume in 0G and its 24h change are the same on both.
- 7d is the seven days to the same moment, counted the same way. Its columns appear once the market is a week old.
- The change against the 24h before compares the last 24 complete hours with the 24 before them, so both sides are the same length; it can trail the figure above it by up to an hour.
- The chart shows hours while the market is young, and days after that, back to 30 days. Its last bar is the hour or day still running, so far.
What each number means#
| Number | What it is |
|---|---|
| Volume | the 0G paid or received in trades. Dollars appear only when every trade in the period had a dollar rate at the time it happened. |
| Trades | settled buys and sells, with how many wallets bought and how many sold. A wallet that did both counts once on each side, so the two need not add up to a total. |
| Fees charged | what comfy charged on trades, before any of it is shared out. No rate is shown, because each token has its own. iAI's pool charges through its own hook, so its row says not applicable. |
| Launches | new tokens launched in the period |
| 0G in pools | the 0G the pools hold now. It leaves out the unsold tokens in each pool, so it is 0G that is really there, not a liquidity total that counts tokens at their price. |
| Price | the pool's price now, in 0G, and in dollars at the market's own 0G rate |
| Change | from the price at the start of the window to the price now. A token launched inside the window shows its change since launch, and says so. A token with no trade in the window shows a change of zero, over 24h and over 7d alike, because its price did not move. iAI's pool before its first trade says not open yet. |
| Share | a token's part of the whole market's volume in the window. While the market has no volume in the window, it says no trades. |
| FDV | the price times the total supply. iAI's is priced at the top of its mint curve. |
| Age | the time since the token's pool opened |
What is left out#
- Totals count every market, including tokens the lists leave out.
- Lists leave out the team's test launches and reserved tickers, as the token board does. The page says how many.
- The token list holds the tokens that traded in the last week, the 100 newest launches and iAI. Every other token is on the token board.
- Holder counts and market cap are not on the page.
- When a read comes up short, the numbers made from it say partial instead of a figure that would be too low.
Fees#
The fee stages (charged, swept, to creators, to protocol, to compute) are the same fees at different points, so they never add up to one total, and the shares show only when the ledgers agree. See Fees.
JSON#
The same figures as one JSON, made from the reading stats shows. Any site may read it.
curl https://www.comfy.fun/api/stats/v1statusisreadywith the figures.unavailable(HTTP 503) andoffcarry none.- An answer with
errorinstead ofstatus(HTTP 429 or 503) is the rate limiter's: ask again afterRetry-Afterseconds. - Volume counts each settled swap in a comfy market once: the 0G paid on a buy, fees included, or the 0G received on a sell, after fees. The token side is never added. A route through two comfy pools is two trades. Listed pairs are not comfy markets and count nowhere.
- Amounts are 0G in wei (18 decimals), as whole-number strings. Dollar volumes use each trade's own rate;
priceUsduses the market's rate when the reading was made. change24his on a scale of 100 andshare24hon a scale of 1: a price that doubled reads100, a token with all of the day's volume reads1.- A token with a price and no trade in the window has a
change24hof0. It isnullwithout a price, or for an iAI pool that has not traded yet. BeforedefinitionVersion2 it wasnullfor every token with no trade in the window. share24his summed from the same pool candles as the token's own figures. During the running hour that sum can differ slightly fromwindows.last24h.volumeQuote, so a share times that total can be a little off the token's own 24h volume.- Wallets are the accounts that sent the trades, counted and never listed.
traderscounts each once, whichever side it took. - Top tokens are the first 20 of the stats token list: by 24h volume, then lifetime volume, so a quiet day lists tokens that did not trade (
trades24his0). The list leaves out what the token board leaves out;tokens.hiddencounts it, and isnullwhenevertokens.topis. - Windows (
method.window) count whole hours in UTC, from the start of the hour the window opens in up to the indexed block, as the token board does:windows.last24h.tois that block's time (health.indexedBlockTime); the hour still running is counted as read, so it can hold a few blocks more. BeforedefinitionVersion2 they ended at the last full hour. - To compare days, take
windows.complete24h(the last 24 complete hours) againstwindows.previous24h(the 24 before them): both are 24 whole hours. - Weeks start on Monday, in UTC. The running hour, day and week say
partial. health.stateisok,partialordelayed, beside the indexed block, its time and how far the index was behind the clock when read.health.completeisfalsewhenever stats says partial, also underdelayed.- An unknown figure is
null, never zero. One whose read came up short isnulland named inhealth.held, where stats says partial. A partial reading with nothing inheldcan still run low: a pool not yet priced is left out ofquoteInPools, and a swap not yet resolved adds nothing to the volume. - Fields are only added within version 1. A changed rule raises
definitionVersion; a removed or renamed field moves to/api/stats/v2.
