zoukankan      html  css  js  c++  java
  • 以太坊合约的自动化编译详解一

    https://blog.csdn.net/turkeycock/article/details/79165602
    Truffle是目前最流行的以太坊开发框架,采用JavaScript编写,支持智能合约的编译、部署和测试。

    一、安装Truffle

    1. 首先安装Truffle依赖的NodeJS:
      curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
      sudo apt-get install -y nodejs
      sudo apt-get install npm
      配置npm源为国内源(可选,可加快下载速度):
      sudo npm config set registry http://registry.npm.taobao.org
    2. 安装Truffle
      sudo npm install -g truffle
      二、创建工程
      如果想创建一个空工程,可以用下面的命令:
      truffle init
      在早期版本的truffle中,刚刚创建的工程中还会包含metacoin的示例代码。新版本truffle引入了box的概念,所有的示例代码都以box的形式提供。因此我们不需要用truffle init命令,用下面的命令就可以直接下载metacoin的示例代码:
      truffle unbox metacoin
      代码结构如下图所示:

    主要分为3个部分:

    ● contracts目录中包含Solidity合约代码,其中Migrations.sol是必须的,其他就是你自己写的合约代码了。

    ● migrations目录中包含合约部署脚本,其中1_initial_migration.js就是用来部署Migrations.sol的,其他的脚本会按照顺序依次执行。

    ● test目录中就是测试代码了。

    三、安装以太坊客户端

    智能合约必须要部署到链上进行测试。可以选择部署到一些公共的测试链比如Rinkeby或者Ropsten上,缺点是部署和测试时间比较长,而且需要花费一定的时间赚取假代币防止out of gas。
    还有一种方式就是部署到私链上,Truffle官方推荐使用以下两种客户端:

    ● Ganache

    ● truffle develop

    1. Ganache

    Ganache这个名字比较陌生,但是它的前身testRPC却是大名鼎鼎,网上的很多老文章里都是用testRPC。Ganache是奶油巧克力的意思,据说是很久之前有个学徒做巧克力的放多了牛奶,师傅正要骂他,结果一尝发现味道还真不错,于是一种新的巧克力就诞生了~ Truffle是松露巧克力,一般是以Ganache为核,然后上面撒上可可粉,所以这两个产品的名字还是很贴切的。
    Ganache现在有两个版本,一个是带图形界面的版本,下载地址:
    https://github.com/trufflesuite/ganache/releases
    这些可执行文件的后缀都比较奇葩,参见下面的对应关系:

    ● Windows: Ganache-*.appx

    ● Mac: Ganache-*.dmg

    ● Linux: Ganache-*.AppImage

    还有一个就是命令行版本了,下载方法:
    sudo npm install -g ganache-cli
    具体的命令行参数配置参见github:
    https://github.com/trufflesuite/ganache-cli

    本文采用带图形界面的Ganache版本。

    1. truffle develop
      这个是truffle内置的客户端,跟命令行版本的Ganache基本类似。唯一要注意的是在truffle develop里执行truffle命令的时候需要省略前面的“truffle”,比如“truffle compile”只需要敲“compile”就可以了。

    四、编译和部署合约
    Ganache默认运行在7545端口,可以在界面右上方的“设置”里进行更改。运行后默认创建10个账号,每个账号里有100ETH的余额。
    要部署到链上,需要把IP、端口、网络ID告诉truffle。修改truffle.js:
    module.exports = {
    networks: {
    development: {
    host: 'localhost',
    port: '7545',
    network_id: '*' // Match any network id
    }
    }
    };
    然用下面两条命令编译和部署:
    truffle compile
    truffle migrate
    五、测试合约
    metacoin的示例代码里已经把测试代码写好了,直接用下面的命令运行就可以了:
    truffle test
    去Ganache上看一下运行结果:

    ● Accounts标签:第一个账户里ETH略有减少,因为交易消耗了gas

    ● Blocks标签:Ganache是自动挖矿,生成了6个新区块,每个区块里有一个交易

    ● Transactions标签:有6笔新交易,可以点开看交易详情

    ● Logs标签:显示交易和挖矿日志

    下一篇分析一下这个最简单例子里的合约代码和部署、测试脚本。

  • 相关阅读:
    ExecuteScalar requires the command to have a transaction when the connection assigned to the command is in a pending
    如何从vss中分离程序
    String or binary data would be truncated
    the pop3 service failed to retrieve authentication type and cannot continue
    The POP3 service failed to start because
    IIS Error he system cannot find the file specified _找不到页面
    pku2575Jolly Jumpers
    pku2940Wine Trading in Gergovia
    pku3219二项式系数
    pku1029false coin
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9585854.html
Copyright © 2011-2022 走看看