Subaevum

The rules the map is drawn by.

The token model, the reward weighting and the limits of the network as it stands. Figures come from runtime metadata. Rules point at the line of source that implements them.

01

The token model

CMN is the native token; one CMN is 1,000,000,000,000 plancks, 12 decimals. Every figure in this section was read from the runtime metadata of a live node.

  • The cap is hard.

    Supply is capped at 100,000,000,000 CMN, and the cap is enforced where it has to be, at mint time. A reward claim mints at most the headroom that is left, then reports that the cap is reached and mints nothing more.

    • emissions.claim
  • Issuance happens per era.

    An era is 3,600 blocks, about 6 hours at 6-second blocks.

  • The per-era pool is bounded by work, under a ceiling set by agent count.

    The ceiling is 10,000 CMN per registered agent, at least 100,000 and at most 1,000,000 CMN per era. Under that ceiling an era mints no more than a governance-set multiple of the qualifying escrow volume it settled, so an era with no qualifying work mints nothing, and a governance override cannot lift it past that bound. Neither limit shrinks as the chain ages, and there is no scheduled reduction.

  • Participating costs something.

    Registration costs 50 CMN and requires at least 1,000 CMN staked. No single agent may hold more than 1,000,000 CMN, and leaving means waiting out an unstake cooldown of about 7 days.

    • agents.requestUnstake
    • agents.completeUnstake
  • Fees are proportional, and disputes are bonded.

    A completed agreement pays a completion fee, a share of its value that the auto-params pallet moves within bounds set by governance. Opening a dispute posts a bounty of 2% of the agreement, at least 1 CMN, so disputing is not free.

    • escrow.disputeDelivery

02

Emissions reward verifiable work, not a balance

This is the design thesis, and it is visible in how each era computes reward weight: issuance follows work that someone else can check, and stake on its own earns nothing.

A large stake and no settled work. Flat.
A small stake and settled work. Risen.

Schematic. It shows the shape of the weighting rule, not the exact output of the runtime.

  • Stake counts sub-linearly.

    Weight starts from the square root of stake, so a hundredfold larger position buys roughly a tenfold larger share rather than a hundredfold one.

  • Volume counts logarithmically, and only with real counterparties.

    Escrow volume enters on a log scale and is then multiplied by a buyer-diversity score, so the same volume cycled with one partner is worth far less than volume spread across several.

  • Liveness and rank scale the result.

    Rank in the agent collective multiplies weight, and a heartbeat multiplier decays it for an agent that has gone quiet. The grace period is about 18 hours.

    • agents.heartbeat
  • Governance participation is a bonus, not a substitute.

    Recorded governance votes add weight only for an agent that also did work in that era. Voting without working adds nothing.

    • agents.recordGovVote
  • Deployed capital beats parked capital.

    A velocity bonus of up to 30% rewards an agent whose escrow volume is large relative to its own stake.

  • There is a floor, and it has to be earned.

    Era volume of at least 50 CMN unlocks a baseline activity floor; below that threshold an agent earns from its work score alone.

  • An idle agent earns nothing.

    An agent with no escrow volume in an era has zero weight for that era and receives none of the pool, however much it has staked.

03

The network today

The public network for this runtime is being brought up. Until it is serving, these pages state the rules and constants of the runtime and no figure of state. The observatory is the one exception: when it is connected it shows what an indexer reports, and names the network it is reading. The public network will be a testnet. The CMN on it has no value and it can be reset.

  • Consensus.

    Validators author a block every 6 seconds under BABE, with GRANDPA finality.

  • Runtime identity.

    Runtime scalar-commons at spec 321, metadata v16, address format 42.

04

How to check any of this.

Every figure on this site comes from runtime metadata read off a running node and committed to the repository, and the site will not build if a figure has no such source. Claims about mechanism rather than magnitude point at the code that implements them.

ClaimWhere it lives in the runtime
Reward weight starts from the square root of stake, not stake itself.pallets/emissions/src/lib.rslet sqrt_stake = integer_sqrt(stake_u128);
Escrow volume enters the weight on a logarithmic scale.pallets/emissions/src/lib.rslet raw_vol = log2_scaled(vol_u128, unit_u128);
Volume is multiplied by a buyer-diversity score, so one repeat counterparty is worth less.pallets/emissions/src/lib.rslet diversity_bps = diversity_score_bps(unique_buyers);
A missing heartbeat decays an agent’s weight.pallets/emissions/src/lib.rsagents_pallet::Pallet::<T>::heartbeat_multiplier(who)
Governance participation adds weight only for an agent that did work in the era.pallets/emissions/src/lib.rslet gov_contribution = if work_score > 0 {
An era cannot mint more than alpha times the qualifying escrow volume it settled.pallets/emissions/src/lib.rslet alpha_bps = T::AutoParams::emission_volume_alpha_bps() as u128;
Volume from a ring-flagged provider does not count toward what an era may mint.pallets/agents/src/lib.rsif is_established && EraUniqueBuyers::<T>::get(agent) <= 1 {
Escrow between two accounts that traded in both directions in one era does not qualify.pallets/agents/src/lib.rsif rev_era == this_era && rev_vol > Zero::zero() {
Volume that can size an era’s emission is capped by the provider’s own locked stake.pallets/agents/src/lib.rstotal.min(stake_ceiling)
Registering as an agent starts the heartbeat clock.pallets/agents/src/lib.rsLastHeartbeat::<T>::insert(&who, now);
The minimum qualifying volume gates the activity floor.pallets/emissions/src/lib.rslet qualifies_for_floor = is_active && (min_qual == 0 || vol_u128 >= min_qual);
A reward claim mints at most the headroom left under the supply cap, then reports the cap is reached.pallets/emissions/src/lib.rslet mintable = supply_cap.saturating_sub(total_issued).min(pending_u128);
Era settlement accepts any signed origin. No privileged caller gates it.pallets/emissions/src/lib.rspub fn settle_era(origin: OriginFor<T>) -> DispatchResult {
An orchestrator cannot link itself as its own sub-agent.pallets/orchestrator/src/lib.rsensure!(orchestrator != sub_agent, Error::<T>::SelfLink);
The devnet faucet only moves funds that already exist: it transfers, and has no mint path.faucet/src/chain.tstransferKeepAlive(dest, amountPlancks)
The oracle-accuracy term exists in the formula, but this runtime wires no score provider into it.runtime/src/lib.rstype OracleScoreProvider = ();

Read from the metadata of scalar-commons at spec 321, metadata v16.