Background & Problem:
Since the open staking launch on Harmony mainnet, we’ve seen tremendous growth of validator and delegator activities in the network. So far, we have a total of 108 unique validators with more than 4 billion ONE tokens staked (Harmony – Open Consensus for 10B). The EPoS mechanism worked well to evenly spread the stake among 800 validator slots across 4 shards. The rule for validator election is that the top 800 bids for validator slots will eventually win the slots and bidding validators become elected. However, the unique design of EPoS where a single validators can bid for multiple validator slots lead to a problem: a validator with lots of stake can bid for less slots at first and only at the last minute before election add bids for more slots, which causes failure of election for the validators who underestimated the real amount of stake required to be successfully elected.
Compared to other PoS protocols with limited validator slots and uses the highest bidding rule for election, one significant difference the EPoS has is that validators can easily change the number of slots they are bidding for, while in other protocols, one validator is only allowed to bid for one slot. This basically makes it easy for validators with lots of stake to manipulate bidding process.
Add restriction to only allow 1 operation of “Add/Remove BLS keys” per validator per epoch. This will effective make it impossible for validators to game the election because they only have one chance to edit their bid count. On the other side, assuming the stake of a validator doesn’t change often every epoch, 1 operation to add/remove bls keys is enough to make the current adjustment based on their stake.
Add in the staking dashboard an estimated minimum stake to get elected safely, which is based on the history election result, rather than the pre-election setting. A note can be added to the estimate to clarify the risk of losing election if only bidding for the minimum and encourage to add more stake for better chance of election.