# Nouns DAO V2 Upgrade

## Summary

This proposal updates the Nouns DAO logic contract to a new version, with the following improvements and additions:

1. **Dynamic Quorum**: In V1, quorum is a fixed percentage of total supply. In V2, quorum has a dynamic range, rising as a function of against votes up to a defined cap. Read [this post](https://mirror.xyz/0x10072dfc23771101dC042fD0014f263316a6E400/96zSoFfiT_RM2o2P9UbVKxPzVpB_trZqUjzllBE00BE) for more info.
2. **Vote with Gas Refund**: Allow Nouners/delegates to vote and receive a gas refund. The vote still takes place in the case of insufficient ETH to refund.
3. **Voting Delay Editing Bug Fix**: In V1, editing voting delay was unsafe. V2 makes it safe to edit anytime. More info on the bug [here](https://github.com/nounsDAO/nouns-diligence/blob/main/reports/proposal-58.md#major).
4. **Cancel Proposal Bug Fix**: The DAO has a spam mitigation feature, allowing anyone to cancel a proposal if the proposer has an amount of votes less than or equal to proposal threshold. In V1, this feature didn't work when proposer had exactly proposal threshold votes; in V2 it works as expected.
5. **Vetoer Change Is Now 2-step**: We received audit feedback that V1's vetoer change process was risky as a single-step process. In V2, the risk of setting a wrong vetoer is mitigated using a 2-step process where the current vetoer sets a pending new vetoer. Once set, the pending vetoer must accept for the change to take place.

## Audit

1. The code has gone through internal reviews and a [code4rena audit](https://code4rena.com/reports/2022-08-nounsdao/).
2. **No high-risk issues were found in V2**.
3. **Unrelated to this proposal**, one high-risk issue was found. See [this audit summary on discourse](https://discourse.nouns.wtf/t/nouns-dao-v2-audit-summary/2525) for more information.


## Dynamic Quorum Parameters

As articulated in this [detailed post](https://mirror.xyz/0x10072dfc23771101dC042fD0014f263316a6E400/96zSoFfiT_RM2o2P9UbVKxPzVpB_trZqUjzllBE00BE), three parameters need to be set for dynamic quorum. This proposal sets their values, and we’re offering the thinking behind them here:

1. **Minimum quorum %**: keeping it at 10%, the same as today’s quorum.
2. **Maximum quorum %**: setting it to 15%, taking into account recent participation levels around 30%, allowing proposals with more than 15% For votes to be decided by simple majority; the intent is for this value to provide extra protection from voter apathy, while allowing most all proposals to be decided by simple majority rather than quorum.
3. **Coefficient**: setting it to 1, such that each against vote raises the quorum requirement by one vote, until the maximum quorum is reached.

These parameters can be edited at any time via a proposal; treat these values as the first experiment.

## Vote with Gas Refund

A bit more on how this feature works:

1. Governance clients (like nouns.wtf/vote) need to update their code to support it.
2. Refunds are subject to certain constraints:
    1. Gas base fee is capped at 200 gwei.
    2. Gas priority fee is capped at 2 gwei.
    3. Total gas is capped at 200K, supporting voting reason text up to roughly 9,190 characters.
    4. If the contract’s balance is insufficient, voter will receive a partial refund.
3. This feature requires the DAO to maintain the DAO contract’s ETH balance, which should be done via periodic ETH transfer proposals from the treasury to the DAO contract (this proposal performs the first funding).
4. The DAO can choose to withdraw refund ETH back into the treasury at any time via a proposal.


## Proposal Transactions for Humans

1. `_setImplementation`: upgrades DAO logic to V2.
2. `_setDynamicQuorumParams`: sets dynamic quorum params to:
    1. Minimum quorum BPs: 10% (1000 basis points).
    2. Maximum quorum BPs: 15% (1500 basis points).
    3. Coefficient: 1 (1,000,000 in unsigned integer with 6 decimal places).
3. `transfer`: funding vote refunds with 12 ETH, which should be enough for just over 100 proposals at today's participation rate (excluding honk’s tendency to paste long paragraphs).

As always, please reach out in the [#54-tech-grants](https://discord.com/channels/849745721544146955/981584123225321503) channel in Discord with any questions ⌐◨-◨.

Outcome: EXECUTED