x/valrewards awards validators for signed blocks using per-epoch points. Rewards are not share-based: each validator earns points for signing, proposers receive a fixed bonus, and epoch rewards are allocated proportionally to points.
Runtime model
current_reward_settingsare used for the epoch currently accumulating points.next_reward_settingsare staged values that become active at the next epoch boundary.- Changes made during epoch
Ndo not alter calculations already in progress for epochN. - Whitelisted accounts can submit runtime setter messages.
- Whitelist changes are governance-only through
MsgUpdateParams. PROPOSER_BONUS_POINTSremains hardcoded and is currently1.
rewarding_paused is switched to true during an epoch, the current epoch still completes and pays normally. The next epoch starts paused, records no new validator points, and creates no new outstanding reward rows.
Core logic
Default genesis
app_state.valrewards; it remains part of the module account balance in auth/bank state.
Validation rules
Exposed methods
Cosmos SDK messages
MsgDepositRewardsPool(depositor, amount)MsgClaimRewards(validator_operator, epoch, requester)MsgSetBlocksInEpoch(signer, blocks_in_epoch)MsgSetRewardsPerEpoch(signer, rewards_per_epoch)MsgSetRewardingPaused(signer, rewarding_paused)MsgUpdateParams(authority, params)
MsgClaimRewards is sponsor-callable: any valid requester may submit the transaction, but rewards are still paid only to the target validator account. Runtime setter messages require the signer to be present in params.whitelist; MsgUpdateParams is authority-only and intended for governance.
Queries
Query/RewardsPoolQuery/ValidatorOutstandingRewardsQuery/DelegationRewardsQuery/Params
Query/ValidatorOutstandingRewards expects a canonical Bech32 validator operator address. Hex 0x... addresses are rejected.
EVM precompile
Address:0x0000000000000000000000000000000000000714
rewardsPool()validatorOutstandingRewards(epoch, validatorAddress)delegationRewards(delegatorAddress, epoch)depositValidatorRewardsPool(depositor, amount)claimRewards(validatorOperatorAddress, epoch)