这个问题我已经处理了一段时间了。我的临时解决方案是在Contracts目录中创建一个SafeMath.sol文件,并从那里直接导入它。然而,我一直在寻找一个“更清晰的解决方案”。旧的方式似乎是直接从GitHub链接导入它,如一些repos和其他堆栈溢出帖子(如就是这样 )。
然而,正确的方法似乎是安装相应的oz包(@openzeppelin/contracts-ethereum package ),并将文件直接导入到所需的合同中,即
import "@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol";
然而,使用"@openzeppelin/contracts-ethereum-package/contracts/math/SafeMath.sol“,我仍然得到错误源VSCode未找到:不支持文件导入回调
也就是说,如何正确导入SafeMath?
编辑:我正在使用pragma solidity ^0.6.0;
发布于 2021-01-27 22:20:53
这已不再适用于坚固版8。
发布于 2022-01-10 05:54:44
路径在v3.0 文档中是不同的
我用这个:
import "@openzeppelin/contracts/math/SafeMath.sol";而不是这样:
import "@openzeppelin/contracts/utils/math/SafeMath.sol";发布于 2021-07-18 20:52:26
可以以下列方式使用:
pragma solidity ^0.5.0;
import "https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.3.0/contracts/math/SafeMath.sol";
contract contractForSafeMath {
using SafeMath for uint;
uint256 addResult;
uint256 subResult;
uint256 mulResult;
uint256 divResult;
uint256 modResult;
uint public MAX_VALUE = 2**256 -1;
//overflow
uint256 overflowResult;
function getResults(uint256 a, uint256 b) public{
addResult = SafeMath.add(a,b);
subResult = SafeMath.sub(a,b);
mulResult = SafeMath.mul(a,b);
divResult = SafeMath.div(a,b);
modResult = SafeMath.mod(a,b);
overflowResult = SafeMath.add(SafeMath.add ( (a**b), SafeMath.mul (SafeMath.mul (b, a), b)), (b** b));
}
function addResultVal(uint a, uint b) public view returns(uint256){
return addResult;
}
function subResultVal() public view returns(uint256){
return subResult;
}
function mulResultVal() public view returns(uint256){
return mulResult;
}
function divResultVal() public view returns(uint256){
return divResult;
}
function modResultVal() public view returns(uint256){
return modResult;
}
function overflowResultVal() public view returns(uint256){
return overflowResult;
}
}https://stackoverflow.com/questions/60569808
复制相似问题