首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确地将SafeMath.sol导入合同

如何正确地将SafeMath.sol导入合同
EN

Stack Overflow用户
提问于 2020-03-06 18:36:18
回答 7查看 20.4K关注 0票数 11

这个问题我已经处理了一段时间了。我的临时解决方案是在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;

EN

回答 7

Stack Overflow用户

发布于 2021-01-27 22:20:53

这已不再适用于坚固版8。

票数 4
EN

Stack Overflow用户

发布于 2022-01-10 05:54:44

路径在v3.0 文档中是不同的

我用这个:

代码语言:javascript
复制
import "@openzeppelin/contracts/math/SafeMath.sol";

而不是这样:

代码语言:javascript
复制
import "@openzeppelin/contracts/utils/math/SafeMath.sol";
票数 1
EN

Stack Overflow用户

发布于 2021-07-18 20:52:26

可以以下列方式使用:

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60569808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档