- the sealer that found the kHeavyHash solution,
- uncles, at a reduced rate,
- the workshares included in that block,
- everyone above again, through their share of the block’s priority-fee pool.
krnx_getBlockReward returns the whole breakdown for
one block: per-recipient amounts, group totals, and the pool split layered on
top.
The reward curve
Rewards are not a flat subsidy. Two curves are in play, both configured by the same governance-controlled parameter set:- Block reward interpolates between
rMinandrMaxas block difficulty moves fromdifficultyFloortodifficultyCap. - Workshare reward interpolates between a per-parent-chain
rMinandrMaxas the hashes represented by the share move fromfloorHashestocapHashes.
curveLogWeightBps, so the curve can be tuned
between linear and strongly log-shaped without changing its endpoints. Because
the workshare curve is per parent chain, SHA256d and Equihash work can be priced
differently while both remain accepted.
A stale proof is discounted rather than rejected, by
stalePenaltyNumerator / stalePenaltyDivisor.
Read the parameters in force at any height with
krnx_getRewardParams.
Lockups
Rewards do not land as spendable balance. They are locked, and the unlock is time-based:krnx_getLockedBalance; the indexed schedule
of individual future unlocks comes from
krnx_getRewardSchedule.
Locked coins are why there are two supply figures:
Both need the state at the requested block, so historical queries want an
archive node.
Changing the parameters
Reward parameters are versioned and updated through a signed governance transaction, not a hard fork. Each update carries a version, an activation height and a signature set, and only takes effect at the height it names. Updates that have been accepted but have not activated yet are public: read them withkrnx_getQueuedRewardParamsUpdates,
and the parameters actually in force at any height with
krnx_getRewardParams.
