盗走360万枚ETH、改变以太坊历史,回顾这场史上最大链上攻击始末_EDA:DAO

2月22日,《Unchained》主理人LauraShin在Forbes上发文表示,据其发现的相关证据显示,以太坊2016年TheDAO事件中黑客的身份疑似为TenX联合创始人兼首席执行官、奥地利程序员TobyHoenisch。LauraShin表示,根据其对嫌疑人的数据追踪以及区块链分析公司Chainalysis的链上分析,她锁定了TenX位于新加坡的节点地址。这起6年前的史上最大黑客攻击事件,又勾起了很多人的会议。

「当时我看到以太坊创始人Vitalik突然发了一句话,说TheDAO被黑客攻击了,钱正在被黑客拿走,我还以为是玩笑,然后我就懵了。」加密货币钱包ImToken的联合创始人Daniel说。

360万ETH,当时超过6000万美金,这是这场影响深远的黑客攻击事件的被盗金额。如果按照ETH的历史最高价格计算,360万ETH,价值接近175亿美金。

价值6000万美金的两行代码

直到现在,很多人在想起6年前加密行业这起黑客攻击事件时,估计还会心有余悸。

大家都知道比特币是一个安全地记录了所有转账记录的全球账本,可以实现无障碍的点对点转账,以太坊可以看做比特币的2.0版本,可以把它看做是一台「全球计算机」,开发者基于以太坊,可以高效、快速地开发出很多上层应用。

在这样一个系统之上,很多致力于解决现实痛点的项目开始出现。当时,这种通过代码自行运作、不依赖个人主观意志的运作方式被很多人追捧,也是在这样的背景下,TheDAO诞生了。

它其实是由一家名为德国初创公司Slock.it发起的项目,这家公司当时做的是实体资产的上链业务,但因为很难在传统行业中融资,他们就萌生了一个大胆的想法:既然没人投自己,为什么不造出一个投资机构?

分布式自治组织的理念被他们引入,通过利用合约把一群利益相关者把钱放到一起,如果有人拿着商业计划书来寻求融资,所有人投票决定是不是要投资,如果成功了,大家共享收益。

它整个过程,其实是这样运作的:用户向它提起希望获得投资的proposal,在提案公示后,如果被超过半数以上的用户投票同意,那么这个虚拟「VC」就会拿出一笔钱,投给项目。被投项目需要保证将来其业务会通过这个合约连本带利,持续回馈给这个机构,而「VC」里的每个LP都能分到相应的收益。

TheDAO这种完全凭借智能合约运行的方式得到了社区追捧。项目在2016年4月底开启募资,不到一个月时间,就吸引了11000名投资者参与,最终成功募集了1150万枚以太坊,这么多数量的ETH,占到了当时以太坊全网15%的流通量,总价值超1.5亿美元。也让TheDAO成为了加密史上募集到以太坊数量最多项目。

但危险的种子,在项目融资大获成功的消息传出时,就悄悄埋下了。

当时,连团队都没想到,项目能融到那么多钱,自信的他们,把所有的ETH都放在一个地址里。这是一件非常可怕的事情,稍微有点常识的人都知道,如果你手上有巨额Token,最好是把Token分散存到多个地址,即便丢失了一部分,也不至于荡然无存。

木秀于林风必摧之。TheDAO成了别有用心的黑客攻击的「靶子」。

事实上,早在2016年5月份,以太坊团队成员就曾呼吁过,这类DAO项目可能存在安全问题,并给出了几种可能的攻击方案。6月11日,以太坊另一个项目也发现合约就存在这样的问题,所幸处置及时,没造成损失。

不过,即使团队也收到同样的安全报告后,他们还是没引起重视,以为漏洞不会产生威胁。另外,当时已经有数十个提案等着投票,如果合约暂停进行查验,估计社区也不能接受。

就在所有人自以为万事大吉的时候,危险降临了。

黑客非常聪明,他先在6月15日悄无声息地写了一个攻击合约,安静地埋伏两天,直到6月17日才开始行动。利用合约的漏洞,黑客从主合约中成功转出了超360万枚ETH,转入了一个childDAO中,这是一种递归式分割的方式,最终将收集到的币单次转走了。

出现问题的是下面两行代码:代码没错,就是顺序反了。

有人分析,如果程序员把两行代码的顺序上下换个位置,各个功能没有变化,但却能避免漏洞产生,没准TheDAO就成功了。

当然,这也只是美好的幻想,黑客就是利用了这个漏洞,成功转移了3百多万枚ETH,引起了加密社区的轩然大波。

这次攻击,让项目丢失了360万枚ETH,按照当时的价格,总价值超过6000万美金,如果按ETH历史最高价计算,这笔丢失的资产近175亿美金。这个消息很快影响到二级市场,以太坊价格从20美金,跌破13美元,下跌幅度超30%。

不过,狡猾的黑客没想到,因为childDAO的合约还处在创建阶段,有27天的锁定期,所以,他在短时间内也转不走这笔钱。

留给所有人的时间只有短短二十几天,大家必须在这笔钱被转走之前作出决策。

攻击发生后,Vitalik发了文章,还原了TheDAO被攻击细节,同时也给出了解决方案。他提议社区对以太坊区块链进行一次软分叉,把与之相关的交易认做无效交易,避免攻击者提走被盗的ETH。之后,再发起一场硬分叉投票,再将这笔ETH找回来。

币还没转走,以太坊社区就放出了这么一个大招,黑客坐不住了。

6月18日,这位自称主导了这场攻击的黑客现身,堂而皇之地发了一封致TheDAO和以太坊社区的公开信,他表示,自己对社区定义他的行为是「盗窃」非常失望,声称他获得的ETH是合法并正当的,「我的律师事务所表示这样的行为完全符合法律」。

不过有人发现,他留下的签名是假的,所以这封公开信可能是有人伪造。

6月19日,一位名为「daoattacker」的用户还在讨论该事件的slackchannel出没,在一场匿名对话中,他表示会采取措施暂停有组织地对他财产的「盗窃」行为,「很快我们就会制定一个智能合约奖励那些不支持软分叉的矿工,共计100万枚以太币和100枚比特币。」试图怂恿矿工不支持分叉。有意思的是,他还给讨论区留下地址的人发了几枚btc。

「黑客」的意思很清楚:不认可以太坊分叉。不过,对于他的辩护,社区大多数人可不会理睬。

很快,以太坊社区发起了一项是否支持硬分叉的投票,近97%的ETH持有者投出了赞成票,只有少数人不同意分叉,最终硬分叉方案一致通过。

2016年7月15日,具体硬分叉方案公布,退币合约开始建立,由于7月21日是最终期限,硬分叉执行的最终期限确定,超过85%的算力支持硬分叉,以太坊硬分叉成功。

如今,我们在回顾这起加密世界的黑客攻击事件时,会发现这场攻击,不仅击垮了TheDAO,还有另一个更糟糕「副作用」:很多人开始怀疑,去中心化自治组织是不是空想,「CodeisLaw」到底是不是空中楼阁?以太坊社区确实是出于挽回大多数投资者损失的目前,发起了硬分叉投票,并终止了一场攻击的发生。

但从某个角度来看,「黑客」说的不无道理:TheDAO本身就是个智能合约,它的仲裁人是自己,任何其他外部节点都不能改变已经制定好的规则。而以太坊官方的做法则推翻了这种规则。

很多时候,引发黑客攻击的事件可以在开发者编写代码的过程中尽量避免,但加密世界的黑客,能利用的可不仅是一行行代码,还有人为治理中的漏洞。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

[0:15ms0-8:594ms