Data freshness and honesty
Every number in a read endpoint comes from Chord’s own index of the chain: every swap event on every venue, decoded and priced at index time, stored as a tape, and rolled up by hour, token and venue. Nothing is fetched from a third-party price API on the request path.
Tape and rollups
Section titled “Tape and rollups”- The tape is one row per swap: block, transaction, venue, pool, token, side, size, USD, price and the attributed wallet. Trade tapes, wallet PnL and positions read it.
- The rollups sum the tape by hour per token and venue, and by day per chain.
/arc/*,/rh/*, boards and overviews read only rollups, so they answer in milliseconds and never scan the tape. - Live layers sit on top where seconds matter: Arc prices are pushed from the chain head over WebSocket, and the Arc top-wallets board keeps the last minutes of trades in memory between rebuilds (
livein the response).
Coverage flags
Section titled “Coverage flags”Rollup answers carry a coverage object. Read it before you trust a quiet number.
| Field | Meaning |
|---|---|
recentAt |
The most recent hour the rollup has processed. |
stale |
True when recentAt is older than the lane’s freshness bar. A quiet chart with stale: true is a lane that stopped, not a market that stopped. |
floorHour |
The oldest hour rolled up so far. Windows reaching further back undercount. |
genesisHour |
The chain’s first indexed hour. |
backfillComplete |
True once floorHour reached genesis. |
Other families expose the same idea in their own words: the holder ledger says tracked and complete; /lp/status shows each lane’s cursor against the chain head; /arc/status shows the pool index cursor and whether discovery reached genesis. updatedAt on any answer is when the server built it.
Attribution
Section titled “Attribution”A swap’s wallet is the account that initiated the transaction, resolved through routers, aggregators and account-abstraction executors. On Robinhood Chain, routers and executors were 71 % of transactions in a day before attribution landed; publishing a “top wallets” board of routers would have been a lie. So: wallets, traders, providers count attributed wallets only, and bots are removed from rankings by cadence, nonce rate and behaviour (botsRemoved on the board says how many).
Honesty flags
Section titled “Honesty flags”Chord flags rather than hides, and sorts flagged rows below clean ones.
| Flag | Where | Rule |
|---|---|---|
flags: ["wash"] |
token rows | ≥ $5k of volume from ≤ 2 wallets, or ≥ $50k from fewer than 5. A fake ARGUS once printed “$9.97M” from ten $500k self-trades in one second. |
flags: ["impostor"] |
token rows | An unlisted token wearing a listed or trusted symbol. |
suspect |
pool rows | Turnover no honest pool reaches (24h volume ÷ TVL above 300×, or above 50× with under 25 traders), dust TVL under real volume, or fewer than five wallets printing over $10k. Hidden from /lp/pools unless flagged=1. |
token0.impostor / token1.impostor |
pool rows | A symbol that copies the chain’s anchor (a “USDC” that is not the predeploy). |
screened |
/arc/graduated |
Launches removed by each screen: impostor symbols, launch farms (one creator, many pools), no sells, too few traders, no trades. |
jit · unreconciled |
positions | Opened and closed within seconds (a swap trick); dollars out far above dollars in (the tape missed an add). Shown, never scored. |
Forged pools — forks emitting Swap events with no USDC actually moving — are dropped from the tape entirely when detected.
Prices
Section titled “Prices”priceUsd on a token row is the last trade on the token’s dominant venue for the day, not a blend; a thin fork cannot move it. Market cap is totalSupply × price and is fully diluted, because nothing on-chain says what is locked. Candles are built from the tape (source: "db"); a token with too few trades for a bucket has no candle rather than a fake one.