Supply tracking¶
The indexer computes per-block supply data and serves it via /api/supply/*.
Inputs per block¶
For each block the indexer records:
- Subsidy — the base block reward from the coinbase/coinstake.
- Fees paid — total fees paid in this block.
- Fees burned — fees that went to OP_RETURN outputs (unspendable).
- Reward recipient type —
staker(regular PoPS block),bootstrap(genesis transparent outputs), orburned(edge cases). - Cumulative supply — running total of spendable NAV up to and including this block.
See navio-blocks README for the reference implementation of these rules.
Network regimes¶
| Network | Block reward | Min stake | Notes |
|---|---|---|---|
| mainnet | 8 NAV | 10,000 NAV | Height 1 mints nBLSCTFirstBlockReward; bootstrap PoW then PoPS |
| testnet | 4 NAV | 10,000 NAV | Height 1 mints nBLSCTFirstBlockReward; bootstrap PoW then PoPS |
blsctregtest |
4 NAV | 100 NAV | Local BLSCT / PoPS development chain |
See Concepts → Consensus & supply.
Computation¶
Pseudocode (see packages/indexer/src/sync/supply.ts in navio-blocks for real code):
function supplyDelta(block, network, params) {
// BLSCT / PoPS networks only.
const subsidy = BigInt(params.nBLSCTBlockReward); // sats, 4 NAV = 4 * 1e8
const recipientType = 'staker';
const fees = sumFeesFromTxs(block);
const burnedFees = sumOpReturnOutputAmounts(block);
return { subsidy, fees, burnedFees, recipientType };
}
Height 1 on BLSCT chains mints nBLSCTFirstBlockReward. On mainnet, subsequent PoW bootstrap blocks through nLastPOWHeight carry zero subsidy when fOnlyFirstPoWBlockHasReward = true; PoPS blocks after the bootstrap window pay nBLSCTBlockReward.
Endpoints¶
Served from the precomputed block_supply table:
GET /api/supply—{ total, max, burned, currentReward }GET /api/supply/chart?period=24h|7d|30d|1y|all— time-seriesGET /api/supply/block/:height— single block supply entryGET /api/supply/burned—{ total, last_24h, last_7d, last_30d }
Invariants¶
- Cumulative supply is monotonic (it never decreases). OP_RETURN burns reduce the next block's subsidy portion going into circulation, not the historical total.
- No supply cap. Navio does not enforce a fixed-money ceiling. Cumulative supply grows by
nBLSCTBlockRewardper block indefinitely. - Fees reconcile. The sum of paid fees in a block matches the difference between input commitments and output commitments for transparent txs; for BLSCT txs, the fee is a transparent field on the transaction and is directly readable.
Edge cases¶
- Height 1 initial mint — use
nBLSCTFirstBlockRewardfrom chainparams. - Bootstrap PoW window — on mainnet, heights
2..nLastPOWHeighthave zero subsidy whenfOnlyFirstPoWBlockHasReward = true. - Testnet genesis bootstrap — initial PoPS staker set may require seed commitments; read the explicit chain data rather than hard-coding explorer assumptions.
- OP_RETURN burn — every block's OP_RETURN outputs reduce circulating supply.
- Validator reward — credited via BLSCT coinstake outputs (amount hidden). Transaction fees are burned (not paid to validator), reducing circulating supply.