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

Ethereum 如何从外部资源将图书馆连接到智能合同?,ethereum,solidity,openzeppelin,Ethereum,Solidity,Openzeppelin,如何从外部(非本地)资源连接SafeMath.sol?这可能就是您的意思: pragma solidity ^0.4.15; import './ERC20.sol'; import './SafeMath.sol'; Solidity支持直接从Github导入,但请记住在引用时不要包含提交或分支,它必须是user/project/file path/file.sol 请参见虽然James的回答是有效的,但我不建议从在线存储库链接合同的依赖项,这是非常不安全的,因为您的代码依赖于一些可以动态

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

这可能就是您的意思:

pragma solidity ^0.4.15;

import './ERC20.sol';
import './SafeMath.sol';
Solidity支持直接从Github导入,但请记住在引用时不要包含提交或分支,它必须是user/project/file path/file.sol


请参见

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

我强烈建议您遵循OpenZeppelin合同,只允许您使用稳定版本,并轻松更新依赖项,以获得最新功能和错误修复:

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);
    }
}
那么在你的合同中:

npm init -y
npm install -E zeppelin-solidity
import 'zeppelin-solidity/contracts/math/SafeMath.sol';

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