Gerrad Zhang
知名 DAO 案例分析:一部链上治理的判例集

知名 DAO 案例分析:一部链上治理的判例集

阶段 5(DAO)第四篇·专栏收官:承接上篇结尾「规则、激励、钥匙都齐了——现实里跑得怎么样」的钩子。内容:The DAO 2016 事件始末与重入漏洞(史上第一次大型 DAO 众筹,一个月左右募集当时以太坊流通量一成多的 ETH;split 机制提款顺序错误让攻击合约在余额清零前递归提款,催生 checks-effects-interactions 模式与以太坊唯一一次大规模干预性硬分叉,分出的原链延续为 ETC——「代码即规则」与「人治干预」的争论由此定调)

Gerrad Zhang
Wuhan, China
2 min read

规则、激励、钥匙都齐了——现实判例怎么说

上一篇的结尾停在一句问话上:规则(治理与投票)、激励(代币经济学)、钥匙(多签与权限分层)都齐了——现实里这些制度跑得到底怎么样?哪些 DAO 活成了教科书,哪些成了反面教材?本篇就是这个约定的兑现:拿三个真实案例做一次判例复盘,也为整个五阶段专栏收官。

选案逻辑正好对应三个层次:The DAO 是「组织还没学会走路,代码先摔了跟头」——它定义了安全底线;MakerDAO 是「治理机器真的转了近十年」——它证明这套制度可以长期存活;Uniswap 是「组织活着,但权力归谁没吵完」——它暴露治理参与与权责分配的现实困境。一个关于死,一个关于活,一个关于争。


The DAO(2016):一次重入,半个行业的安全课

始末

2016 年 4 月底,一个叫 The DAO 的项目在以太坊上启动众筹。它的愿景在今天看毫不新鲜——去中心化风投基金,DAO 代币持有者投票决定投什么项目——但在当时是第一个把「组织本身」搬上链的大型实验。众筹期约一个月,募得数百万枚 ETH,占当时以太坊流通量的一成多(量级表述):当时的社区 excitement 到了什么程度,从这个占比就能读出来。

同年 6 月,攻击发生。攻击者利用提款函数的顺序缺陷,从合约中递归提走当时流通 ETH 的数个百分点量级——这是重入攻击(重入攻击 )第一次以「行业级事故」的规模进入公众视野。

漏洞拆解:split 与提款顺序

The DAO 允许持有者用 split 机制退出:不满治理方向的人可以分拆出去、取回自己的份额。漏洞不在「允许退出」,而在提款的执行顺序——合约先把 ETH 转给退出者,之后才把账面余额清零:

重入攻击的调用时序(The DAO split 提款漏洞,简化版):

  攻击者合约                     The DAO 合约
      │                              │
      │──── 发起 split 提款 ───────▶│
      │                              │ ① 检查:你的余额是 100
      │                              │ ② 转账:先给你发 100 ETH(外部调用)
      │◀──────── 100 ETH ───────────│     ⚠ ③ 清零余额:还没轮到它执行
      │                              │
      │── 收到 ETH 的回调里再次提款 ─▶│     攻击合约的接收函数被自动触发
      │                              │ ① 检查:余额「还是」100(未清零)
      │                              │ ② 再转 100 …… 循环,直到 Gas 耗尽
      │                              │ ③ 清零余额:被递归绕过,永远晚一步

一句话总结病因:外部交互(转账)发生在状态更新(清零余额)之前。把正确顺序与 The DAO 的顺序并排画出来:

提款函数的两种写法(对照):

  正确顺序(checks → effects → interactions)   The DAO 的顺序(反例)
  ─────────────────────────────────────────    ─────────────────────────────
  ① checks     校验:余额够不够                  ① checks     校验:余额够不够
  ② effects    清零余额(状态先落地)✓            ② interactions 转账(外部调用先行)✗
  ③ interactions 转账(外部调用放最后)            ③ effects    清零余额(被递归绕过)
                                              —— 攻击合约在 ② 与 ③ 之间反复插队

修复模式由此得名并沿用至今——checks-effects-interactions:先检查(checks)、再改状态(effects)、外部交互(interactions)永远放最后;工程上再叠一道「重入锁」拒绝递归调用。这个在 The DAO 废墟上学到的模式,成了 ERC-20 时代智能合约开发的标准安全姿势——EVM 篇讲「安全的复利:EVM 的坑(重入、整数溢出等)被研究得最透」,最重要的经验来源就是这一课。

硬分叉:唯一一次大规模干预先例

被盗资金按合约规则要静止一个月才能转移,社区在窗口期内做了罕见的决定:修改以太坊协议本身,把被盗资金转移到一个退款合约。这是一次干预性硬分叉 ——节点必须升级,否则留在旧链;拒绝分叉的少数派延续的原链,后来被称为 ETC。

它留下了两笔遗产:技术上的(整个行业学会了一整套重入防御与审计规范)和治理上的(**「代码即规则」还是「社会共识可以覆盖代码」**的争论,至今没有终审判决)。从那以后,以太坊再没有为任何单一事件动过这种规模的干预——先例之所以叫先例,是因为它只发生了一次。


MakerDAO:治理机器的十年长跑

如果说 The DAO 讲的是「怎么死」,MakerDAO 讲的是「能不能一直活着」。借贷篇已经讲过它的业务面——「抵押品当印钞机」的超额抵押铸 DAI、实质上是去中心化央行;本篇看它的治理面。

治理结构一句话带过:MKR 持有者通过治理投票(定方向、选人)与执行投票(授权具体参数变更生效)两级流程运转,加上经选举产生的核心贡献者单元负责日常执行——两院式的分工。这套结构与治理篇讲的「提案-投票-时间锁 」生命周期同构,只是把「谁长期值守」这件全职工作显式化了:

MakerDAO 治理的两级流程(示意):

  治理投票(定方向)──▶ 风险参数该不该动、核心单元选谁


  执行投票(授权生效)──▶ 具体变更进入执行队列


  核心贡献者单元(日常执行)──▶ 全职值守风险参数与基础设施

不是每个投票者都懂风险参数,于是治理权的一部分被有意识地委托给专业小组——这是对 1 token = 1 票理想主义的现实修正。

现实压力测试也真实发生过:极端暴跌行情下(市场级别的单日双位数下跌),抵押品清算的零元拍失灵让部分金库以近乎免费的价格被拍走,靠社区紧急表决与人工干预才稳住局面。教训与 The DAO 镜像对称:纯粹依赖自动化参数的治理,在极端行情里需要一条人类可以踩的刹车——而这条刹车本身又必须是流程化、可审计的,否则它就是新后门。另外值得一提:MKR 的增发-回购机制(系统亏损时增发兜底、盈利时回购销毁)是代币经济学篇「价值捕获」一讲的正面样本——治理代币的价值支撑可以真的来自协议责任,而不只是炒作叙事。

存活结论:MakerDAO 是运转至今的最老牌链上治理之一,稳定币 DAI 经历多轮极端行情仍在场——治理上未必优雅,但确实活着。


Uniswap:活着,但权力归谁没吵完

第三个案例是进行时。业务面读者已经熟悉(AMM 篇的 x*y=k 与 V4 Hook);治理面的争议集中在两件事上:

  • **费开关(fee switch)。**协议从诞生起就手握「把部分交易费收归协议」的开关,却长期不开——开了,费用给 UNI 质押者还是留给 LP?协议有了收入,会不会改变它「中立基础设施」的定位?这是一个价值取向问题,不是技术问题,所以吵了很多年。
  • **国库与参与率。**UniswapDAO 手握的国库是十亿美元量级(大部分是自家 UNI 代币),是最大的公共资金池之一;但大型提案的链上投票参与率常只占代币总量的少数比例(量级表述),实际话语权集中在少数大户与机构代理票手里——个别场合,单一机构公开动用的票数就足以左右提案走向。

这里没有事故,只有经典的治理难题:治理代币 把「所有权」发给了很多人,却没有自动把「参与」发给任何人。把三个案例的治理现实并排看,能看出一条演化线:

三个案例的治理成熟度(示意):

  The DAO    ──「一次投票定终身」:众筹即全权,无日常治理经验
                 └─ 事故后无预案,只能靠改协议兜底
  MakerDAO   ──「制度化的日常」:两级投票 + 专业小组 + 委托
                 └─ 极端行情暴露自动化极限,补上人工刹车
  Uniswap    ──「大规模的沉默」:国库巨大,参与率有限
                 └─ 委托与链下投票缓解,但权责分配仍无技术解

治理篇讲过的Snapshot 链下投票、委托机制等缓解手段,在这个案例里都能看到现实投影——也包括它们的局限。争议未决不是失败:一个能长期容纳争议、按流程吵架而不散伙的组织,已经比大多数链上实验活得好了


案例总结表:三个判例,三面镜子

维度The DAO(2016)MakerDAOUniswap
金库/募集资金规模全网级:占当时流通 ETH 一成多(量级)系统内抵押资产 + 国库达数亿美元量级国库达十亿美元量级,多为自家代币
治理参与形态众筹即投票,单点高热度常态化两级投票,专业小组深度参与参与率有限,巨鲸与机构代理票影响显著
关键教训状态更新晚于外部调用 = 递归提款;无干预预案极端行情需要可审计的人工刹车权责分配没有技术解,只有流程解
幸存状态已死(事件后清盘退款)存活近十年,稳定币老牌发行方存活,核心治理争议未决

三行合起来读:The DAO 死于代码,MakerDAO 活于制度,Uniswap 吵于权力。DAO 的成败从来不只是「有没有上链」——安全工程、治理流程、权力制衡,缺一样都长跑不了。


收官总结:从转一笔账,到管一个组织

本篇是五阶段专栏的最后一篇。按惯例做个总回顾——五个阶段,其实是同一个问题的五次放大:不靠中心机构,陌生人之间能协调到什么程度?

  1. 价值转移(Bitcoin)——「钱怎么在无机构的世界里记账转账」:UTXO 像现金找零,数学代替信任背书。代表篇:UTXO 模型:比特币的会计学
  2. 去中心化计算(Ethereum)——「规则怎么自动执行」:账户模型给状态、EVM 给引擎、Gas 给计价、智能合约给可编程性。代表篇:EVM 是什么,为什么重要智能合约到底是什么
  3. 去中心化应用(DApp)——「普通人怎么用上它」:从 Solidity 到 Hardhat 到测试网,到第一个连上钱包的完整应用。代表篇:第一个完整 DApp
  4. 去中心化金融(DeFi)——「金融行为怎么无中介运转」:AMM 定价、超额抵押借贷、闪电贷与原子性、聚合器与收益策略。代表篇:借贷协议闪电贷与套利
  5. 去中心化组织(DAO)——「协议群由谁做主」:投票模型、代币经济学、多签与权限分层,最后落到本篇的判例复盘。代表篇:DAO 治理与投票Multi-sig 与权限管理

回头看,系列第一篇开讲的是「怎么给陌生人转 60 块钱要用掉两张钞票找零」;五年知识长度走完,终点是「一群陌生人怎么共同看管十亿美元而不散伙」。起点是转账,终点是组织——中间每一步,都是在给「不需要信任任何具体的人」这句话增加一点可行性。这不是乌托邦:The DAO 摔过的跟头、MakerDAO 熬过的行情、Uniswap 吵不完的架,都是这句话的真实成本。专栏到此完结,愿你带着这套地图继续往深处走。

相关文章:

Comments

Link copied to clipboard!