On my list of things to look at is implementing a jail / removing badly behaving nodes. Wanted to run it passed everyone and see what you all think.
• We have had a number of validators go down in the passed and sometimes it takes them weeks (or months) to fix their node issues. This results in sporadic block time and in turn lower throughput.
• Based on passed votes we have a very small voter turn out usually <25% which isn’t ideal and very decentralized.
How do we fix this:
Need a mechanism to remove badly behaving nodes from the pool and give them time to fix issues before we allow them back.
Intend to allow two mechanisms voting and auto removal.
Auto removal - This may come after voting but they share a little logic. The consensus will be changed to count the number of blocks mined by each node per cycle on the end of the cycle it will compare the number of validated to the expected number (floor(cycle duration/numvals)) if the number validated falls below X% of the expected the validator will be moved from the pending list into the new “jailed list”.
Voting- Existing validators will be able to propose a vote to push bad actors to the jail list. We need to make sure this can’t be abused so some validator KPIs need to be considered before successfully opening a vote such as uptime/ voting turnout.
Striking system- I propose to make this a strike system
1st strike - 1 cycle min jail time
2nd strike - 2 cycle min jail time
3rd strike - 3 cycle min jail time
Whether we want to go all the way to a permeant ban is up to debate
Released from jail- Jailed validators will remain in jail until they signify they are ready to be released this will result in them being released on the next cycle or once their jail time is up (which ever comes last)
Node maintenance- If an operator foresees down time (server migration for example) they will be able to signal to be moved into the jail list from the start of the next cycle and will need to signal when they are ready to start again.