solidity 0.8版本更新 / 学习智能合约#46
solidity版本更新的速度很快啊,半年没玩,就有点跟不上进度了!查看了下新的版本,现在已到0.8.7,也有不少的更新:集成的SafeMath和新的错误处理。
SafeMath
solidity在0.8版本以前需要引入SafeMath库以避免计算时溢出,但在0.8版本以后自身已经集成了,则无需再引入。下面简单地测试下,
//SafeMath是从左到右开始计算的: + add - sub * mul / div
uint a = 2;
uint b = 5;
uint c = 23;
(a+b)*c -> a.add(b).mul(c)
//0.8版本以后
uint x = 0;
x--; //出错,会回滚
unchecked { ... }不检查溢出,
uint x = 0;
unchecked { x--; } //返回最大值 type(uint).max
uint a = 2;
uint b = 5;
uint c = 23;
return a + b * c; ->117
return (a + b) * c; ->161
return a * b + c; ->33
return b / a + c; ->25
return c / (a + b); ->3
自身集成了SafeMath终归是件好事,使用起来更适合小学生水平。其它的一些特点注意下倒也没什么太大变化。