如何将图书馆从外部资源连接到智能合约?
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;
...
}
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;
...
}