Polkadot consensus mechanism - DPOS like EOS?
It seems to me based on a read of https://wiki.polkadot.network/docs/en/learn-staking that the Polkadot consensus mechanism is awfully reminiscent of EOS - I 'delegate' my consensus power to a small group of validators that I am not able to join myself. Why is this necessary? Why not have open validation like ETH or similar? It seems substantially more centralized.
Posted Sep 3, 2020, 2:48 PM UTC
56
Polkadots validation is completely open, you can become a validator if you want to. It is arguably even more open than Eth2 since in Polkadot you can technically become a validator without any of your own stake!
The difference between NPoS and DPoS is that in NPoS the nominators will get slashed if the validator nominated behaves badly. In EOS there's a set of centralized validators and indeed not anyone can join that set, so your delegation doesn't really do much anyway.
In Polkadot, there are currently 197 validators, many of those are duplicates, because aside from the above slashing condition, NPoS (using Phragmens method) also tries to automatically distribute the votes, validators can become "oversubscribed" and are then forced to start new validator nodes, this doesn't prevent a single entity from running all validator nodes, but it becomes significantly harder, more expensive and the nominators are motivated to find other validators to stake on because they'll get more profit if they nominate under-subscribed validators. This is actually quite similar to Eth2 where you're forced to start multiple validators if you have more than 32 ETH to stake.
I'd be curious to hear how the documentation could be improved to highlight these factors. DPoS and NPoS are massively different and have very different incentive structures, NPoS aims to distribute and "flatten" the set as much as possible, where the most optimal in DPoS is for everyone to delegate to one validator.
from the Wiki:
This seems to imply an expectation that not just anyone will be able to be a validator, that the number of slots will in fact be quite limited and that individual users will likely only be able to participate as nominators. Are you saying this is incorrect?
There's a very key difference in the statements "anyone can be a validator" and "everyone will be a validator at the same time".
In EOS, not anyone can be a validator, and they're limited to like 21 or something like that.
In Polkadot anyone can be a validator if they get nominations, many validators just join the Riot (Element) channel and market themselves and get in. The "limit" is also unexplored, like Kusama is running fine with 600 validators right now. It wouldn't be strange to have 1000 on Polkadot, and you could probably go even higher, for security you need the minimum stake to be a reasonable amount, but otherwise there's not much limitation.
So yes the slots are limited, but anyone can "run" for those slots, and there are enough that anyone reasonable should be able to participate.
This design suffers the same flaw that EOS has though - those with the influence to draw people to them to become validators will draw more people will draw more people. It's an inherently centralizing incentive and seems like a poor design choice when random wide validation works just fine and does not have the same problem.
The incentive structure is actually the same for "random wide validation". Why would you run an expensive validator node and take all that risk when you can just join a staking pool?
The difference is that in NPoS it's transparent and we can attempt to put better mechanisms in place to distribute the stake. If you have opaque staking pools it's more likely to increase centralization.