TLDR: k is a soft cap on the number of pools, but says little about the decentralization state of Cardano, due to pool splitting. It appears that a0 allows for ‘affluent’ individual’s (whales) and organization’s pools the ability to receive 20% or more return on stake compared to most stake pools. An alternative set of parameters is proposed that still provides resistance to Sybil attack while reducing or removing altogether the incentive for pools splitting. While these new parameters might provide an improvement over the current a0 and k parameters, as discussed previously (Proof of stake, decentralization, and network parameters), they cannot in and of themselves counteract the centralizing effects of free market capitalism in systems such as PoS networks.
Notation:
a0 – parameter determining owner-stake influence on pool rewards
z0 – relative pool saturation size
k – 1/z0
f – optimal pool reward function
f0 – f(a0 = 0), maximum pool reward function
R – total available rewards for the epoch in ada
S – stake pledged by pool owners
s – relative stake pledged by pool owners (vs pool’s stake)
Σ – stake delegated to the pool
σ – relative stake of the pool (vs total stake)
L – leverage factor
B – Baseline (or bonus) saturation
Θ – L * S + B, pool saturation limit
θ – Θ/Σ, relative pool saturation
θ’ – min(1,θ), saturation function
Current Parameters
k is a soft cap saturation limit for the size of a stake pool, which divides the total stake into k units. The predicted response of the system assuming ideally rational delegators is that over time all k stake pools would become fully saturated with any pool outside of the top k pools eventually dissolving. The reality is that economics is a major factor, but not the only one, determining a delegators preference and a system with mostly rational delegators would present a perturbation to the ideal system and more than k pools would exist, some number of those not fully saturated.
a0 determines the reward structure as a function of pledge for unsaturated pools. Higher a0 means that rewards are skewed more towards those with higher pledge, thereby incentivizing pledge and making a Sybil attack less likely.
The “optimal” rewards for a pool is given by the equation, f, in the following figure (pg 37 in https://hydra.iohk.io/build/3744897/download/1/delegation_design_spec.pdf). When a0 = 0, pledge has no effect and each pools optimal reward and is simply the proportion of their stake to the total stake of the network, σ, or the relative pool saturation limit z0, whichever is lower. If we plot the optimal reward equation, f, after normalizing it to the baseline of when a0 = 0, f0 = f(a0 = 0), it becomes apparent that the rewards with a0 > 0 are always less than that for when a0 = 0 and f/f0 < 1. If the equation is implemented directly as written (someone please correct me if they know that it this is not the case of if this analysis is not correct), the effect of a0 is to reduce the rewards that everyone receives, but with a more substantial reduction for pools with lower pledge. The presumption is that the discrepancy in rewards between f and f0 is either returned to the reserves or simply never withdrawn to begin with, either effectively reduces the monetary expansion coefficient, ρ.
An example plot for f/f0 vs σ is shown in the second figure for k=500 (z0 = 0.002), a0 = 0.3 (current value), and the relative pool pledge s=0.0001 (~3.1M ada), showing that this pool’s optimum reward is more than 20% lower than would be expected with a0 = 0 regardless of how many delegates they attract (i.e. even when fully saturated at σ = z0 = 0.002). The relative rewards only approach 1 in the limit that the pools pledge approaches the saturation limit. This allows IOG, Emurgo, CF, exchanges, and whales who own ~1/k of the total stake (~64M ada with k = 500) to make saturated pools entirely of pledge that generate an additional 20% or more in rewards than most regular pools, under the current a0. Any increase in a0 exacerbates this issue (ex: doubling a0 to 0.6 would create more than a 35% discrepancy). This discrepancy in rewards, “the affluence advantage,” is a0/(1+a0) vs a pool with no pledge and decreases linearly as the pledge of the ‘regular’ pool is increased (assuming saturated with delegates, see the third figure).
This situation seems even worse if one considers that the current a0 = 0.3 is so low that it is ineffective at preventing a Sybil attack due to the negligible change in rewards at low pledge amounts (pools with 0 to ~1 million ada pledge). Now, it is worth mentioning that there is a difference between earning rewards, as a SPO, based upon your own capital (pledge) vs someone else’s capital (delegation). Perhaps, some discrepancy in relative reward is justified between the two cases, but I might argue both over the magnitude of what an appropriate discrepancy would be as well as that such a discrepancy should not be tied to Sybil resistance. A full evaluation of the rewards of a saturated stake pool vs a pure pledge pool under the various possibilities of margin costs and network parameters is beyond the scope of this post. In lieu of suggesting optimal parameters, I propose a new set of parameters altogether.
An Alternative: Pledge leverage factor L
Since saturation via k incentivizes a certain number of pools, but does nothing to assure decentralization and a0 merely incentivizes being wealthy, the simplest solution is to do away with both k and a0. One simple solution is to make each pools saturation directly linked to the its pledge via a leverage factor, L. For example, each pool would receive equal relative returns so long as their pledge + delegates was less than or equal to the pools pledge multiplied by the leverage factor, i.e. Σ ≤ s * L. As is currently the case, an oversaturated pool’s reward would be capped to its rewards at saturation.
The use of such a simple methodology achieves a number of things:
- It prevents Sybil attack as the number of delegates a pool can have (before saturation) is limited by their pledge
- It reduces or altogether prevents pool splitting (if L is a constant) as there is no longer any incentive to create more pools (aside from taking up a larger portion of “real estate” in stake pool browsers)
- L does not couple with the monetary expansion parameter (unlike a0) unless oversaturated pools exist (with negligible effect unless pools are grossly oversaturated).
- The reward structure is more equitable by not strictly favoring stake pools with large amounts of ada pledged.
- Due to 4, delegators choices are made simpler as there are fewer variables to weigh.
Some side effects to consider are:
- There will still effectively be a minimum amount of capital required to stay viable. While rewards on a percentage basis are more equitable, there will still be contention for consistent block production. (Note: while at best it is a soft limit, the number of blocks per epoch is likely to contribute to an ‘effective’ k parameter. This would be partially psychological in nature due to delegators evaluating pools on a per epoch basis, with viable pools likely to only be ones that can consistently mint at least one block per epoch.)
- It limits pool options for large delegations or “golden tickets” as the saturation limit depends on the SPOs capital.
- There is very little incentive for setting up private pools.
It is suggested that initially L be set quite high (≥ 20) to allow for small stake pools time to migrate from the previous system, establish themselves, and earn sufficient rewards to be able to improve their pledge and grow. Additionally, a baseline parameter B is proposed to be added to the saturation limit to aid small pools. B should be large enough to incentivize pool formation, while being small enough to not enable a saturated 0 pledge pool the ability to consistently mint blocks. Should this not be sufficient, the saturation could be changed to any arbitrary function dependent on pledge (for example, an exponentially decaying function). It should be noted; however, that certain functions, including the addition of a baseline B, may reintroduce an incentive for pool splitting.
To recap the proposal is to:
• Changing the rewards function to f = R σ θ’ where θ’ = min(1, (L * S + B) / Σ)
• Set L = 25
• Set B = 100,000 ada
Please consider this set of parameters, debate over what they should optimally be, add suggestions, and correct me if I have made any mistakes, misunderstandings, or poor assumptions. I would also be interested in seeing someone run this through some sort of a game theory analysis to see if the network converges to some equilibrium.