-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Introducing the idea of epoch #316
Comments
I like this approach and I think it could be achieved by slightly modify the
About this, as a user with some delegated tokens, in the past I struggled to understand WHY I should delegate token to one validator rather than another one. |
@bragaz yes and the current staking mechanism on Cosmos Hub will just make delegators delegate to the top 10 or 20 validators. If I'm a I know a validator that is good but it has no enough delegation, I will not delegate to it as I will not receive any rewards. As a result, that validator will never be elected as an active validator. Using EndBlock is correct as this is how Tendermint update the validator set. |
This actually may be related to |
@kwunyeung Is this the same thing that is being proposed inside cosmos/cosmos-sdk#8569? |
@RiccardoM yes it is. I will read more on the ADR and join the discussion. |
Epoch in |
Feature description
We always want to achieve a more fair mechanism for validators. When there is a limit in the validator set in PoS, it will never be fair. Even if the validators will be supported by the foundation, the validators outside of the set will never be selected to the set under PoS. Our first step is to spread the token as distributed as possible and encourage validators to join as many as possible.
One more step to consider is to select different validators at different time. So that even if we have limited number if validator slots, more validators can join. Increasing the validator set won't be a long term solution as it will just increase the block time under the asynchronous voting queue of Tendermint Core.
By introducing epoch, we can reselect validators and also use this as a period for applying the warm up / cool down of voting power issue raised in #194.
Implementation proposal
One issue comes from the random seed. I have discussed this issue with Band Protocol as they use the same method to select a small group of validators for reporting the oracle. Their approach is that the nodes have to calculated the randomized result 3 times to ensure deterministic. They have also audited the code and auditor considered using the block hash is safe.
We have planned the foundation should hold most of the tokens when launch. Then most of the delegations will be coming from the foundation. We can set up criteria on which validators should be supported, similar to what we are going to do with the 200 validator set. This can be done programmatically or by application. We can even delegate to those validators not in the active set as they will be selected in a long run. The total bonded stake holds high but the stake take part in the consensus may not be that much in each epoch.
If we can implement this, the idea will be similar to Polkadot's Nominated PoS and Celo's validator election. The difference is we can control the distribution to be fair at start which won't lead to Polkadot's problem of a single crypto fund split their stake in multiple nodes.
The text was updated successfully, but these errors were encountered: