‘VoteWithRefund’ Contract Update
This proposal suggests an update to the main governance contract that refunds costs associated with voting. The ‘voteWithRefund’ function would perform the action and refund the voter, all in one transaction. The voter is refunded for gas fees in full.
I propose this upgrade is reviewed by the Tech Grants Pod and added to their backlog of work to be prioritized.
Ask: X ETH
Why
- Gas fees can be costly and prohibitive (especially for delegatees)
- Further democratize, incentivize, and remove barriers of entry for Nouns governance
- The Small Grants and Retro fund should not be in the business of refunding gas fees (as per the wish of Noun 22)
Implementation
- Contract details to be fleshed out by the Tech Grants Pod, given they take on the task.
- Brianj is interested in managing the frontend work
-
Contract
- In short, update the main governance contract with a new function, ‘voteWithRefund’, which performs the vote action and refunds the user in a single transaction
- The user will only be refunded if they have at least one vote. This rule avoids any non-nouner depleting our refund reserves at no cost. For context, the
castVote
function allows users with no votes to call it. - Rather than revert if the gas price is too high (see: FOMO), cap the gas price used in the refund calculation to a reasonable maximum. It’s unlikely that this cap is unintentionally exceeded, but if it is, it’s important that the vote itself succeeds.
- If the contract does not have enough refund reserves, then no refund is provided. The vote must still succeed.
- (Suggestion) In the unlikely event that a nouner votes from a contract that does not accept ether or otherwise reverts, then the vote should still succeed despite no refund being provided.
-
Frontend
- Update nouns.wtf main governance UI to use the new ‘voteWithRefund’ contract function
- Potentially add a small link/notice on nouns.wtf/vote to explain that voting is free/refunded
Funding
- Compensation for Tech Grants Pod (contract):
- 0 ETH
- Compensation for Brianj (frontend):
- X ETH
- TBD; I suspect this can be managed internally by Tech Grants(?) but interested to hear what the community think is fair comp
- Total funds requested
- X ETH
More / open questions
- Napkin calculation: The modified contract would pay out around 0.1 ETH daily at today’s rate. In a future scenario of 1000 active members, gas fees of $10, and a new proposal every 2 days, the modified contract would refund a maximum of $5,000 (or <3 ETH at current price) per day.
- I choose to leave Proposal Submission fees out of this proposal as I suspect the associated gas fee is healthy for governance and may act as a deterrent to spam. We can revisit this assumption at a later point.