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

How connect library to smart contract from external resources?

pragma solidity ^0.4.15;

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

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

这可能是你的意思:

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

虽然 James 的回答是有效的,但我不建议从在线存储库链接合同的依赖项,这是非常不安全的,因为您的代码依赖于一些可以动态更新的在线源,并且您可能会得到不稳定的版本。

我强烈建议您按照 Zeppelin's recommended way 使用 OpenZeppelin 合约,允许您仅使用稳定版本并轻松更新依赖项以获得最新功能和 bug-fixes:

npm init -y
npm install -E zeppelin-solidity

那么在你的合约中:

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

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