Solidity智能合约编程漏洞及对策
2018-09-04 本文已影响20人
af09b3c456ce
上溢(Overflow)和下溢(Underflow)
Solidity能处理256位的整数。所以2²⁵⁶-1 加1就会为0.这个就是Overflow
0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+ 0x000000000000000000000000000000000001
----------------------------------------
= 0x000000000000000000000000000000000000
在Solidity中如果使用无符号整数,那么0减1就会得到最大的整数
0x000000000000000000000000000000000000
- 0x000000000000000000000000000000000001
----------------------------------------
= 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
对策是使用SafeMath库来做数学运算
>>>阅读全文