关于如何安装testrpc、truffle,我假设大家都已经熟门熟路了,因为有大量的区块链的教学篇有详细介绍如何在单机上同时安装部署eth、truffle,并且在本地进行的合约测试。
这里,我们尝试做点更有意思的工作,把整个测试环境从单点机器变成松散的结构,从而探究truffle的工作原理。
接下来,我们陆续做这么两个实验:
实验一:将testrpc部署到eth-host主机上,并对外启动eth测试网络服务:http://eth-host:8545
实验二:以webpack为例在tru-host主机(truffle)上部署智能合约,并对外提供转账服务:http://192.168.3.103:8080
完成上述工作后,其实估计大家对于truffle会有更清晰的认识。
今天先完成实验环境的搭建工作。
1. 部署eth-host虚机
主机功能:搭建以太坊虚机,为智能合约应用服务器提供账本、记账等基础的以太坊测试网络服务。
(1) 虚机与网络:在vmware上使用最简版的centos7安装虚机即可,安装完成后,为方便局域网访问,将虚机网络设置为桥接方式。
虚机准备可参考:http://blog.csdn.net/xc70203/article/details/77983488
该步骤完成后,主机配置为:
IPAddr:192.168.3.102
Gateway: 192.168.3.1
dns1: 8.8.8.8
dns2: 114.114.114.114
(2) 配置主机host:将主机的host名称定义为eth-host,方法可参考:http://blog.csdn.net/huangyanlong/article/details/45476569
为方便后续主机访问,在/etc/hosts文件中增加:
#当前本机名为eth-host
IP eth-host
# 准备部署的tru-host主机
192.168.3.103 tru-host
(3) 部署ethereumjs-testrpc,执行:
npm install -g ethereumjs-testrpc
安装好后,直接执行:
testrpc
即可启动带有初始化10个账本的eth测试网络服务。
(4) 后续如果想使用更加灵活的测试网络,可以直接部署geth,具体方法详见:http://blog.csdn.net/xc70203/article/details/77988473
安装好geth后,启动方式:
geth --rpc --dev console 2>> geth.log
对于eth-host主机而言,部署testrpc对于初学者而言是最佳选择,它简化了创建rpc服务、accounts、unlock、miner相关的一系列的操作。等后续讲到geth的时候,这些操作都是为创建测试网络必不可少的内容。所以,大家先完成(1)~(3)即可。
2. 部署tru-host虚机
主机功能:安装部署DAPP智能合约应用服务器,为web服务提供智能合约的执行服务。
(1) 虚机与网络:在vmware上使用带GNOME视窗的centos7版本安装虚机,安装完成后,将虚机网络设置为桥接模式。配置过程可参考上文不在赘述。
注意: 强烈建议在tru-host上部署带有桌面的centos7,这个会在合约测试中使用浏览器带来极大便利!
配置完成后,网络参数如下:
IPAddr:192.168.3.102 Gateway: 192.168.3.1 dns1: 8.8.8.8 dns2: 114.114.114.114
(2) 配置主机host:(3) 部署truffle项目:#当前本机名为tru-host IP tru-host # 已部署的eth-host主机 192.168.3.102 eth-host
安装truffle。之前不少网站反馈说当前最新truffle在执行truffle serve时会失败,建议大家降级安装truffle@3.2.1。但经我的测试发现最新版本的truffle运行webpack时并未出现bug(但执行truffle serve会报错)。所以大家可以放心的安装最新版本的truffle来摸索。
安装方式如下:
安装好后,在root目录下创建工作路径t01,并初始化webpack项目:npm install -g truffle
执行完之后,应该可以看到项目目录结构如下所示。cd && mkdir t01 && cd t01 truffle unbox webpack
做完上述工作后,实验的准备工作就完成了。