<pre>
  PIP: PIP-0010
  Title: 50% Inflation Reduction
  Type: Protocol
  Impact: Hard-Fork
  Author: Herman Schoenfeld <i>&lt;herman@sphere10.com&gt;</i>
  Comments-URI: https://discord.gg/sJqcgtD  (channel #pip-0010)
  Status: Active
  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 and with unnoticeable impact to existing infrastructure.

## Motivation

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][1] that resolve the centralization, this change intends to re-ignite the interest in PascalCoin's technology present prior to the centralization. 

## Specification

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.

### 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 (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%. 

## Rationale

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.

## Backwards Compatibility

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. 

## Links

1. [PIP-0009 RandomHash: GPU & ASIC Resistant Hash Algorithm][1]

[1]: https://github.com/PascalCoin/PascalCoin/blob/master/PIP/PIP-0009.md
