Closed lukestokes closed 4 years ago
Linking to the comment (and subsequent chat) in Discord for historical purposes: https://discordapp.com/channels/435916207162654722/441004169319677952/610294100713013268
Values that referendum could bring to the DAC:
Values could come to the DAC Factory through voting and hosting:
The process of rereferendum:
P/s: Members must vote for eosdacserver to raise a referendum.
Technical plan for referendum
There are 3 types of possible referendum
Binding referendum where the referendum contract uses a custom permission to automatically execute certain pre-approved actions. Custodians would not be able to prevent the on-chain execution of this action (unless they remove permission of the referendum contract). The authority account will add an extra permission called referendum
which will be linked to the approved actions. Thresholds for passing of these referenda will be fixed based on the action which is being sent.
Semi-binding. If the action that the token holder wants to be sent is not on the list of approved for a binding referendum then they can propose a semi-binding referendum which, if approved, will automatically create an msig proposal which will be presented to the custodians. Currently, only custodians or admins can propose msigs so this will provide a route for token holders to get a proposal in front of the custodians. The threshold for this type of proposal will be lower than a binding proposal, unless high-risk actions are involved such as setauth, linkauth, setcode and anything involving transfer of value (eg. token transfer or RAM purchase).
Opinion. This type of proposal is just a way for token holders to voice their opinion about a particular subject. It will not include an action which should be executed on chain and the token holders should understand that this is not binding at all (the custodians are free to respond however they like).
The new observers pattern in the contracts should allow us to only count staked tokens, or even allow liquid voting for any particular referendum.
We can add an option to either use stake based voting, or per-account voting.
There should be a major warning saying to only use per-account voting if you are on a chain which has KYC, even then if there is enough value at stake then it is possible to game. Account based voting should never be configured when there are approved binding actions which can transfer value.
Referendums are deployed here for testing, only opinional referendums supported now
The details (and merits) of this proposal still need to be worked out, but here's a starting point to have the discussion based on this comment in Discord:
Ideally, we can explore using existing referendum code that has already been developed and customize it for our needs.