Seeking Feedback: ENS Governor Upgrade to make proposing more accessible

GM ENS Governance,

Kent Fenwick here from Agora with a discussion topic around an upgrade that we are proposing we launch to the ENS Governor that will enable the feature of Proposal Bonds.

Link to Pull Request

Why Proposal Bonds?

Proposal bonds allow anyone to bypass the proposal creation threshold of ENS which is relatively large, 100K ENS. Instead of needing to have that much voting power, a proposer can acquire less, say 500 ENS, or 1,000 ENS (configurable) and propose based on this lower threshold.

To prevent SPAM and encourage good proposals, we added a feature that was suggested on the MetaGov call a few weeks ago whereby you can vote:

  • For
  • Against
  • Against No Return
  • Abstain

If the weight of Against No Return > Against, then the proposer does not get their bond back and the proposal does not pass.

 enum VoteType {
        Against,
        For,
        Abstain,
        AgainstWithoutBond
    }

    struct ProposalVote {
        uint256 againstVotes;
        uint256 forVotes;
        uint256 abstainVotes;
        uint256 againstVotesWithoutBond;
        mapping(address => bool) hasVoted;
    }

Other ways we could solve this problem

The goal of this PR is to start a conversation around how best to lower the threshold for proposing while still keeping the quality of the proposals high.

There were a few other ideas that were floating around include:

  1. Allowing multiple users to come together and ā€œsponsorā€ a proposal by amassing enough ENS to meet the 100K threshold.

  2. A modified version of the sponsorship model pioneered by Nouns where Proposal Candidate ideas are posted onchain and exposed in a separate part of the client for users to browse and ā€œbackā€ with their sponsorship.

Example at Nouns Agora below

  1. Finally to something as simple as simply lowering the threshold of proposing.

We would love this to serve as jumping off point and Agora is happy to build out more potential upgrades that could show ENS how these kinds of collaborative and more proposer friendly models could work for the community.

Feedback we are looking for

Should we make it easier for people to propose to ENS?

If yes, whatā€™s the best way?

At Agora, we love the Proposal Bond idea, but also have experience with the Proposal Sponsorship pattern that Nouns is using.

We would love this thread to serve as a discussion point and Agora is committed to building out whatever the community decides by eventually bringing this to a temp check / proposal.

Thank you for reading and looking forward to reading the comments and discussions below.

6 Likes

Iā€™ve wanted something like this for a long time, and Iā€™m so pleased you guys implemented it. Adding an ā€œAgainst, no returnā€ voting option is a great idea, too.

6 Likes

Thanks Nick! You were a big inspiration for this and we got the Against, no return idea from someone during the Meta-Gov call a few weeks back, either 5pence or Alex I believe.

Nick, what are your thoughts on this bond approach vs. the sponsorship / pooling of funds approach?

1 Like

Personally, I favor bonds; theyā€™re easy to implement, easy to describe and understand, and more accessible for honest proposers, while having a higher cost for dishonest/malicious ones.

2 Likes

Personally, I think this is an excellent approach and it solves the only potential issue with the bond concept. Iā€™d love to see us implement this concept this way.

We should also discuss the amount of the bond. It needs to be significant but not unobtainable. Fluctuations in the token markets will make this a difficult target to get right, but I assume adjusting it later via DAO vote is an acceptable approach. If I had to choose this value today, Iā€™d suggest 1,000 ENS.

These arenā€™t mutually exclusive, right? I think theyā€™re both good ideas. Although, Iā€™m still not confident the pooling/sponsorship approach doesnā€™t have a hidden gotcha. Does anyone know if the Nouns implementation has uncovered any negative outcomes?

Last thought, I think thereā€™s a couple ideas that weā€™ve tabled because of the general difficulty of governor upgrades. Letā€™s make sure we gather everything together to review if we get close to pulling the trigger on this.

As a potential user of more accessible proposal submission I think that ā€˜Proposal Bondsā€™ looks great whilst not adding additional overhead for delegates.

Small thing:
I had a look at the code and within the test code the enumeration for the ā€˜against w/ no bond returnā€™ is AgainstWithoutBondReturn whereas in the contracts the variable name is againstVotesWithoutBond. I donā€™t believe the latter is particularly clear.

3 Likes

Thanks for presenting this on the call today. I would suggest calling the options:

  • Approve
  • Abstain
  • Reject
  • Reject with Prejudice

So the possible outcomes would be:

  1. (Approve > Reject + Reject with Prejudice) AND (Approve + Abstain > Quorum): the proposal passes and the bond is returned
  2. (Reject with Prejudice > Approve) AND (Reject with Prejudice > Reject) the proposal fails and the bond is kept by the DAO (notice thereā€™s no quorum required)
  3. In all other cases the Proposal fails and the bond is returned.

I believe if we can implement this then we can slowly phase out the whole concept of minimum quorum for proposals which means we wonā€™t need to implement things like sponsoring proposals etc. If we make the bond something between 1000 and 10,000 ENS then a lot of people will be able to bring a proposal, but the cost of doing it maliciously would be very high.

4 Likes

Hey @kent_agora thanks for this and a good discussion yesterday in the MetaGov call!

I agree @nick.eth re bonds vs pooling concept - itā€™s far more straightfwd and should balance accessibility and proposal quality. I think pooling resources for a proposal might sound democratic, but realistically it will be logistically challenging. Coordinating multiple stakeholders to amass the required ENS could slow down the proposal process and create friction. Plus, sponsorship can intro power dynamics that affect the proposal process making it difficult for less connected or new members to have ideas considered.

And agree with @5pence.eth that 1,000 ENS feels reasonable, though we should definitely remain flexible and adjust the value should market conditions fluctuate significantly.

Also imp is that clear and consistent terminology throughout for easier implementation so I think @AvsAā€™s ā€œApprove,ā€ ā€œAbstain,ā€ ā€œReject,ā€ and ā€œReject with Prejudiceā€ is more intuitive BUT removing quorum could lead us to decisions being made by a very small, potentially unrepresentative proportion of the community and end up undermining gov legitimacy. Also, without a quorum, the whole dynamic can become more volatile with decisions swinging based on the votes of a few participants.

All of this to say, I like the bond approach, I think the piece we need to get to is the balance between accessibility, clarity and integrity of gov process.

To clarify, when I mention without a quorum Iā€™m talking about proposals that failed to reach quorum to be executable. So:

  • Proposal reaches quorum, majority is YES, proposal passes
  • Proposal reaches quorum majority is Reject, the proposal fails and the bond depends on which kind of Reject won
  • Proposal doesnā€™t reach quorum but majority is YES then proposal fails but bond is returned
  • Proposal doesnā€™t reach quorum but majority is simple Reject then proposal fail but bond is returned

The only moment a bond is not returned is if Reject with Prejudice is larger than simple reject and the sum of both rejects is bigger than the Approvals. This would help protect cases in which a malicious proposal is put purposefully and surreptitiously in a moment where the voting is low (Devcon week?)

I fail to see a situation in which a minority can burn the bond of a well liked proposal.

1 Like

Thanks for that check, we will have a look and clean this up.

Nice, thanks for the feedback.

This is a really good idea.

I wonder if there is a potential for perceived unfairness: If bonds are frequently not returned, it could create a perception that the system unfairly penalizes less experienced or resource-rich proposers.

For implementation, are you thinking to implement this as a specific feature of the Agora governor or make it modular and pass it back into OpenZeppelin Governor?

I think a lot of the ecosystem would like a feature like this.

2 Likes

I would expect the norm to be that a bond would only be forfeited for spam or malicious proposals.

2 Likes

We will be working on both paths yes! Thanks for the feedback.

We agree. That should be the norm we shoot for.

It would be good to consider the edge case of the proposal being canceled directly in the timelock by the security council and how the state of the proposal is handled in the governor.

More about that in these posts in the forum [1, 2, 3].

To address concerns about ENS price fluctuations and to protect against Sybil attacks, spam, and other unproductive submissions, I propose setting the submission threshold at the greater of $10,000 USD equivalent or 1000 ENS.

This ensures that even if 1000 ENS tokens are worth less than $10,000, the proposer must still meet the $10,000 USD equivalent value, thereby maintaining the integrity of the governance process and preventing exploitation by malicious actors.

GM! Based on the feedback we got on the call this week, we will be looking to try and get consensus before putting up a Snapshot vote later this week.

Sounds like the feedback was to try and get an approval vote up on Snapshot with a few options with:

  • 1000 ENS
  • 3000 ENS
  • 5000 ENS

As the potential options. Unless there are strong objections to that idea, I think that is what we will plan to do on Sunday this week.

Please reply with any thoughts before EOD tomorrow, and then I can start getting the snapshot ready.

Also @alextnetto.eth , we will definitely address your feedback here too when it comes time to implementation.

1 Like

What are your thoughts on the following?:

Does that add too much complexity to the system?

Not everything needs to be put to a vote, and I donā€™t think delegates have any more insight into the best value for this than anything else. I think a sensible value should be chosen - Iā€™d personally think 1000 ENS is sufficient - and put forward as a yes/no vote. If the chosen amount is low enough that we see abuse, it can be revised upwards.