Skip to content
Minerva. Post-quantum, proof of work.

Documentation · Protocol

Minerva supply statement

docs/05-supply-statement.md · commit e561109 · 2026-10-23

Status: draft reconciled from code (2026-10-20). Numbers marked whitepaper are allocation targets that no genesis implements yet; numbers marked code are what the node and contracts in this repository enforce today.

1. Mined issuance (code)

Source: blockReward schedule in every Minerva genesis (network/clients/minerva-node/config/*/genesis.json), paid by minervaBlockReward to the block winner only (no uncle rewards, no difficulty bomb, disposalBlock: 0). Tests: the reward schedule test across halving boundaries in params/mutations.

Era From block Reward per block Era issuance Cumulative
0 0 1 MRV 10,500,000 MRV 10,500,000 MRV
1 10,500,000 0.5 MRV 5,250,000 MRV 15,750,000 MRV
2 21,000,000 0.25 MRV 2,625,000 MRV 18,375,000 MRV
3 31,500,000 0.125 MRV 1,312,500 MRV 19,687,500 MRV
4 42,000,000 0.0625 MRV 656,250 MRV 20,343,750 MRV
5 52,500,000 0.03125 MRV 328,125 MRV 20,671,875 MRV
... halving every 10,500,000 blocks
60 630,000,000 0 0 21,000,000 MRV
  • Total scheduled issuance: 21,000,000 MRV (sum of the schedule, 61 entries, zero from the 61st).
  • No tail emission: from block 630,000,000 the only miner revenue is transaction fees.
  • Base fee split (decision D8, implemented): from the emission activation the block producer receives the priority fee plus 30 % of the base fee; 70 % of the base fee is burned (MinervaBaseFeeMinerShare, verified by TestMinervaBaseFeeSplit and live by pnpm devnet:migration-smoke, which reconciles a block's coinbase delta).

2. Genesis allocations

Allocation Amount Whitepaper or code Where
Migration reserve (one-way claim programme) 1,000,000 MRV code (contract) + whitepaper (amount) MinervaMigrationReserve at 0x...0205 in every Minerva genesis; funded with 1,000,000 MRV on minerva-devnet (exercise only) and on mainnet when its genesis is built; 0 on testnet
Treasury (vested) 3,000,000 MRV whitepaper not in any genesis; vesting not built
Liquidity and audits 1,500,000 MRV whitepaper not in any genesis
Mining 21,000,000 MRV code schedule above
Cap 26,500,000 MRV whitepaper not enforced by code beyond the mining schedule; the 1,000,000 migration reserve sits inside this cap; no other allocation exists

Development profiles prefund accounts that are not allocations:

Profile (chain id) Prefund Purpose
minerva-devnet (77137) 1,000,000 MRV to the devnet PQ account local development and smokes
minerva-testnet (77138) none; the faucet is paid from mined MRV public testnet

A Minerva mainnet genesis does not exist yet; when it is built, this table becomes its source of truth and the migration reserve, treasury and liquidity lines must appear as genesis balances of contracts with their own ledgers (vesting, one-way claim path).

3. Migration reserve and claims to date

MinervaMigrationReserve (network/contracts/src/MinervaMigrationReserve.sol, system address 0x...0205) holds the allocation and pays it through a one-way claim path: the controller (a PQ-controlled account written into storage slot 0 at genesis) publishes one Merkle root over (recipient, amount) leaves with a claim deadline; each leaf is claimable once and only to its recipient; after the deadline the controller sweeps the remainder to a named treasury; nothing claimed can come back as a claim. ledger() returns reserve, allocated, claimed, outstanding and swept. Evidence: 6 Foundry tests and pnpm devnet:migration-smoke (root set once, claim once, re-claims and bad proofs refused, ledger reconciles).

Claims to date on a public network: 0 (no public Minerva network yet). The eligibility snapshot that produces the root is a governance decision and must be published with the root.

4. Burned base fees to date

Devnet only; no public Minerva network is running. The reconciliation for a public network is sum(baseFeePerGas * gasUsed) over all blocks, which the explorer will publish once the testnet launches.

5. Bridge inventory per ledger category

The vaults expose their ledgers on-chain (bridge/):

  • Ethereum MRVBridgeLiquidityVault.ledger(): lp, protocol, queuedWithdrawals, reserved, balance, with balance == lp + protocol + queuedWithdrawals and reserved <= lp + protocol.
  • Minerva MinervaNativeBridgeVault.ledger(): lpInventory, protocolInventory, escrow, balance, with balance == lpInventory + protocolInventory + escrow (escrow is the outstanding refund liability).
  • Sepolia deposit adapter: balance == escrowedMRV + settledLpMRV + settledProtocolMRV.

These identities are fuzzed by LedgerInvariants.t.sol. Live figures belong to the public testnet status page, not to this statement.

6. Long-run security budget

After block 630,000,000 the scheduled issuance is zero. Security then rests on fees alone: priority fees plus 30 % of base fees to miners, 70 % of base fees burned (D8, implemented). The split changes the miner share of fees, not the 21,000,000 MRV issuance.