首页 > 其他分享 >10 ETH-TheDAO

10 ETH-TheDAO

时间:2023-05-02 15:33:06浏览次数:55  
标签:10 以太 TheDAO 黑客 分叉 ETH 区块 合约

《区块链技术与应用》课程链接: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,其他人也可以进行攻击。

标签:10,以太,TheDAO,黑客,分叉,ETH,区块,合约
From: https://www.cnblogs.com/yangyi215/p/17367764.html

相关文章

  • Luogu P2973 [USACO10HOL]Driving Out the Piggies G
    发现答案其实与这个点炸弹经过的次数有关,因为只要知道了这个点炸弹经过次数\(w\),这个点答案就能算出:\(w\times\frac{p}{q}\)就想到设\(f_u\)为\(u\)点炸弹经过次数\(u\)点经过次数便可以由有连边的\(v\)点推来,要满足\(v\)点此时炸弹没爆炸且\(deg_v\)条边中选了\(......
  • pwnable passcode 10pt
    题目在[email protected](pw:guest)先看passcode.c:#include<stdio.h>#include<stdlib.h>voidlogin(){intpasscode1;intpasscode2;printf("enterpasscode1:");scanf("%d",passcod......
  • 06 ETH-挖矿算法
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click06ETH-挖矿算法目录06ETH-挖矿算法挖矿是保障区块链安全的一个重要手段。Blockchainissecuredbymining.bugbounty(悬赏找漏洞)比特币的挖矿算......
  • 01 ETH-以太坊概述
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click01ETH-以太坊概述目录01ETH-以太坊概述比特币区块链1.0,以太坊区块链2.0。比特币出块时间10分钟,以太坊出块时间十几秒,以太坊基于GHOST的共识协议改进......
  • 02 ETH-账户
    02ETH-账户目录02ETH-账户比特币的账户资产,根据UTXO中的信息来进行推算(基于交易的模式,不是基于账户的模式)。好处:隐私保护比较好。(本人有多少个账户信息,可能自己都说不清楚)缺点:使用上跟日常体验不太一样。每个币要说明来源;同时,每次交易必须把所有币花完。很多比特币钱包......
  • 03 ETH-状态树
    03ETH-状态树目录03ETH-状态树地址到状态(balance、nonce、code、storage)的映射。以太坊地址一般160bits,一般表示为40个16进制的数。那么如何设计映射?像是key:valuepair?那么,能不能只用一个hash表来实现?(如果不考虑hash碰撞的话),那这样是不是太简单了?用hash表的话,如果需要提......
  • CF1034D Intervals of Intervals 题解
    传送门CF1034DIntervalsofIntervals题目大意有\(n\)个线段,第\(i\)个是\([a_i,b_i]\)。定义区间\([l,r]\)的价值是第\(l\)个线段到第\(r\)个线段的并的长度。找出\(k\)个不同的区间,使得总价值最大。输出最大总价值。\(1\len\le3\times10^5,1\lek\le......
  • mysql在删索引时报错ERROR 1075
    问题描述:mysql在删索引时报错ERROR1075,如下所示:数据库:mysql8.0.11系统:centos7.91、问题重现createtabletest_table1(idint(11)notnullauto_increment,namechar(100)notnull,addresschar(100),descriptionchar(100),uniqueindexuniqidx(id),indexmultic......
  • 10 BTC-问答
    《区块链技术与应用》课程链接:https://www.bilibili.com/video/BV1Vt411X7JF/?spm_id_from=333.337.search-card.all.click10BTC-问答转账交易的时候,如果接收者不在线怎么办?没有影响。不需要接收者在线,转账交易在区块链上只是做一个记录。假设全节点收到一个转账交易,有......
  • 2、go程序接入prometheus
    参考:https://prometheus.io/docs/guides/go-application/go默认基础指标packagemainimport( "net/http" "github.com/prometheus/client_golang/prometheus/promhttp")funcmain(){ http.Handle("/metrics",promhttp.Handler()) http.......