-
Notifications
You must be signed in to change notification settings - Fork 490
How to vote and execute a proposal
Every token holder can vote on a proposal by calling the vote
function.
This function has 2 parameters:
-
proposalID
The ID of the proposal. -
supportsProposal
A boolean (yes/no) on whether the voter supports the proposal or not.
A vote can only be done once and con not be changed. After the debating period of the proposal it is not possible to vote on it. Additionally the tokens belonging to the address of the sender of the transaction are blocked (can not be transferred) until the end of the debating period to prevent multiple votes on the same proposal by the same tokens.
Proposal can be viewed using the public proposals
array which is visualized in the Mist Wallet. There one can view the parameters of a given proposal by providing the proposal ID. Those parameters are: recipient
, amount
, description
, votingDeadline,
open,
proposalPassed,
proposalHash,
proposalDeposit,
newCurator,
splitData,
yea,
nay,
votedYes,
votedNoand
creator`. The definition of those can be read in the white paper section 6.3.
As a helper to the voter, there exist a function called checkProposalCode
. This function is used to check that a certain proposal ID matches a certain transaction. The parameters of the function are:
proposalID
recipient
amount
transactionData
If the recipient
, the amount
and the transactionData
match the proposal ID, the function will return true
| , otherwise it will return false
(in Mist this denoted with code checks out
). This will be used to verify that the proposal ID matches what the DAO token holder thinks they are voting on.
After the debating period is over, everyone can call the function executeProposal
. The parameters are:
proposalID
transactionData
The function checks whether the voting deadline has passed and that the \verb|transactionData| matches the proposal ID. Then it checks whether the quorum has been met (see Eq. \ref{minQuorum}) and if the proposal had a majority of support. If this is the case, it executes the proposal and refunds the proposal deposit. If the quorum has been achieved, but the proposal was declined by the majority of the voters, the proposal deposit is refunded and the proposal closes. In the case of a new Curator proposal, it does nothing but closing the proposal in the case 27 days have passed after the end of the debating period.
There are tow possible reasons why it may be impossible to execute a proposal.
-
The deposit can not be payed back, because the creator of the proposal is a contract with a fallback function that consumer more than 9000 gas.
-
The function called by executing the proposed transaction throws an exception for whatever reason.
Token holders should not vote on proposals where this could happen. But in case it does happen, there exists a emergenyCloseProposal
function, which takes the proposal ID as parameter and closes the proposal. This function can only be called 5 days after the end of the voting deadline.
- Table of Contents
- Wiki Home
- View The DAO on the Ethereum Wallet
- DAO v1.0 Verification and JSON
- DAO Deployment
- The DAO Accounting
- Proposal Creation
- Token Creation and Transfer
- Proposal Voting and Executing
- DAO Splits
- Why Stalking Solo Splitters Makes No Sense
- Turn the Ethereum Wallet into a Mist Browser to Vote
- Proposal Framework Explanation
- PFOffer Workflow
- DAO-Improvement-Requests