一个3分钟的指南,加密货币的黑客和分叉

2016年5月,名为DAO或“分散自治组织”的以太坊项目筹集了1.1亿美元资金,不仅是ICO,也是人类历史上规模最大的众包之一。

仅在发布两个月之后,就发现了其软件中的一系列漏洞,黑客能够窃取超过5000万美元的Ether(以太坊的货币),导致Ether的价格从20美元降到13美元。

黑客太重要了,以至于它彻底分裂了以太坊社区。有些人希望黑客保留这笔钱,其他人则没有。所以决定通过一个叫做“分叉”的事件把以太坊分成两个代币。那些在黑客成为“以太坊经典”或ETC之前不想恢复交易的人,以及那些恢复黑客效果的人是“以太坊”或ETH的一部分。

一年之后,在2017年7月,一个名为Parity(由Parity技术公司生产)的以太坊客户端在Ether中损失了大约3000万美元,这个漏洞允许以太平等多重签名钱包中的以太网流入其他账户。然而,由于这个漏洞是由仁慈的人发现的,所以钱又被退回了,并且Parity被鼓励对他们的代码进行安全审计。然而,似乎他们并没有这样做,而且在11月7日发现了另外一个(非常相似)的漏洞,这个漏洞在价值超过3万亿美元的奇偶多重签名钱包中冻结了价值3亿美元的ETH。

3亿美元的奇偶黑客

以太坊的计算能力是昂贵的。因此,Parity的创造者决定通过一个合同的轻型版本来处理钱包交易,称为存根(stub),将所有的合同电话转给主合同。然而,执行中有一个错误,可能会改变主合同的所有权。开发商在合同中也有一个自毁条款。

假名“devops199”的未知用户发现了这个漏洞,并且改变了主合同的所有权,然后触发了自毁。由于他摧毁了主合同,所有的存根合约代码也被销毁了。导致所有资金被锁定。

要清楚的是,这个漏洞是Parity的一个错误,而不是以太坊协议本身的脆弱性。

用技术术语来说:

奇偶钱包有正常的多重签名钱包,每个新用户都部署一份新的合同,并附上完整的代码副本。为了减少交易费用,奇偶性将新的钱包部署改为一个存根合约,该合同使用委托调用函数将任何合约代码调用转发给主合同,而不是具有完整的代码副本。这使主合同在存根合同的上下文中执行所需的一段代码。

然而,奇偶校验并没有去除主契约中的自毁功能(如果这个功能只是为一个不想再使用它的特定用户创建的合同,而是在所有用户之间共享这个合同代码的时候,这个功能是有意义的)。此外,奇偶并没有确定主合同的合同所有权。这允许某人将自己设置为所有者,然后调用自毁功能。

这个动作销毁了自7月20日以来部署的所有存根合约所使用的代码。因此这些存根不能访问允许他们撤销以太坊的函数,这些函数包含无限期锁定它们。因此,作为Parity先前multisig hack根本原因的主存根设计更改也造成了这个非常昂贵的bug。

结论:接下来呢?

即使我们再次分离以太坊,进入新的以太坊新形式,也不会有收回的资金保证。不幸的是,它似乎必须有一种新的分叉,否则钱将被永久锁定。这既是智能合约的利益和问题,也是区块链的僵化。

有趣的是,自从黑客以来,以太网的价格并没有太大的变化。这可能表明,网络比以往任何时候都更有信心。