Background
From the inception of Nouns, the vote snapshot has been taken at the time a proposal is created. This means if a proposal is created at block 1000, and voting starts at block 2000, the ownership and delegation information from block 1000 will be used to determine who can vote on the proposal and how many votes they have.
This was established to normalize quorum votes as the Noun supply is ever-increasing.
Recent Discovery
Recently, the diligence committee found an issue relating to the use of the ‘voting delay’ to offset the vote period start time in an effort to consume the snapshot from the proposal creation block.
Options
We have two options to remedy the bug:
- Continue to snapshot voting power at the proposal creation block. This is the status quo.
-
Minor Technical Note: This will either require an additional state variable to be inserted on
propose
, which will marginally increase the gas required to put a proposal on-chain, OR additional checkpointing and migration of two struct values.
-
Minor Technical Note: This will either require an additional state variable to be inserted on
- Move the snapshot to the start of the voting period. This switches things up a bit. Changes to voting power that occur during the ‘voting delay’ will now be taken into account as they’ll occur prior to the snapshot. This includes delegation, transfers, and Nouns minted and distributed to their owners during this period. Note that this is the approach used by other protocols like Compound.
Ask
I’m interested in opinions of the group prior to implementation of one of the proposed fixes.