Metrics reference
Figures we do not publish
Fifteen figures that are derivable and wrong, with the reason each one is refused.
Every figure below is derivable from the chain and wrong. They are listed because a conscientious integrator will otherwise derive them — each one looks like the obvious reading of a variable that exists.
The list#
| Figure | Why not |
|---|---|
| A single marketing-revenue number | Launchpad slots are wei; a market’s featured cut is a settlement-time share of that market’s own currency, with no factory-side accumulator. One number would silently add currencies. Fees. |
A cross-currency marketVolume or openInterest total | Same reason. Per currency, always. |
totalProtocolFeesReceived presented as “revenue” | Under-reports by totalRefusedByCeiling, permanently. Publish lifetimeFeesReceived, or publish both and label them. THD and the fee meter. |
progressBps() for a graduated launch | Reads 0 because realEthReserve is zeroed. Force 10000, as the oracle does. |
realEthReserve() as “raised” | Excludes fees, and is 0 after graduation. Use virtualEthReserve − initialVirtualEthReserve. |
A holder count when countedAt == 0 | That is unknown, not zero. Holders. |
A pool FDV floor when covered == false | The floor is meaningless without coverage — valuation. |
MarketTerms.feeRecipient as a payout wallet | It is PredictionMarketFactory itself. |
| Settler earnings, in ETH | Settlement is permissionless and pays no fee, so an ETH figure would be zero by construction. Settlers do have a THD allocation — 100 bps, 10,000,000 — but THD has not launched and nothing in that allocation has been paid, so there is no figure to publish either. See the eleven allocations. |
launchFeeBps from a deployment record, as the current rate | It is the superseded model. The launch fee is a flat launchFeeUsd priced through an oracle at the moment of the launch, which the current mainnet record carries. A wei series built across the two eras is not one series. Fees. |
| A THD figure read from a retired emission contract as “the allocation” | Retired generations carry nine buckets on the superseded split. The live contract carries the eleven. Reading one and labelling it the other is wrong in both directions at once. |
| Premium or item-mall spending, as revenue | Paid in THD, both are burned: they destroy supply and the fee meter never sees them. Premium paid in ETH or a listed currency goes to the marketing treasury and never reaches the meter either. None of it unlocks THD or belongs in a protocol revenue line. The battlepass, the shop. |
| A total burned built from burn events alone | Undercounts by the adapter’s graduation dust, which emits no burn event. Launches. |
| The rate card from the addresses file | It is not there, deliberately. launchFeeUsd, tradeFeeBps and the graduation ladder are settable, and a build-time copy goes stale silently. Read them live — and launchFeeWei moves with the USD oracle as well. The addresses file. |
A THD unlock percentage without feesToFullEmissionWei | The denominator is a per-deployment immutable, so testnet and production percentages are not comparable. |
Why a refusal rather than a caveat#
The rest are wrong in a direction, and the direction is what makes them dangerous: every one of them under-reports or over-reports consistently rather than randomly, so a series built on one looks perfectly plausible over time and is simply not the quantity it claims to be.