学习视频来源:https://www.bilibili.com/video/BV1Vt411X7JF/?p=23
本博客除了包含自己的在学习过程中记录的笔记外,还包含少部分自己扩展的内容,如有错误,敬请指正。

1. DAO

1.1 为什么不去中心化一切?

比特币实现了去中心化货币,以太坊则进一步实现了去中心化合约。既然“去中心化”如此理想——无需信任中介、规则透明、不可篡改——那么,为什么不把所有东西都去中心化呢?

正是在这种思潮下,DAO(Decentralized Autonomous Organization,去中心化自治组织) 的概念应运而生。

DAO 是一种由代码规则驱动、通过区块链共识协议维护并自动执行的组织形式。它的章程、投票机制、资金分配等全部写在智能合约中,无需传统公司管理层或法律实体介入。

  • 组织规则公开透明;
  • 决策由代币持有者按权重投票决定;
  • 执行完全自动化,依赖区块链保障不可篡改。

DAO 不一定以盈利为目的(区别于传统的 DAC, Decentralized Autonomous Corporation),它可以是社区治理、公共基金、开源协作等多种形态。

1.2 THE DAO:一次伟大的尝试

2016 年 5 月,一个名为 THE DAO 的项目上线,成为历史上首个大规模实践 DAO 理念的尝试。

1.3 工作原理

  • 类似于一个去中心化的众筹投资基金
  • 任何人可向 THE DAO 投入以太币(ETH),获得对应数量的 DAO 代币;
  • 持有代币即拥有投票权,代币越多,权重越大
  • 社区共同投票决定投资哪些项目;
  • 项目产生收益后,按智能合约自动分配给代币持有者

这种模式前所未有地实现了民主化、透明化的风险投资,被许多人誉为“未来组织的雏形”。

1.4 惊人成功

  • 上线仅 1 个月,就筹集了 价值约 1.5 亿美元的以太币(当时约合 1270 万 ETH);
  • 占当时以太坊总流通量的 14% 以上
  • 有人甚至预言:“3–5 年内,THE DAO 的影响力将超过以太坊本身。”

然而,这场实验在短短几个月后就凉了。

2. 如何取回投资?——拆分机制(Split DAO)

THE DAO 没有提供直接的 withdraw 函数。用户若想退出,唯一方式是通过 “拆分”(Split DAO)

  1. 用户发起拆分请求;
  2. 进入 7 天讨论期
  3. 拆分成功后,创建一个 子 DAO(Child DAO),将该用户的资金和代币转入其中;
  4. 子 DAO 资金 锁定 28 天,之后方可自由使用。

这一设计本意是保护多数人利益,同时允许少数派“和平分裂”。理念本身并无问题,很民主。

3. 致命漏洞:重入攻击(Reentrancy Attack)

问题出在 Split DAO 合约的实现上

黑客发现了一个重入漏洞:在资金转账过程中,合约先发送 ETH,再更新余额。攻击者可构造恶意合约,在收到 ETH 的回调函数中再次调用取款函数,在余额未更新前反复提取资金。

利用此漏洞,黑客在短时间内转走了约 360 万 ETH(当时价值约 5000 万美元),占 THE DAO 总资产的 1/3

市场陷入恐慌,ETH 价格暴跌。人们开始质疑:号称“不可篡改、绝对安全”的区块链,为何在现实面前如此脆弱?

4. 社区分裂:回滚 vs 坚守原则

事件引发以太坊社区激烈争论,形成两大阵营:

4.1 支持回滚派

  • 认为黑客行为虽未违反代码,但违背社区共识;
  • 若放任不管,将摧毁用户对以太坊的信任;
  • 不能让投资者血本无归。

4.2 反对回滚派

  • 强调 “Code is Law”(代码即法律)
  • 如果因为损失大就回滚交易,区块链的不可篡改性将名存实亡
  • 未来每个智能合约出问题都要回滚?系统将彻底混乱。

5. 补救尝试:软分叉失败

以太坊核心开发团队首先尝试 软分叉(Soft Fork)

  • 在区块验证规则中加入一条:任何与 THE DAO 相关的交易均视为无效
  • 新节点拒绝包含此类交易的区块,旧节点仍可接受——属于向后兼容,所以属于软分叉

但该方案存在严重缺陷:

  • 软分叉规则不收取 Gas 费来处理 DAO 相关交易;
  • 攻击者可发送大量无效交易,触发 DoS(拒绝服务)攻击
  • 矿工节点因性能问题纷纷回退到旧版本,软分叉宣告失败。

此时,距离黑客资金解锁(28 天锁定期)已所剩无几,形势危急。

6. 最终方案:硬分叉(Hard Fork)

软分叉不行,团队提出更激进的方案——硬分叉

  • 第 1,920,000 个区块 处,强制将 THE DAO 及其子 DAO 中的所有资金转移到一个新合约
  • 该新合约只有一个功能:允许原投资者按比例提现
  • 此操作绕过签名验证,直接在协议层写死转账逻辑。

这是一次对历史交易的直接干预,本质上违背了“不可篡改”原则。

6.1 社区投票与执行

  • 虽然参与投票的人数有限,但大多数矿工和交易所支持硬分叉
  • 2016 年 7 月 20 日,硬分叉在预定区块高度成功激活;
  • 原投资者陆续取回资金。

7. 以太坊分裂:ETH 与 ETC 诞生

7.1 ETC

并非所有人都接受硬分叉。

一部分坚持“代码即法律”的开发者和矿工拒绝升级,继续在原链上挖矿。这条链后来被称为 Ethereum Classic(ETC,以太经典)

  • ETH(以太坊):硬分叉后的新链,回滚了 THE DAO 攻击;
  • ETC(以太经典):原始链,保留所有交易,包括黑客转账。

7.2 重放攻击

由于两条链使用相同的账户体系和私钥,出现了严重的 重放攻击(Replay Attack) 问题:

  • 在 ETH 链上发起一笔交易,可在 ETC 链上被重复执行,反之亦然;
  • 用户可能在不知情下同时转出 ETH 和 ETC。

7.3 解决方案:引入 ChainID

后来,两条链分别引入 chainId 参数,在交易签名中加入链标识,这样同一个账户同一笔交易得出的签名就不一样了,从而有效防止跨链重放
至此,问题得到彻底解决。

8. 为什么不能只冻结黑客账户?

有人质疑:为何不只针对黑客地址冻结,而非要回滚整个 THE DAO?

答案在于智能合约的本质

  • THE DAO 合约本身存在结构性漏洞
  • 黑客利用的是合约逻辑,而非外部攻击;
  • 只要合约还在运行,任何人都可复现攻击
  • 因此,整个合约已不可信,必须整体废弃

这也揭示了一个残酷现实:一旦智能合约出现致命 Bug,几乎无法修复,只能“作废”

最终,THE DAO 彻底解体。

9 思考

其实以太坊采取的硬分叉方案,并不是说完全是中心化。是否执行硬分叉分案,决定权不在以太坊团队手中,而是在矿工手中。硬分叉分案之所以能成功,是因为它得到了大部分矿工的支持,同意升级节点,这也包含了一定程度的去中心化和共识。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐