This documentation explains the detail content of a governance proposal on Cosmos Network
Topic : Adjustment of blocks_per_year to come aligned with actual block time
Proposer : B-Harvest(cosmosvaloper10e4vsut6suau8tk9m6dnrm0slgd6npe3jx5xpv)
Propose Date : 2019-03-20
- Adjust blocks_per_year parameter to normalize the inflation rate and reward rate
- Adjustment will be executed when send enabling upgrade happens
- Blocks_Per_Year parameter
- There is a parameter called “blocks_per_year” in genesis file.
- The parameter means “how many number of blocks in a year”
- It is used to calculate block provision, which is the inflation reward for each block.
- Current blocks_per_year value is 6,311,520, fixed in genesis.json
- Current Block Time of Cosmos Network
- 6,311,520 can be derived by below formula :
6,311,520 = 365.25 days * 24 hours * 60 minutes * 60 seconds / 5 second
- 5 second is the assumption that each block is produced every 5 seconds.
- But, current cosmos network has +6.5second of block time
- From more than 9 months of test-net experience, with more than 50 validators, we can expect that the block time will be +6.5second for a long time unless significant changes in software or configure happens.
- Influence On Inflation Rewards
- block provision : total inflation rewards for whole blockchain for each block
- block provision is calculated as below formula :
block provision = (inflation_rate / staking_ratio) / blocks_per_year
staking_ratio = bonded Atom amount / total Atom supply
- Number of block produced in current cosmos network is approximately 23% lower than current blocks_per_year parameter because of +6.5seconds block time.
- Therefore we are receiving approximately 23% less inflation rewards than theoretical reward rate.
- Derivation of difference between theoretical reward rate and “actual” reward rate(Example)
- Total atom supply = 236,382,221 atom
- inflation = 7%
- inflation atom per year = 236,382,221 * 7% = 16,546,755 atom
- block per year = 6,311,520(defined in genesis)
- inflation atom per block = 16,546,755 atom / 6,311,520 = 2.62 atom
- actual block per year with our speed = seconds in a year / actual blocktime = 365.25 * 24 * 60 * 60 / 6.75seconds = 4,675,200 blocks
- actual total inflation atom in one year = 2.62 atom * 4,675,200 = 12,249,024 atom
- actual yearly inflation rate = 12,249,024 / 236,382,221 = 5.18%(1.82p% less than 7%)
- Theoretical reward rate = inflation rate / staking ratio = 7% / 32.40% = 21.60%
- Actual reward rate = actual inflation rate /staking ratio = 5.18% / 32.40% = 15.98%(5.61% less than 21.60%)
- Future expectation
- blocktimes will gradually converge to lower half average when connections get better
- when more validators join, still the moving average will stay as it is because newcomers will not have high power
- when many validators adopt kms and hsm, the average blocktime is likely to increase slightly
- Suggested expectation of average blocktime
- 6.5seconds : 4% less than current moving average, similar to current lower half of distribution
- Suggested new block_per_year
- 365.25 * 24 * 60 * 60 / 6.5 = 4,855,105
- Adjust the blocks_per_year parameter from 6,311,520 to 4,855,015 so that it aligns with current blockchain status.
- Timing of adjustment of the parameter is when we have the upgrade for send enabling.
- The actual inflation rewards received after adjusting the parameter will be lifted about 23% so that the reward rate will be align with theoretical reward rate.
- Increased reward rate will encourage Atom holders to stake their holdings, result in higher staking ratio and more stable network.
- Possible Counter-effect
- Holders who decided not to delegate until audited Voyager is ready will have stronger impact on value delusion.
- But I think at the timing of send enabling upgrade, audited Voyager will be ready and most of holders will be able to easily delegate using Voyager.
- Forum Link
- IPFS Link