zoukankan      html  css  js  c++  java
  • 以太坊:用 EthPM 进行包管理

    用 EthPM 进行包管理

    EthPM 是以太坊的新包管理库。 它遵循ERC190规范,用于发布和使用智能合约包,并获得了许多不同的以太坊开发工具的广泛支持。 为了表示支持,我们也将以太坊包管理库(Package Registry) 直接集成到 Truffle 中。

    安装软件包

    从EthPM安装软件包几乎与通过NPM安装软件包一样简单。 我们只需运行以下命令:

    $ truffle install <package name>
    

    我们还可以在特定版本上安装软件包:

    $ truffle install <package name>@<version>
    

    与NPM一样,EthPM 版本遵循semver。 我们可以在以太坊软件包管理库中找到所有可用软件包的列表。

    安装依赖

    项目里可以定义一个 ethpm.json 文件,它可以指定项目依赖及对应的版本。 要安装 ethpm.json 文件中列出的所有依赖,可以运行:

    $ truffle install
    

    有关 ethpm.json 文件的更多详细信息,请参阅下面的包配置

    使用安装的合约

    已安装的软件包将放在项目文件夹中的 installed_contracts 目录中。 如果不存在installed_contracts 目录,则会为我们创建。 这个文件夹就像用 NPM 处理 node_modules 文件夹一样 - 也就是说,你不应该编辑里面的内容,除非确切的知道自己在做什么。:)

    安装的软件包可以在 测试、迁移、合约文件中 通过 import 或 require 及合约的名称来引入。 例如,以下Solidity合约将从 owned包导入 owned.sol 文件:

    pragma solidity ^0.5.0;
    
    import "owned/owned.sol";
    
    contract LBCContract is owned {
      // ...
    }
    

    同样,以下迁移文件可以使用 ens 包中的 ENS.sol 合约:

    File: ./migrations/2_deploy_contracts.js

    var ENS = artifacts.require("ens/ENS");
    var MyContract = artifacts.require("MyContract");
    
    module.exports = function(deployer) {
    
    // 如果ENS不存在时进行部署。
    // 如果我们在测试网络上并且ENS不存在,将进行部署。
    
      deployer.deploy(ENS, {overwrite: false}).then(function() {
        return deployer.deploy(MyContract, ENS.address);
      });
    };
    

    请注意,在上面的迁移中,我们使用 ens 包并根据ENS是否已有地址来有条件地部署ENS合约。 这是deployer为我们提供的一种奇特技巧,可以更轻松地编写依赖于网络存在的迁移。

    在这种情况下,如果我们在Ropsten网络上运行迁移,则此迁移不会部署 ENS 合约,因为(在撰写本文时)Ropsten 网络已经部署了规范的 ENS 合约,我们不需要部署自己的。 但是,如果我们正在针对不同的网络或测试网络运行部署,那么我们希望部署 ENS 合约,以便我们可以使用依赖的合约。

    发布自己的软件包

    发布我们自己的软件包与安装一样简单,像 NPM 一样,需要更多配置。

    Ropsten, Ropsten, Ropsten

    以太坊软件包管理库(Package Registry)目前存在于Ropsten测试网络中。 要发布自己的软件包,我们需要设置自己的Ropsten配置,因为需要用它签名交易。

    在这个例子中,我们将使用 Infura 来发布包,需要使用 truffle-hdwallet-provider 模块以及Ropsten网络账号的助记符。 首先,在项目目录中通过NPM安装 truffle-hdwallet-provider :

    $ npm install truffle-hdwallet-provider --save
    

    编辑配置文件 truffle.js : File:

    var HDWalletProvider = require("truffle-hdwallet-provider");
    
    // 12-word mnemonic
    var mnemonic = "opinion destroy betray ...";
    
    module.exports = {
      networks: {
        development: {
          host: "127.0.0.1",
          port: 8545,
          network_id: "*" // Match any network id
        },
        ropsten: {
          provider: new HDWalletProvider(mnemonic, "https://ropsten.infura.io/"),
          network_id: 3 // official id of the ropsten network
        }
      }
    };
    

    包配置

    与NPM一样,EthPM的配置选项文件名为 ethpm.json 。 此文件和 Truffle 配置文件在一个目录下,它为Truffle提供发布包所需的所有信息。 我们可以在配置部分中查看所有的配置项。

    文件: ethpm.json

    {
      "package_name": "adder",
      "version": "0.0.3",
      "description": "Simple 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
    

    在发布之前

    当我们的配置有有不想发布的 artifacts, 可以在发布之前运行:

    $ truffle networks --clean
    

    这里可以参考更多 命令 使用。

  • 相关阅读:
    12_RHEL7.1普通用户添加sudo权限
    11_RHEL安装Maya2015
    10_RHEL安装搜狗输入法
    Fedora21源配置与显卡安装
    Centos7下Intel与AMD双显卡驱动的安装
    09_linux下安装Nvidia显卡驱动
    firewall-cmd --reload 防火墙
    CSS 单行 多行文本溢出显示省略号
    css3 渐变色
    Error: Cannot find module 'gulp-sass'
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313083.html
Copyright © 2011-2022 走看看