Как подключить библиотеку к смарт-контракту с внешних ресурсов?
pragma solidity ^0.4.15;
import './ERC20.sol';
import './SafeMath.sol';
Как подключить SafeMath.sol из внешних (нелокальных) ресурсов?
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 напрямую, только не забудьте включить коммиты или ветки, когда для ссылки это должен быть пользователь / project / file-path / file.sol напрямую.
См. http://solidity.readthedocs.io/en/develop/layout-of-source-files.html
Хотя ответ Джеймса действителен, я бы не рекомендовал связывать зависимости вашего контракта с онлайн-хранилищем, но это крайне небезопасно, поскольку ваш код зависит от некоторого онлайн-источника, который может динамически обновляться, и потому что вы можете получить нестабильные версии.
Я настоятельно рекомендую вам следовать рекомендованному Zeppelin способу использовать контракты OpenZeppelin, позволяя вам использовать только стабильные выпуски и легко обновлять зависимости, чтобы получать новейшие функции и исправления ошибок:
npm init -y
npm install -E zeppelin-solidity
Тогда в вашем контракте:
import 'zeppelin-solidity/contracts/math/SafeMath.sol';
contract MyContract {
using SafeMath for uint;
...
}