The Voter Inflection Point (VIP), Staking Rewards, & Global Block Producer Performance Standards
Chinese & Korean Translation Link Coming Here Soon
The EOS blockchain is a global billion-dollar DAO based on the EOSIO software. But as of today, there is very little that differentiates EOS from EOSIO. So little separates the two that it would be safe to say that EOS is mostly operating on the default settings of EOSIO. This is especially true with regard to governance, where very little has changed since launch.
Since EOS is a decentralized and independent community these settings can be changed at any time so long as there is 15/21 approval from block producers and underlying support from the token-holders that support them.
It is worth noting that EOS faces many obstacles, this only being one of them. Our focus on a particular issue is not to say that it’s the most important, but simply one that we can address sooner rather than later. This proposal is a significant departure from the default settings of EOS governance, but it is not beyond what is possible if token-holders agree that it is what is best for themselves as well as what is best for the blockchain’s security. It is when the interest of the individual and the interests of the collective are aligned that EOS will draw closer to an equilibrium point.
We don’t know if this is the answer but we’ve reached a point of maturity with the proposal where the most appropriate thing to do is to now release it to the community and allow it to take shape according to feedback.
All numbers displayed are illustrative and should be modified following community discussions.
Currently, the EOS incentive model is structured in such a way that it encourages behavior that is good for the individual but not necessarily good for the blockchain as a whole. This is because as a byproduct of seeking the greatest returns, individuals can erode one of EOS’ core value propositions: decentralization. Block Producer rewards are the most reliable and efficient way to obtain an EOS yield. Over the past year, best practices have emerged for most efficiently capturing this resource. A primary enabling factor is the 1 token 30 vote mechanism which has led to the creation of a codependent mesh of Block Producers who coordinate votes with one another. While 1 token 30 votes remains an issue, there are other contributing factors as well. Vote trading/buying/selling, Sybil attacks on block producer rewards via BPs operating multiple paid nodes, mining pools, and the mega-concentration of tokens on exchanges. Given enough time, these trends will continue. Eventually, control of consensus will cement into the hands of a few powerful actors. In order to prevent businesses from being deterred from deploying on EOS because of the perceived centralization the following changes and adjustments are proposed:
About total inflation: it is proposed that inflation be adjusted and reallocated. Block pay and vote pay are reduced to 0%. 100% of inflation is awarded to token-holders through staking rewards via staking or lending to REX. This way, the CPU and NET resources that your tokens afford you is never diluted. The yearly inflation rate is modified from a percentage to a fixed number in order to reduce the effects of inflation over a long period.
About voting: 1 token 30 votes is changed to 1 token 1 divisible vote where each additional block producer voted for further divides the total vote weight rather than multiplying it. Coordination of votes between large stake-holders is no longer possible. The ability to vote oneself into a BP spot with a large enough stake remains.
About staking rewards: Voting diverts 50% of inflation you would otherwise receive; where 20% is earmarked or burned and 80% is sent to the block producer rewards pool. The 20% that is burned or earmarked upon voting creates a buffer that makes it always more profitable to self-stake than to self-vote. There now exists a general disincentive to vote.
About the disincentive to vote: To counteract this disincentive and in order to maintain chain security, a voting inflection point (VIP level) is proposed and set at 30% of issued EOS. If total tokens voting relative to total supply drops below the VIP then staking rewards are toggled off, inflation is reduced and 100% of that inflation is awarded to block producers. Since this number is a percentage of total supply, the inflection point rises upward so that the relative security of the chain increases over time, as does the diversity of tokens voting.
About Block Producer pay: Block Producers are now paid a percentage of EOS tokens in the reward pool based on rank, where each rank receives a fixed percentage of rewards in the pool with the highest percentage at rank 1.
About Block Producer performance: Block Producers that miss greater than a specific percentage of the total rounds for which they are scheduled within a given pay period will not be eligible to claim pay for that period. Also, once this threshold is hit within a given period by any BP, the total inflation in the system, which is issued to all stakers and block producers, decreases rapidly during that period and refills slowly over time. This ensures that BP performance is a top shared priority for all EOS token-holders.
About developer and token-holder attraction and retention: the addition of a staking model ensures staked resources never dilute. It can provide dApps with funding for EOS accounts and can attract token-holders to the platform.
The result of these proposed components in concert with one another allows token-holders to obtain returns without eroding decentralization, ultimately maintaining the core value proposition of the EOS blockchain.
The collective decisions we make, how we make them, and the mechanisms we use to enforce those decisions.
This is a definition of governance.
In our opinion, the goal of EOS governance is to maintain a fluid balance between efficiency (throughput, scalability, speed, DX, UX, etc.) and security (decentralization, censorship resistance, cartel-proof, etc.) to provide a stable experience for users, developers, and code. The incentive structure that attempts to achieve this balance consists of at least two mechanisms: inflation and voting.
Besides scalability, efficiency, throughput, etc., a massive part of the EOS value proposition is decentralization. “Enough” decentralization, or the belief that tokens are scarce, secure, etc. is partly what gives them value. Decentralization is why we’re here. Despite this, the current incentive model is structured in such a way that eroding this value proposition is far more lucrative than maintaining it. With a year of hindsight and an intimate understanding of each of the comprising mechanics of the EOS incentive model, one can observe that EOS is currently hurtling toward a more centralized system governed by a codependent mesh of large stakeholders.
This is the result of many factors, most notably:
- Voter apathy and vote capture tactics
- Consensus’ lack of Sybil resistance
- An incentive and ability to coordinate votes
- A general lack of options to obtain an APR on token stake.
If EOS’ governance and the underlying incentive model is not adjusted then it may eventually no longer offer decentralization as a significant value proposition and businesses may go elsewhere.
It may be that those who build decentralized applications will fear these issues and choose to deploy their ideas, talent, capital, and time elsewhere. We may never hear about these businesses who defer. They may not publish their criticism, they will simply go elsewhere. Once this effect is “felt” we fear it will be too late.
EOS is currently experiencing a prisoner’s dilemma paradox where those in power focus on protecting themselves and are fearful of the other participants. By avoiding the risk of trying to stop what is happening we end up producing a less optimal outcome than if we were to work together to identify the issues and propose a solution. We’ve spoken to large stakeholders who begrudgingly participate in the current system but feel as if they would be hurt if they tried to step over the line and stop it.
We don’t use the word “cartel” because that isn’t what’s happening here. The re are many different perspectives, motivations, and organizations that comprise the majority of the token weight on EOS. We do not believe there is an issue with large token-holders voting for themselves and assuming a block producer spot. They paid for the tokens one way or another so this is their right and this proposal does not seek to strip token-weight of its fundamental power and value. It is only when that large stakeholder is able to dictate additional votes for BPs other than themselves to other smaller stakeholders who have no choice but to comply as they rely on the larger stakeholders votes. This coordination is the issue, not who signs blocks as a block producer. This is why we use the phrase “codependent mesh” because that’s what it is.
It’s very important to note that, in our opinion, no parties that are wittingly or unwittingly contributing to these issues are intent on damaging EOS. Quite the opposite, we believe most actors within the ecosystem have good intentions and long term views for the EOS blockchain in mind. But, like all of us, they are operating within the bounds of the incentive model built into the software, i.e. the EOS governance model. This proposal is not to place blame or paint villains, but to help the community identify the problems and to discuss a solution to them.
Vote buying isn’t a huge problem but we do address it in this paper. We think it’s important to take a moment and to try and understand the motivation behind vote-buying on the surface level. It’s clear that we are in a bear market. During these times, token holders may be hurt because of the drop in token value relative to fiat. Block Producers, despite also being in a bear market, have the ability to generate new token returns from inflation. In an effort to keep token-holders from leaving the community, and to lessen their pain, many block producers decide to share rewards with those who vote for them. This is an act of kindness and it’s a great thing. It’s EOS token-holders being taken care of. We recognize this perspective and respect it. But we also recognize that there are other ways to achieve this end.
In the following sections, we will demonstrate some of the issues that have resulted in the state of the chain today.
The EOS Voting Mechanic Is A Sybil Attack Waiting To Happen
“In a Sybil attack, the attacker subverts the reputation system of a peer-to-peer network by creating a large number of pseudonymous identities and uses them to gain a disproportionately large influence.”
EOS consensus is not Sybil resistant because a single actor may register multiple block producer accounts and multiply their voting weight at near-zero cost. Through one’s own stake, vote-trading, and offering “EOS mining” to token-holders, single actors are capable of controlling more than one spot in consensus. They can also control more than one, two, or even three or more accounts that are in standby positions. When businesses doubt whether or not consensus positions are independent of one another then those businesses may find other places to go. This is not hypothetical, this is happening now.
The EOS Voting Mechanic Is An Invitation To Mesh
Compounding the lack of Sybil resistance is the fact that separate parties can coordinate and mutually ensure spots in consensus through vote-trading. When enough tokens have been obtained, one can leverage the multiplicative nature of token voting, i.e. 1 token == 30 votes, to create a codependent mesh of the same number and mutually ensure consensus spots. When the turnover rate of consensus becomes zero then the system relies on the benevolence of consensus instead of its trustlessness. This is not hypothetical, this is happening now.
Lack of Options To Obtain A Return
EOS does not exist in a bubble, it competes against every other dApp blockchain platform where the concept of “staking rewards” is a common and expected incentive. Yet, EOS remains the holdout. Because EOS has ignored market demand for passive returns block rewards have effectively become “the only game in town” and have become a target as a result. Large token-holders can access block rewards through a myriad of tactics and strategies and provide very little beyond producing blocks in return. This is not hypothetical, this is happening now.
Mining Pools are an Accelerant Toward Centralization in DPOS systems: An Example.
A mining pool is created which promises to return 80% of EOS tokens it earns from block rewards back to any EOS account that delegates their vote weight to a proxy that the mining pool designates and controls. This is wonderful for the token-holder because there are no other opportunities for returns for them at this time. The mining pool starts to accumulate votes. The mining pool uses these votes to propel itself upward in the ranks by voting for themselves and coordinating with others so that votes can be reciprocated.
The mining pool continues to climb the rankings and is able to offer more rewards to their voters. Once the mining pool is in the top 21 ranks they hit a ceiling. Now, the rewards have stopped increasing and each additional vote delegated to the pool incrementally dilutes the previous ones. This is fine for a bit since no more votes are needed… until another mining pool forms who promises 85% reward returns. The race to the bottom has begun.
In order to remain competitive, each mining pool will continue to raise the reward payouts until the absolute maximum has been reached. What do they do after that? They are free to create another block producer account, include it in their voting slate and ask others to do the same, earn more, and raise the payout ceiling. Concurrently, they also reach out to other block producers who do not have the votes to trade and request fees which buys them a spot in the proxy voting slate. This is fine of course, as the mining pool ostensibly has no desire to move these side accounts into the top 21 and affect consensus. That is of course until the competitor does it. Then they will have no choice. The race to the bottom continues. At a certain point, the ability for non-top-ranked BPs to compete evaporates. This is because when an EOS voter is presented the choice between an established mining pool offering a high return and a new mining pool still gathering enough votes to offer any return at all, they will mostly always choose the safe bet. There are few enough spots right now that new entrants can compete, but this may not be the case as the market saturates.
Because the incentive model allows it and encourages it, the EOS blockchain will continue along this path until it is firmly in control of the hands of the few. Its decentralization value-proposition is lessened or lost, and the value of the token may be damaged as a result.
This is not hypothetical, this is happening now but we are just in the beginning stages. We can confirm that certain mining pools operate more than one block producer account with the sole purpose of generating more rewards to give back to voters. Centralized control is cementing.
It would be wrong if we were to purport that “profit” is the greatest and only motivation to obtain a block producer spot because it’s not. Prestige and power are two others. Prestige, being able to wear the badge of honor that is being a top 21 block producer and perhaps being able to leverage its halo effect into driving more traffic for an EOS-based business. And power, being able to have a seat on the “board” of the future of the decentralized internet. No matter what the motivation, those who possess the token weight to vote themselves into a block producer spot will be able to continue to do so in this new proposal.
By implementing the following proposal we can expect:
- Token-holders become their own mining pool.
- Coordinating votes is made obsolete by a new voting algorithm.
- Consensus is less susceptible to coordinated control. There’s neither a reason to own more than one BP nor does the voting mechanic enable it as much as it did.
- Block Producer rewards are more evenly distributed across BPs.
- Block Producer production performance is standardized, code-enforced, and directly in the interest of every active EOS stake-holder.
- Greed can flourish or devour itself since the blockchain operation is always protected.
- No more involuntary inflation, you choose to subject yourself to it.
- Distributed resources afforded by the tokens one owns are guaranteed to hold the same relative weight as when they were originally obtained.
The only current way to obtain a reliable return on EOS is to capture block producer and standby producer spots. We observe that the most effective way to do this is through vote-trading, buying, and other means of coordination between a handful of actors. Basically, attacking one of EOS’ core value propositions is the best way to earn a return. So, we must separate the core value proposition (decentralized consensus) from the greatest possibility for returns.
We propose to remove the 1% inflation awarded to Block Producers entirely and replace it with new mechanics.
In its place, we propose a new model that puts more power into the hands of the token-holders, as well as access to the greatest returns for using the blockchain.
We propose to award all inflation to token-holders who stake or lend their tokens to REX.
A vote for a block producer is now a diversion of 50% of the inflation that a token-holder would otherwise receive into a pool that is distributed to Block Producers based on their rank.
At a high level, inflation is now a voluntary thing rather than something that is forced upon a user. The choice for any token to not be staked or lent to REX and be used to cast a vote instead, allows others to earn more. If one chooses to only stake, they would receive the maximum reward possible, avoiding any dilution of resources or value and in most cases realizing a net gain of resources.
When a token-holder votes and diverts inflation from themselves to the BP pool, a portion of the tokens diverted are burned. This means that in nearly all circumstances voting would mean a lower return than if a token-holder were to simply stake for themselves which would reward them the full rate.
Originally, we modeled a system where eosio.bpay was removed and pay was entirely allocated through eosio.vpay. We quickly found that this would be fatal to EOS as it would likely reduce the number of paid block producers to fewer than 30. The reason for this is that there are some actors with tens of millions of EOS and now that the voting model encourages voting for fewer BPs it’s reasonable to expect that they would vote entirely for themselves. One positive aspect of 1 token 30 votes is that it floods the market with so many votes (e.g. there are ~300MM tokens voting but 8.16BB total votes at the time of this writing) that eosio.vpay is relatively flat. But, when you reduce to a single vote for each token, one will end up with as many votes as there are tokens at the most. When a single actor controls 30MM tokens with only 300MM total votes it would mean they also earn 10% of the block producer rewards which inadvertently would reduce the number of paid block producers to begin with.
Any attempt to cap vpay at a certain level would likely result in a Sybil attack where the large actor would simply register a new block producer account and divide their votes among them thereby bypassing any cap.
The proposed solution is to then implement rank pay where each rank receives a percentage of total BP rewards rather than a flat amount (e.g. 5% for #1, 4.9% for #2, etc). This removes the ability for any BP to extract a large number of rewards that detrimentally reduce the total paid producers. But, this still creates vulnerability on the tail end of the rankings where votes are likely much less concentrated than the top, allowing the large actors to assume paid spots there. But, if we go back to the diversion model, the incentive to assume more of these spots is removed by the fact that staking will always yield more tokens than self-voting due to the portion burned.
By removing pay based on the blocks produced we remove any incentive to avoid missed blocks. Even so, the penalty applied for missed blocks was negligent (a few EOS) and in a case where votes are being coordinated with one another, votes are unlikely to change based on performance. We’ve seen this in practice, where a large token-holder/block producer was not producing blocks for 2 hours while only one BP signed a proposal for their removal. In order to avoid poor performance due to lack of an incentive or lack of active BPs, we introduce a global block producer incentive model directly tied to performance.
To encourage producers to maintain good uptime, the ability for any block producer to claim a reward needs to be removed whenever a threshold of missed full rounds is met. It’s possible for any bock producer to cause the next block producer to miss blocks or a full round, so we propose to decrease the total amount of inflation issued to all stake-holders during that same period as well. This penalty should be realized quickly and dissipate more slowly so that the effect is “felt” and that more time must be spent producing full rounds than the time spent missing them. As a result, for all stake-holders to maximize their returns, they need to ensure the reliability of every block producer in the top 21.
1 token == 30 votes is a large contributor to the current dysfunctional state and would exacerbate the issues identified in this proposal if left in place. We propose that we move from a system where vote weight multiplies with each additional producer voted to a system where vote weight divides with each additional producer vote for. Meaning, (Token Weight/ Number of Producers Voted For). This is similar to “one token, one vote” (1t1v) where a vote for a single BP will carry the most weight and reduces the ability to coordinate. It’s worth noting that this lowers the general approval threshold for producing blocks.
Given that voting would now have an opportunity cost (50% of inflation is diverted to the block producer pool or burnt), it’s not difficult to foresee a situation where only a very small minority of the community votes at all, while the majority chooses to keep the inflation for themselves. For this reason, we are proposing a total token-vote threshold which we are calling the Voter Inflection Point (VIP).
The VIP is the minimum amount of votes that must be cast before staking rewards are “turned on” and awarded to token holders. If total votes fall below this threshold then only block producers receive rewards, which will ensure proper incentive to produce blocks. If total votes are above this threshold then all token holders who stake will receive rewards. We also propose that the VIP also adjusts over time based on total token supply. In this way, the VIP in a similar fashion to POW difficulty, which also adjusts based on the total hashpower present.
New tokens issued annually are capped at a flat number of tokens per year when total votes are above the inflection point, and the amount of tokens per year reduces when they are below the inflection point.
For example, a 50MM cap per year, rather than 5%, will mitigate never-ending compounding inflation. The total amount of inflation decreases each year relative to the total tokens in circulation, keeps block producer rewards in check, and creates an incentive to become an EOS token holder sooner than later.
Assume the inflection point is 300MM. Above this number 50MM EOS are issued each year divided across each account that stakes or lends to REX. The total votes on-chain drops to 298MM. The total EOS issued per year is dropped to 10MM and distributed to BPs and Standbys using rank pay. Staking rewards for token-holders are suspended until the total tokens voting is 300MM or more.
A token holder has 10,000 tokens, stakes them, and receives 500 EOS per year. If the token-holder votes they receive 50% of the reward, divert 30% to the BP reward pool and 20% is automatically burned/retired or earmarked. The token holder’s annual yield is 250 EOS, 100 EOS is burned or earmarked, and 150 EOS goes to the BP pool.
We end up with a model where the desire for returns is allowed to thrive until it consumes itself without disrupting blockchain operations.
It stands to reason that the VIP value should be optimized for equilibrium and that every measure should be taken to ensure token-holders have the tools to allow for easier decision making to that end. Currently, a single account must vote with the same amount of tokens they have staked. Instead, we propose that we disconnect the number of tokens staked to be disconnected from the amount tokens voting which provides a better user experience. For example, a token-holder determines that they would like to vote only with 50% of their tokens and stake the other 50%. This change would allow them to do that within one account rather than be forced to split it into two.
- The total amount of votes will always hover near the inflection point, standardizing the capital threshold of attack against EOS.
- Return-seekers would likely withdraw from voting unless it meant dropping below the VIP. The incentive to capture consensus is replaced and entities will choose to stake rather than register multiple BP accounts.
- BPs primarily motivated by power and/or prestige can continue undeterred.
- EOS consensus becomes more Sybil resistant because vote weight cannot be multiplied across BP accounts at zero cost. Every vote has a cost.
- Coordinated votes cannot exist due to the divisible nature of vote weight. For relinquishing this power, large token-holders are compensated.
- Proxies become primarily tasked with maintaining the VIP instead of focusing on which BPs to vote for.
- There is likely global cooperation among all large stake-holders to maintain the VIP and optimize their stake.
- Dynamic inflation is replaced with static inflation (e.g. 50MM flat per year vs. 5% of supply per year).
- 1 Divisible Vote replaced 30 Tokens 1 Vote.
- Staking or lending to REX awards an account with staking rewards.
- An account that votes for a BP diverts 50% of inflation away from itself and 20% is burned while 30% is sent to the BP reward pool.
- If too few tokens vote then staking rewards are shut off, total inflation reduces, and 100% of inflation is now awarded to BPs until such time as the voting threshold is met again.
- Accounts can now set the number of tokens staked and the number of tokens voting independent from one another within a single account.
- Bpay and vpay are replaced with rank pay percentage.
- Block Producer performance determines the total inflation within any given period which materially affects the returns of all stake-holders.
We believe that these changes successfully separate return-seeking from governance with a failsafe that kicks in if voting and BP pay drops below a critical level and threaten chain operation. The incentive to coordinate votes is removed. Token-holders become their own “miner” and receive a return for staking or lending to REX. The traditional staking model guarantees that resources are not diluted over time and may attract new token-holders to EOS. EOS consensus becomes more Sybil resistant because votes are not multiplicative. Above all, the search for an equilibrium point between altruism and greed becomes a normal and necessary dynamic baked directly into the EOS governance model itself. We feel that potential businesses will feel confident and secure with this model from both governance and resource management perspectives.
EOS is simply too large, too valuable, and too unpredictable to change all at once. Not only technically but culturally. With this in mind, it’s important that we understand that this proposal is written to describe a larger picture, and not intended to imply a simultaneous roll-out of all changes. Therefore, the following stages are proposed to implement changes slowly in an order that allows for the larger picture to come together with the least disruption at each stage. We have already begun the technical scoping for all the changes that we’ve proposed.
Adjust voting from 1t30v to 1t1dv.
Inflection point added, not turned on, no staking rewards yet.
BP pay adjusted to rank % pay, bpay and vpay removed. Block Producer uptime tracked on-chain for total rewards.
Account-level changes for allowing for staking & voting to be two different amounts for one account.
Step 5 & 6 Simultaneous:
Inflation rate adjusted, staking rewards turned on.
This proposal was written through the combined efforts of multiple organizations and is not the work of EOS New York alone. Most notably, we would like to highlight the $10K USD equivalent donation that Cypherglass has made to fund the development of these changes. Thank you to everyone that contributed to developing and modeling these ideas.