北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

这篇具有很好参考价值的文章主要介绍了北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

13.0 ETH-美链 事件

2018年4月发生的事件,美链是发行在以太坊上的代币,这些代币没有自己的区块链,而是以智能合约的形式运行在以太坊的EVM平台上。发行这个代币的智能合约,对应的是以太坊状态树的一个节点,这个节点有它自己的账户余额,就相当于这个智能合约一共有多少个以太币,就是发行这个代币的智能合约它的资产有多少个以太币,然后在这个合约里每个账户上有多少个代币,这个是作为存储树中的变量,存储在智能合约的账户里。代币的发行、转账、销毁都是通过调用智能合约中的函数来实现的,这个也是跟以太坊上的以太币不太一样的地方,它不像以太坊一样需要挖矿来维护一个底层的基础链,像以太坊上每个账户有多少个以太币,这个是直接保存在状态树中的变量,然后以太坊上面两个账户转账是通过发布一个交易到区块链上,这个交易会打包到发布的区块链上面,而代币发生转账的话实际上就是智能合约上面两个账户之间发生转账,通过调用智能合约上的函数,就可以完成了。每个代币都可以制定自己的发行规则,比如某个代币是1个以太坊兑换100个代币,那么比如说从某个外部账户转1个以太币给这个智能合约,这个智能合约就可以给你在这个智能合约里的代币账户上发送100个代币,每个代币账户上有多少个代币的信息都是维护在存储树里面,发行这个代币的智能合约的存储树里面。

以太坊平台的出现让发行代币提供了方便,包括以前说的eos,这个在上线之前也是作为以太坊上的代币形式,上线的意思是有自己的基础链了,不用依附在以太坊上了。以太坊发行代币的标准为ERC20(Ethereum Request for Comments)。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

这个是batchTransfer的函数:

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

这个函数有两个参数,第一个参数是一个数组,接收者地址的数组,第二个参数value是转账的金额,给每个人转多少。

uint256 amount = uint256(cnt) * _value; //计算一共要转的总金额

require(cnt > 0 && cnt <= 20); //检查接收者的数目不超过20个。

require(_value > 0 && balances[msg.sender] >= amount); //检查发起调用函数的这个账户是否有这么多钱。

balances[msg.sender] = balances[msg.sender].sub(amount); //把发起调用的账户余额减去amount。

下面用一个循环给每个接收者接收value这么多的代币。

那么,问题出在哪?

uint256 amount = uint256(cnt) * _value; 当value的值很大的时候可能会发生溢出,那么amount算出来可能是个很小的一个值,所以从调用者的代币中减的时候是很小一部分的代币,但还是给每个receivers增加那么多value的代币。最后系统中相当于多发行了许多的代币。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

第0号参数是_receivers数组在参数列表中的位置,这里是16进制的,0040对应的是4乘16=64,第一个参数出现在第64个字节的位置,一行有64个数字,1个16进制的数字需要用4个二进制的数字来表示,64乘4=256位,也就是说一行有32个字节。所以是从[2]行开始表示receivers,表示了数组的长度是2,[3] [4]两行是接受的地址。[1]行表示value的值。注意,[1]行的参数是80000...再乘以接收者2个,算出来的溢出正好是0。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

红框中可以看到每个地址都是接收了很大数量的代币。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

攻击使代币的价格造成致命性的打击,差不多快要归零了。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

代币上市的交易所在发生攻击后暂停提币的功能,并且回滚了交易。

反思

在进行数学运算的时候一定要考虑溢出的可能性。solidity有一个safeMath库,里面提供的操作运算都会自动检测有没有出现溢出。

C语言里,两个数相乘会有一定的精度损失,再除以一个数,不一定会得到和另外一个数一模一样的数。但是在solidity里面是不存在的,因为两个数都是256位的整数,整数先进行乘法,再进行除法。

batchTransfer的加法和减法都用的safeMath库,只有乘法不小心没有使用,结果酿成了悲剧。曾经有人怀疑是不是故意的,但从事件的结果来看又不像使故意的。

北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件

mul()函数中,先用a*b = c,再用c/a看看是否等于b,如果发生溢出的话,assert()会抛出异常。文章来源地址https://www.toymoban.com/news/detail-426883.html

到了这里,关于北京大学肖臻老师《区块链技术与应用》ETH笔记 - 13.0 ETH-美链 事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 北京大学肖臻老师《区块链技术与应用》P12(匿名)和P13(思考)

    北京大学肖臻老师《区块链技术与应用》 P12 - BTC匿名篇 P13 - BTC思考篇 部分图片和文字来源 北京大学肖臻老师《区块链技术与应用》公开课笔记13——BTC匿名性篇2(零知识证明) 比特币并不是真的匿名,而是 pseudonymity (笔名,化名)。 比特币匿名性比较 与现金 现金更好,现金

    2024年04月26日
    浏览(24)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 11.0 The DAO 事件

    11.0 The DAO 事件 以太坊实现了去中心化的合约,有人想既然去中心化这么好,为什么不把所有的东西都改成去中心化呢?有人提出口号:decentralized everthing。DAO(Decentralized Autonomous Organization)去中心化的自治组织就是在这个背景下诞生的。传统社会下,组织都是建立在某种法律文

    2024年02月11日
    浏览(26)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 7.0 ETH挖矿算法篇2

    7.0 ETH挖矿算法篇2 7.1 伪代码理解以太坊挖矿算法 mkcache:根据一个seed,填充整个cache数组。 calc_dataset_item:通过cache来生成大数据集中的第i个元素,基本思想是通过伪随机的顺序读取cache中的256个数,每次读取的位置是由上一个读取的数计算得到的。第一个要从cache读取的数据

    2024年02月01日
    浏览(30)
  • 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 8.0 ETH挖矿难度的调整

    8.0 ETH挖矿难度的调整 比特币是每隔2016个区块来调整挖矿的难度,目标是维持出块时间平均在10分钟左右,以太坊是每个区块都有可能调整挖矿难度,调整的方法也比较复杂,而且还改过好几个版本,包括以太坊的黄皮书和实际代码也有一些出入,我们这部分以代码为准。

    2023年04月08日
    浏览(39)
  • 北京大学肖臻老师《区块链技术与应用》公开课笔记:以太坊原理(一):以太坊概述、账户、状态树、交易树和收据树

    1、ETH-以太坊概述 比特币和以太坊是两种最主要的加密货币,比特币被称为区块链1.0,以太坊被称为区块链2.0 以太坊在系统设计上针对比特币运行过程中出现的问题进行了改进,比如: 出块时间 ,比特币的区块时间是10分钟,以太坊的出块时间大幅度降低到了十几秒,而且

    2024年01月18日
    浏览(45)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【21-23】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 权益证明proof of stake 比特币和 以太坊目前都是使用基于工作量的证明,这种共识机制受到一个普遍的批评——浪费电。 Y轴是TWH=Terawatt hours 10的

    2023年04月08日
    浏览(32)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【11-12】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 1. 转账交易时如果接收者不在线(没有连接到比特币网络上)怎么办? 转账交易不需要接收者在线,这个交易只是在区块链上记录一下,把发送

    2024年01月22日
    浏览(36)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【6-8】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 比特币网络传播的工作原理(the BitCoin network): 比特币工作在应用层(application layer),底层是P2P的overlay network(覆盖网络)。 比特币的 P2P网络

    2024年01月18日
    浏览(34)
  • 《区块链技术与应用》北大肖臻老师——课程笔记【19-20】

    提示:以下内容只是个人在学习过程中记录的笔记,图片均是肖老师课程的截图,可供参考。如有错误或不足之处,请大家指正。 Block chain is secured by mining. 对于基于工作量证明的系统来说,挖矿是保障区块链安全的一个重要手段。 比特币的挖矿算法总的来说比较成功,没有

    2024年02月09日
    浏览(27)
  • 《区块链导论》北京大学 雷凯 — 郑纬民院士、李晓明教授作序

            国务院发布的《“十四五”数字经济发展规划的通知》明确指出,到2025年实现我国数字经济竞争力和影响力的稳步提升。23年7月新出版的 《区块链导论》 (作者:北京大学 雷凯;ISBN:978-7-121-45433-2)一书全面介绍了区块链的基础知识,包括区块链概述、区块链

    2024年01月19日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包