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.

2 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.