如何从外部资源将库连接到智能合约?

时间:2017-09-19 11:29:57

标签: ethereum solidity open-zeppelin

pragma solidity ^0.4.15;

import './ERC20.sol';
import './SafeMath.sol';

如何从外部(非本地)资源连接 SafeMath.sol

2 个答案:

答案 0 :(得分:2)

这可能是你的意思:

pragma solidity ^0.4.0;

import "github.com/OpenZeppelin/zeppelin-solidity/contracts/math/SafeMath.sol";

contract MathExtended {
    using SafeMath for uint;
    function exec(uint a, uint b) returns (uint){
        return a.add(b);
    }
}

Solidity支持直接从Github导入,只需记住在引用时不要包含提交或分支,它必须是user / project / file-path / file.sol。

请参阅http://solidity.readthedocs.io/en/develop/layout-of-source-files.html

答案 1 :(得分:2)

詹姆斯'答案是有效的,我不建议从在线存储库链接你的合同的依赖关系,这是非常不安全的,因为你的代码依赖于一些可以动态更新的在线资源,因为你可能会得到不稳定的版本。

我强烈建议您按照Zeppelin's recommended way使用OpenZeppelin合同,只允许使用稳定版本并轻松更新依赖项以获取最新功能和错误修复:

npm init -y
npm install -E zeppelin-solidity

然后在你的合同中:

import 'zeppelin-solidity/contracts/math/SafeMath.sol';

contract MyContract {
  using SafeMath for uint;
  ...
}