How to split the DAO - TheDAO/DAO-1.0 GitHub Wiki

DAO Wiki - Reliable

Introduction

In the case a single token holder, or a group of token holders, does not a agree with decisions by the curator and following proposals to a certain address, he can split off the original DAO to a new DAO. This mechanism is primarily to avoid the "Majority robbing the minority attack" described in section 4 in the white paper.

This process will destroy all his tokens and move his portion of the Ether (note: the extraBalance is not part of that) owned by the original DAO and his portion of the rewardTokens (used to retrieve his portion of the future rewards) to the new DAO.

After completion, this can not be undone! Everyone participating in a split should know exactly what he is doing in order to avoid any losses.

Process

In order to initiate a split, a token holder needs to create a proposal with the newCurator flag as true and the recipient specifying the new curator of the new DAO (see https://github.com/slockit/DAO/wiki/How-to-create-a-proposal). Every token holder who wants to join this new DAO, needs to vote in favour of the proposal (https://github.com/slockit/DAO/wiki/How-to-vote-and-execute-a-proposal). After the debating period, which is at least 1 week, the token holder can then call the function splitDAO. This function has 2 parameters:

  • proposalID The proposal ID of the new curator proposal
  • newCurator the address of the new curator account (or multi signature wallet)

In the function it is checked that the voting deadline is over, the new curator is different from the old one, the transaction sender has voted in favour of the proposal and that the send of the transaction has not voted on another proposal with a deadline after the proposal to split the DAO.

The first token holder calling that function for this proposal will automatically create the new DAO. In this process the current balance of the original DAO, as well the current balance of reward tokens (see white paper section 7) of the DAO and the total supply of DAO tokens are stored in the splitData section of the proposal and used to fairly split the DAO. After this process, the portion of the ether and the portion of the reward token belonging to the send of the transaction are moved to the new DAO. Finally, his DAO tokens are destroyed.

In order to find the address of the new DAO, one can use the getNewDAOAdress function, which takes the proposalID as input paramter and returns the new address.

The new DAO which has been created will now go through the same 27 day creation period as the original DAO. This is the time for every token holder who has voted on the proposal to join the new DAO by calling splitDAO.

After this time the new DAO is fully functional, and the curator can add addresses to the whitelist and proposals can be created, be voted on, and executed.

Remarks

The new DAO will have a proposal deposit of 0. Therefore one of the first action after the creation period should be a proposal to raise this value to a reasonable number.