使用 EthPM 包管理工具
EthPM 是 Ethereum 提供的软件包注册表。它遵循ERC190规范来发布和使用智能合约包, 
 并获得了许多不同的Ethereum开发工具的广泛支持。为了表示我们的支持,我们将 Ethereum  
 公司的软件包注册表直接集成到 Truffle 中。
安装包
使用 EthPM 安装包和 NPM 类似。运行如下命令即可:
$ truffle install <package name>
你也可以通过指定版本号来安装:
$ truffle install <package name>@<version>
与NPM一样,EthPM版本遵循semver。您可以在Ethereum包注册表中找到所有可用包的列表。
安装依赖
你的项目定义一个 ethpm.json 文件,用来配置项目的依赖的包以及版本号(类似与npm的package.json)。 
 安装所有的依赖,运行如下命令行:
$ truffle install
更多 ethpm.json 请查看下面板块的包配置。
使用已经安装的合约
已经安装的合约都在工程目录下的 installed_contracts 目录中。如果文件夹不存在,将会自动创建这个文件夹。 
 把这个文件夹看作跟 node.js 中的 node_modules 文件夹一样,不要修改里面的东西。
安装好的包何以在测试、迁移以及智能合约中使用( import or require )。例如,solidity编写的智能合约,想要 
 从 owned 包中 import owned.sol :
pragma solidity ^0.4.2;
import "owned/woned.sol";
contract MyContract is owned {
    // ...}类似的,迁移脚本中想要使用 ens 包中的 ens.sol :
文件: ./migrations/2_deploy_contracts.js
var ENS = artifacts.require("ens/ENS");var MyContract = artificats.require("MyContract");
module.exports = function(deployer){
    deployer.deploy({overite: false}).then(function(){
        return deployer.deploy(MyContract, ENS.address);
    });
};注意在上面的迁移文件中,我们使用ens包,并基于ens是否已经有一个地址集有条件地部署ens合约。 
 这是 deployer 提供给您的一种巧妙的技巧,它使根据网络工件的存在编写迁移变得更加容易。 
 在这种情况下,如果我们在Ropsten网络上运行我们的迁移,这个迁移不会部署ENS合约, 
 因为(在撰写本文时)Ropsten是规范的合约存在的地方——我们不希望部署我们自己的合约。 
 但是如果我们对不同的网络或者测试网络运行迁移,那么我们需要部署ENS契约,这样我们就有了一个依赖合约。
发布你自己的包
发布你自己的包和安装一样简单,但是像NPM一样,需要更多的配置。
Ropsten, Ropsten, Ropsten
Ethereum包注册表目前存在于Ropsten测试网络上。要发布到注册中心,我们需要设置自己的Ropsten配置, 
 因为我们将进行需要签名的交易。
在本例中,我们将使用 Infura 发布包,以及 truffle-hdwallet-provider NPM模块和一个12字的hd-wallet助记符, 
 该助记符表示我们在Ropsten网络上的 Ethereum 地址。首先,通过NPM在项目目录中安装truffle-hdwallet-provider:
$ npm install truffle-hdwallet-provider --save
然后编辑你的 truffle.js 配置文件,使用十二个字符的地址 添加 ropsten 网络:
文件 truffle.js 
var HDWalletProvider = require("truffle-hdwallet-provider");var mnemonic = "opinion destroy betray ...";
module.exports = {
    networks: {
        development: {
            host: "127.0.0.1",
            port: "8545",
            network_id: "*"
        },
        ropsten: {
            provier: new HDWAlletProvider(mnemonic, "https://ropsten.infura.io/");
            network_id: 3 // official id of the ropsten network
        }
    }
}包配置
与NPM一样,EthPM的配置选项也包含在一个名为 ethpm.json 的单独JSON文件中。这个文件与Truffle配置放在一起 
 ,它提供了发布软件包所需的所有信息。您可以在Configuration部分中看到可用选项的完整列表。
文件 ethpm.json
{
    "package_name": "adder",
    "version": "0.0.3",
    "description": "simpe contract to add two numbers",
    "authors": [        "Tim Coulter <tim.coulter@consensys.net>"
    ],
    "keywords": [        "ethereum",        "addition"
    ],
    "dependencies": {
        "owned": "^0.0.1"
    },
    "license": "MIT"}命令
配置成功以后,发布包:
$ truffle publish
会有如下输出:
$ truffle publish Gathering contracts...Finding publishable artifacts...Uploading sources and publishing to registry...+ adder@0.0.3
发布之前
当使用默认开发网络(如配置为匹配任何Ethereum客户端(如Ganache或Truffle development))这样的网络时, 
 您肯定会有不希望发布的网络工件。在发布包之前,考虑运行以下命令来删除任何无关的网络构件:
$ truffle networks --clean
查看命令行参考文档,获取更多信息
共同学习,写下你的评论
评论加载中...
作者其他优质文章
 
                 
             
			 
					 
					