blockchainsllc / DAO

The Standard DAO Framework, including Whitepaper
GNU Lesser General Public License v3.0
1.55k stars 497 forks source link

DIR 5 - Add Option to withdraw() from the DAO #148

Closed LefterisJP closed 7 years ago

LefterisJP commented 8 years ago

Changelog

As of DAO v1.0 getting out of the DAO and reclaiming your remaining ether requires the user to perform a split. This is a very long process which is cumbersome and very difficult to follow for non-technical people. Plus there is a possibility for other users to follow in a split and try to make your life difficult as defined in the Stalker Attack.

Proposed Solution

The solution is straightforward. A function allowing instant withdrawal from the DAO needs to be added for the user. This function should burn the user's tokens and return to him the remaining ether. An implementation of this can be seen here.

An alternative implementation which also allows for changing votes during the voting process can be seen here

D-Nice commented 8 years ago

Should this be a separate function, or should a solo option be included within the current splitDAO function?

Should a proposal be be required for a solo split as well, or should someone just be able to solo split without making a proposal for it? Not having to make a proposal would help the proposal table avoid clutter.

LefterisJP commented 8 years ago

I also think having a separate function, call it soloSplit(), call it quit() or whatever else would be nice. There is also no need for it to be a proposal anymore, just a (nuclear) option for the user.

If they want to quit, then no reason to put up artificial barriers for them.

D-Nice commented 8 years ago

Here's my initial attempt. Mostly reused and stripped the current splitDAO function. Anyone see any outlying bugs before testing?

https://github.com/D-Nice/DAO/pull/2/commits/ac8a47a558c0721a7fee67cceb4ef564fc5c88f5

Another question I do have is why does the existing splitData store itself in an array? The index never goes above 0 at any point?

D-Nice commented 8 years ago

I'm thinking an addition to this should be a stripped DAO that the solo splitter can call, so they don't have to spend almost 4M in gas. The solo DAO would only functions around its reward Tokens.

CJentzsch commented 8 years ago

solved in https://github.com/slockit/DAO/pull/228

LefterisJP commented 8 years ago

This issue has been turned into a DIR

ninjaboonx commented 8 years ago

aye aye to this DIR 5. will be really useful for newbies like me.

GriffGreen commented 8 years ago

This function could be very beneficial to day traders and others that want an easy way out of their position in The DAO, but personally I don't really like it at all as making it this easy to take money out of The DAO really hurts The DAO, as it has no easy way to replenish the funds lost.

If it must be added it really needs an extra verification action.

If left as is, I think it is too easy for a user to withdraw from The DAO. This is a problem because people are not always in their right mind, this could lead to someone being drunk, hungry, depressed, panicked, etc. and burning their DAO tokens for ETH and they could regret it.... There is no undoing this action.

I would like to at least see the functionality change so that the user has to push 1 button to initiate the withdrawal, wait 5 days and then push another button to confirm the withdrawal.

This seems more reasonable as The DAO doesn’t want to decapitalize on accident and the user doesn't want to either.

colm commented 8 years ago

So if we add the 5 day waiting period. The current cool off period between vote finishing and proposal execution would have to be increased from 3 days to 8 days.

GriffGreen commented 8 years ago

Maybe make it 4 days then as 2 days before the vote is finalized it has to have reached a passing yes quorum so if it does, the person can start the withdrawal, and verify it before the grace period is over.

humanao commented 8 years ago

I understand adding a waiting period of a few hours, possibly even a day...but several days? Why? All of the reasons suggested by GriffGreen for why a person might impulsively burn DAO tokens to reclaim ether (being drunk, hungry, depressed, panicked, etc.) could just as easily be cited as reasons a person may have bought DAO tokens in the first place. E-trade does not insist on a waiting period of a few days for me to sell stocks...

There appears to be an assumption that no new DAO tokens will ever exist. Why not? If the DAO chooses to have a token sale in the future, is there any reason that it can't?

colm commented 8 years ago

having another tokens sale would be very difficult. it would require an update of the DAO contract. It will also require token holders to agree to dilution of their shares.

p-s-dev commented 8 years ago

free & immediate withdraw is an arbitrage dream come true. fixed-peg values always fail. Contractors can't make serious financial projections about how much eth thedao holds when the exit gate is wide open.

  1. allow Dao1.1 to change its withdraw ratio from 1:100, in case it starts hemorrhaging.
  2. set a global daily withdraw limit (maybe 1000 eth) so dao is able to react to hemorrhaging.
  3. 10% of the value from a withdraw is deposited back to thedao main account.
GriffGreen commented 8 years ago

^^^^ This... Burning DAO tokens is not good for The DAO... Making it too easy doesn't make much sense as a business decision the organization, it really only helps daytraders stay liquid.

LefterisJP commented 8 years ago

I also believe there should be some form of a price for withdrawing.

  1. Either a time period between the start and the execution of the withdrawal (I prefer this)
  2. Or a withdraw-fee to be paid to the DAO. Either a set fee or a small percentage of the ETH being withdrawn.
humanao commented 8 years ago

It will also require token holders to agree to dilution of their shares.

@colm: I'm not sure that I understand this point. If reward tokens are functioning correctly, and investors are receiving reward tokens for proposals that they helped to fund, what is being diluted? The DAO is not a company with tangible assets and intrinsic (book) value. It is much more akin to a fund that operates on rules that anyone may copy and that may be modified by the participants. The token's voting power might be diluted, but I don't see how it's value in ether would be diluted.

Please explain to me how DAO tokens are being diluted if I am missing something.

allow Dao1.1 to change its withdraw ratio from 1:100, in case it starts hemorrhaging. set a global daily withdraw limit (maybe 1000 eth) so dao is able to react to hemorrhaging. 10% of the value from a withdraw is deposited back to thedao main account.

@p-s-dev: I understand the logic behind your suggestions, but even the suggestion of these changes would cause a stampede out of the DAO.

colm commented 8 years ago

@humanao so the DAO has X ETH that means the total reward tokens will be X Reward tokens. If you do another crowd sale then the total X + Y ETH and X + Y Reward tokens. That is the dilution.

humanao commented 8 years ago

Or a withdraw-fee to be paid to the DAO. Either a set fee or a small percentage of the ETH being withdrawn.

@LefterisJP: I am disappointed to hear you suggest this. The DAO is in uncharted legal territory and must be very conservative with decisions such as this. Changing the rules to the detriment of investors is a very bad idea that would invite legal action.

The DAO raised way more money than almost anyone expected. Likely the primary reason that happened was because token buyers were told that they could cash out their tokens and recover their portion of the DAO's unspent funds at any time. This promise, along with the short investment period (two weeks without penalty) motivated a lot of investors to invest more than they might have otherwise, because they were led to believe that there was no downside to investing. The DAO should be doing everything possible to stay true to its word to those investors. Talk of a withdrawal penalty, etc. is not the right path unless you want articles written questioning the DAO trust and motivations.

LefterisJP commented 8 years ago

@humanao I did say I would prefer a set time period over any kind of fee. I am simply stating alternatives.

DIR Threads are for exactly this kind of discussion and to get feedback from people on all suggested changes.

humanao commented 8 years ago

so the DAO has X ETH that means the total reward tokens will be X Reward tokens. If you do another crowd sale then the total X + Y ETH and X + Y Reward tokens. That is the dilution.

@colm: If reward tokens are all the same, you may be correct. If reward tokens are tied to particular proposals, I do not think that you are correct. I am still unclear as to how reward tokens function at that level, but my impression was that they are proposal-specific.

I did say I would prefer a set time period over any kind of fee. I am simply stating alternatives.

DIR Threads are for exactly this kind of discussion and to get feedback from people on all suggested changes.

@LefterisJP: I meant my comment as feedback on the idea, with no intention of stifling the conversation. Perhaps the term disappointed was a poor choice of words, but I still think that any sort of withdrawal penalty should be taken off of the table.

colm commented 8 years ago

@humanao currently they are not proposal specific.

GriffGreen commented 8 years ago

@humanao Are you considering a time delay a penalty? We were very explicit about how the splitting worked during the Token Creation, and many people ended up misunderstanding thinking that they could split and then get their ETH instantly after they called SplitDAO(), when in fact it goes to a new DAO...

If we want to add a function to allow splitting to work as the most optimistic speculators desired, there would be a 7 day delay at least between initiating the withdrawal and actually receiving the ETH. I have not heard a single person expect anything better then that.

humanao commented 8 years ago

Are you considering a time delay a penalty?

@GriffGreen: A time delay is a penalty. A fee would also be a penalty be it absolute or based on a percentage of the withdrawal.

Any proposed withdrawal time delay should be less than what is currently required for a split and based on some sort of reasoning (as opposed to a random number) based on the current DAO code.

I can't imagine that the DAO token holders would vote in any rule changes that made it harder to leave.

meeseeked commented 8 years ago

@LefterisJP: I am disappointed to hear you suggest this. The DAO is in uncharted legal territory and must be very conservative with decisions such as this. Changing the rules to the detriment of investors is a very bad idea that would invite legal action.

The DAO raised way more money than almost anyone expected. Likely the primary reason that happened was because token buyers were told that they could cash out their tokens and recover their portion of the DAO's unspent funds at any time. This promise, along with the short investment period (two weeks without penalty) motivated a lot of investors to invest more than they might have otherwise, because they were led to believe that there was no downside to investing. The DAO should be doing everything possible to stay true to its word to those investors. Talk of a withdrawal penalty, etc. is not the right path unless you want articles written questioning the DAO trust and motivations.

@humanao Can we cool it with the "invite legal action" hyperbole? In the real world, shareholders in closed end funds would be excited by these liquidity features with costs attached to them. This is actually considered best practices for CEFs, BDCs, and closed investment funds. I can and will argue against any reporter or bad press that suggests ill intent on behalf of TheDAO if it implements instantaneous liquidity with a cost attached to it.

So long as people can still split the way promised with the 1 month waiting period for free, the idea that this is some bad act runs contra to finance norms. Instant, costless liquidity/redemption will just be a boon to arbitrageurs and will destabilize TheDAO. A time delay was designed into the initial structure and anyone sending ETH to TheDAO would and should know that.

Honestly, this is a clearcut case of TheDAO being able to IMPROVE on the governance issues and agency problems that normal investment funds face. The same goes true for any future DAO. I wrote a Steem piece on this that covers this issue in more depth.

https://steemit.com/thedao/@eeks/thedao-should-perform-arbitrage-by-buying-back-tokens

jbrukh commented 8 years ago

@humanao @GriffGreen @LefterisJP @p-s-dev

+1 @eeks. One form or another of increased liquidity is a boon for the DAO, but should take a measured approach that respects all parties. Discounted buybacks will lower the litigation and compliance risks by increasing liquidity, innovate on real-world efficiency and agency problems, and meanwhile keep participant incentives in line with a more stable capital pool. Allowing instant costless withdrawal will lead to a risk of the disintegration of the DAO during a long-tail sentiment event, which is not in the interest of any participant of this experiment.

GriffGreen commented 8 years ago

@humanao So under the current DAOv1.0 code only takes 7 days to take your ETH out of The DAO, but it takes 48 days to get your ETH to an exchange.... which are two very different things, but the point of splitting was to protect your ETH from a bad Proposal, not to play arbitrage games.

Anything under 7 days is IMO over and above what The DAO could do to help the guys that jumped in to fast with out doing their due diligence. But making it instant will potentially create a similar situation, where people will start playing with their money without doing their due diligence. If they have to think about it for a few days they will have a chance to be better informed to make that choice.

humanao commented 8 years ago

Can we cool it with the "invite legal action" hyperbole?

@eeks: My statements were not meant as hyperbole, but I'm not trying to be an alarmist either. A lot of money is at play, and legal issues should be considered in any proposals made to the DAO. It sounds like you know a lot more about this than I do, and I hope that you are correct.

I think how these proposals would be perceived by the token holders depends on whether people are currently able to solo split successfully. If people can't successfully split because of the stalker attack or because of voting problems, then any penalty on withdrawals will be perceived with great skepticism and would likely be bad for the DAO.

If people are able to solo split successfully, then adding the option of discounted instant buybacks or delayed withdrawals only increases the options of the token holder and would likely be welcome. I think that Griff was correct and that a delay on withdrawals is understandable as long as the time delay is less than what is currently required for a split and based on some sort of reasoning.

but should take a measured approach that respects all parties.

jbrukh: This phrase sums up what I am trying to convey. It will not be good for the DAO if token-holders feel held hostage. Of course, token holders shouldn't choose to vote for any proposals that would do that.

It might not come through as clearly as I would like, but I really respect what you are doing and would like to see the DAO succeed.

cppethereum commented 8 years ago

Why should there be such a high barrier to exit the DAO? I'm heavily invested in the DAO and would like to see it succeed, but at the same time for anyone who wishes to exit the DAO, their tokens would be burned therefore increasing the value of each of our DAO tokens due to the decreased supply. It was stated from the beginning that for anyone who wishes to exit the DAO, that they would receive their proportional ETH in return - I think it's only fair to them that this remains true.

A2be commented 8 years ago

The DAO is a major investment fund, of sorts, somewhat like Venture Capital fund. The contract as written in v1.0 was not intended to make it easy to play short-term in-and-out arbitrage with it. It was intended to allow DAO token holders to exit this investment vehicle if they felt it was going the wrong way, or would be otherwise not beneficial to stay in. We want to honor that.

However, we should keep it incentive compatible with being a medium-to-long-term investment fund, and relatively incompatible with short-term and day-trader type arbitrage plays. There ought to be a cost to being here that is reflected in the leaving.

So I want to fix the attack vector that might prevent a split after voting no, but have no interest in making the exit process cost-free. That cost, at minimum, ought to be the 7 day delay (which is a cost to the splitter); but am okay with it anywhere up to a time period as it is in DAO v1.0 (c. 35+ days). I'm agnostic at present on the ideas presented above that would affect the direct DAO to ETH cash-out ratio.

CJentzsch commented 7 years ago

done