[ research · 2026-10 ]
On-chain commodity index: how a 14-asset PPI works
A commodity index turns many prices into one number. Doing it on a blockchain changes who can use that number: any contract can read it, settle against it, and react to its state without a server in between. This page explains what the Planet PPI is, why the data-quality layer matters more than the price formula, and what a venue can do with it.
1. What "on-chain" actually buys you
An off-chain index is a number in a database. To settle a derivative against it you need a trusted party to report it, and a dispute process when the report is wrong. An on-chain index is a state variable: the contract stores each asset's price, computes the weighted mean, and exposes it through a read call. The settlement is the same transaction that reads it.
Planet's index lives in PlanetCore on Arbitrum One. The 14 assets cover energy,
precious and industrial metals, agriculture and industrial inputs. Each asset has a weight
(capped at 15%), a base price locked at inception, a current price, and a risk state.
2. Why a single price source is the wrong design
A perpetual market liquidates positions against its price. If the price comes from one key or one API, the liquidation engine cannot tell a real move from a bad print. It treats both the same way: it liquidates. That is how oracle-driven cascades happen.
Planet's mainnet deployment removes the single-key path entirely: the core's relayer address is locked to zero, so the only way to move a price is a payload signed by two of three independent keys, bound to this contract and this chain. The same signed feed is public, so anyone can relay it and pay the gas.
3. The part most indices do not publish: data quality
Every update carries a risk state per asset: normal, caution (stale or unconfirmed) or frozen (excluded from the index and from the staleness gate). The index renormalises over active weights, so a dead feed does not block the market forever — and a freeze cap prevents the basket from being collapsed onto one commodity.
The practical value: a venue reading the index can tighten margin or refuse new positions while a feed is degraded, instead of learning about it after a liquidation. That is the difference between a price and a usable price.
4. The formula, in one paragraph
For each active asset, the contribution is weight × currentPrice / basePrice. The
contract sums the contributions and divides by the sum of active weights. The result is a
1e6-fixed number where 1.0 is inception. A frozen asset is skipped in both numerator and
denominator; the freeze cap limits how much weight can be skipped at once.
5. What it is used for
- Perpetual settlement. A perpetual market where an LP pool is the counterparty settles against the index. Liquidation requires the position to be underwater at both the spot price and a 30-minute snapshot average, so a single print cannot force it.
- RWA pricing reference. Tokenised commodity products can quote in index terms rather than per-asset terms.
- Research and monitoring. The live index and the daily snapshot series in the repository are public.
6. What it is not
- Not a stablecoin: there is no commodity reserve and no redemption right.
- Not a DEX: Planet builds no AMM; spot metals route through an external aggregator.
- Not externally audited: the contracts are self-audited with reproducible test suites.
7. Reading the index
The live value, the 14 assets and their states are at /ppi. The public JSON
API is /api/v1/ppi; the signed feed a venue would relay is
/api/v1/price-signed. The rulebook is at /methodology.