一、安装以太坊客户端Geth
1、安装准备
VMware 14、Ubuntu 16.04(64位)。
2、安装流程
(1)访问GETHUB网站查找GO语言客户端网址:www.github.com;
(2)搜索Ethereum关键字,在Language栏中选择GO,再选ethereum/go-ethereum(此页为GO客户端源码及相关介绍);
(3)点WIKI后选择Installation Instructions进入安装说明。这里以Ubuntu16(64位为例)。安装说明主要内容如下:
从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.3。testrpc不同于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)”。
到此环境布署完成。