Skip to main content

Epoch Decay

Emissions decrease over time through epoch-based decay, ensuring long-term sustainability.

Epoch Definition

epoch_index = floor(total_rounds_since_genesis / epoch_rounds)

Where:
- epoch_rounds = 525,600 (default)
- At ~2 min/round: 1 epoch ≈ 2 years

Decay Formula

Emissions follow a geometric decay:

E(n) = E₀ × r^n

Where:
- E(n) = emission at epoch n
- E₀ = base emission (250 PORB)
- r = retention rate (0.85 = 85%)
- n = epoch_index

Decay Visualization

PORB per Emission
250 │●
│ ●
212 │ ●
│ ●
180 │ ●
│ ●
153 │ ●
│ ●
130 │ ●
└──────────────────────────
E0 E1 E2 E3 E4 E5
Epoch (2 years each)

Implementation

fn apply_decay(base: u128, epoch: u32, decay_bps: u16) -> u128 {
if epoch == 0 {
return base;
}

let mut result = base;
for _ in 0..epoch {
result = result * decay_bps as u128 / 10_000;
}

result
}

// Examples (base = 250, decay_bps = 8500):
// Epoch 0: 250 PORB
// Epoch 1: 250 × 0.85 = 212.5 PORB
// Epoch 2: 250 × 0.85² = 180.6 PORB
// Epoch 3: 250 × 0.85³ = 153.5 PORB

Emission Schedule

EpochYearsPer Emission~Annual Emissions
00-2250 PORB6.5M PORB
12-4212 PORB5.5M PORB
24-6180 PORB4.7M PORB
36-8153 PORB4.0M PORB
48-10130 PORB3.4M PORB
510-12111 PORB2.9M PORB
1020-2249 PORB1.3M PORB
2040-4210 PORB0.3M PORB

Cumulative Distribution

YearCumulative Emissions% of Budget
2~6.5M PORB6.5%
4~12.0M PORB12.1%
10~24.1M PORB24.2%
20~37.0M PORB37.2%
~43.8M PORB44.0%

The system never depletes the full 99.5M budget, ensuring extreme longevity.

Epoch Rollover

When a new epoch begins:

fn check_epoch_rollover(root: &mut RootAccount) {
let new_epoch = (root.total_rounds_since_genesis / root.epoch_rounds) as u32;

if new_epoch > root.epoch_index {
emit!(EpochRolled {
old_epoch: root.epoch_index,
new_epoch,
total_rounds: root.total_rounds_since_genesis,
});

root.epoch_index = new_epoch;
}
}

Decay Constants

ConstantValueDescription
EPOCH_ROUNDS_DEFAULT525,600Rounds per epoch
DECAY_BPS_DEFAULT8,50085% retention (15% decay)
EMIT_BASE_DEFAULT250 PORBBase emission

Mathematical Proof

Theorem: Total emissions converge to a finite value.

Proof:

Total = Σ(n=0 to ∞) E₀ × r^n × N
= E₀ × N × (1 / (1 - r))
= 250 × 26,280 × 6.67
≈ 43.8M PORB

Where N ≈ 26,280 emissions per epoch (average gap = 10 rounds).

This is well under the 99.5M budget. ∎

Why Decay Matters

Sustainability

  • Prevents rapid token depletion
  • Ensures rewards for future players
  • Creates predictable economics

Scarcity

  • Early participants get higher rewards
  • Creates natural value appreciation pressure
  • Rewards early adoption

Balance

  • Fast enough to be meaningful
  • Slow enough to last 100+ years
  • Gradual transition, no sudden drops

Next Steps