23.ETH-TheDAO-北大肖臻老师客堂笔记

📅 发布时间:2026/7/5 16:17:12 👁️ 浏览次数:
23.ETH-TheDAO-北大肖臻老师客堂笔记
北京大学肖臻老师《区块链技术与应用》公开课第 23 讲的主题是区块链历史上最著名的安全与治理危机——“The DAO 事件” (The DAO Attack Ethereum Hard Fork)。以下是本课内容的结构化详细总结一、 什么是 The DAO (背景)DAO 的概念Decentralized Autonomous Organization去中心化自治组织。它没有 CEO没有董事会一切决策和资金运转都通过区块链上的智能合约自动执行。The DAO 项目它是以太坊早期的一个众筹投资基金项目。参与者将 ETH 投入该智能合约换取 DAO 代币代表投票权和收益权。项目极其火爆短短 28 天内募集了超过 1200 万个 ETH当时占以太坊总流通量的 15% 左右价值约 1.5 亿美元。风险埋伏资金过于集中且智能合约代码极其复杂未经充分的安全审计。二、 灾难降临重入攻击 (The Hack)漏洞触发黑客发现了 The DAO 智能合约中splitDAO函数用于让投资者退出并取回 ETH 的函数存在重入漏洞 (Reentrancy Vulnerability)。攻击过程黑客利用我们上一讲提到的“先转账、后扣款”的顺序错误通过恶意合约的fallback函数反复递归调用退款函数。损失惨重黑客在短短几天内吸走了约 360 万个 ETH约合 5000 万美元。缓冲期万幸的是根据 The DAO 的代码规则退出的资金会被锁定在一个“子 DAO”中28 天内无法提现。这给了以太坊社区宝贵的应对时间。三、 艰难的抉择如何拯救 (The Rescue Plan)面对巨额损失以太坊社区面临着史无前例的哲学与技术双重考验。1. 哲学分歧救还是不救不救 (Code is Law)智能合约的精髓就是不可篡改。既然代码有漏洞投资者就该为自己的盲目买单。如果官方出面干预以太坊就变成了中心化机构失去了信用。救 (Too Big to Fail)The DAO 绑架了以太坊 15% 的流通量如果黑客套现将对以太坊生态造成毁灭性打击。最后社区通过投票决定救。2. 第一次尝试软分叉 (Soft Fork) - 宣告失败方案矿工通过升级软件将所有与黑客账户相关的交易标记为非法拒绝打包。这样黑客的钱就被永久“冻结”了。致命漏洞 (DoS 攻击风险)软分叉推出后安全专家发现了一个致命的系统级漏洞。矿工在打包交易时需要先执行代码来判断这笔交易是否与黑客账户有关。如果有关就拒绝打包。问题来了因为交易最终被拒绝了没上链所以矿工收不到任何 Gas 费但矿工却白白消耗了算力去执行检查。黑客可以疯狂发送大量涉及该账户的垃圾交易让全网矿工瘫痪无成本 DDoS 攻击。结果软分叉方案被紧急撤回。3. 第二次尝试硬分叉 (Hard Fork) - 强行修改账本方案V神Vitalik和以太坊核心团队决定在特定的区块高度Block 1920000进行硬分叉。简单粗暴的操作在这个区块中硬编码一段逻辑将 The DAO 黑客账户里的资金强行转移到一个新的“退款智能合约”中。投资者可以凭 DAO 代币按照 1:100 的原始比例换回 ETH。结果硬分叉成功大部分矿工和用户升级了节点受害者拿回了资金。四、 分裂与余波ETH vs ETC (The Aftermath)硬分叉虽然挽回了损失但破坏了“不可篡改”的共识。两条链的诞生约 85% 的算力支持了硬分叉形成了今天的以太坊 (ETH)。约 15% 的算力拒绝妥协坚持原始的不可篡改链形成了以太坊经典 (Ethereum Classic, ETC)。黑客偷走的钱在 ETC 链上依然合法保留。重放攻击 (Replay Attack)由于 ETH 和 ETC 在分叉前拥有相同的历史、相同的账户和私钥它们起初连网络协议都一样。乱象如果你在 ETH 链上给别人转了 10 个 ETH有人把这笔交易的广播数据拿到 ETC 链上去广播你的 ETC 也会被转走因为签名在两条链上都合法。交易所因此损失惨重。解决后来以太坊引入了Chain ID (链标识符EIP-155)在签名时加入链的专属 ID才彻底隔离了两条链的交易。 核心逻辑思维导图 (The DAO 危机复盘)代码段flowchart TD Start(The DAO 项目众筹) -- Success[募集 1200 万 ETH\n占全网流通 15%] Success -- Vulnerability[代码漏洞: 重入攻击] Vulnerability -- Hack[黑客盗取 360 万 ETH\n进入 28 天锁定期] Hack -- Dilemma{社区分歧: 救不救?} Dilemma -- Code is Law (不救) -- Classic[坚持原链特征] Dilemma -- Too Big to Fail (救) -- Rescue[启动救援计划] Rescue -- PlanA[尝试 1: 软分叉冻结资金] PlanA -- 引发零Gas的 DoS 漏洞 -- FailA[❌ 软分叉失败/撤回] FailA -- PlanB[尝试 2: 硬分叉强行转账] PlanB -- SuccessB[✅ 硬分叉执行: 资金退还投资者] SuccessB Classic -- Split[⚡ 社区分裂] Split -- Chain1[ETH 以太坊\n妥协/主导生态] Split -- Chain2[ETC 以太坊经典\n原教旨主义] Chain1 Chain2 -- Replay[后续灾难: 重放攻击] Replay -- Fix[引入 Chain ID 彻底隔离签名] style Hack fill:#f96,stroke:#333 style PlanB fill:#9f9,stroke:#333 style Split fill:#ff9999,stroke:#333 总结第 23 讲是一堂极其生动的区块链治理课。The DAO 事件证明了智能合约的安全性有多么脆弱也打破了人们对“代码即法律”的盲目迷信。当机器的冷酷逻辑与人类社会的整体利益发生巨大冲突时以太坊选择了“人为干预”硬分叉这成为了区块链历史上最具争议、也最具标志性的分水岭事件。