说下我自己的看法:
1.SafeMath里是有写溢出验证的,比如在c=a*b以后验证了是否c / a = b。所以不知道老师说的用了不一定没问题,不用不一定有问题的根据是什么。SafeMath就是在原有的运算基础上添加了一些验证,比如溢出问题。
2.您说以太坊官方文档没有用所谓的SafeMath,这个文档里确实没有用safemath,但忽略了最重要的一句话:The standard token contract can be quite complex. But in essence a very basic token boils down to this 翻译过来就是标准的通证结构要比这个例子复杂的多,这个例子只是浓缩。所以这个文档里的代码只是例子而已,可以当成是伪代码,验证逻辑需要程序员自己去写,文档上的代码不能作为这次事件的参考。
3._value是transfer的参数,amount是发生溢出的变量,溢出攻击和用不用SafeMath当然有关系,不用SafeMath方法amount变量就会发生溢出,发生溢出就会跳过所有验证,进行转账操作,跳过验证的转账操作就会引起问题。如果amount的计算用了SafeMath,就会中断操作,自然不会进行接下来的转账。
以上为个人观点,欢迎反驳和探讨。
智能合约bug是以太坊的缺陷?不用SafeMath就会溢出?别闹!关于智能合约的溢出攻击,我遇到了多次这样的诘问:没有用SafeMath,难道你不怕溢出攻击吗?每次面对这样的问题,我的内心是这样的: 先来看一下以太坊官方文档是如何介绍TOK...