[Proposal Idea] Onchain Voting System for Validators

This topic is to develop a community driven voting system for validators. We all know that every validator have a voting power but that was never used. The idea is to build a system that allow validators to vote according to their staked amount weight. Lets say that we want to set minimum fee to 5%. We can vote it and if majority of the validators accepts it we can implement it and update it. This project will be driven by the validator community. If you want to be part of this please lets set up the constraints and implement something useful for us. Any help is appreciated. Let me walk you through what I have in my mind for starters:

Registration

  • We will let users create account using register and cspr.click.

Claiming Ownership

  • Only a single account can claim each public key.
  • Claiming validator can be done by signing a message with wallet extension.
  • For security reasons validators can claim their account with their verified account known public keys.

Voting

  • Any validator can create a vote.
  • Vote can be created under these settings:
    – Length of the vote can be 5 minute to 30 days.(urgent reasons might require very low timeframe)
    – Vote threshold: Thresholds are set upon creation of the vote(e.g., Voting power, active validator set)
    Absolute Majority: More than 66% of all validators, regardless of participation.
    Quorum-based Majority: A minimum percentage of total validators must participate for the vote to be valid (e.g., 66% participation is required for the vote to pass).
    Supermajority: A higher percentage, such as 75%, to pass more critical decisions.
    – Predefined options for vote: Accept, Reject, Pass
    – Voting Weight Customization: Staked Weight, Per Public Key, or any other activity/metrics.
    – Vote Visibility: Public(All validators can see ongoing results) or private(Results are only revealed after the voting period ends.)
    – Voter Visibility: Anonymous vs. Transparent Voting:
    Let validators vote anonymously (with the weight of their vote revealed but their identity hidden) or openly (where everyone can see who voted and how).
    – Time Extension Mechanism:
    For certain votes, the creator can set an option to extend the voting period if the quorum is not met.
    – Title
    – Description

Voting Details

  • Penalty for Non-Participation
    Inactivity Penalties: Validators who consistently do not participate in votes could face some penalties, such as a reduction in voting power or testnet? rewards. This would ensure active community participation.

  • Delegated Voting:
    Validators can delegate their voting rights to another trusted validator if they are unavailable to vote. This helps maintain quorum.

  • Notification and Reminder System
    Automated Notifications:
    Notify validators when a new vote starts, when the voting period is nearing an end, and when the vote is close to passing but needs more participation.
    Pre-scheduled Reminders:
    Optional reminders that can be set by the vote creator to encourage participation close to the deadline.

  • Proposal Repetition/Lockout
    Lockout Period:
    Once a vote is rejected or passed, the same or a similar proposal cannot be brought up again for a certain period (e.g., 30 days) to prevent spamming the voting system.

  • Incentive/Reward System for Voting
    Voting Incentives:
    Validators who consistently participate in votes could receive small rewards or points that accumulate over time, incentivizing active participation in governance.

Constants

  • Any constants can be changed upon voting. For example: Absolute Majority is set to 75%. Community can vote and change it to 80%.
1 Like

I would like to see existing voting mechanisms incl. real life experience and adapt them instead of reinventing the wheel and making the same mistakes others did already.

Voting IMO is a very complicated thing and needs proper planning.

What is this registration thing? Why does anybody need to register?

Why the dependency on cspr.click?

The registration is to offer a better user experience. Rather than signing a message for everything we do we will instead verify it once and until to an expiration date and let validators vote without have to dealing with proving that they are verified.

Plus I don’t see cspr.click as a dependency rather a tool here. It will help us sign a message and verify validators and carry out all the web3 functionalities that we can use whenever needed.

Hi @EraGuardian -

Thank you for putting this proposal together. I absolutely LOVE the direction and the thinking you have put into this. It in fact aligns very strongly with how I would like to see things develop as well. Without being able to give you full details right at this time, we are in fact working on a community governance concept that incorporates much of what you describe, but goes even further. As @Stakepire correctly points out, on-chain / community governance is a complicated thing, especially if you want it to have real legal and regulatory power, and also need to be able to operate “in the real world” (ie. your on-chain decisions need to be enforceable and actionable on real people/entities/etc.).
We are working on a proposal that accomplishes that, and more, and that will be presented for discussion and feedback in this forum in the next few weeks, alongside other components that are required to make it feasible and truly actionable/effective. As such, I ask two things:

  1. let’s table this conversation for now
  2. since you’re offering your help with implementing this, let’s find a way to formalize that when we’re ready to go, if you’re open to that.
3 Likes

Thanks for sincere explanation. Always around to contribute :v:

1 Like

@EraGuardian I know you have been, are and will be around to contribute, and I greatly appreciate it. A thriving ecosystem relies on a thriving community, and you are an amazing contributor to that. Looking forward to tackling this next topic with you and the broader community as well!

2 Likes

Will the validator portal be used for this? The beta version was developed a long time ago but never released. We’d like to see that used.