This is a proposal to update the GnosisDAO’s governance structure in a way that keeps the benefits of off-chain voting while allowing for trustless and permissionless on-chain execution. It uses a combination of existing tools (Gnosis Safe, Snapshot, Reality, and Compound Governance), and will require a relatively small amount of custom dev work.
The current governance structure is designed to be maximally inclusive; gas-free voting with delegation. This, however, comes at the cost of some additional trust in the system. Primarily, the DAO must trust that the multi-sig will faithfully execute it’s will on chain.
In order to make the GnosisDAO more autonomous, we should more meaningfully give it control over its on-chain execution.
Here are a couple of
- Trustless and permissionless on-chain execution of arbitrary function calls
- ERC20 token weighted voting
- Cheap/free and low friction for voters
- Good user interface and experience
- Silent Ending (no last minute votes that change the outcome)
- Safe module (must be able to control a Gnosis Safe)
- Audited and secure (are we ok with trusting this system with thousands of ETH?)
I’d like to propose an oracle-based solution, that looks something like this.
- A Gnosis Safe module, where anyone can create a new proposal.
- Each proposal is a Reality.eth question asking whether a linked Snapshot proposal passed.
- If the proposal passes on snapshot, then reality should resolve to the same outcome and the proposal should be executed.
- As a safeguard, we should use compound governance¹ as the arbitrator in Reality. That way we can always fallback to an onchain vote if an outcome is contentious.
- There should be a delay (say 24 hours) between calling arbitration and the corresponding compound governance proposal starting, to give voters time to move their funds appropriately.
This setup means:
- no on-chain voting for the vast majority of proposals
- no need to wrap tokens, for the vast majority of proposals
- falls back to an audited and on-chain secure mechanism in the case of contention
- Relatively little implementation work since it’s plugging together several existing pieces
It is missing the silent ending feature, however, I don’t think it’s quite as important in this scenario because anything contentious enough to actually go to a vote on-chain should command high enough voter turnout as to render silent ending somewhat moot. That said, it still I nice feature to add and should be considered as either a stretch goal or a v2 improvement².
¹ it’s worth noting that compound governance will require an upgrade to the GNO contract to enable token snapshots. Since the GNO contract itself is not upgradable, this would likely be achieved via a wrapper contract used specifically for voting. This is part of reason for the delay between arbitration call and voting starting.
² There are several possible improvements for a v2 implementation of the compound governance module, including silent ending and snapshot at the end of the proposal rather than the beginning.