直接导致以太坊分叉的The DAO事件
白话区块链
从入门到精通,看我就够了!
“暂停交易,我们遭到了攻击”。
2016年6月17日,以太坊创始人V神心急如焚,急匆匆在Reddit上发了一篇帖子“DAO遭到攻击,请交易平台暂停ETH/DAO的交易,充值以及提现,等待进一步的通知。新消息会尽快更新。”
此贴一出,引起了巨大反响。下面的回帖各式各样,讽刺,谩骂,调侃。有人说“好耶!比特币To Da Moon,以太坊药丸”,还有人说“真讽刺,之前还说以太坊没事,the DAO没有被黑。”当然,少不了人关心自己的钱“我们的钱怎么办?要没了?”
他们有理由这么做。
01
The DAO
V神为什么要呼吁交易平台暂停ETH/DAO的交易?DAO是什么?
要了解这些,我们得从头讲起。
DAO,英文全称是Decentralized Autonomous Organization ,去中心化自治组织,是V神提出的一个概念。这个去中心组织,依靠智能合约在区块链上运行,没有法律实体,我们可以把它理解成“去中心化的公司”。
The DAO则是区块链公司Slock.it发起的一个众筹项目。Slock.it是一家将区块链与物联网相结合的公司。一开始,他们只是想利用以太坊来开发他们的“全民分享网络”。随着开发的深入,他们发现,去中心分享经济很有前景。他们在伦敦的Devcon1大会上演示了这个概念和愿景,出乎意料的是,这个项目反响热烈。
于是,就有了The DAO项目。
在The DAO项目中,代币的持有人拥有很大的权力,比如项目资金的用途需要代币持有人投票决定,相关的提议由智能合约支撑。
创始人们野心勃勃,他们想创建一个真正的“DAO”,一个真正去中心化自治组织。
2016年4 月 30 日,The DAO项目开始众筹。项目代币DAO,众筹时间为期28天,代币价格大约是100个DAO兑换1至1.5个以太坊。The DAO项目总共筹到了超过1200万个以太坊,几乎占到了当时以太坊数量的14%,当时价值超过1.5亿美金,参与众筹的人数超过11000人。
The DAO是当时最大的众筹项目。这超出了很多人的想象,项目团队自己都没想到。众筹结束后,各交易所纷纷上架DAO代币,开始交易,一片其乐融融的景象。
然而,人怕出名猪怕壮,钱多容易被盯上。筹到这么多的钱,The DAO自然被黑客盯上了。
Tual在6月12日宣布,他们发现了软件中存在“递归调用漏洞”问题,不过,这对DAO资金来说,不会出现风险。
或许是众筹的成功让人们放松了警惕,人们已经迫不及待地等待The DAO开始应用了。当时,超过50个项目提案在等The DAO代币的持有者投票。
02
攻击
然而,平静的海面下,实则暗流涌动。
6月17日,黑客利用The DAO代码里的一个递归漏洞,不停地从The DAO 资金池里分离资产;随后,黑客利用了The DAO的第二个漏洞,避免分离后的资产被销毁。
如果是正常情况,The DAO的资产被分离之后,就会被销毁。但是,黑客在调用结束前,把盗来的The DAO资产转移到了其他账户,避免了被销毁。
如此熟悉The DAO代码与机制的人,全世界或许不超过100个。黑客利用这两个漏洞,进行了两百多次攻击,总共盗走了360万的以太坊,超过了该项目筹集的以太坊总数目的三分之一。
没多久,社区就发现了黑客的攻击行为,整个社区都惊呆了。
随后,The DAO监护人提议,社区发送垃圾交易阻塞以太坊网络,以减缓The DAO的资产被转移的速度。
The DAO项目筹集的以太数目差不多占到当时以太坊总量的14%,这个数量实在是太大了。如果The DAO出了什么事,整个以太坊网络都会遭殃,更不要说以太坊基金会也参与了The DAO项目。
万幸的是,也正式由于这些“不良”代码,黑客无法将这些以太坊提走。因为代码里规定,要过27天之后才能提现,这给了社区足够的时间研究对策。
经过紧急磋商,V神不久就在以太坊官方博客发布公告:紧急状态更新:关于DAO的漏洞。V神在公告中,解释了这次攻击的一些细节问题,同时提到已经提交了软分叉的建议,不过不会回滚,也不会撤销交易和区块。
分叉,对于以太坊来说,可是一个艰难的抉择。
当时社区就有人反对分叉,因为“这会杀了以太坊。如果这次分叉通过了,那么以后随时都可以分叉......数字货币诞生的目的,就是为了解决‘大而不能倒’的问题,现如今,大家竟然都同意‘大而不能倒’起来了”。
2008年的金融危机,让人们深刻地理解了什么叫“大到不能倒”。
更有网友回忆起了历史:
> “历史只是在重复,即使是在加密货币领域。大家可能还记得未来币发生过类似的事情。BTER交易平台被黑,5000万未来币被盗,占了总量的5%。未来币是POS共识机制,所以这种情况的风险非常大。未来币开发者发布了一个特殊的版本,把被盗的交易回滚。当时未来币社区也需要决定怎么做,经过多次辩论,最终的结果是不回滚。黑客拿到了币,从此未来币社区分裂了。希望大家能做出明智的选择 “
受此事件影响,以太坊价格第二天暴跌约30%。
03
以太坊分叉
6月18日,有趣的事情发生了。
一位自称是The DAO事件的黑客中间人,出现在了The DAO的Slack频道中。有媒体对他进行了采访,在采访中,中间人说他们将会拿出100万以太坊和100个比特币,奖赏那些反对软分叉并继续挖矿的矿工。
他还说“以太坊的人都是虚伪的,比如说,大家都知道 ‘CASPER’ PoS共识机制行不通,但还在宣传’CASPER‘。我不喜欢以太坊,也不喜欢Slock.it,但这不是主要原因。主要原因还是钱,即使我喜欢以太坊,我也还是会这么做。“
只是,大家都无法断定这个所谓的中间人真实身份是谁。
当天,网上还出现了一封给以太坊以及DAO社区的公开信,作者自称是该黑客。作者在信中说道,
> “对于那些把此次行为定性为盗窃的说法,我很失望。我只是研究了The DAO的代码,然后利用了这些代码,我的行为没有违反The DAO的条款,我的律师认为我的行为完全符合美国法律......
软分叉或者硬分叉都会伤害我的权益,而且会对社区造成伤害。以太坊大户会砸掉手中的币,开发者、研究者、公司会离开以太坊社区。
大家不要做出错误的选择。任何分叉,不管是软分叉还是硬分叉,都会极大地伤害以太坊,摧毁它的声誉。
对于冻结、没收或其他伤害我合法以太坊代币的行为,我保留一切权利,采取任何必要的行为保护我的合法利益“。
不过,Stephan Tual认为,这不过是其他人的钓鱼行为,因为文章末尾的加密签名是无效的。
6月19日,黑客再次发起了攻击,不过只有少量的DAO资产被分离。
社区中已经有人坐不住了,不少人受够了这担惊受怕的日子,“这不仅仅是the DAO的问题,这还是solidity(以太坊智能合约使用的语言)的问题,以太坊把我吓出屎来了。这几天我一直在看行情,总在担心以太坊的安全,受够了”。这些心脏弱小的人纷纷卖掉了以太坊。
当天,创始人之一的Christoph Jentzsch 发表了一篇博文,在博文中他提出两点建议:一软分叉,即v神说的。但是这还不够,这仅仅把the DAO的所有资产都冻结住。黑客无法提现,但是其他投资者也不能提现。
于是Christoph Jentzsch
提出第二项建议:硬分叉。通过硬分叉,能把所有的资金都退回去,投资者不会有什么损失。而且不需要回滚。
可是硬分叉可不是闹着玩的,不仅要解决技术问题,比如重放攻击的问题,更重要的是,价值观的问题。当初人们支持区块链,支持以太坊,就是因为痛恨现实中的中心机构能够随意修改规则。如果以太坊也随意硬分叉,那么跟现实中的中心机构有什么不同?
21日,Christoph Jentzsch
发贴向社区道歉,首先他承认了自己没有发现the DAO代码中的漏洞,“即使找了很多知名人士进行了代码审核,但是这还不够。我们学到了宝贵的一课,虽然为此付出了惨痛的代价。“最后他还是希望大家支持分叉。
6月22日
Alex Van de Sande在reddit上发了一篇帖子,说了说这几天他参与的一个白帽黑客行动。原来,在the DAO被攻击之后, Van de Sande以及几个白帽黑客决定开展一场行动,把大家剩余的资金抢救出来,他们把这场行动命名为”罗宾汉“行动。这场行动其实就是使用一样的方法,再”黑“一次the DAO,把剩余的资金转移到安全的地址。虽然他们的初衷是好的,但是这么做是否合法,仍然有待商榷。
编程专家Vessenes说:。 “他们这么做几乎肯定是非法的,但他们声称这是为了更多人的利益。”
罗宾汉行动过程并不顺利,根据bloomberg的报道,在一次攻击前Van de Sande
的电脑竟然断网了。。。作为一名黑客,他的电脑断网了。。。。他讽刺地说“我们试图从一个机器上窃取几千万美元,但遭到了另一个机器的伏击。”
不过最终他们还是成功将剩余的资产转移了,罗宾汉们成功了。
接下来,便是对分叉的大讨论。
支持分叉与反对分叉的人都有自己的理由。
有人说道:“以太坊基金会参与DAO项目就是个错误。因为我觉得以太坊应该挑选一些能够成功的项目以及实验来提供基础架构,而反过来它们要想成功,则需要一个强大的基础,而且要求坦诚得面对挑战。硬分叉提议的妥协,破坏了这种坦诚,而且意味着DAO项目会反过来影响它们自己的基础架构。就我而言,这是完全无法接受的,也违背了曾经吸引我的以太坊原则。”
“以太坊一直按其目标在运作。我觉得既然现在管用,就不该去更新软件。你可以想象一下你的投资会遭遇的风险。如果你不清楚你的投资情况,那你就会遇到未知的风险。其他任何东西都会是中央权威机构的一种援助,和加密世界形成对照。相似的,这也就是为什么雷曼兄弟会失败——因为交易就是交易,如果你为了某些特定参与者该改变规则,那么其他参与者也会想要这种特殊待遇。”
还有人只关心自己的钱“在头几天我做了个坏决定,然后我损失了2万个以太币,能把这些以太币也还给我吗?先谢谢了!”
还有人说这个办法与去中心化的原则相违背。
而支持硬分叉的人则认为:不能让黑客得逞,这在道义上说不过去。这么多的以太坊落入恶人只手,后果将会十分严重。社区应当加以阻止。通过硬分叉还能把监管机构和法务部门挡在门外,我们的问题,我们自己解决。
经过激烈的讨论(v神是支持硬分叉的),最后,多数人还是同意了进行硬分叉。
7月20日晚,备受瞩目的硬分叉成功实施,社区松了一口气,硬分叉代码成功实施且没有明显的错误。
分叉之后形成了两条链,一条为原链(以太坊经典,ETC),一条为新的分叉链(ETH),各自代表不同的社区共识以及价值观。
Etc一方的人认为发生的事就已经发生了,区块链的精神就是不可篡改,账本形成了就不应该去篡改,这是原则问题。而eth一方则认为这是盗窃,是违法行为,必须予以打击。V神站在了eth这一边。
但是etc并没有就此死掉。不少对区块链精神死忠仍在追随etc。当初投票时就有大约10%的人反对硬分叉。
7月23日
全球最大的以太坊交易所Poloniex上线ETC,随后许多交易所纷纷跟进,ETC价格最高上涨至ETH的三分之一。
这又让原本平静的社区开始走向对立。大家互相争争吵,最后导致社区一分为二。
7月24日
以太经典ETC国际社区诞生
以太坊经典从eth社区中独立了出来,形成自己的讨论社区,包括Roy, Bitnovosti联合成立的EthereumClassic,Slack和Telegram社区。
ETC社区还发表独立宣言。
声明ETC不再与以太坊基金会有任何联系。独立宣言强调了以太坊的价值,一些被以太坊基金会践踏的价值,并着手规划ETC的未来。
通过etc社区的努力,ETC价格逐步平稳,现如今也仍在发展当中。
其实在被攻击之前,就有人提醒the DAO代码存在漏洞。
Dino Mark、Vlad Zamfir和 Emin Gün Sirer三位学者曾呼吁DAO代币持有者暂时拒绝为任何提案投票,直到DAO合约编码的安全漏洞完全修复。他们三人发表了一篇文章详述了所有可能的攻击路径。只不过,都没引起重视。
听闻the DAO遭到黑客攻击后,Emin Gün Sirer感叹道“这真是一场噩梦,大家担心的事还是发生了:有人找到了the DAO代码的漏洞,偷走了很大一笔钱“
教训
2017年一次采访中,v神回顾the DAO事件时,如此说道:
“首先,我觉得以太坊现在不错,” “有些人对于纯洁和道德十分看重,如果一次出错,那么以后就永远会出错。但是我觉得随着时间推移,他们会发现以太坊的治理会越来越稳定,项目是在向前发展”
那些不喜欢分叉的人都留在了以太坊经典社区,即etc。
创始人之一Christoph Jentzsch 曾撰文回忆了the DAO事件,在文末,他总结了他们学到的教训:
1智能合约的安全问题还需要通过实践来改进,这个领域还处于早期阶段
不用说这个行业还刚刚起步,有太多的东西需要开发发展。事情得一步一步的来。
2对于未知事物时刻保持警惕
现在已经有不少安全方面的工具可用,我们团队也知道很多攻击手段,问题就在于,编写the DAO代码的时候没人意识到这点。
3以太坊的工具还不成熟
格式证明验证工具在当时还没有开发出来。随着the DAO事件的出现,促进了这些安全工具的开发。
4去中心化系统的治理和投票机制需要改进
提交意见来指导去中心化软件的工具还没有开发出来,而中心化的论坛比如reddit并不适合去中心化系统。
5逐步发布产品
the DAO在发布的时候应该更谨慎一些,逐步的推出。类似的项目在推出的时候保留部分的中心化,逐步的去中心化。
6把复杂性最小化
the DAO的代码有663行。根据统计数据显示,每1000行代码就会有15-50个bug。所以,智能合约代码要尽可能的简单。
the DAO事件影响之大,甚至惊动了美国证券交易委员会sec。虽然sec不是来调查是谁偷走了那些代币的。不过也对之后的项目在进行代币众筹时的做法产生了不小的影响。项目方会更注意法律风险。
The DAO项目目前已经失败了,但是slock.it公司还活着,18年11月的时候,slock.it的CEO 还参加了柏林的的一个活动。
而DAO,去中心化自治组织这个理念能否活下去,还有待时间的检验。