The Devil's Medium (an implementation of Medium protocol at c=6)

In a distributed consensus system, competition is fundamentally at the heart of the generation of mutual trust. At short social range, we trust merit and word of mouth, but at scale aggressive competition takes advantage of that trust. Proof systems disambiguate trust at scale by defining the protocol of competition, but they are inherently built upon social constructs. Extreme competition is antisocial and centralizing, while lack of competition is more susceptible to sybil attacks. With this in mind, we consider a more competitive medium- and slasher-inspired protocol adjustment to Peercoin’s proof of stake system.

Medium protocol is an offshoot of Casper and Slasher concepts developed by Ethereum. The protocols deal with block orphans as additional information in the proof of stake process, as opposed to Peercoin’s current system that ignores such orphaned blocks. There is a key element of punishment for being orphaned that gives slasher its name and causes much of the centralization requirement for block validators under those systems. On the other hand, lack of punishment causes proliferation of orphans if any benefit or weight is given to them. By walking this fine line in the precise context of Peercoin’s utxo based system and ‘static vs coinage’ two component reward system, we can attain a system that seeks finality via orphan inclusion without ostrasizing the decentralized user base.

In planning this solution, we will maintain the explicit block length finality threshold currently existing in Peercoin, in order to provide a concrete weakly subjective consensus to bootstrap off of in the long-range reorg limit. Beyond this, we will look more directly at the process when a found block is orphaned. When this occurs, the chain currently continues on and the orphan is ignored and the coinage of the staked input is preserved. The proposed protocol change involves incorporation of these orphans into the chain in future blocks such that they contribute to the chainweight.

When an orphan is incorporated, we shall consider it spent and lock it as if it were actually minted. We will award it the coinage component of its reward (3% annualized) but will deny any static component. For the incorporated block, we will add 1/6 additional relative chainweight per orphan incorporated. This corresponds with a medium protocol with c=6, but lacks an aggressive slasher protocol. Rather, the net loss of generating orphans is seen through the loss of the static reward.

In this way, we are generating a block by block competition for solely the static reward and block inclusion. The loser whose block is orphaned is not sent away empty handed or slashed down to oblivion, but rather is respectfully paid for their (coin)time and sent home. The subsequent block that records this orphan is given a 1/6 boost to their chainweight, and thereby some orphan immunity.

The number 6 is a critical parameter that echos through the Peercoin code even now. The target ‘ideal’ utxo size is one that has a 50% mint chance at one year (the coinage limit), and a year is ~6 times the average integrated maturation setback of 60 days (30 days at 0 mint probability, followed by a linear ramp up over 60 days that can be averaged as 0.5 the mature probability, giving 60=[30 + 60/2]). For 3% coinage reward and 0.25% static reward, we can find how much the static reward matters to the ideal minter as [(minter participation percentage) * 3% / 0.25%]. If we then set this equal to our expected increase in mint probability of 1/6 for an included orphan and we recognize that an included orphan will lose their coinage (and therefore chance at getting a static reward), we get the following statement:
Minter participation = 6 * 2 outputs * 0.25% / 3%
This becomes equivalent at 100% minter participation, implying that at medium c=6 our protocol adjustment would result in a net penalty for minters who orphan all the way out to 100% of the network staking, a theoretical impossibility at which point orphans would break even in rewards.

It is important to understand that this is only a coincidence at first glance. The same numbers used to orginally calculate the 3%/0.25% coinage/static ratio were also used here. The key paradigm is that one year is ~6x the effective maturation period.

We will not increase the chainweight for nephews (multiblock orphans) beyond the 1/6 boost, though we will consume and reward their coinage. This is because the 1/36 boost is negligible and not worth the effort of recursive programming.

This modification will disincentivize orphan creation in a way that is inclusive and gentle, resulting in a maximally decentralized chain that seeks finality more rapidly.

1 Like

Double spends are a concern. This proposal would increase the chance that an attacker could include their own secretly minted orphan in their 6-conf attempt. Multiple orphans are improbable. The result is 1/6 chainweight distributed over 6 blocks of confirmation, or 1/36 (the coincidence of 6 confirmations and the choice of c=6 is purely coincidental in my opinion). This equates to ~3% increased likelyhood of a double spend attack. This should be noted, but i dont think it necessarily outweighs the benefits of the proposal.

Ok, while it is likely an orphan will be found, it is only slightly likely a second orphan will be found, which modifies the probability to a little over 3%. It is still 3% within rounding error.

This proposal is superceded by Forged, not Found (an orphan inclusion proposal)