Как подключить библиотеку к смарт-контракту с внешних ресурсов?

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;
  ...
}
Другие вопросы по тегам