上溢(Overflow)和下溢(Underflow)
Solidity能处理256位的整数。所以2²⁵⁶-1 加1就会为0.这个就是Overflow
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 0x000000000000000000000000000000000001
----------------------------------------
= 0x000000000000000000000000000000000000
在Solidity中如果使用无符号整数,那么0减1就会得到最大的整数
0x000000000000000000000000000000000000
- 0x000000000000000000000000000000000001
----------------------------------------
= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
对策是使用SafeMath库来做数学运算
>>>阅读全文
网友评论