跳转到主要内容

The DAO 黑客攻击:以太坊经典的故事

2016 年 The DAO 黑客攻击的故事,以及社区的反应如何导致以太坊经典作为一条独立链的诞生。

Date published: 2021年12月15日

朱尼恩的这篇讲解讲述了 2016 年 The DAO 黑客攻击的故事,这是加密货币历史上最大的数字盗窃案之一,以及以太坊社区分叉区块链的争议性决定如何导致了以太坊经典的诞生。

本文字稿是朱尼恩发布的原视频文字稿 (opens in a new tab)的无障碍副本。为了提高可读性,进行了轻微的编辑。

发现 (0:00)

时间是 2016 年 6 月 13 日,星期一。康奈尔大学的一位计算机科学教授正在检查 The DAO 的代码,这是加密货币领域最具雄心的项目之一。几个月来,他一直主张暂停该项目,因为他认为存在某些可能使整个项目处于危险之中的缺陷。但今天,他发现了一个严重的漏洞:第 666 行的一个错误(bug)。

他担心这个错误可能会让黑客像在自动取款机(ATM)上一样进行无限次的提款。即使攻击者的账户里只有 10 美元,他们也能一遍又一遍地提取,直到所有的钱都被取光。The DAO 中投资了 2.5 亿美元,每一分钱都面临风险。

The DAO 背后的公司 Slock.it 承认了潜在的漏洞,但宣称任何攻击都是不可行的,因此所有资金仍然安全。他们通过交换两行代码向 GitHub 提交了更改——这个修复将作为 The DAO 框架 1.1 版本的一部分包含在内。

但就在团队宣布胜利的时候,一名黑客正秘密地紧随其后,开发出一种利用这个确切错误的漏洞利用程序。现在是四天后的星期五,The DAO 刚刚遭到黑客攻击,损失高达 5500 万美元。

就像 8100 万美元的 SWIFT 黑客攻击暴露了中心化银行业的漏洞,以及 WannaCry 勒索软件攻击揭示了计算机操作系统中的关键漏洞一样,The DAO 黑客攻击暴露了在代码决定一切的世界中,智能合约安全早期的脆弱性。这让以太坊社区感到震惊,他们争先恐后地试图重新获得对区块链的控制。

这是有史以来最大的数字盗窃案之一的故事,也是一次试图改写历史、让它从未发生过的大胆尝试。

The DAO 是什么?(2:00)

让我们来了解 The DAO——去中心化自治组织(decentralized autonomous organization)的缩写。这个想法受到了众筹的启发。与其为不同的项目设立多个基金,不如设立一个基金来统领所有项目,而没有比使用 DAO 更好的方法了。

在启动时,投资者每存入一个以太币就会收到 100 个 DAO 代币。这些代币赋予了他们对协议的治理权,并代表了他们在 The DAO 中的份额。代币持有者可以提交提案——例如,你可以提议投资 100 万美元以换取 XYZ 公司 10% 的股份。

一旦提案通过了初步验证,所有其他投资者将对其进行投票。在此期间,如果代币持有者认为该投资能产生正向的预期价值,他们可以投赞成票;如果认为会产生负向的预期价值,则可以投反对票。他们还可以使用论坛发表自己的意见并阅读他人的观点。

当投票期结束且满足所有代币 20% 的法定人数时,The DAO 会自动将指定的以太币转移到代表该提案的智能合约中。从这些提案中产生的任何以太币随后将返回到金库。这就像一个大型的去中心化对冲基金,旨在创造利润。其理念是,群体的智慧将有助于创造最佳的投资机会。

然而,仍然需要一种方法来保护少数人免受多数人的压迫。如果少数群体强烈反对一项他们无法在投票中胜出的提案,他们可以调用拆分(split)函数,将他们的以太币从主 DAO 转移到子 DAO,而不是投反对票,这实际上是将 DAO 一分为二。这个拆分函数在后面会非常重要。

众筹 (4:01)

The DAO 是有史以来最大的众筹项目,筹集了 1270 万个以太币——当时价值 1.5 亿美元。它发生在以太坊的早期时代,当时该项目受到了大量的炒作和投资者的错失恐惧症(FOMO)的影响。

在此之前,以太坊项目主要是一些随意的概念验证,但这是一个功能齐全且具有巨大潜力的项目。它完全免受任何黑客攻击,由全球数百万矿工提供安全保障,并且它是去中心化的——整个项目由以太坊上的一系列智能合约组成。

这是托管在世界上最安全的计算机上的不可变的代码,它确保了 DAO 的关键属性:一个完全去中心化和自治的组织。一旦合约在 4 月 30 日部署,没有任何单一实体——甚至 Slock.it 也不行——可以对协议进行更改或停止其存在。它的代码已经被各种以太坊开发者审计了无数次,并且所有人都可以查看和审查。

黑客攻击 (5:02)

“孤独,如此孤独”(Lonely, so lonely)——这是 The DAO 第 59 号提案的名称。这只是一个普通的拆分提案,但实际上黑客攻击正是从这里开始的。在黑客提交提案后,有一个标准的七天辩论期,任何人都可以自由加入。然而,没有人加入这个拆分。

一个人独自调用拆分、创建一个子 DAO,然后创建一个将所有以太币发送回其钱包的提案,这是标准程序。这允许用户收回由其 DAO 代币支持的资金。现在七天过去了,黑客被允许调用拆分函数。没有人怀疑任何事情。

然而,当拆分函数被调用时,社区意识到了一些令人震惊的事情。以太币正以每小时 800 万美元的速度从 The DAO 中流失。社区争先恐后地想弄清楚发生了什么。看起来攻击者正在递归地调用拆分函数——一遍又一遍,数百次。

还记得四天前发生的那个错误修复吗?遗憾的是,智能合约部署后无法编辑其代码,因此这个修复仅作为 The DAO 1.1(一个正在制作中的完全不同的 DAO)的一部分存在于 GitHub 上。这个小小的修复本可以阻止整个事件——它所做的只是交换两行代码,以便在实际支付之前更新余额。

但如果没有这个修复,任何人都可以反复调用该函数,在合约更新其余额之前提取以太币。这就像一台 ATM 机,在把钱给你之前不会更改你的余额。“我能取十美元吗?等等,在此之前,我能取十美元吗?等等,在此之前……”

罗宾汉小组 (6:55)

DAO 代币持有者眼睁睁地看着他们的投资慢慢地从主 DAO 流失到子 DAO(也被称为暗 DAO)。此外,随着这一消息的传出,以太坊的价格从 20 美元闪崩至 15 美元。必须采取一些措施,而唯一的方法就是在黑客之前抽干剩余的资金。于是,一场抽干资金的竞赛开始了。

在世界的另一端,在里约热内卢科帕卡巴纳街区的公寓里,Alex Van de Sande 醒来时发现他的手机被 Skype 消息轰炸了。他转向妻子说:“还记得我跟你说过那笔庞大且无法被黑客攻击的钱吗?它被黑了。”

Alex 与其他一些未公开身份的开发者取得了联系,他们组成了一个绰号为“罗宾汉”(Robin Hood)的小组——这些白帽黑客将抽干剩余资金并将其归还给合法所有者。然而,他们没有时间提出新的拆分,因为这需要七天的投票期。

相反,他们将目光投向了即将在几个小时后结束的第 71 号提案。他们将加入该拆分,并使用相同的黑客手段将所有剩余资金吸入这个子 DAO。自攻击开始以来已经过去了六个小时,窃贼已经成功窃取了 The DAO 30% 的以太币。但由于某种未知原因,攻击停止了。交易失败,一切都结束了。

与此同时,Alex 正准备发起白帽攻击以保护剩余 70% 的资金。但突然间,他的互联网连接断开了。在只剩下 30 分钟的时候,他疯狂地打电话给他的巴西互联网服务提供商 NET,但只得到了一个机器人的声音回复:“我们发现您所在的街区存在互联网问题。”拆分提案结束了,他刚刚错过了执行罗宾汉攻击的窗口期。

第二天早上,Alex 试图重新召集小组以渗透另一个拆分提案,但其他人都在忙。“我们觉得自己是历史上最糟糕的黑客。我们被糟糕的互联网和家庭事务挫败了。”

抽干资金的竞赛 (9:10)

在最初的攻击发生四天后,The DAO 再次遭到攻击。资金流失得很慢——每轮只有几个以太币——但它已经积累了几千美元。这似乎是攻击者在试水。在这一点上,罗宾汉小组需要采取行动了。

他们选择渗透第 78 号拆分,因为他们已经确定了该提案的策展人,而且它很快就要结束了。他们联系了一些乐于捐赠其 DAO 代币的巨鲸,使团队获得了 600 万个代币。罗宾汉合约拥有的代币越多,它吸取以太币的速度就越快。攻击者加快了步伐,其他攻击者也加入了进来。但多亏了这些捐赠,罗宾汉小组能够超越他们。这使他们成功保护了 720 万个以太币——占 The DAO 的 55%。

分叉 (10:08)

主 DAO 现在已经被抽干,所有资金都分布在几个子 DAO 中——两个主要的是白帽 DAO 和暗 DAO。但所有的钱都被时间锁定了。在 27 天的等待期结束之前,不能在子 DAO 下提出任何提案。即使在那之后,将资金发送到外部地址也需要提交提案并等待两周。从本质上讲,距离黑客能够套现相当于以太坊总供应量 5% 的资金还有 41 天。

但黑客永远也碰不到他的以太坊了。接下来发生的事情是区块链历史上最大胆、最具争议的事件之一。社区决定他们不会让黑客获胜。他们想改写历史,撤销黑客攻击中涉及的每一笔交易,让每个人都能拿回自己的钱。他们选择分叉以太坊。

区块链就像一个交易列表,随着每个区块的开采而不断增长。每笔交易都永远根植于区块链中。但如果超过 50% 的矿工串通一气,他们就可以虚假地更改区块链,随心所欲地改写历史。通常这被称为 51%攻击。但这次分叉没有任何恶意——社区只是在收回从他们那里被盗的钱。

代码即法律 (11:48)

尽管如此,并非所有人都赞同提议的分叉。他们认为代码即法律。在这种观点看来,攻击者与其说是一个黑客,不如说是一个仔细阅读了合约条款的聪明律师。因此,实际上并没有资金被盗,他们应该理所当然地有权获得暗 DAO 中的以太币。

值得注意的是,以太坊本身实际上从未被黑客攻击过——只是一个编写得很糟糕的智能合约被利用了。这是两码事。此外,他们认为区块链上发生的事情是不可变的,无论在什么情况下都不应该被篡改。

在最初的攻击发生一天后,攻击者在 The DAO 的 Slack 群聊中发送了一封公开信,并用他们的私钥进行了签名:

“致 The DAO 和以太坊社区:我仔细检查了 The DAO 的代码,并合法地索取了 300 万个以太币,我想感谢 The DAO 给予的这份奖励。我对那些将使用这种有意设计的功能定性为‘盗窃’的人感到失望。我是根据智能合约条款利用了这个明确编码的功能。软分叉或硬分叉将等同于没收我合法正当的以太币。这样的分叉将永久且不可挽回地破坏人们不仅对以太坊,而且对智能合约和区块链技术领域的全部信心。毫无疑问:任何分叉,无论是软分叉还是硬分叉,都将进一步损害以太坊并摧毁其声誉和吸引力。”

经过进一步检查,人们意识到签名是无效的,所以这封信只是由自称是攻击者的人写的。

另一方面,支持者认为“代码即法律”的说法过于极端,人类应该通过社会共识拥有最终决定权。不应允许黑客从漏洞利用中获利,因为这在道德上是错误的,而且很可能是非法的。但最重要的是,The DAO 实在是大到不能倒。它持有大约 15% 的以太币总供应量。

以太坊经典 (14:34)

在一场与 2008 年金融危机相呼应的事件中,以太坊开发者救助了 The DAO。以太坊的创建者和首席开发者 Vitalik Buterin 对推动分叉毫不掩饰。在后来的一次采访中,他说:“一些比特币用户认为硬分叉在某种程度上违反了他们最基本的价值观。我个人认为,这些基本价值观被推到如此极端的程度是愚蠢的。”

这些观点主导了以太坊社区的大多数人。一项有争议的社区投票——一个以太币等于一票——显示 87% 的人支持分叉。因此,在第 1,920,000 个区块上,世界各地的计算机节点更新了他们的软件并接受了分叉。来自 The DAO 和子 DAO 的所有以太币都被转移到了一个退款合约中。

但事情并没有就此结束。最初的以太坊区块链——那个带有 The DAO 黑客攻击的区块链——继续运行。事实上,它还在增长。反对分叉的矿工继续开采区块,交易仍在进行。第二天,Poloniex 上架了该代币,并开始以每个 2 美元的价格交易。这条链被称为以太坊经典——原始的、未被更改的区块链。

如果你在分叉前持有以太币,你现在将拥有一个以太坊和一个以太坊经典。如果你在 The DAO 中持有一个以太币,你将能够从退款合约中提取一个以太坊。而如果你刚刚黑了 The DAO,你将在以太坊经典中发一笔可观的横财——大约 700 万美元。

The DAO 的遗产 (16:14)

最初,以太坊经典作为一种替代方案获得了发展势头,拥有一个由不同意救助的区块链原教旨主义者组成的强大社区。但从那以后,以太坊经典未能获得吸引力,实际上只作为一种几乎没有实用价值的理念存在。虽然以太坊是数千个协议的家园,但以太坊经典只有几个基本的协议。很明显,分叉赢了。

两个月后,罗宾汉小组将他们 290 万个以太坊经典转移到 Poloniex,并将其全部卖出换成以太坊,试图砸盘。14% 被成功转换,但 86% 被 Poloniex 冻结并退还给了该小组。罗宾汉小组在以太坊经典网络上为受 The DAO 黑客攻击影响的用户设立了一个退款合约。

至于黑客,他们带着 360 万个以太坊经典全身而退——今天价值 1.5 亿美元。但如果没有分叉,那 360 万个以太坊今天将价值超过 70 亿美元。

The DAO 的深远影响 (17:26)

值得注意的是,The DAO 现在通常被称为创世 DAO(Genesis DAO)以避免混淆,因为它是第一个 DAO,但绝对不是最后一个。尽管最初遭遇了挫折,但 DAO 变得越来越受欢迎。MakerDAO 治理着稳定币 DAI,而去中心化金融(DeFi)协议(如尤尼斯瓦普及其 UNI 代币)通常都有一个治理 DAO。这些 DAO 都是建立在先前项目的经验之上,以创建更加多功能和成功的组织。

但创世 DAO 是同类中的第一个,作为一项实验而创建——一项昂贵的实验——在巅峰时期控制着 2.5 亿美元,即以太坊总供应量的 15%。首席开发者 Christoph Jentzsch 原本只期望它能筹集 500 万美元,后来他说他后悔没有设定上限。对于这么大的一项实验来说,它出现得太早了,而且肯定是大到不能倒。

创建智能合约就像开发自动驾驶汽车——这是一项重大责任,需要进行广泛的测试以避免事故。即使有了这种新的谨慎态度,DeFi 协议仍然会遭到黑客攻击,损失高达 5000 万美元,有些甚至是在经过专业审计公司审计之后。但自 The DAO 黑客攻击以来,再也没有出现过救助。以太坊社区现在更加强大,准备好继续推进更大、更具雄心的项目,构建下一代数字应用。

这个页面对您有帮助吗?