我正在和另一个人开发一个项目,他正在使用SafeMath。
然后,我说,一旦我们使用固体版本^0.8.0就没有必要了,我认为如果我们删除SafeMath,它会减少气体。
但是,我们测试了使用和不使用SafeMath的代码。使用SafeMath的代码消耗更少的gas。
几乎相同的成本,但SafeMath代码使用更少的gas。
有意义吗?我不明白。
我测试了两个代码和SafeMath代码花费更少的gas。
您可能会看到其他影响gas成本的东西,比如函数名。以下是用Remix(稳定性0.8.7,未启用优化器)测量的两个合约的gas成本。无论哪种方式,这里有一些基准测试表明safemath并不更省油。我觉得你的测试出了问题。
pragma solidity 0.8.7;
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
contract SafeMathTest {
using SafeMath for uint256;
// 382 gas
function a(uint256 x) external pure returns (uint256 sum) {
sum = x.add(1);
}
// 327 gas
function b(uint256 x) external pure returns (uint256 sum) {
sum = x + 1;
}
}
contract SafeMathTest2 {
using SafeMath for uint256;
// 372 gas
function b(uint256 x) external pure returns (uint256 sum) {
sum = x.add(1);
}
// 349 gas
function a(uint256 x) external pure returns (uint256 sum) {
sum = x + 1;
}
}