ECIP-1017 — Era-Based Monetary Policy
ECIP-1017 defines Ethereum
Classic's fixed, disinflationary monetary policy — the core economic difference
from Ethereum. The block reward steps down by 20% at fixed intervals called
eras, giving ETC a capped, predictable emission curve.
| Metric |
Value |
| Era length |
5,000,000 blocks |
| Era 0 reward |
5 ETC |
| Reduction per era |
20% (× 4/5) |
| Dedicated files |
3 |
Reward schedule
Each era spans ECIP1017EraRounds (5,000,000) blocks. The reward for era n
is 5 ETC × (4/5)ⁿ:
| Era |
Block range |
Block reward |
| 0 |
1 – 5,000,000 |
5 ETC |
| 1 |
5,000,001 – 10,000,000 |
4 ETC |
| 2 |
10,000,001 – 15,000,000 |
3.2 ETC |
| 3 |
15,000,001 – 20,000,000 |
2.56 ETC |
| 4 |
20,000,001 – 25,000,000 |
2.048 ETC |
| n |
… |
5 × 0.8ⁿ ETC |
Uncle & nephew rewards
- Era 0 uses Ethereum's distance formula: an uncle earns (8 − (H − U)) / 8 × reward.
- Era 1+ fixes the uncle reward at 1/32 of the era block reward.
- The nephew (the miner that includes an uncle) earns 1/32 of the block reward in every era.
Implementation
block finalized → ETCEngine.Finalize [consensus/etc/engine.go]
→ accumulateRewardsETC(config, state, header, uncles)
→ era = getBlockEra(number, ECIP1017EraRounds) // (number-1) / eraRounds
→ reward = getBlockWinnerRewardByEra(era) // 5 ETC × (4/5)^era
→ credit coinbase with block reward + 1/32 per included uncle (nephew)
→ credit each uncle coinbase (era-0 distance formula, else fixed 1/32)
Dedicated Files
← Back to Fork Changelog