Effective Proof-of-Stake (EPoS)

Harmony's variant on the classic PoS consensus

How to Elect Validators

Most of the current PoS blockchains have a concept of committee which is a group of validators (a.k.a. block producers, endorsers etc.) who have the right to produce and validate blocks. Usually, the committee has a limited number of seats (e.g. 21 for EOS and 100 for Cosmos). The question of validator election is basically — how to decide who gets the seats in the committee? This is theoretically the same question of how to distribute limited resources in real world economy. In our economy, the way to distribute limited resources can be, but not limited to, 1) by pricing or bidding, meaning whoever pays the highest price will get it; 2) by social criteria, such as title and reputation; 3) by time, as in the time spent in the line for a limited edition product; 4) or by random selection, as in a lottery.

In fact, the way to select the validators in the committee is being solved by similar solutions. Let’s take a look at some of the common approaches in PoS blockchains:

  1. By the amount of stake (Cosmos, Polkadot): In this model, the validators who stake the most get the limited seats. This is very similar to bidding in real world. Our initial bidding-based design also falls in this category.

  2. By random selection among stake holders (Ethereum 2.0, Tezos): This model requires the potential validators to stake a minimum amount to be considered in the random selection. For example, Ethereum 2.0 requires a minimum of 32 ETH (10,000XTZ for Tezos) to be eligible for random selection into the committee. This model is basically a combination of pricing and random selection.

  3. By social reputation and voting (EOS, Tron): In EOS, the limited 21 block producers are determined by the amount of votes the validators get from token holders, which is an off-chain social reputational criteria.

The ways to elect validators are not limited to the above and other factors such as the token age (time), as in Peercoin, were also used before.

Generally, we believe using staked tokens as criteria is the most efficient and economically secure way for validator election, as the stakes closely ties the validators incentives with the well-being of the blockchain itself. We decided to go with the first option for its simplicity and effectiveness. Option 2 gives fair chance to all stakers, but the issue is that for a good amount of time the potential validators are just idling there, waiting to be selected, which comes at a considerable opportunity cost for potential validators.

Preventing Centralization with Effective Proof-of-Stake

We introduce Effective Proof-of-Stake, an efficient staking mechanism that avoids stake centralization while still supporting stake compounding and delegation.

Validator Election

As mentioned above, we will adopt the mechanism that elect the highest ranked validators based on stake as the committee. Specifically, for every epoch (~ 1 day), the top 1600 stakers will obtain the 1600 seats (4 shards * 400 seats) and become the validators across the shards. Once the epoch changes, the new rank of stakes will determine the validators for the next epoch.

Block Rewards based on Effective Stake

We’ve shared above that neither pro-rata rewards nor equal rewards is an optimal and fair choice for our design goals (specifically the even distribution of stakes and the ability to compound stake and returns). In EPoS, the validators will be rewarded in proportion to their effective stake, which is defined in the formula below. We use median_stake to denote the amount of stake at median in the ranked list of top 1600 stakers, and actual_stake is the actual stake hold by the validator.

Here, c is a protocol parameter (for example, c = 0.15). The effective stake of a validator is basically its actual stake bounded by the upper limit of (1 + c) * median_stake and the lower limit of (1 — c) * median_stake.

Besides the block reward, the voting power of each validator in the consensus is also determined proportionally by the validator’s effective stake.Validator’s Effective Stake and the Curve of Actual Stake

With the introduction of effective stake, the higher ranked validators are actually economically punished to stake too much in a single validator and the lower-ranked validators are enjoying extra reward for their stake. The effective stake is acting as an equalizer that pushes for a more evenly distributed stake among validators, thus avoiding stake centralization.

For compounding, the validators in the yellow area are economically incentivized to spin up new validator machines to “compound” their rewards. In terms of staking pool, this design is forcing the staking pools to decentralize themselves and avoid single point of failure. The nodes in the blue and green area can directly compound by re-staking their reward in the same validator.

In terms of delegation, token holders can freely choose one of more validators to delegate their tokens based on their commission rate, uptime and their position in the rank. The block rewards will be distributed to delegators pro-rata after the commission fee set by the validator is deducted. For delegators, It’s economically more rewarding to delegate to the validators in the green area as the return to stake ratio is higher, thus avoiding the stake centralization too.

With these design features, we can achieve our goals of supporting delegation, compounding stake while preserving decentralization.

Slashing Mechanism

In addition to the block rewards used to incentivize good behavior, the slashing mechanism is equally important as it can deter misbehavior and potential attacks. In EPoS, we will employ the following slashing rules.

Double Signing

  • Minimum 2% slashing on the stake. The slashing increases linearly as the number of validators being slashed at the same time (e.g. 33% slashing if 1/3 of the validators double signing)

  • Note: the staking mechanism’s push for big stakers to decentralize themselves comes in handy with the slashing rule. If the big staker initiates attack with all of their nodes together, more slashing will be applied on their stake.

Unavailability

  • For every 3 hours of unavailability, the validator’s voting power will be leaked by 25%.

  • After 12 hours of continuously being offline, the validator will have no voting power to participate in the consensus and become inactive. Inactive validators will take 0.1% slashing on their stake. If the validator goes online again, its voting power will be fully restored.

  • For those validators with no voting power, they won’t be considered in validator election until they send a rejoin transaction

Finally

Staking mechanisms and incentive models are core components of PoS blockchains. To some degree, they are as important as the blockchain protocol. The information about staking mechanism and incentive models of current PoS blockchains are scattered in many places and it’s hard to have a clear picture of how these systems compare. In that regard, we compiled a comparison chart of PoS designs among a few major projects. You can also find more details about Harmony’s staking workflow there.