Non-Technical via Mist
- Install Mist and get it synced
- Add DAO Watch Contract
- Add DAO Watch Token
- Open the Mist / Ethereum Wallet App.
Go to ‘Contracts’ and then click on the ‘The DAO’ contract.
- On the left side under "Read Functions" look for "Proposals". Here you can enter any Proposal ID to see the details.
- When you are ready to vote, select "Vote" from the "Select a Function" dropdown on the right.
- Under "Proposal ID" enter the Proposal ID.
- Under "Supports Proposal" check the "Yes" button if you wish to vote yes. If you want to vote no, do NOT check this box.
Choose your token account to execute from.
Do not send any ETH (or it may fail).
Ensure you have some ETH in your token account for gas.
A pop up will appear confirming gas, etc. Enter your password and press "SEND TRANSACTION".
Every token holder can vote on a proposal by calling the
vote function. This function has 2 parameters:
proposalIDThe ID of the proposal.
supportsProposalA boolean (yes/no) on whether the voter supports the proposal or not.
A vote can only be done once and cannot 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 (cannot be transferred or split) until the end of the debating period to prevent people from voting on proposals and then splitting to not face the consequences of the vote.
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:
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:
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:
The function checks whether the voting deadline has passed and that
transactionData matches the proposal ID. Then it checks whether the quorum has been met (see Eq. (1) for
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 closes the proposal when 27 days have passed after the end of the debating period.
There are two possible reasons why it may be impossible to execute a proposal:
The deposit cannot be payed back, because the creator of the proposal is a contract with a fallback function that consumes 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 either of the above could happen. But in case one does, the proposal will close when
executeProposal is called 10 days after the voting deadline.