In V3 we introduced a data contract where people post candidates onchain (using events). Accounts with zero votes need to pay a small spam-protection fee to create a candidate.
We use the create candidate function also as part of the flow of updating an onchain proposal that was created with signatures, as a means of collecting signatures again for the update.
The primary bug is that we charge the candidate creation fee in this proposal update flow, when in fact we don’t want to charge it. The fix is not charging the candidate creation fee when the candidate is explicitly created in order to update an existing proposal, and the proposal meets certain conditions: it’s in the Updatable state, the candidate creator and the proposal proposer are the same account, and the proposal has at least one signer.
The secondary issue is that candidates can be created with an invalid amount of transactions, leading to bad UX when people try to convert these candidates to proposals. The DAO’s rules for transactions are: (1) there must be at least one transaction, and (2) there must be at most ten transactions. With this fix the data contract enforces the same rules so users get pushback early on.
Exact changes can be seen in this pull request.
Because this change is for a side contract, which doesn’t have any access to the core nouns contracts,, we're not going through an official audit process. This change has been reviewed by solimander.
The transaction sets the data contract proxy implementation to be the fixed version deployed here.
Thanks,
the verbs ⌐◨-◨
In V3 we introduced a data contract where people post candidates onchain (using events). Accounts with zero votes need to pay a small spam-protection fee to create a candidate.
We use the create candidate function also as part of the flow of updating an onchain proposal that was created with signatures, as a means of collecting signatures again for the update.
The primary bug is that we charge the candidate creation fee in this proposal update flow, when in fact we don’t want to charge it. The fix is not charging the candidate creation fee when the candidate is explicitly created in order to update an existing proposal, and the proposal meets certain conditions: it’s in the Updatable state, the candidate creator and the proposal proposer are the same account, and the proposal has at least one signer.
The secondary issue is that candidates can be created with an invalid amount of transactions, leading to bad UX when people try to convert these candidates to proposals. The DAO’s rules for transactions are: (1) there must be at least one transaction, and (2) there must be at most ten transactions. With this fix the data contract enforces the same rules so users get pushback early on.
Exact changes can be seen in this pull request.
Because this change is for a side contract, which doesn’t have any access to the core nouns contracts,, we're not going through an official audit process. This change has been reviewed by solimander.
The transaction sets the data contract proxy implementation to be the fixed version deployed here.
Thanks,
the verbs ⌐◨-◨
Did a little bit of due diligence. Here's the diff between the old and the new versions: https://gist.github.com/w1nt3r-eth/e3a6701cb4bc144c8d86036c59846fe9
The change matches the mentioned PR and looks good to me!
Have not personally audited the contracts but the changes are straightforward.
sent from voter.wtf
The Nouncil has spoken.
We discuss all Nouns proposals every week in our Discord https://discord.gg/fdjJpMeV6K. The calls are public and all are welcome!
You can find previous call recordings here: https://nouncil.notion.site/30328df718424f17a623859018497fc2?v=806b5234a2a34b619c3d5028bcd879f0&pvs=4
Nouncil showed unanimous support for this proposal.
Vote Results & Reasons
For - Wins
FOR - 31 VOTES
benbodhi | "Thank you, happy holidays."
AGAINST - 0 VOTES
ABSTAINS - 3 VOTES
https://www.lilnouns.wtf/vote/nounsdao/474/votes FOR 82 VOTES 0xADa31Add8450CA0422983B9a3103633b78938617 | "Lil Nouncil says For! Delegate your Lils to Lil Nouncil here: lilnouns.wtf/delegate?to=lilnouncil.eth" AGAINST 0 VOTES ABSTAINS 63 VOTES 0x63aa1670aBAF10b93a8fD9804eA304641Ec8aCE8 | "Until the implementation of autonomous voting for off-chain props, I vote abstain on Nouns props. " 0x9e0e9D25a5ED9bc773f91691f0b45599255257B1 | "I'll only vote on proposals that require explanations once the proposer attends our weekly calls to explain them."