The DAO事件始末

这篇具有很好参考价值的文章主要介绍了The DAO事件始末。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DAO,英文全称是Decentralized Autonomous Organization ,去中心化自治组织,代码即法律。

在The DAO项目中,发行代币,以太币可以换取一定数量的代币。代币越多的人投票权重越大,项目资金的用途需要代币持有人投票决定,相关的提议由智能合约支撑。如果你觉得这个投资不符合你的预期你可以执行拆分出去,经过七天的拆分期,期间其他用户可以加入这个拆分。拆分之后在过28天的锁定期,锁定期一过你就可以提现了。

The DAO则是区块链公司Slock.it发起的一个众筹项目2015。1个月就筹集到1.5亿

重入攻击,一下是代码,从代码上可以看到,代码先把钱转给了个人然后再把thedao里面用户的钱清零。问题来了如果我在执行在清零的时候报错不让他执行清零,是不是我可以一直给自己转钱呢?

//totalSupply:当前代币总量
//rewardAccount:奖励账户,用于管理奖励的账户,奖励将分配给该 DAO 的 DAO 代币持有者
//paidOut:已支付到某个地址的奖励金额(以wei为单位)以太币
function splitDAO(uint _proposalID,
    address _newCurator) 
    noEther onlyTokenholders returns (bool _success) {
    	.........
    	// Burn DAO Tokens
           Transfer(msg.sender, 0, balances[msg.sender]);//把用户账户代币转给0,也就是销毁代币
           withdrawRewardFor(msg.sender); // be nice, and get his rewards;将你拥有的代币连同奖励一起给到你的新账户
           totalSupply -= balances[msg.sender];//将合约账户中的钱减少
           balances[msg.sender] = 0;//将合约账户中该用户金额置0
           paidOut[msg.sender] = 0;
           return true;
}
function withdrawRewardFor(address _account) 
    noEther internal returns (bool _success) {
        if ((balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply < paidOut[_account])
            throw;

        uint reward =
            (balanceOf(_account) * rewardAccount.accumulatedInput()) / totalSupply - paidOut[_account];
        if (!rewardAccount.payOut(_account, reward))//转账到_account这个账户,同时这里会调用fallback函数
            throw;
        paidOut[_account] += reward;
        return true;
}

其实在被黑客攻击之前就有人发现这个里面的漏洞,但是Thedao社区还没有来的急处理

withdrawRewardFor调用过程最后转账的时候会调用fallback函数,黑客利用这个fallback函数再次调用splitDAO函数,就在这无限循环嵌套,永远没有办法将账户置0,黑客在程序嵌套流程中已经把账上的钱转走了,想追也追不回来了。这时就算黑客写了跳出循环的规则也没有用了。

如此熟悉The DAO代码与机制的人,全世界或许不超过100个。黑客利用这两个漏洞,进行了两百多次攻击,总共盗走了360万的以太坊,超过了该项目筹集的以太坊总数目的三分之一。

幸好有28天的锁定期,这就有了操作的空间了。thedao意识到赶紧把剩下的钱转走不能再被盗了,问题来了!怎么转走?合约里面没有写啊,又不能改合约(去中心化无法修改合约,或者说极其困难修改合约),只能用黑客的方式把剩下的钱转到一个安全的账户。到现在应该算是及时止损了吧。

这时以太坊社区闹翻了天了,一部分人觉得这个太严重了对以太坊可以说是一个重创,投资者损失太严重了,事实也证明以太坊市值也在该事件的影响下不断下跌,他们认为必须把黑客手里的钱还给投资者。另一部分人觉的黑客有没有犯法只是利用你们智能合约里面的漏洞,你不是说的代码即法律,退一万步将你THE dao只是以太坊众多合约里面的一个很普通的合约犯得着为他这样干吗!这不是自毁信用吗?说什么去中心化,说什么无法篡改,你们现在所做的就是强盗强行把别人的钱转走,你们已经背离了以太坊的初衷了。

不过玩归玩闹归闹别把Money开玩笑,以太坊还是做出了这个艰难的决定--分叉(软分叉)。以太坊升级了代码,代码规定所有有关这个黑客账户转账交易都不允许写到区块链中。因为是个软分叉以太坊中绝大部分人都把软件更新了。(软分叉:升级后的程序认为老程序执行的交易不合法,未升级的程序认为升级后的程序所执行的交易同样是合法的)

大家都以为这个事情就告一段落了,但是情况又有了新变化,以太坊出现了大量的关于黑客账户的转账交易,很多挖矿的节点执行这样的交易之后没有汽油费得,旷工发现这样下去吃力不讨好啊,很多节点由于不堪重负就回退了。现在离28天的锁定期没有几天了情况已经非常紧急了。

以太坊社区也没有很好的办法了只能硬分叉,然后就在社区里面举行投票,最后投票结果是决定硬分叉。将黑客所有的以太币强行转到一个特殊的合约账户,这个账户只有一个功能“退钱”,大多数节点都在192w个区块的时候执行这样的“非法的交易”。但是以太坊社区质疑的声音还是一直存在,有人说投票不能代表所有还有好多人没有参与投票,这样非法的交易已经违反了我们建立以太坊的初衷了,这就是强盗行径,别人把就算钱存在银行被扣留了我还可以去法院辩解,现在就你们投票就把我的钱给强行转走了。(硬分叉:未升级的程序认为升级后的程序所执行的交易是不合法的)

过了没多久有就发现还有人在沿着老版本在挖矿他们觉的自己才是正统是纯粹的。再后来有的交易所也在慢慢接受经典以太坊。以太坊社区发现硬分叉的后果已经无法挽回了但是分成两条链会出现双花攻击,于是将代码升级添加版本号,老版本成为经典以太坊ETC

自此以后以太坊社区再也没有为任何一个漏洞合约分叉过了,后果太严重了文章来源地址https://www.toymoban.com/news/detail-419106.html

到了这里,关于The DAO事件始末的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Learning From Data 中英文对照 1.THE LEARNING PROBLEM (第7页)

    为了简化感知器公式的表示法,我们将把偏差aaWp=b与其他权重合并到一个向量中[wo,1,。…,wd]“,其中T表示向量的转置,所以w是acolumn向量,我们也将x作为列向量,并将其修改为x=[o,1,…,ad]T,其中所添加的坐标ao固定在co=1。 With this convention,w Tx = d_o WwiOi, and so Equation

    2024年02月09日
    浏览(31)
  • gpt全称

    您是否曾经好奇过GPT的全称是什么?GPT代表\\\"Generative Pre-trained Transformer\\\",是一种基于Transformer模型的生成式预训练模型。而GPT4则是最新一代的GPT模型,它在自然语言处理领域取得了巨大的突破。 GPT4是由OpenAI开发的一种自然语言处理模型,它以其卓越的生成能力和语义理解能

    2024年02月12日
    浏览(27)
  • 《斯坦福数据挖掘教程·第三版》读书笔记(英文版) Chapter 2 MapReduce and the New Software Stack

    来源:《斯坦福数据挖掘教程·第三版》对应的公开英文书和PPT Computing cluster means large collections of commodity hardware, including conventional processors (“ compute nodes ”) connected by Ethernet cables or inexpensive switches . The software stack begins with a new form of file system, called a “ distributed file system ,”

    2024年02月04日
    浏览(37)
  • 6个步骤,建立一个哥特之国Gothland莱比锡哥特节Wave-Gotik-Treffen哥特The Network State中文翻译网络国家+web3.0社区+DAO社区+NFT元宇宙+个人主权

    从今以后,别再过你应该过的人生,去过你想过的人生吧!——梭罗  建立一个 新型 网络 哥特之国的6个步骤: 1.   建立 了一个 哥特社群 。 2. 创建一个 DAO ,将各个 在线 社群组成 网络 联盟。 3. 建立线 上生态, 建立 线下活动 。 4. 众筹 线下领地 。众筹 线下哥特酒吧BA

    2024年02月14日
    浏览(30)
  • 从零学习python - 14正则表达式的始末

    熟悉正则表达式 正则表达式的基本操作 正则表达式的分组

    2023年04月21日
    浏览(29)
  • html学习笔记11-标签简写及全称、XHTML

    https://www.runoob.com/html/html-tag-name.html XHTML 是以 XML 格式编写的 HTML。可扩展超文本标记语言 XML 是一种必须正确标记且格式良好的标记语言。 XML 指可扩展标记语言(eXtensible Markup Language)。

    2024年02月11日
    浏览(31)
  • 涉及金额超8.5亿美元 复盘BNB Chain遭受攻击始末

    2022年10月7日,据成都链安鹰眼-区块链安全态势感知平台舆情监测显示, BNB Chain 跨链桥 “ 代币中心 ” ( Token Hub )遭遇黑客攻击,由于涉及的金额较为庞大,并且涉及多个链之间的跨链,根据成都链安安全团队的整理与追踪,目前整理出 7.1 亿美元是币安链上未涉及跨链部

    2024年01月25日
    浏览(32)
  • 从The Saudis NFT事件浅析EIP-2535钻石协议

    那么为什么项目方可以将该用户手里的 NFT 转移呢?经过我们的分析发现该 NFT 项目的合约采用了 EIP-2535 协议也叫做钻石协议,项目方利用该协议重写了合约的功能,以此来实现这些 NFT 的转移。接下来慢雾安全团队将会为大家介绍下这个钻石协议(EIP-2535)的细节。 要理解钻

    2024年02月04日
    浏览(20)
  • AI绘图cuda与stable diffusion安装部署始末与避坑

    stable diffusion的安装说起来很讽刺,最难的不是stable diffusion,而是下载安装cuda。下来我就来分享一下我的安装过程,失败了好几次,几近放弃。 我们都知道cuda是显卡CPU工作的驱动(或者安装官网的解释为一个GPU加速器app),这里么有什么介绍的,既然是驱动就要安装对版本

    2024年04月10日
    浏览(32)
  • 中国工科研究生200多篇英文论文中最常见的习惯(The Most Common Habits from more than 200 English Papers written by Gradua)

    原文地址:http://staff.ustc.edu.cn/~jpq/writing/The%20Most%20Common%20Habits.pdf 本文介绍了中国作家在200多篇英语科技论文中观察到的一些最常见的汉英习惯。这些习惯会被解释,在大多数情况下,来自实际论文的示例文本会与首选文本一起给出。试图解释如何纠正和防止此类错误。在某

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包