> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kronex.network/llms.txt
> Use this file to discover all available pages before exploring further.

# Rewards

> What a block pays, who it pays, and why the coins are locked when it does.

Every Kronex block pays four kinds of recipient:

1. the **sealer** that found the kHeavyHash solution,
2. **uncles**, at a reduced rate,
3. the **workshares** included in that block,
4. everyone above again, through their share of the block's **priority-fee
   pool**.

[`krnx_getBlockReward`](/rpc/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 `rMin` and `rMax` as block difficulty
  moves from `difficultyFloor` to `difficultyCap`.
* **Workshare reward** interpolates between a per-parent-chain `rMin` and `rMax`
  as the hashes represented by the share move from `floorHashes` to
  `capHashes`.

Both use a logarithmic weight, `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`](/rpc/krnx/getRewardParams).

## Lockups

Rewards do not land as spendable balance. They are locked, and the unlock is
time-based:

```text theme={null}
unlockTime = lockedAt + rewardLockupSeconds
```

That is 14 days on mainnet and 5 minutes on testnet. Per-address aggregates come
from [`krnx_getLockedBalance`](/rpc/krnx/getLockedBalance); the indexed schedule
of individual future unlocks comes from
[`krnx_getRewardSchedule`](/rpc/krnx/getRewardSchedule).

Locked coins are why there are two supply figures:

| Method                                                        | Meaning                                |
| ------------------------------------------------------------- | -------------------------------------- |
| [`krnx_getTotalSupply`](/rpc/krnx/getTotalSupply)             | `genesis + totalMinted - totalBurned`  |
| [`krnx_getCirculatingSupply`](/rpc/krnx/getCirculatingSupply) | Total supply minus outstanding lockups |

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
with
[`krnx_getQueuedRewardParamsUpdates`](/rpc/krnx/getQueuedRewardParamsUpdates),
and the parameters actually in force at any height with
[`krnx_getRewardParams`](/rpc/krnx/getRewardParams).
