PIP: PIP-0010 Title: 50% Inflation Reduction Type: Protocol Impact: Hard-Fork Author: Herman Schoenfeld <[email protected]> Comments-URI: https://discord.gg/sJqcgtD (channel #pip-0010) Status: Proposed Created: 2018-01-01
A 50% reduction in the PASC inflation schedule is proposed. This change can be introduced immediately by changing a single line-of-code and with unnoticeable impact to existing infrastructure.
Due to the negative impact arising from mining centralization, PascalCoin has experienced stunted adoption. By some estimates, PascalCoin's user-base is half the size it would have been without this centralization. It follows from Metcalf's law that the PASC price is subsequently 25% of what it would have been without the centralization. This PIP intends to compensate the existing ecosystem for the damage it has incurred. Additionally, and in combination with other PIPs that resolve the centralization, this change intends to re-ignite the interest in PascalCoin's technology present prior to the centralization.
PASC is currently issued into existence as miner rewards at a rate of 100 per block. After four years (an epoch), this reward is halved. This 4-year halving cycle repeats until a minimum of 1 PASC is rewarded in perpetuity for every minted block (tail-emission). The proposal here is to change the epoch period from four years to two resulting in a 50% inflation reduction with virtually unnoticeable impact to the ecosystem and the code-base.
Change constant
CT_NewLineRewardDecrease: Cardinal = 420480;
to
CT_NewLineRewardDecrease: Cardinal = 210240;
No other changes will be required if this is activated on or before block 210240.
Definitions
let InitialReward = the initial miner reward (100)
let BlocksPerEpoch = the number of blocks minted before reward halves (currently 420480 which is ~4 years)
let TailEmission = the minimum reward per block
The determine the epoch a random block x
belongs to, use this equation
(1) let Epoch(x) = x div BlocksPerEpoch
noting that the first epoch is 0, the second 1 and so on.
To calculate the reward for block x (prior to tail emission), the following equation can be used
(2) let BlockReward(x) = InitialReward / 2^Epoch(x)
Since tail-emission begins on the first block y
such that BlockReward(y) < 1
, the general form of (2) becomes
(3) BlockReward(x) = MAX( InitialReward / 2^Epoch(x), TailEmission)
To calculate the last epoch before tail emission begins, use
(4) LastEpoch = FLOOR( LOG2( BlockReward ) )
To calculate the block number where tail emission starts
(5) TailStart = (LastEpoch + 1) * BlocksPerEpoch
To measure the supply up and until tail emission
(6) TotalSupply = SUM(i=0..LastEpoch) InitialReward / 2^i * BlocksPerEpoch
For the current protocol,
InitialReward = 100
BlocksPerEpoch = 420480 ; ~4 years
LastEpoch = 6
Total Supply = 83,439,000
For the new protocol (assuming this change activated in epoch 0),
InitialReward = 100
BlocksPerEpoch = 210240 ; ~2 years
LastEpoch = 6
Total Supply = 41,719,500
The inflation change is thus
(New Total Supply) / (Old Total Supply)
which equals 50%.
Other approaches to modify inflation were considered but deemed undesirable due the alteration of consensus rules which have already transformed/validated existing data on Blockchain and SafeBox. Such approaches would burden future protocol implementations with the legacy inflation algorithm which would be needed to validate existing data. The proposed approach avoids such complications and is the simplest most elegant solution.
Despite requiring a hard-fork activation, this change is low-impact and unnoticeable to the ecosystem at large since the PascalCoin network is till minting blocks in epoch 0 (and will continue to for approximately 5 months). The effects of this proposal will emerge on and after epoch 1 (block 210241). It is the view of the author that if a change to the inflation schedule is made, it should made within epoch 0 or never at all.