polkadot-fellows / runtimes

The various runtimes which make up the core subsystems of networks for which the Fellowship is represented.
GNU General Public License v3.0
143 stars 97 forks source link

Polkadot: Constant yearly emission #471

Closed ggwpez closed 1 month ago

ggwpez commented 1 month ago

Sets the inflation to ~120M DOT per year as specified in Ref 1139. 15% of that goes to the treasury and the rest to stakers.

Details

This MR sets the Polkadot inflation to a fixed amount per year. The yearly increase is ~120,063,259 DOT. The amount was set to 8% of the Total Issuance at block 22810263 in which referendum 1139 was executed. You can check this for yourself:

Screenshot 2024-10-08 at 16 51 07

Multiplying this by 8% and converting to DOT is about 120,093,259 DOT per year.
This results in an emissions of 120,093,259 / 365.25 about 328,797 DOT per day.

The Total Issuance and yearly inflation look like this over the next 25 years: inflation

Concrete numbers

```pre Initial 1.501 BDOT Year 1: 1.621 BDOT +7.407% Year 2: 1.741 BDOT +6.897% Year 3: 1.861 BDOT +6.452% Year 4: 1.982 BDOT +6.061% Year 5: 2.102 BDOT +5.714% Year 6: 2.222 BDOT +5.405% Year 7: 2.342 BDOT +5.128% Year 8: 2.462 BDOT +4.878% Year 9: 2.582 BDOT +4.651% Year 10: 2.702 BDOT +4.444% Year 11: 2.822 BDOT +4.255% Year 12: 2.942 BDOT +4.082% Year 13: 3.062 BDOT +3.922% Year 14: 3.182 BDOT +3.774% Year 15: 3.303 BDOT +3.636% Year 16: 3.423 BDOT +3.509% Year 17: 3.543 BDOT +3.390% Year 18: 3.663 BDOT +3.279% Year 19: 3.783 BDOT +3.175% Year 20: 3.903 BDOT +3.077% Year 21: 4.023 BDOT +2.985% Year 22: 4.143 BDOT +2.899% Year 23: 4.263 BDOT +2.817% Year 24: 4.383 BDOT +2.740% Year 25: 4.503 BDOT +2.667% ```

Implications

15% of the inflation goes to the treasury which results in a yearly treasury inflow of ~18M DOT (1.5M DOT per month).
Stakers will receive ~102M DOT per year (~8.5M DOT per month).

kianenigma commented 1 month ago

cc @gpestana

jonasW3F commented 1 month ago

Looks good to me. The exact timing of the snapshot of the total_issuance was never explicitly discussed. This update sets it to the time of execution of the WFC with the obvious benefit that it is in the past (and therefore we can hardcode it).

Would it be possible to include something that queries the total_issuance of the time this runtime update would execute? That might be more complex and therefore not worthwhile. But maybe there is an easy way to do it, then using the total_issuance at the time of execution of the root referendum is slightly preferred.

Taking the number at the execution of the WFC is still sensible.

ggwpez commented 1 month ago

bot merge

ggwpez commented 1 month ago

/merge

fellowship-merge-bot[bot] commented 1 month ago

Enabled auto-merge in Pull Request

Available commands - `/merge`: Enables auto-merge for Pull Request - `/merge cancel`: Cancels auto-merge for Pull Request - `/merge help`: Shows this menu For more information see the [documentation](https://github.com/paritytech/auto-merge-bot)