solidity智慧合約[54]-安全—取反
阿新 • • 發佈:2018-11-30
相反數
有符號的solidity整數型別如果有N位。那麼其值的範圍是-2^(N-1) to 2^(N-1)-1。 這意味著該型別負數的最大值取相反數之後不能夠被接收。
相反數陷阱
如下的Negation合約說明了負數在面臨取相反數操作時可能遇到的問題。由於對於負數取相反數。實則是取負數的補碼操作。因此、當某int型別最大的負數取相反數的時候,會是其本身。如當int8的最大值-128傳遞到negate8執行取反操作的時候,會返回128。
1 |
contract Negation { |
解決辦法
1、使用更大的型別來接收可以避免出現問題。
2、檢查是否達到了該型別的最大負數。
本文連結: https://dreamerjonson.com/2018/11/25/solidity-54-negation/
版權宣告: 本部落格所有文章除特別宣告外,均採用 CC BY 4.0 CN協議 許可協議。轉載請註明出處!