10 ETH-TheDAO

《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click


10 ETH-TheDAO

重入攻击

比特币——> 去中心化货币

以太坊——> 去中心化合约


DAO(Decentralized Autonomous Organization):

TheDAO 就是一个智能合约——>工作原理:通过将以太币发给智能合约,获取代币,大家投票决定投资哪个项目,持有代币越多,投票权重越大。收益根据合约内容进行分配。

2016年5月众筹,1个月时间众筹到价值1.5亿美元的以太币。只存活了3个月。


问题:在TheDAO中,如果想要取回钱,怎么办?

方法:splitDAO,得到childDAO。

如果有一小部分人,不看好大众的项目,想要投资自己的项目,那么可以通过splitDAO,得到childDAO,可以把自己的代币收回去,换成相应数量的以太币,然后就可以投资子基金。【子基金有28天的锁定期】【换句话说,如果想要取回自己的钱,只能用极端的拆分方式,得到自己的以太币】。

民主制度并不是少数服从多数,而是说也要尊重少数人选择的权力。


黑客利用重入攻击,攻击力智能合约。

代码漏洞,代码中先写转账,后清零了,黑客才能通过重入攻击取走合约中的以太币。

解决方案:

回滚:因为子基金有28的锁定期,黑客还没有得逞。

too big to fail

不回滚:黑客的行为没有违法。违背了区块的不可篡改性。TheDAO仅仅是以太坊上的一个智能合约。


回滚的补救措施:

不能通过普通的分叉攻击的方式进行回滚:因为以太坊上还有很多的智能合约,同时还有很多合法的交易。

补救原则:要回滚必须精确定位,只能是黑客盗取的以太币上的交易,其它正常的交易不能受到影响。


方案:

1 软分叉方案(失败)。锁定黑客的账户;

升级以太坊软件,凡是跟TheDAO有关的交易,都不能正常运行,这是软分叉还是硬分叉?这是软分叉,仅仅增加了一条判断的规则。但是有一个bug,软件功能本身没有问题,问题是和汽油费相关的,该判断语句要不要收取汽油费?以太坊的软件更新之后,没有收取汽油费,所以受到大量的拒绝服务攻击。于是软分叉方案失败。

2 硬分叉方案。将TheDAO的钱,转到另一个智能合约上,该智能合约仅有一个功能,就是退钱,那么这为什么是硬分叉?用软件升级的方法强行重新记账。到第192w个区块的之后,强制性转账交易,不需要签名(不合理,太强权,转别人的钱,没有经过别人的同意)。因为是非法交易,所以旧区块不认,所以是硬分叉。

旧矿工认可,就是软分叉;旧矿工不认可,就是硬分叉。


自此,以太坊分成了ETH和ETC(Ethereum Classic)。加了ChainID。


问题:目的是锁定黑客的账户,为什么不管是软分叉还是硬分叉,都是限制所有TheDAO的账户?为什么不能只针对黑客的账户?【如果你的智能合约上有bug,你发布到区块链上,就不能修改了,区块链上所有的代码都是可以访问的,public只是可以调用而已】。TheDAO智能合约有bug,其他人也可以进行攻击。

posted @ 2023-05-02 15:29  YangYi215  阅读(51)  评论(0编辑  收藏  举报