How to vote and execute a proposal via the Ethereum Wallet

Non-Technical via Mist

WARNING

Be very careful before voting on a proposal. Make sure to double check the proposal's voting deadline because once you vote, your tokens will be blocked from splitting or transferring to another account for the duration of the vote's debating period.

Voting

  1. Install Mist and get it synced
  2. Add DAO Watch Contract
  3. Add DAO Watch Token
  4. Open the Mist / Ethereum Wallet App.
  5. Go to ‘Contracts’ and then click on the ‘The DAO’ contract.

  6. On the left side under "Read Functions" look for "Proposals". Here you can enter any Proposal ID to see the details.
  7. When you are ready to vote, select "Vote" from the "Select a Function" dropdown on the right.
  8. Under "Proposal ID"  enter the Proposal ID.
  9. Under "Supports Proposal" check the "Yes" button if you wish to vote yes. If you want to vote no, do NOT check this box.
  10. Choose your token account to execute from.

  11. Do not send any ETH (or it may fail).

  12. Ensure you have some ETH in your token account for gas.

  13. Click “Execute”.

  14. A pop up will appear confirming gas, etc. Enter your password and press "SEND TRANSACTION".


Step 5:                                                    Step 7-9:

Executing

todo

Technical

Voting

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 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.

WARNING

Be very careful before voting on a proposal. Make sure to double check the proposal's voting deadline because once you vote, your tokens will be blocked from splitting or transferring to another account for the duration of the vote's debating period.

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: recipientamountdescriptionvotingDeadlineopenproposalPassed,proposalHashproposalDepositnewCuratorsplitDatayeanayvotedYesvotedNo andcreator. 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.

Executing

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 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.

Remark

There are two possible reasons why it may be impossible to execute a proposal:

  1. 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.

  2. 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.