Skip to content

How to split the DAO

Lefteris Karapetsas edited this page May 16, 2016 · 7 revisions

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

Warnings

In the case of a solo split, a split where you simply want to split out alone and take your portion of the ether, then there is something that you should be aware of. Anyone can join you in this solo split. If someone with more tokens than you tries to join, he can make your life difficult by downvoting all your proposals. He will never be able to steal your ETH since you will be the curator but he can block you taking your ETH out by also blocking his ETH inside with yours. More details about this and why it's not a serious issue can be seen here

The way to avoid such a scenario is to check after the votingDeadline if the proposal has any other votes except from yours. If it does and they hold more tokens than you then don't call splitDAO(). If not then call splitDAO() and be certain that nobody will follow you in your new solo DAO.

Clone this wiki locally