[RFC-0011] PoS inflation adjustment

We have done some overhauling of this RFC. I’ll highlight a few of the changes, but it has been pushed to the main branch, so feel free to go read it.

Runaway Timing Attack

The biggest changes were driven by a desire to address @Otzi’s original concerns of the RFC. Essentially, we are striving to create a system wherein it is never beneficial, or even reward-neutral, to universally stop minting. The code as it currently stands can be considered reward-neutral, as the reward you earn today you can easily just wait to earn tomorrow without any cost. With the addition of an inflation adjustment variable that changes with time, there could be situations where you could earn more tomorrow than today. We want to fix that to prevent a runaway state where everyone turns off their minters at once.

Static Subsidy

Creating a constant block reward is a strategy that has been well-explored in crypto. Bitcoin, for example, has a clearly defined constant block reward. However, in Peercoin such a strategy would result in a ‘stake grind’ attack, whereby minting with lots of smaller stakes is beneficial compared to minting with one big stake. Still, a constant block reward would certainly give incentive to continue to mint at all times. So we decided to work the static subsidy concept into rfc11.

Dynamic Weight

Specifically, we have chosen to give out 75% of the inflation-adjusted coinage-dependent reward, and 25% a static reward. We feel this addresses both sides of the issue by creating lost reward when stake is withheld, but also giving a bigger reward to those that mint with stakes that are greater than dust values. Because of the design of rfc11, we can normalize both components to be a % of the total supply, and thereby compare them in size for a global PoS inflation rate that maintains its target of 1%/year.

What does this mean for my reward?

The static portion comes out to around 1.24 PPC/block (0.25 * 26mil * 0.01 / [365 * 144]).
The dynamic portion will be around 3x current rewards (if we assume that the current state of the chain is about 25% participation, for an adjustment of 4, with a 75% weight)
So overall, you should still expect to see a significant increase in rewards. More to the point, you should expect to see the maximum rewards when you behave the way we ideally would like you to: namely, leave your client on and minting at all times and let the automatic split function of the wallet do what it was designed to do.

With all of these changes put together, I personally believe that this will greatly increase continuous minting and ultimately the PoS difficulty. Delving deeper into a lot of these numbers, I was very surprised by the apparent difference between continuous minting and periodic minting. It seemed to me that we have ~10% continuous participation, i.e. the portion of minters that are actually helping to secure the network on a regular basis. On the other hand, we seem to have 20-50% of minters claiming yearly rewards. I sincerely believe that rfc11 can boost the continuous participation and the PoS difficulty to new levels not seen since this project began.

5 Likes

Hi Nagalim!

Just chiming in to say that this split between static and dynamic reward appears to be a good idea to me, on first thought. Althought I don’t have the time right now to dig into this.
I am relieved that my concerns have been taken into account.

I am trying to get my home renovations done to have a little more time for crypto…I even had to switch off my staking PC for the time being. :frowning:

1 Like

I’ve just been re-reading the Discord chat, regarding Sunny’s concerns. Essentially, this proposal introduces a stable 1% inflation rate (of total supply), but also seeks to trim the variability of the minting participation, by making 25% of the reward static and continuous, and only 75% dynamic - whereas the previous version of this proposal would have been 100% dynamic, resulting in greater wings in minting participation - is that right?

Yes, sunny’s concerns were very similar to otzi’s concerns expressed in detail at the beginning of this thread. We are balancing two opposing minter behaviors. On the one hand, you have ‘periodic minters’ who either turn off their minter for months at a time or keep their stake all combined into a single large output. They dont mint often, but when they do they get high rewards and spike up the PoS difficulty. On the other hand we have ‘stake grinders’ who split their outputs down to dust values (~0.01 ppc) in order to maximize the frequency of block output. They increase pos difficulty a lot, but they bloat the UTXO table a lot and if everyone did it then it would become prohibitively expensive to move minting coins around (because the fees generated would be nearly the same order of magnitude as the number of coins). The middle of the road ‘continuous minter’ who uses the standard splitting function of the client is almost as good for the PoS difficulty as the stake grinder, and they don’t bloat the UTXO table very much. So we are trying to implement a middle of the road reward system that promotes the balanced behavior over the two extremes.

1 Like

I just wanted to thank @Nagalim for continuing to work through feedback from others to continually improve this RFC. Thanks to his effort, RFC 11 has now arrived in its current state, which I believe solves many of the various drawbacks that have been previously identified.

Splitting between 25% and 75% static/dynamic reward seems to solve the unwanted behavior in a 100% dynamic reward system where stakeholders can stop minting in times with low reward in order to build coinage so they have a better chance of minting when the reward is highest.

With the updated RFC, minters are less likely to behave this way because they would lose out on a portion of the 25% from static rewards. This helps promote continuous minting because that is the only way for stakeholders to maximize the reward they earn.

1 Like

Do we still have the inflation capped at 5%, meaning an “ideal” minimum minting participation of 20% of coins?

If so, the potential top reward (5% per annum) would be 1.25% static and 3.75% dynamic - and when the minting reward is at its lowest (1%), 0.25% will be static and 0.75% dynamic.

In other words, I’m asking: is the 25%-75% split between static and dynamic maintained whatever the interest rate is, or is there a sliding scale?

It’s trickier than you think it is (also I’m not sure you had a perfect understanding of it originally, but it’s hard to go on with just this data point). The total inflation is aimed at 1% PoS. This means that with 26 million coins, rfc11 aims to produce around 260,000 coins via pos rewards in the next year.

Estimating the number of blocks in a year, this is approximately 4.96 ppc/block. So we will give out around 1.24 ppc/block in static rewards, no matter what the participation is. That much should be very clear and simple.

Now, for the remaining 3.75 ppc/block, we will do what we are calling the dynamic portion. Namely, we will add up all the coindays that were rewarded in the last year, and divide by a year of coindays for the total supply. This tells us how many coindays minted out of the theoretical maximum for the year. Then, we will boost the reward of each coinday minting by this ratio, accounting for the 0.75%/year that is dynamic.

So if you look at your minting wallet, and you see your reward for each block is ‘x’, then your new reward will be:
(0.75 * x / participation + 1.24) ppc

So say you minted a block now and got 0.5 ppc reward, and it turns out 25% of the network was claiming mint rewards over the last year, your reward would now be:
(0.75 * 0.5 / 0.25 + 1.24) = 2.74 ppc
Note that this particular reward is 548% what it was under the current code. This should show you that the total reward can now be more than what was originally proposed with a 5x adjustment. Conversely, it can also be less when minting with a single large output.

The maximum and minimum adjustment is still 5 and 1, which is where I think you are getting confused. The static portion does not have maximums and minimums, because it is a simple static fraction of the current supply. The 75:25 split is maintained at a global scale, targeting a 1% inflation per yet, and is generally not followed on a block-by-block basis, but rather when averaged over a year.

Thanks, that explanation & example helps a lot.

First draft:
https://medium.com/p/54bcb283afe4/edit

1 Like

Good article, a few suggested edits below.

Peercoin is an innovative project that pioneered the concept of Proof of Stake blockchain security in order to drastically reduce the energy consumption required to validate transactions. Since Peercoin was founded more than 6 years 7 years ago, a huge number of blockchain projects have adopted Proof of Stake in one form or another, though many have moved away from Peercoin’s coinage approach (i.e. coin age ) approach in the direction of implementations with constant block rewards that are more similar to Bitcoin’s block reward system. However, the Peercoin project takes pride in its unique approach and the added security it provides by requiring that a validator remain invested in the network for upwards of 30 days before they are able to begin block creation. Coinage is a staple of the Peercoin security model, though its economic consequences are something we would like to explore in more depth.

When Peercoin entered the blockchain scene, Bitcoin was being modeled as ‘digital gold’ and its 21 million cap on the number of coins was lauded as a solution to the issues arising in economies all over the world where federal reserves central banks were able to print paper without end. However, deflation is generally recognized as can be a detriment to widespread use of a currency because it promotes hoarding instead of spending. Indeed, it is the centralization of inflationary decisions that should be held in contempt regarded with suspicion , not the inflation itself. As such, Peercoin promised promises a continuous Proof of Stake minting reward of 1%/year until the end of time . This sane economic policy is taken as an economic fundamental of the chain, enforced by the decentralized staking method itself.

The promise of 1% inflation /year was implemented on a basis of coinage, which allowed all minters to claim their 1% by participating in block creation. However, in practice a majority of this reward is not claimed and the Proof of Stake inflation minting results in less than 0.5% inflation /year. Recently, the developers working on the chain have taken up the quest of changing this and fulfilling the full promise of a full 1%/year proof of stake growth of in the number of coins, without undermining the concept of coinage. The result is a set of rules that attempts seeks to balance both the big minters and the small minters so that everyone is awarded their fair share.

The minting reward will be broken up into two parts, a dynamic portion and a static portion. The dynamic portion will use the standard coinage calculation, but augment it with a multiplier that is based on the total amount of coinage that was claimed in the year preceding block creation. Thereby, the dynamic portion is increased when participation in the chain is low using a year-long [ add hyphen ] moving average to target the proper inflation rate. The static portion is a straightforward fraction of the existing coin supply that is split up amongst the blocks minted on average in a year, [ full stop? ] These two portions are weighted 75:25 dynamic:static such that the overall sum targets the 1%/year Proof of Stake inflation that has been agreed to by consensus since the chain began.

To further understand the nature of this change, we can look at how a mint minting reward would look after this change occurs. Currently, there are ~26 million Peercoins in existence, and for demonstration purposes we can assume a constant participation fraction. Using these assumptions, a block reward of ‘x’ would now be:

(0.75 * x / participation + 1.24) PPC

Therefore, if you recently got a block reward of 0.5 PPC and there is 25% participation in the chain, under the new protocol that reward would be:

(0.75 * 0.5 / 0.25 + 1.24) = 2.74 PPC

As you can see, this new reward is 548% of the original amount, so we certainly expect to see more participation in the chain with these rewards, all while still maintaining the 1% inflation /year promise. There are a number of mechanisms put in place to avoid taking advantage of this new system, such as a 20%/100% minimum/maximum on the number used for participation, a 1-year cap on coinage to avoid rewarding those who are not participating for years, and the 75:25 split itself which motivates continuous minting using the standard client functions.

All in all, we expect this protocol change to significantly grow the number of minters continuously participating continuously in block creation, and so sustaining the Proof of Stake difficulty, and ultimately the security of the chain itself. In addition, enforcing guaranteeing the 1% inflation target will stimulate the Peercoin economy to grow and maintain good fundamentals throughout the ages.

Ok, I worked in the suggestions. Thanks.

I’m interested in this sentence:

… the Peercoin project takes pride in its unique approach and the added security it provides by requiring that a validator remain invested in the network for upwards of 30 days before they are able to begin block creation.

I’m unclear as to the dividing line between the “unique approach” and “added security”.

BTC has a constant block reward - is this because people can switch their computers/ASICs on and start producing calculations/blocks straightaway - is that it?

Whereas PPC requires a 30-day wait. Is that what the unique approach refers to?

Edit:
I wondering whether we should therefore make a change along the following lines: "… the Peercoin project takes pride in its unique careful approach and the because of the added security it provides by requiring that a validator remain invested in the network for upwards of 30 days before they are able to begin block creation.

I’m fine with using the ‘because of the’, but I prefer ‘unique’ over ‘careful’ because I want to highlight the ingenuity. I dont really think ‘careful’ makes sense there, I’m having a hard time putting into words why it seems a misnomer, but it doesnt have the flair I am looking for in the first paragraph.

1 Like

When minters save up their minting power, to get extra rewards when they go online to mint, why is this not offset by the loss of minting rewards that they could have received in the meantime? Is the reward-time ratio uneven?

They would be betting that the adjustment increases a substantial amount. You still get the time portion while minting continuously. The only way they are able to make up the rewards lost is if they successfully predict the future, and in a big way.

Last call for edits to the medium article.

A few more ideas:

Coinage is a staple of the Peercoin security model, though so its economic consequences are something we would like to explore in more depth.

not rather than the inflation itself

This sane sensible economic policy

fulfilling the promise of a full 1%/year proof of stake growth inthe [typo]

There are a number of mechanisms put in place to avoid bad actors taking advantage

Regarding, “such as a 20%/100% minimum/maximum”, I would change this to just 20% minimum, since the reader will assume 100% is the maximum, unless otherwise stated.

Otherwise, all good.

Good afternoon.
Important change. I have a small amount of PPC, i also have a hobby, the project “CACHE” Project, in the former “CACHeCoin”.
It is based on your old version wallet. I also do not like the ProofOfStake mode, in the method of calculating and paying rewards.
I decided to move on a different path.

To date, I have not decided what will be indexed, only the Bitcoin address or the entire “CTxOut”. The pursued idea…
When generating a new block “ProofOfStake” , all blocks related to the new block and its address for the previous 366 days will be searcheds.
Based on the calculated number of blocks and timestamps of these blocks, the code will be able to find out how they were generated.

  1. The wallet has been turned on constantly.
  2. Wallet is not always on.

Based on this data, interest for one year will be variable.

  1. The wallet has been turned on constantly - two percent per annum.
  2. Wallet is not always on - one percent per annum.

I just wanted to share it with someone, decided with you, because who knows the work of your code better than you.

Best regards, Deff, Yuri.

If they haven’t generated a block, how do you know if the client is on or not? If you have to generate a block every x number of days to be counted, then there is an implied maximum number of participants.

Of course, I can’t determine if the wallet is turned on in generation mode now. I think i can determine how the blocks generated at a specific address for a certain period of time are grouped by time. Then, by analogy, to calculate at what point in time the generation is at a given moment. Using this data, as well as the time until the last block found by this address to conclude how this node prefers to mint coins. If coins are generated at relatively even time intervals of two percent, if the generated blocks are clearly grouped, one percent.

Best regards, Deff, Yuri.