注:没有全部复原,抽取了主体知识,加入了一些自己的理解,强烈建议去学习肖臻老师的课程,这绝对算得上是国内区块链讲解的顶级教程,纯学术和技术
以太坊实现了去中心化的合约
-
DAO:Decentralized Autonomous Organization去中心化的自治组织
-
The DAO:凸显民主,智能合约,伟大的尝试,引起了积极反响,众筹了当时价值1.5Y$的ether,可以用The Dao 的token决定你投哪个项目
-
如果想要从The DAO 的token转为Ether?
- 只能使用拆分的方式splitDAO,如果与其他人投资意见不一致,那么不一致的一小部分人就建立子基金,ChildDAO,之后会转回给你ether。
出问题的代码:
- 先转账后清零,导致重入攻击
too big to fail
The DAO 占了10%以上
以太坊团队的做法:
- 锁定黑客的账户
- 将盗取的ether退回去
如何锁定?
-
发布了更新,凡是和The DAO相关的都不允许Tx
-
这个属于软分叉,增加了一条规则,新Miner可能不认可旧的,但是旧的是认可新的
-
又出现了新的Bug,与The DAO的账户相关的交易要不要Gas费用?
- 应该要,但是以太坊没有收取Gas,The DAO账户一直发送交易,导致矿工受到干扰
- 之后进行回滚,软分叉失败
-
只能硬分叉
- 通过软件升级的方法,将The DAO账户上所有的资金转到另一个智能合约,该合约之后只有退款功能,为什么是硬分叉?
- 到192W个区块时自动升级,直接转到另一个合约,没有所有者的签名,所以旧的矿工是不会认可的,硬分叉。
- 旧链ETC: Ethereum Classic
- 新链还叫做ETH
- ETC和ETH并存有很多问题,导致重放攻击。所以最后加入了ChainID,
-
为什么当初硬分叉和软分叉的操作是针对所有The DAO的账户,而不是黑客的账户?
- 智能合约一旦发布,不能修改,所有人都可以变为黑客去进行重入,封号是封不完的