Skip to content

Extract Checkpointing functionality from ERC20Votes #2868

@cygnusv

Description

@cygnusv

🧐 Motivation
Currently Governor assumes the underlying voting source is an ERC20 token, which is fine in most cases. However, it would useful that other types of voting sources are allowed.

For example, current NuCypher DAO (which uses Aragon), only works for stakers (not liquid holders), so all the checkpointing logic occurs in the staking contract, and not in the ERC20 token. We're currently working on a new DAO for the Threshold Network (which comprises both NuCypher and KEEP networks) and we plan to use Governor Bravo. Our idea is that governance will not be based solely on ERC20 tokens, but also on staked tokens, which means the same checkpointing logic will be used both in the token and staking contracts.

Furthermore, we plan to combine both approaches (i.e., token-based and staking-based voting sources), so an aggregation layer would be ideal (we have experience with Aragon's VotingAggregator in current NuCypher DAO, and it has been working great).

I'm already working on this, and I personally believe it would be great for these improvements to go upstream.

📝 Details

  • Extract checkpointing logic from ERC20Votes.sol, and place it in a library/abstract contract.
  • Create an aggregation layer that's capable to collect votes from several sources, and aggregate them according to some logic (e.g., weighted average).
  • Define new interfaces that improve composability of Governor Bravo (particularly wrt to integration of voting sources)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions