Procházet zdrojové kódy

PIP-0010: 50% Inflation Reduction

Herman Schoenfeld před 7 roky
rodič
revize
547084d436
2 změnil soubory, kde provedl 118 přidání a 1 odebrání
  1. 116 0
      PIP/PIP-0010.md
  2. 2 1
      PIP/README.md

+ 116 - 0
PIP/PIP-0010.md

@@ -0,0 +1,116 @@
+<pre>
+  PIP: PIP-0010
+  Title: 50% Inflation Reduction
+  Type: Protocol
+  Impact: Hard-Fork
+  Author: Herman Schoenfeld <i>&lt;[email protected]&gt;</i>
+  Comments-URI: https://discord.gg/sJqcgtD  (channel #pip-0010)
+  Status: Proposed
+  Created: 2018-01-01
+</pre>
+
+## Summary
+
+A 50% reduction in the PASC inflation schedule is proposed. This change can be introduced immediately by changing a single line-of-code with minimal impact to existing ecosystem.
+ 
+## Motivation
+
+Due to the negative impact of mining centralization, the PascalCoin ecosystem has experienced stunted adoption. By some estimates, PascalCoin's user-base is half the size it would have been without the centralization. It follows from Metcalf's law that the PASC price is the square-root of what it would have been without the centralization.  This PIP intends to compensate the existing ecosystem for the damage it has incurred. Additionaly, in combination with other [PIPs][1] that resolve centralization, this change is intended to kick-start the interest PascalCoin had before the centralization. Another motivating factor is that this change can only be introduced within the next 5 months cleanly and without requiring to carry 2 separate inflation equations in perpetuity.
+
+## Specification
+
+PascalCoins are currently issued as miner rewards at 100 per block. Every four years (an epoch), this reward is halved. The halving continues until a minimum of 1 PASC is reached, at which point 1 PASC is minted for every block (tail-emission). The proposal here is to change the epoch period from four years to two. This will result in 50% inflation reduction with virtually 0 impact to the existing network and code.
+
+### Code Changes
+
+Change constant
+```pascal
+    CT_NewLineRewardDecrease: Cardinal = 420480;
+```
+
+to
+```pascal
+    CT_NewLineRewardDecrease: Cardinal = 210240;
+```
+
+No other changes will be required if this is activated **on or before** block 210240.
+
+
+### Formal Proofs
+
+Definitions
+```
+    let InitialReward = the initial miner reward (currently 100)
+    let BlocksPerEpoch = the number of blocks before reward halves (currently 420480 which is ~4 years)
+    let TailEmission = the minimum reward 
+```
+
+The determine which epoch a random block ```x``` belongs to, use this equation
+```
+(1)    let Epoch(x) = x div BlocksPerEpoch
+```
+
+noting that the first epoch is 0, second 1 and so on.
+
+To calculate the reward for any block x, prior to tail emission
+```
+(2)    let BlockReward(x) = InitialReward / 2^Epoch(x)
+```
+
+Tail-emission begins on the first block ```y``` such that ```BlockReward(y) < 1```. After y, ```TailEmission``` is rewarded on every block. Thus the general form of (2) is
+```
+(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.0
+```
+
+The inflation change is thus
+```
+    (New Total Supply) / (Old Total Supply)
+```
+
+which 50%. 
+
+
+## Rationale
+
+Other approaches to modify inflation were considered but deemed undesirable since they alter consensus rules that have already been applied in the existing blockchain/safebox data. This would burdon all future protocol implementations with the legacy algorithm in order to verify the existing full blockchain. This approach avoids this burden and is the most elegant and simple way to achieve the same outcome. 
+
+## Backwards Compatibility
+
+This change requires a hard-fork activation but is low-impact since the PascalCoin blockchain is currently is still in epoch 0 (and will continue to be for ~5 months). The effects of this proposal emerge on and after epoch 1 (block 210241). It is recommended that if an inflation schedule change is made, it is made in epoch 0 or never at all. 
+
+## Links
+
+1. [PIP-0009 RandomHash: GPU & ASIC Resistant Hash Algorithm][1]
+
+[1]: https://github.com/PascalCoin/PascalCoin/blob/master/PIP/PIP-0009.md

+ 2 - 1
PIP/README.md

@@ -15,5 +15,6 @@ If they wish to continue, copy [this template](PIP-template.md) and ensure your
 | [6](PIP-0006.md)      | Salvage orphaned transactions            | Herman Schoenfeld              | Protocol       | Active   |
 | [7](PIP-0007.md)      | New Wallet GUI                           | Herman Schoenfeld              | Front-End      | Draft    |
 | [8](PIP-0008.md)      | Hook(s) to start external programs       | Preben Björn Biermann Madsen   | Backend        | Draft    |
-| [9](PIP-0009.md)      | RandomHash: GPU & ASIC Resistant Hash Algorithm | Herman Schoenfeld              | Protocol       | Proposed    |
+| [9](PIP-0009.md)      | RandomHash: GPU & ASIC Resistant Hash Algorithm | Herman Schoenfeld       | Protocol       | Proposed |
+| [10](PIP-0010.md)     | 50% Inflation Reduction                  | Herman Schoenfeld              | Protocol       | Proposed |