DAO 泛指去中心化组织
THE DAO 是区块链物联网Slock.it发起的一个众筹项目
一次引出以太硬分叉的事件
事件始末:
发现The Dao项目的智能合约漏洞
6月15日 左右此攻擊合約被創立
6月17日攻擊開始,Vitalik Buterin得知攻击事件,通知了中国社区
V神发文提出软分叉方案:不回滚,不会取消任何区块和交易被撤销,把所有与DAO的相关交易作为无效交易。
6月19日,黑客匿名回应V神的软分叉方案。所有不支持软分叉的矿工都会发100万的以太和比特币。
6月22日,白帽黑客展开罗宾汉行动,将剩余的TheDao资产专于转安全地址。
7月20日,硬分叉实施。从此分出两条链,一条原链(ETC),一条为新的粪池老
攻击方法:
漏洞处在智能合约,第一个漏洞是递归调用SplitDao的函数,非法调用自己,原本应该清零的资产,就被反复从资产池转出去,意味你可以无限往外面转钱
第二个漏洞,所有转出去的资产,对应在DAO资产池中的等价物会马上被销毁,黑客在每次销毁之前,将对应额度资产装给其他庄户,就避免了销毁。
就此就完成了在两个账户,用一笔钱疯狂往外面转移资产。
意义:提醒我们应该有一个对智能合约进行事先的检验的科学方法,目前有:
形式化验证,尚处于研究阶段,简单地说,形式化验证就是使用计算机程序自动地在数学的层面上证明关于其他计算机程序的语句。目前将WHY3引擎加入solidity
两种设计思路:
- InterLock
必须在确定安全后才能让智能合约运行,或者是在危险察觉时让智能合约自动停止。 - Fool-Proof
无论是谁编写智能合约都不会让问题产生。这种设计思想的目的是减少带无意识错误的智能合约。有以下的提案
网友评论