Minting with capped maximum stake

I have been thinking about another possible solution, that might improve the POS security, similarly to constant per-block reward. Let us consider it, if only for the sake of discussion. I suspect that it is probably doing the same thing as the constant per-block reward, and is slightly more complicated, but it could also have interesting advantages. Please, let me know what you think about it.

As I was showing, the situation optimal for security at current money supply would be if all blocks had reward 4 PPC, but median block reward is ~0.3-0.4 PPC and the network effectively feels (through POS difficulty) reward ~0.2 PPC. It is caused by fact, that 60% of block rewards is concentrated in fewer than 5% of blocks based on very big stakes. This undermines the security to some extent (although not very seriously for now). One solution to this problem is the constant per-block reward calculated in such way, that Peercoin keeps it 1% inflation. Alternative solution is this: Let us cap the maximum stake that can be consumed in single block. The cap should be, for example:

Maximum stake coinage = 2 * money supply / 144 coin-days,

which currently leads to reward 8.07 PPC. This is double of the would-be constant per-block reward (4.03 PPC). If the stake has bigger coin-age, the special mint transaction will work so that only the maximum stake coinage is consumed. The stake in question starts with non-zero coinage after the mint so that the stake owner does not lose more coinage he was rewarded for. 30 days of zero probability of finding block and linear approach to the final value between day 30 and day 90 are kept in place.

Note that the new coinage of the stake is not written to the blockchain, only the way how the coinage is calculated is changed to take into account this different minting.

Example:
Imagine stake of 10,000 PPC that was kept in cold-locked wallet for 3 years. Today, the reward would be 300 PPC. In the proposed system, reward would be 8.07 PPC, and after the mint, the stake would start with coinage 2.92 coin-years. For 30 days, it would have zero probability of finding new block and between day 30 and day 90, the probability would linearly approach the value corresponding to 2.92 coin-years. With such coinage, the stake would probably quite soon find another block and collect the reward 8.07 PPC, until all its coinage would be consumed eventually.

Advantages:

[ul][li]Big stake-holders must mint often if they want to get their 1% reward. This is the same as in constant per-block reward system.[/li]
[li]For small stake-holders, things are not so wildly random. While in constant per-block reward, you either gain much more than your stake, or you wait without success for quite a long time. In this system, the small stake-holder, if he is lucky to solve a block, will get his fair reward.[/li]
[li]Small stakeholders have no incentive to mint on all alternative blockchains (forks).[/li][/ul]

Disadvantages:

[ul][li]It is more complicated to explain than the constant per-block system.[/li]
[li]Might lead to hoarding of small stakes with long age (to claim the reward).[/li][/ul]

Analysis:
Here I post an analysis of what would capping of the max coinage consumed per block do with existing block rewards in the blockchain. The capped distributions were created so that the stakes above the threshold were replaced by block with the cap size in such amount the total number of coins was conserved. So there is more blocks than in the red (real) distribution. I rescaled them so that the X-axis ends at the same point. The scaling factor is the increase in difficulty.

To check coinage you have to track previous rewards? If so:

  • capping +1
  • ‘hidden’ coinage -1

[quote=“kac-, post:2, topic:2441”]To check coinage you have to track previous rewards? If so:

  • capping +1
  • ‘hidden’ coinage -1[/quote]
    Tend to agree with kac- here, sounds vulnerable. Why wouldn’t you show remaining coinage in blockchain? Too complicated? The minting would be transaction in blockchain anyway.

If the coinage is calculated correctly by the wallet, we do not need to store it in blockchain. My reasoning here was that it is good to keep the blockchain as thin as possible.

Maybe it is too complicated or looks ugly, but why do you think it is vulnerable? Is there any new attack I am missing? My idea was that it improves security by the coinage consumption capping and by the fact that small stake-holders are not motivated to all-fork minting. (Which seems to be the case in the constant per-block reward system.)

The idea is good, implementation is an issue. It’s another variable, kind of magic trick, PoS is complicated enough imo, no need for one more layer.
Second thing is coindays accumulation - nothing more than removing stakeage cap.
/it’s all imo, would love to hear brighter brains here/

If the coinage is calculated correctly by the wallet, we do not need to store it in blockchain. My reasoning here was that it is good to keep the blockchain as thin as possible.

Maybe it is too complicated or looks ugly, but why do you think it is vulnerable? Is there any new attack I am missing? My idea was that it improves security by the coinage consumption capping and by the fact that small stake-holders are not motivated to all-fork minting. (Which seems to be the case in the constant per-block reward system.)[/quote]
I think it is more vulnerable because you revert to the wallet for calculating coin-age instead of getting it directly from the blockchain. This complicates things and therefore potentially increases attack vectors.
I like your idea and I wouldn’t be too concerned about some blockchain bloat if that increases the security of the network. Solutions to reduce the blockchain size will likely be available soon anyway as many coins face this issue.

It seems to me that the attacking wallet can deliberately ignore the coinage information written in the blockchain in the same way it can ignore the algorithm to calculate it. Important thing is, how the healthy wallets behave and if they will accept the attacker’s blocks. But this is only technical problem - the coinage after mint could be written into the blockchain as well and the protocol still works.

I like this idea!

I think it better than the constant block reward proposal, since it does not motivate minting on several forks.

It seems to me that the attacking wallet can deliberately ignore the coinage information written in the blockchain in the same way it can ignore the algorithm to calculate it. Important thing is, how the healthy wallets behave and if they will accept the attacker’s blocks.[/quote]
I guess you are right. I do not see any problems with that.

I will think about further impacts of this new idea.

I think proportional but capped rewards is definitely the right direction to be thinking. But why not just max out reward at 90 days? That is, any coinage past 90 days = same reward. The longer you wait to mint, the less annual interest you will earn. Obviously, you risk losing a nice even 1% inflation across the network, but I think this can be compensated in other creative ways… for example, why not implement a VARIABLE transaction fee based on the number of coins generated over the past 90 days?

Also, I’m not sure I’ve ever heard a strong argument for the initial 30 day holding period… would 15 days be significantly less secure? I’ve always thought that 30 days is too long to wait for coins to age, especially with a wallet that doesn’t provide granular control over which addresses are used as inputs in a transaction. Using a Peercoin wallet the way most people use a checking account virtually eliminates any chance of ever minting at single coin at all, insofar as one has to leave funds completely untouched for a full 30 days. Something like a proportional reward based on 15-90 days of coinage seems ideal to me. What would be the disadvantages of this approach?

learnmore, you are new here, right? You are welcome!
You will learn a lot more about why sunny king has implemented PoS exactly this way:)

This would be highly unfair for a small stackholder. He has to mint and wait longer than 90 days.

because then you could abuse this variable transaction fee to ddos the network and the blockchain could grow to fast.

I have been having the same question. I think 30 days doesn’t make the network much safer than e.g. 15 days.

I've always thought that 30 days is too long to wait for coins to age, especially with a wallet that doesn't provide granular control over which addresses are used as inputs in a transaction.

It does now. Peerunity is just released. It has coin control 8) You can specify exactly which output to use.

@josojo - Thanks for the welcome. I’ve been watching PeerCoin since the PPCoin days but haven’t been visiting the forum recently as much as I should have been. I’m working to catch up on all the development and I’ll try not to ask too many uneducated questions!

This would be highly unfair for a small stackholder. He has to mint and wait longer than 90 days.
I've actually thought of this before, but I'm not really convinced it's an issue. Using peercoincalculator.info, a person minting with 1500 PPC at today's difficulty has 99.7% of generating a coinstake between day 30 and day 90. A 1500 PPC stake is currently less than 0.007% of the total money supply. Should that really be classified as a major stakeholder?

For comparison, a person holding 650 PPC (today’s equivalent of $1000) still has a 91.16% of generating a coinstake when running their wallet from day 30 to day 90. That seems to be pretty reasonable odds to me and should result in a return significantly greater than any commercial bank savings account.

Going back to my checking account analogy, I don’t think “small stakeholders” are really that concerned with earning interest (or even, for that matter, securing the network!) In the current financial system most such people maintain some form of checking account where interest is not expected and in-and-out transactions occur regularly. When one has additional cash beyond day-to-day expenses, they may consider setting aside some portion (say $1000 USD as in the example above) in a savings account or short-term CD for 30 days or more. They deliberately trade some liquidity in exchange for modest interest. To me this is the exact equivalent of setting a “reserve balance” in the Peercoin wallet. I suspect that many users will deliberately choose to forgo interest on small balances in order to maintain spendable funds while they dedicate relatively larger balances to minting.

Peerunity is just released. It has coin control 8) You can specify exactly which output to use.
Thanks for pointing this out. I've been running Peerunity but didn't see the feature until I tried sending coins!

That will change the 1% inflation economic model which is “sacrosanct”. Maybe the reward above 90days can be distributed to following POS blocks aged between 30-90 days.

That will change the 1% inflation economic model which is “sacrosanct”. Maybe the reward above 90days can be distributed to following POS blocks aged between 30-90 days.[/quote]
It won’t change the model - users are still supposed to get 1% if they act reasonable and not “over-stake” their blocks! Same for BTC, users can send their newly mined coins to unspendable/junk addresses - act unreasonable - and effectively break inflation/deflation model (in this meaning).

That will change the 1% inflation economic model which is “sacrosanct”. Maybe the reward above 90days can be distributed to following POS blocks aged between 30-90 days.[/quote]
It won’t change the model - users are still supposed to get 1% if they act reasonable and not “over-stake” their blocks![/quote]

Let’s say it adds another factor to make straying away from 1% easier. Big coin holders often don’t mint often. Currently they can open wallet once a year and generate POS coins. With 90 day hard cap learnmore proposed, most of their POS coins will be lost. They may not care, but it affects inflation.

Same for BTC, users can send their newly mined coins to unspendable/junk addresses - act unreasonable - and effectively break inflation/deflation model (in this meaning).

Losing coins shouldn’t count because it is accident and it happens to all coins.

@mhps Ahhh, I quoted you w/o reading inner quote fully, sorry. Of course 90 days cap will modify inflation.

I really don’t understand this… there is NOT 1% inflation hard-coded into Peercoin because there is really no way to predict the total of transaction fees over a period of time. The 0.01 per kb fee may be 1% of 1 PPC, but it is NOT directly related to the total money supply in any way. If transactions remain relatively cheap and Peercoin becomes a popular medium, Peercoin could actually become deflationary, right?

because then you could abuse this variable transaction fee to ddos the network and the blockchain could grow to fast.[/quote]

What I was trying to suggest here is a method of making 1% inflation actually true. I’ve really been trying to wrap my head around how a variable but hard-coded and calculated fee would open any new attack vector but I just can’t see it. Just as POS difficulty is continuously adjusted, agreed upon, and propagated through the network, why can’t the transaction fee be similar? Perhaps adding another calculation to verify transactions would cost too much additional strain on wallets? I really don’t know, but I’d be interested in more arguments against it.

You should consider here that once you cap the reward at 90 days, probably much more people will start minting regularly. This is what we want and need, of course, but my estimate is that the POS difficulty could increase 10x - 20x. So in the new conditions, 650 PPC holder will have 11.6% to successfully mint in first 90 days. So quite reasonable 70% of success will have person with 6500 PPC, which is $10,000 today, but (hopefully) much more later. If we assume that Peercoin would have market cap similar to Bitcoin today, only people with more than $2,500,000 in PPC would be able to claim their 1% reward at reasonable conditions[sup]*[/sup]. This is why I proposed capping the maximum consumed coinage per block rather than reward directly. If a big stakeholder does not mint for a long time, he would have to wait extremely long to claim his reward later - this is a good incentive to mint now rather than later. And for small stake-holders, nothing changes.

[sup]*[/sup] Also, we would have to change the rule that stake that founds block in first 90 days is split and it would be reasonable to group all blocks together after successful mint, otherwise there will always be a lot of blocks that missed their chance. But this is technical detail. And it can be done directly by modifying the wallet, it doesn’t require changing the protocol.

On the other hand, if 100 PPC wallet will have to wait 1000 days to mint something after the difficulty increases, the uncapped reward might motivate the minters to hoard money with long age. I will add it into disadvantages of this proposal.

Thanks irigi for putting things into better perspective. I guess I’m not thinking on a large enough scale for the future!

It occurs to me, though, that there is something of a hard limit to the number of successful minters at any difficulty level based on the 10-minute target block time. A rough calculation would be 4320 possible POS blocks every 30 days. One might infer from this that if, say, the top ~5000 stakeholders ran their wallets only once per month they could dominate the minting of new coins and virtually block out the little guys no matter how much their reward might potentially have grown. This is because the little guys would have to hold their incoming transactions UNTOUCHED for a very long period of time before they accumulate enough coinage to compete with the top ~5000. This is why I keep referring to checking vs savings accounts and why I don’t think it is realistic to rely on small stakeholders to secure the blockchain in the long run.

One of the things that concerns me about a pure fixed-reward scheme is that these very large stakeholders are incentivized to subdivide their holdings to match predicted difficulty and therefore maximize their returns. This seems to me even more unfair to the little guy because instead of only one massive coinstake occupying only one of the potential 4320 blocks, there may now be 5 or 6 additional blocks taken by the same owner.

This is why I think it’s important that the reward remains proportional to balance because this seems to prevent any real advantage to subdividing very large stakes. Your idea is a great solution and much wiser than anything I could come up with, but the level of “complication” it adds to the protocol makes me nervous. One of the real strengths of Peercoin is in the simplicity of design, and I would really like to strive for the simplest solution possible. In my opinion, placing some limit on accumulation of interest over time would be a simple solution even if it has the consequence of being “unfair” to smaller stakes.

Just my thoughts… thanks for reading!