Closed sichen1234 closed 3 years ago
See https://wiki.hyperledger.org/display/CASIG/DAO+Project for the latest:
Proposals can be broken up into attributes, so you can either vote on the proposal as a whole, which is the same as splitting your vote equally on all its attributes, or cast all your votes on one attribute of it. When proposals are split into attributes:
Right now to keep things simple, all offsets projects should have the attributes of Real, Additional, Realistic Baselines, Permanent, Adequate Leakage Accounting when they are created, so you can vote on all or some of those attributes on the voting page.
My recommendation here is to keep the way the Proposal works, but make a sub-proposal so that an attribute could be a proposal that is a sub-proposal of another proposal.
In the Governor there should be new attributes for the Proposal which are
Then there could be a new function in Governor to makeMultiAttributeProposal which will
In Governor.propose we can remove the threshold checking for sub proposals, ie proposals with a parent proposal id.
Also we can in general remove the restriction of one proposal at a time. We do not have this requirement.
In the castVote function, if there are subProposals and the vote is cast on a parent proposal ID, then it just splits the votes and casts them on all the sub proposals. If there is no sub proposal id (ie a proposal without attributes or a sub proposal) it just casts it on the proposal.
In the Governor.state method you could check what kind of proposal it is:
For UI, setting up attributes of proposal can be done by the create-proposal. It can just automatically call makeMultiAttributeProposal to create an array [] of sub-proposals for the attributes of a carbon offset.
Then when displaying proposals with attributes, it can display each attribute with a vote for/against button, and the vote for/against button at the bottom for proposal as a whole.
For example, carbon offset projects have a series of attributes, such as Real, Additional, Realistic Baselines, Permanent, Adequate Leakage Accounting.
So you can vote for the proposal or put all your votes for/against an attribute of the proposal. For example, you can vote 100 dCLM8 tokens on a carbon offset proposal, which will count as 20 votes on each point. Or you can vote all 100 tokens on 1 particular attribute, such as additionality, and it will count as 100 votes on additionality.
(With #114 quadratic voting it voting 20 tokens will count as 4.47 votes, and voting 100 tokens will count as 10 votes.)