Here is the amended language:
Motion to restrict rewards qualification to a threshold
Objectives:
Decrease incentives to submit spam governance proposals
Protect the NNS from censorship, and preserve the current accessibility of submitting NNS governance proposals (i.e. does not increase the cost or difficulty of submitting an NNS proposal).
Allow NNS voters to ignore spam
Note: In this post, all references to “proposal” refer to all proposals, not just governance propsals.
Solution
This solution only requires the editing of 3 lines of code.
Update the NNS canister to skip rewarding proposals that have not received at least the Minimum threshold of Yes votes required to pass the threshold of Yes votes(currently 3%).
Example:
Proposal A: Final tally 2% of the total voting power to accept, 45% of total voting power reject - Proposer is charged a fee and the proposal is NOT considered for rewards.
Proposal B: Final tally 4% of total voting power to accept, 45% of the total voting power to reject - Proposer is charged a fee and the proposal IS considered for rewards.
Proposal C: Final tally 40% of total voting power to accept, 10% of the total voting power to reject - Proposer is NOT charged a fee and the proposal IS considered for rewards.
Proposal D: Final tally 2% of total voting power to accept, 1% of total voting power to reject - Proposer IS charged the reject fee and the proposal is NOT considered for rewards. Proposal is rejected as it is today.
Update the NNS canister to extend the end date to match the initial voting period when the proposal passes the threshold of Yes votes required to pass the proposal.
Example. If a 4-day proposal passes the 3% yes on the 3rd day, it will be extended for 3 more days so that gets the original 4 days of exposure to the broadest set of voters.
Implementation of Proposed Solution
After line 6027( ic/governance.rs at 79bbd3177f6532037eb29d62b3e52a364a8103ee · dfinity/ic · GitHub ) add the equivalent Rust code to the pseudocode below:
if( proposal.tally.yes/proposal.tally.total < MIN_NUMBER_VOTES_FOR_PROPOSAL_RATIO){continue;}
After line 5274(ic/governance.rs at 35acac6c1113a23e2cb92329f1431c5254567e6e · dfinity/ic · GitHub) add the equivalent Rust code to the pseudo code below:
let oldYesRatio = proposal.tally.yes / proposal.tally.total;
After line 5284(ic/governance.rs at 35acac6c1113a23e2cb92329f1431c5254567e6e · dfinity/ic · GitHub) add the equivalent Rust code to the pseudo code below:
if (proposal.tally.yes / proposal.tally.total >= {MIN_YES_THRESHOLD} and oldYesRatio < {MIN_YES_THRESHOLD}){proposal.deadline_timestamp_seconds = deadline_timestamp_seconds + (now() - proposal.proposal_time_stamp_seonds);
This proposal is put forward to complement [Proposal] Introduce an incubation period and minimum support threshold for governance proposals - #14 by justmythoughts which is a longer-term solution. This implementation could be created much more quickly.
Implementation Note: Unsuccessful proposals will still be charged the reject fee even if the proposal is not included in reward calculations
Recommendation
This proposal also recommends, but does not require that NNS frontends implement a filter to “Only show proposals that have met the reward threshold.” This filter should be off by default and only selected at the user’s discretion.
Voting
Accept: To vote Yes (Accept) means you agree that the above code changes should be made.
Reject: To vote No (Reject) means you do not agree that the changes should be made."}}; neuron_id_or_subaccount=opt variant {NeuronId=record {id=12008772471346176261:nat64}}})’
Expected Outcome: There will be less incentive to submit spam/inappropriate proposals as it they will be unlikely to hit a 3% accept threshold without the significant organization of an attacking party of 3% of the NNS voting power.