Weights & Rewards

This page is the exact math that turns your stake into a PYUSD payout — mirrored from the on-chain integer math in staking_vault and reward_distributor.

Stake weight

weight = staked × (badge_bps / 10_000) × (lock_bps / 10_000)
       = staked × badgeMultiplier × lockMultiplier

Maximum boost = Diamond (8×) × 5-year lock (10×) = 80×.

Example: 1,000,000 staked, Diamond badge, 5-year lock → weight 80,000,000.

Reward accrual (MasterChef accumulator)

The reward distributor uses a classic accumulator. On each epoch a harvest advances a global reward_index; each position's pending reward is the index growth applied to its weight:

reward_index += harvested × INDEX_SCALE / total_weight     // on each harvest
pending        = weight × reward_index / INDEX_SCALE − reward_debt
  • INDEX_SCALE = 1_000_000_000_000 (1e12) — must match in both programs.
  • total_weight is read on-chain from StakingState, never caller-supplied.
  • Entry checkpoint: on any weight change, reward_debt is adjusted by Δweight × reward_index / INDEX_SCALE, so a position only earns on index growth after its weight is established — no retroactive claims.

Your share, intuitively

yourReward = harvestedPYUSD × yourWeight / totalWeight

(0 if you have no weight or there's no yield this harvest.) Your slice of each harvest is simply your weight as a fraction of all stakers' weight.

Claiming

Rewards are pull-based:

  1. You sign and pay gas to claim_reward.
  2. The payout is a real SPL transfer of the reserve asset (PYUSD) from the pool ATA to you.

You're never auto-paid and you never deposit PYUSD — you only stake $IONS and claim the PYUSD yield your weight has earned.

End-to-end

trades → fees → 70% → PYUSD reserve → Kamino yield
   → keeper harvests realized yield
   → reward_index advances by harvested/total_weight
   → you claim weight × Δindex  (in PYUSD)

See The Flywheel for where the harvested yield comes from, and Keeper Bounties for who runs the harvest.

Rewards are variable and depend on volume, reserve size, market rates, and total staking participation. No fixed return is promised. See the Disclaimer.