基于以太坊的开发实践—环境布署

发布时间:2018-06-01 10:28:48

一、安装以太坊客户端Geth

1、安装准备

VMware 14Ubuntu 16.04(64)

2、安装流程

1)访问GETHUB网站查找GO语言客户端网址:www.github.com

2)搜索Ethereum关键字,在Language栏中选择GO,再选ethereum/go-ethereum(此页为GO客户端源码及相关介绍);

3)点WIKI后选择Installation Instructions进入安装说明。这里以Ubuntu1664位为例)。安装说明主要内容如下:

PPA直接安装:

sudo apt-get install software-properties-common

sudo add-apt-repository -y ppa:ethereum/ethereum

sudo apt-get update

sudo apt-get install ethereum

2、流程操作说明

sudo apt-get update(更新系统软件包列表)*此步可略

sudo apt-get install software-properties-common(必要的工具包)

添加以太坊的源:

sudo add-apt-repository y ppa:ethereum/ethereum

sudo add-apt-repository y ppa:ethereum/ethereum-dev

sudo apt-get update(更新系统软件包列表)

sudo apt-get install ethereum(安装go-ethereum,就是geth

系统联网执行后,即完成了安装以太坊客户端,其中包括(geth,bootnode, evm, disasm, rlpdump,ethtest)。输入Geth命令可启动以太坊。(--help查看命令选项)。

一、 安装Truffle

1、安装NodeJS(https://nodejs.org),参考官网安装说明如下:

Ø Node.js 9安装(我的安装):

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -

sudo apt-get install -y nodejs

安装完成后可查看版本信息:查看版本:node v。卸载:sudo apt-get remove nodejs

*安装过程中可能出现的问题:

提示“CURL”未安装,按提示操作即可。

2、安装Truffle

安装完成后输入Truffle会显示命令界面。

3、安装模拟调试环境EthereumJS TestRPC

运行testrpc可看到testrpc版本号、初始化以太坊地址和监听端口,此处版本号为v6.0.3testrpc不同于geth,geth是真正的以太坊环境,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷,当你的合约在testrpc中测试通过后,再可以部署到geth中去。

可以看到testrpc启动后自动建立了10个账号(Accounts),与每个账号对应的私钥(Private Key)。每个账号中都有100个测试用的以太币(Ether)。要注意testrpc仅运行在内存中,因此每次重开时都会回到全新的状态。到此环境安装基本完成。

4、创建测试DEMO

Ø 保持运行testrpc的终端(如关闭请开启testrpc监听默认8545端口)。

Ø 新开终端。创建一个工程目录

sudo mkdir TestDemo

Ø 进入该工程,并初始化该工程,并查看目录结构

cd TestDemo

sudo truffle init(原来使用truffle init,但现在它存在于unbox。现改用truffle unbox metacoin) 

初始化后的目录结构说明:

/contracts:存放智能合约原始代码的地方

/migrations:这是Truffle用来部署智能合约的功能。

/test:测试智能合约的代码放在这里,支持js与sol测试。

truffle.js:Truffle的设置文档。

Ø 在该目录下编译并部署项目

sudo truffle compile

sudo truffle migrate  部署到TestRPC

* truffle migrate执行时会有一个异常,原因为是因为truffle.js里面未配置链接合约发布的环境地址,找到对应的truffle.js文件,作如下修改

module.exports = {  

    networks: {  

        development: {  

            host: "localhost",  

            port: 8545,  

            network_id: "*" // 匹配任何network id  

         }  

    }  

};

查看testrpc的输出窗口,可以看到这笔交易和花费的区块:

Ø 测试合约

在执行编译时会自动执行单元测试,如果有一个测试未通过则会中断编译过程。而在开发阶段,可以自己使用命令来测试。以下命令没有报错就说明通过了,绿条“5 passing(2s)”。

到此环境布署完成。