整数溢出和下溢 与C和C ++一样,Solidity是一种比较低级别的编码语言,没有处理存储限制的功能。这可能与Ruby和Python开发人员习惯的非常不同。 以太坊的智能合约存储分别为256位或32字节。 Solidity支持有符号整数和无符号整数uint,最高可达256位。 这意味着当您的数字超过在分配的存储位之下或之上时,您的算术运算容易出现下溢和溢出错误。 注意:最大可能的uint256等于115792089237316195423570985008687907853269984665640564039457584007913129639935 contract Unsigned { uint8 public min = 0; uint8 public max = 255; // Underflowing & overflowing doesn't throw an error uint8 public less_than_min = min - 1; // returns 255 uint8 public more_than_max = max + 1; // returns 0 } contract Signed { int8 public min = -128; int8 public max = 127; int8 public less_than_min = min - 1; // returns 127 int8 public more_than_max = max +1; // returns -128 } 以下是上面代码段的可视化:
这会使得处理算术运算符的合约易受攻击。通常我们从safemath.sol库继承数学运算符。 —- 编译者/作者:不详 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
Ethernaut Level 5代币演练:如何防止滥用算术下溢和溢出
2019-07-10 不详 来源:网络
LOADING...
相关阅读:
- Tether封锁$ 300K USDT并将其交付给州2020-10-26
- DeFi新玩法 | 人人都能创建保险合约,一分钟了解Protekt Protocol想做什么2020-10-26
- 大多数欧洲专业投资者购买了数字资产或计划2020-10-26
- 麦子钱包 Eric:未来准备针对 Uniswap 数据分析做排行榜,更多关注链上合2020-10-26
- CoinAgenda Global宣布首次面向比特币和加密货币投资者和企业家的虚拟会议2020-10-26