以太坊分叉的缘由:著名的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项目。
万幸的是,也正是由于这些“不良”代码,黑客无法将这些以太坊提走。 因为代码里规定,要过28天之后才能提现,这给了社区足够的时间研究对策。
经过紧急磋商,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的条款,我的律师认为 我的行为完全符合美国法律……
软分叉或者硬分叉都会伤害我的权益,而且会对社区造成伤害。以太坊大户会砸掉手中的币,开发者、研究者、公司会离开以太坊社区。
大家不要做出错误的选择。任何分叉,不管是软分叉还是硬分叉,都会极大地伤害以太坊,摧毁它的声誉。
对于冻结、没收或其他伤害我合法以太坊代币的行为,我保留一切权利,采取任何必要的行为保护我的合法利益。”
不过,有人认为,这不过是其他人的钓鱼行为,因为文章末尾的加密签名是无效的。
6月19日,黑客再次发起了攻击,不过,这次只有少量的DAO资产被分离。
社区中已经有人坐不住了,不少人受够了这担惊受怕的日子,“这不仅仅是The DAO的问题,这还是Solidity (以太坊智能合约使用的语言) 的问题,以太坊真让人担惊受怕。这几天,我一直在看行情,总在担心以太坊的安全,受够了”。这些“心脏弱小”的人开始纷纷卖出以太坊。
(图:Christoph Jentzsch)
当天,Slock.it的联合创始人兼首席技术官Christoph Jentzsch,发表了一篇博文。在博文中,他提出两点建议:
一是软分叉,即V神的提议。 但这还不够,这仅仅把The DAO的所有资产都冻结住,黑客无法提现,但其他投资者也不能提现。
二是直接硬分叉。 通过硬分叉,能把所有的资金都退回去,投资者不会有什么损失,而且不需要回滚。
可硬分叉不是闹着玩的, 不仅要解决技术问题,比如重放攻击的问题,更重要的是价值观的问题。
当初,人们支持区块链,支持以太坊,就是因为痛恨现实中的中心机构能够随意修改规则。如果以太坊也随意硬分叉,那么,它跟现实中的中心机构有什么不同?
21日,Christoph Jentzsc发贴向社区道歉,承认了自己没有发现The DAO代码中的漏洞,“即使找了很多知名人士进行了代码审核,但这还不够。我们学到了宝贵的一课,虽然为此付出了惨痛的代价。“
最后,他还是希望大家支持分叉。
(图: Alex Van de Sande )
6月22日,Alex Van de Sande在Reddit上发了一篇帖子,说这几天他参与的一个白帽黑客行动。原来,在The DAO被攻击之后,Alex Van de Sande以及几个白帽黑客决定开展一场行动,把大家剩余的资金抢救出来,他们把这场行动命名为”罗宾汉“行动。
这场行动其实就是使用一样的方法,再”黑“一次The DAO,把剩余的资金转移到安全的地址。
虽然他们的初衷是好的,但这么做是否合法,仍然有待商榷。
编程专家Vessenes说:“他们这么做,几乎肯定是非法的,但他们声称这是为了更多人的利益。”
“罗宾汉”行动过程并不顺利,根据Bloomberg的报道,在一次攻击前, Alex Van de Sande 电脑竟然断网了。
作为一名黑客,他的电脑断网了......他自嘲说“我们试图从一个机器上窃取几千万美元,但遭到了另一个机器的伏击。”
不过,最终他们还是成功地将剩余的资产转移了,“罗宾汉”成功了。
接下来,便是对分叉的大讨论。支持分叉与反对分叉的人,都有自己的理由。
有人说道:
“ 以太坊基金会参与The DAO项目就是个错误。 因为我觉得以太坊应该挑选一些能够成功的项目以及实验来提供基础架构,反过来它们要想成功,则需要一个强大的基础,而且要求坦诚面对挑战。硬分叉提议的妥协,破坏了这种坦诚,而且意味着The DAO项目会反过来影响它们自己的基础架构。就我而言,这是完全无法接受的,也违背了曾经吸引我的以太坊原则。”
“以太坊一直按其目标在运作。我觉得既然现在管用,就不该去更新软件。 交易就是交易,如果你为了某些特定参与者改变规则,那么其他参与者也会想要这种特殊待遇。 ”
还有投资者只关心自己的钱,“在头几天我做了个愚蠢的决定,损失了2万个以太币,能把这些以太币也还给我吗?先谢谢了!”
还有人说,这个分叉的办法与去中心化的原则相违背。
支持硬分叉的人则认为:不能让黑客得逞,这在道义上说不过去。
这么多以太坊落入恶人之手,后果将会十分严重,社区应当加以阻止。通过硬分叉还能把监管机构和法务部门挡在门外,我们的问题,我们自己解决。
经过激烈的讨论(V神是支持硬分叉),最后,多数人还是同意了进行硬分叉。
04 以太坊硬分叉
7月20日晚,备受瞩目的硬分叉成功实施,社区松了一口气。
分叉之后,形成了两条链, 一条为原链(以太坊经典,ETC),一条为新的分叉链(ETH), 各自代表不同的社区共识以及价值观。
ETC一方认为,发生的事就已经发生了,区块链的精神就是不可篡改,账本形成了就不应该去篡改,这是原则问题。
ETH一方则认为,这是盗窃,是违法行为,必须予以打击。
V神站在了ETH这一边,但是ETC并没有就此死掉。 不少的区块链精神“死忠”仍在追随ETC,当初投票时就有大约10%的人反对硬分叉。
7月23日,当时全球最大的以太坊交易平台Poloniex上线ETC,随后许多交易所纷纷跟进,ETC价格最高上涨至ETH的三分之一。这让原本平静的社区开始走向对立,大家互相争争吵,最后导致社区一分为二。
7月24日,以太经典ETC国际社区诞生,ETC社区还发表了独立宣言,声明ETC不再与以太坊基金会有任何联系,并强调了以太坊的价值和着手规划ETC的未来。
05 教训
2017年,在一次采访中,V神回顾The DAO事件时,说:
“我觉得以太坊现在不错。有些人对于纯洁和道德十分看重,如果一次出错,那么以后就永远会出错。但我觉得,随着时间的推移,他们会发现,以太坊的治理会越来越稳定,项目在向前发展”
Slock.it的联合创始人兼首席技术官Christoph Jentzsch 曾撰文回忆了The DAO事件,在文末,他总结了他们学到的教训:
1、智能合约的安全问题还需要通过实践来改进,这个领域还处于早期阶段。 不用说,这个行业才刚刚起步,有太多的东西需要发展,事情得一步一步来。
2、对于未知事物要时刻保持警惕。 现在已经有不少安全方面的工具可用,我们团队也知道很多攻击手段,问题就在于,编写The DAO代码的时候没人意识到这点。
3、以太坊的工具还不成熟。 格式证明验证工具,在当时还没有开发出来。随着The DAO事件的出现,促进了这些安全工具的开发。
4、去中心化系统的治理和投票机制需要改进。 提交意见来指导去中心化软件的工具还没有开发出来,而中心化的论坛,比如Reddit,并不适合去中心化系统。
5、逐步发布产品。 The DAO在发布的时候应该更谨慎一些,逐步的推出。类似的项目在推出的时候保留部分的中心化,逐步去中心化。
6、复杂性最小化。 The DAO的代码有663行,根据统计数据,每1000行代码就会有15-50个Bug,所以,智能合约代码要尽可能简单。
06 结语
The DAO事件影响之大,甚至惊动了美国SEC,虽然他们不是来调查是谁偷走了那些代币。不过,这也对之后的项目在进行代币众筹时的做法产生了不小的影响,项目方也会更注意法律风险。
The DAO项目目前已经失败了,但Slock.it公司还存在。2018年11月, Slock.it公司 的CEO 还参加了柏林的一个活动。
至于DAO,“去中心化自治组织”这个理念能否活下去,还有待时间的检验。