前言
在以太坊开发中,一个智能合约往往会继承自其他的合约,这就需要我们实现合约的依赖管理。而 truffle-resolver 就是一个方便管理智能合约依赖的 npm 包,今天我们就来详细讲解一下如何使用 truffle-resolver。
安装
首先,你需要在你的项目中安装 truffle-resolver:
npm install truffle-resolver --save
然后,你需要在你的 truffle.js 配置文件中添加 resolver:
-- -------------------- ---- ------- -------------- - - -- --- --------- - -- --- -- ----- - -- --- -- --------- - -- ------------ - -
使用
在安装完 truffle-resolver 并完成配置后,我们就可以愉快地使用它了!
继承合约
首先,我们需要在你要使用合约的地方继承它:
pragma solidity ^0.4.4; import "library/MyLibrary.sol"; contract MyContract is MyLibrary { // ... }
在这个例子中,我们要继承名为 MyLibrary 的合约。
管理依赖
当我们执行 truffle compile 命令时,truffle-resolver 将会帮助我们自动查找依赖的合约,并将其编译到我们的项目中。
你只需要在 truffle.js 中配置 resolver:
-- -------------------- ---- ------- -------------- - - -- --- --------- - -- ----------- -- ---------- --------------- ------ ----- -- -- --------------------- ------------------ -------------- -------------------- -------------- -------------------------- -------------------- -- --- ---- ---------- - ----- - -- --- - -- -- --- - -
对于这个例子中的 truffle.js 配置,我们需要在项目的 ./contracts/lib/MyLibrary.sol 中包含以下内容:
pragma solidity ^0.4.4; library MyLibrary { // ... }
这样,我们就完成了依赖管理。
示例代码
下面是一个完整的示例,你可以将其添加到你的项目中并执行 truffle compile 命令进行测试。
truffle.js
-- -------------------- ---- ------- -------------- - - --------- - ------------ - ----- ------------ ----- ----- ----------- --- -- -- ----- - ---------- - -------- ----- ----- --- - -- --------- - ------------------ -------------- -------------------- -------------- -------------------------- -------------------- ---------- - ----- - -------- ------- - - - --
./contracts/MyContract.sol
-- -------------------- ---- ------- ------ -------- ------- ------ ------------------------ -------- ---------- -- --------- - ---- ------ ------ -------- ------------- ----- ------ - ----- - ----- - -------- ---------- ------ ---- ------- ------ - ------ ------ - -
./contracts/lib/MyLibrary.sol
pragma solidity ^0.4.4; library MyLibrary { function echo(uint _var) public returns (uint) { return _var; } }
在完成上述文件的写作和添加后,你只需要执行 truffle compile 命令就可以看到它们被成功编译。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/70329