Skip to main content

Worked Example: Staking Rewards (1-month epoch)

This document walks through a concrete, numbers-first example of how UTIL staking rewards are budgeted and allocated over a one-month epoch. We apply a time-weighted stake multiplier and a fee-first funding policy, and show the effect of early unstaking (forfeiture of unvested rewards only; principal is never slashed). Use this as a baseline you can parameterize for your community; formal equations and an appendix table follow below.

Parameters

  • Total staked at epoch start: S=100,000`S = 100{,}000` UTIL

  • APR target: 6%`6\%` ⇒ monthly base rate rmo=0.06/12=0.005`r_{\text{mo}} = 0.06/12 = 0.005`

  • Time multiplier: f(Ti)=1+αTi`f(T_i) = 1 + \alpha T_i` with α=0.01`\alpha = 0.01` per month (commitment length Ti`T_i` in months)

  • Stakers:

    • Alice: sA=10,000`s_A = 10{,}000` UTIL, TA=6`T_A = 6`fA=1.06`f_A = 1.06`
    • Bob: sB=20,000`s_B = 20{,}000` UTIL, TB=3`T_B = 3`fB=1.03`f_B = 1.03`
    • Carol: sC=70,000`s_C = 70{,}000` UTIL, TC=12`T_C = 12`fC=1.12`f_C = 1.12`

Step 1 — Weighted stake & reward pool

Weight each stake by its time multiplier:

  • wA=sAfA=10,000×1.06=10,600`w_A = s_A f_A = 10{,}000 \times 1.06 = 10{,}600`
  • wB=sBfB=20,000×1.03=20,600`w_B = s_B f_B = 20{,}000 \times 1.03 = 20{,}600`
  • wC=sCfC=70,000×1.12=78,400`w_C = s_C f_C = 70{,}000 \times 1.12 = 78{,}400`
  • wi=109,600`\sum w_i = 109{,}600`

Monthly rewards to distribute (mint side) follow the base rate on total stake:

Repoch=rmoS=0.005×100,000=500textUTIL`R_{\text{epoch}} = r_{\text{mo}} \cdot S = 0.005 \times 100{,}000 = 500 \\text{ UTIL}`

Step 2 — Pro-rata allocation by weighted share

Ri=Repoch×fracwisumwj`R_i = R_{\text{epoch}} \times \\frac{w_i}{\\sum w_j}`

  • Alice: 500×10,600109,60048.36`500 \times \frac{10{,}600}{109{,}600} \approx 48.36` UTIL
  • Bob: 500×20,600109,60094.16`500 \times \frac{20{,}600}{109{,}600} \approx 94.16` UTIL
  • Carol: 500×78,400109,600357.48`500 \times \frac{78{,}400}{109{,}600} \approx 357.48` UTIL
  • (Rounding ⇒ total ≈ 500 UTIL)

Intuition: bigger and longer commitments earn proportionally more via wi=sif(Ti)`w_i=s_if(T_i)`.


Early Unstaking Penalty (loss of unvested reward only)

Assume Bob committed to TB=3`T_B=3` months but exits after t=2`t=2` months. His term reward (sum across the first two months) is multiplied by a vesting factor t/TB`t/T_B`.

For a single month’s reward RB`R_B` (≈ 94.16 UTIL as above), his kept amount at month 2 is:

RB,textkept=fractTBtimesRB=frac23,RBapprox62.77textUTIL`R_{B,\\text{kept}} = \\frac{t}{T_B} \\times R_B = \\frac{2}{3}\\,R_B \\approx 62.77 \\text{ UTIL}`

The forfeited portion (1tfractTB)RBapprox31.39`(1-\\tfrac{t}{T_B})R_B \\approx 31.39` UTIL returns to the Treasury reward pool for redistribution in the next epoch.

Principal stake is never slashed; only the unvested reward is forfeited.


Fee-based replenishment (reduces reliance on minting)

Suppose this month the platform collects 2,000 UTIL in fees. Policy:

  1. Use fees to fund the target reward budget (here, 500 UTIL) before minting.
  2. Route any surplus fees to the Contributor Pool (or keep a % to top up the reward buffer).
  • Fees cover the 500 UTIL rewards → Mint = 0 for this epoch.
  • Remaining fees 2,000500=1,500`2{,}000 - 500 = 1{,}500` UTIL → Contributor Pool (to pay verified work), or per policy split (e.g., 1,000 to Contributor Pool, 500 retained in a reward buffer).

This creates a closed loop: communities spend UTIL on services → Treasury receives fees → fees finance staking rewards and contributor rewards → contributors earn UTIL for building/operating the platform that communities use.


Optional: Multi-epoch glimpse

  • If Bob exits before his 3-month term ends, next epoch’s S drops (from 100k to 80k if he fully leaves), and his forfeited rewards (≈ 31.39 UTIL from month 2) go back into the next epoch reward pool—slightly boosting remaining stakers’ pro-rata outcomes or lowering mint needs.

Equations summary (for the paper)

  • Time multiplier: f(Ti)=1+alphaTi`f(T_i)=1+\\alpha T_i`

  • Weights: wi=sif(Ti)`w_i=s_i f(T_i)`, ;W=sumiwi`\\;W=\\sum_i w_i`

  • Epoch reward budget (mint target): Rtextepoch=rtextmocdotS`R_{\\text{epoch}}=r_{\\text{mo}}\\cdot S`

    • Fee-first rule: Rtextfunded=min(textfees,Rtextepoch)`R_{\\text{funded}}=\\min(\\text{fees},R_{\\text{epoch}})`; Rtextmint=max(0,Rtextepochtextfees)`R_{\\text{mint}}=\\max(0,R_{\\text{epoch}}-\\text{fees})`
  • Allocations: Ri=(Rtextfunded+Rtextmint)cdotfracwiW`R_i = (R_{\\text{funded}}+R_{\\text{mint}})\\cdot \\frac{w_i}{W}`

  • Early exit (loss of unvested reward only): Ri,textkept=fractTiRi,;;Ri,textforfeit=left(1fractTiright)Ri`R_{i,\\text{kept}}=\\frac{t}{T_i}R_i,\\;\\;R_{i,\\text{forfeit}}=\\left(1-\\frac{t}{T_i}\\right)R_i`


Awesome — here’s the appendix table for the staking example you approved, followed by a first draft of the Sell pressure risk & liquidity analysis section (parameterized + a clean baseline scenario you can tweak).


Appendix A — Worked Example Table (1-month epoch)

StakerStake (UTIL)Term (mo)Time Mult. f(T)Weighted Stake wᵢShare wᵢ/ΣwReward (UTIL)Early Unstake?Kept RewardForfeited Reward
Alice10,00061.0610,6009.68%48.36No48.360.00
Bob20,00031.0320,60018.80%94.16Exit @ 2/362.7731.39
Carol70,000121.1278,40071.52%357.48No357.480.00
Totals100,000109,600100%500.00468.6131.39

Parameters used: APR 6% ⇒ monthly base rate rmo=0.005`r_{mo}=0.005`; f(T)=1+0.01T`f(T)=1+0.01T`; epoch reward budget Repoch=rmocdotS=500`R_{epoch}=r_{mo}\\cdot S=500` UTIL; fee-first funding (fees cover rewards before mint). Bob’s early exit forfeits unvested rewards only (principal never slashed).