In the five supply models overview, the reward model is described briefly: “new tokens are created as rewards for useful actions.” But it’s in the design details where the biggest opportunities and traps hide. Too generous an emission kills the token price. Too stingy — fails to attract participants. This article covers the math, types, and practical design of reward models.
What Is the Reward Model
Reward model is a supply model where new tokens are minted as rewards for targeted actions in the system. Unlike allocation, where tokens are distributed upfront, in the reward model tokens appear only when a participant performs useful work.
Three key components:
- Targeted actions — what exactly is rewarded (block validation, providing hashrate, gameplay, data provision)
- Reward size — how many tokens a participant receives per action
- Emission curve — how the reward size changes over time
Types of Reward Models
Consensus Rewards
Tokens are created for maintaining network operations:
| Mechanism | What is rewarded | Examples |
|---|---|---|
| Proof-of-Work | Computational work (hashrate) | Bitcoin, Litecoin |
| Proof-of-Stake | Capital lockup (staking) | Ethereum, Cosmos, Solana |
| Proof-of-Useful-Work | Network-specific work | Helium (Proof of Coverage), Filecoin (Proof of Replication) |
Consensus rewards are the purest case of the reward model: tokens are created strictly for work necessary for the network to function.
Game and Product Rewards
Tokens are created for in-product activity:
| Action | Example reward | Risk |
|---|---|---|
| App registration | 3,000 tokens | Low — one-time action |
| Avatar creation | 2,000 tokens | Low |
| Inviting friends (>3) | 5,000 tokens | Medium — referral fraud |
| Significant trading volume | 8,000 tokens | High — wash trading |
| Transaction in period | 4,000 tokens | Medium |
| Action streak | 1.5x multiplier | High — autoclickers |
Staking Rewards
A subtype combining the reward model with the staking mechanism:
| Staking tier | Minimum stake | Lock period | Monthly yield (MPR) |
|---|---|---|---|
| Basic (Common) | 50 tokens | 1 month | 5.00% |
| Mid (Uncommon) | 200 tokens | 2 months | 7.00% |
| High (Rare) | 500 tokens | 3 months | 10.00% |
Staking rewards create a positive feedback loop: the participant locks tokens (reducing sell pressure) and receives new ones (increasing supply). Balancing these forces is the main design challenge.
Emission Mathematics
Decaying Emission (Halving)
The classic solution to the inflation problem — decaying emission, where reward size decreases on a schedule.
- R(t) — block reward at time t
- R_0 — initial reward
- T_halving — halving period
- Bitcoin: R_0 = 50 BTC, T_halving = 210,000 blocks (~4 years)
| Epoch | Period | Block reward | Total BTC per epoch | Cumulative |
|---|---|---|---|---|
| 1 | 2009–2012 | 50 BTC | 10,500,000 | 10,500,000 |
| 2 | 2012–2016 | 25 BTC | 5,250,000 | 15,750,000 |
| 3 | 2016–2020 | 12.5 BTC | 2,625,000 | 18,375,000 |
| 4 | 2020–2024 | 6.25 BTC | 1,312,500 | 19,687,500 |
| 5 | 2024–2028 | 3.125 BTC | 656,250 | 20,343,750 |
Halving guarantees a finite supply (for Bitcoin — 21,000,000 BTC) and declining inflation. But it also creates a problem: when emission becomes too small, will fees alone be enough to motivate miners?
Linear Decaying Emission
An alternative to halving — linear reward reduction:
- Linear decaying emission
- T_end — the moment emission ends
- Reward decreases uniformly to zero
Activity-Linked Emission
In product reward models, emission is often tied not to time but to participant count:
- R_total — total emission in period t
- A(i,t) — number of actions of type i in period t
- W(i) — weight (reward) per action of type i
This model directly links emission to product growth: more users → more actions → more tokens created. Advantage: connected to real system development. Risk: during rapid growth, emission can become uncontrollable.
Designing a Reward Model: Step by Step
Step 1: Define Targeted Actions
Which actions create value for the system? Each action must have a measurable contribution.
| Project type | Targeted action | Metric |
|---|---|---|
| L1/L2 network | Block validation | Uptime, block count |
| DePIN | Resource provision | Coverage, data volume |
| GameFi | Gameplay activity | Time in game, transactions |
| DeFi | Liquidity provision | TVL, duration |
Step 2: Set Weights for Each Action
Not all actions are equal. Weight determines how many tokens a participant earns:
| Action | Weight (tokens) | Type | Rationale |
|---|---|---|---|
| Registration | 3,000 | One-time (90% conversion) | Low entry barrier |
| Avatar upload | 2,000 | One-time (80% conversion) | Profile activation |
| Invite 3+ friends | 5,000 | One-time (40% conversion) | Network growth, but fraud risk |
| Significant trading volume | 8,000 | Monthly (20% of users) | High value |
| Transaction in period | 4,000 | Monthly (30% of users) | Activity retention |
Step 3: Forecast Participant Count
A reward model requires a user growth forecast because emission depends on the number of actions:
| Month | Period start | Acquisition | Churn (5%) | Period end |
|---|---|---|---|---|
| 1 | 0 | 100 | 0 | 100 |
| 2 | 100 | 300 | 5 | 395 |
| 3 | 395 | 300 | 19 | 676 |
| 6 | 1,196 | 300 | 59 | 1,437 |
| 12 | 2,471 | 300 | 123 | 2,648 |
Step 4: Calculate Emission and Check Sustainability
Combining actions, weights, and participant counts yields an emission forecast. Sustainability criterion: emission must not exceed the value created.
Example for an app acquiring 300 users/month with 5% churn:
| Month | Users | Monthly emission | Cumulative |
|---|---|---|---|
| 1 | 100 | 910,000 | 910,000 |
| 3 | 676 | 3,782,800 | 7,688,800 |
| 6 | 1,437 | 5,913,600 | 23,371,600 |
| 12 | 2,648 | 9,304,400 | 71,229,200 |
Over 12 months, the system emits ~71.2M tokens. If total supply is capped at 1B — that’s 7.1% per year. Key question: are users creating value commensurate with this emission? If not — action weights are too high or the model needs a decaying multiplier.
Python: reward emission calculation
actions = {
"register": {"weight": 3000, "pct_users": 0.90, "once": True},
"avatar": {"weight": 2000, "pct_users": 0.80, "once": True},
"invite_3": {"weight": 5000, "pct_users": 0.40, "once": True},
"trading_volume": {"weight": 8000, "pct_users": 0.20, "once": False},
"transaction": {"weight": 4000, "pct_users": 0.30, "once": False},
}
acquisition_month_1 = 100
acquisition_per_month = 300
churn_rate = 0.05
months = 12
users = 0
total_emission = 0
for m in range(1, months + 1):
new_users = acquisition_month_1 if m == 1 else acquisition_per_month
churned = int(users * churn_rate)
users = users - churned + new_users
month_emission = 0
for name, a in actions.items():
if a["once"]:
eligible = new_users * a["pct_users"]
else:
eligible = users * a["pct_users"]
month_emission += eligible * a["weight"]
total_emission += month_emission
print(f"Month {m:2d}: users={users:,}, emission={month_emission:,.0f}, cumulative={total_emission:,.0f}")
Common Mistakes
Reward model traps
Reward vs Other Supply Models
| Criterion | Allocation | Airdrop | Reward | Bonding Curve |
|---|---|---|---|---|
| When tokens are created | At launch | One-time | Ongoing | On purchase |
| Activity linkage | None | Indirect | Direct | Direct (with price) |
| Emission control | Full | Full | Partial | Automatic |
| Inflation risk | Low | Low | High | Low |
| For which stakeholders | Team, investors | Early users | Validators, active participants | Any buyers |
The reward model is essential for projects where stakeholders perform work for the network. But it requires careful mechanism design to ensure emission doesn’t exceed the value created.
Designing a reward system?
We'll model your emission curve, set action weights, and stress-test sustainability across growth scenarios.
Get in touch