第一课 如何在Windows上搭建以太坊开发环境
安装git,NodeJS,solc,testrpc,truffle,Geth客户端
(1)安装git,NodeJS
【目的】Git可用于从GitHub获取源代码;NodeJS以太坊开发框架Truffle需要。
输入以下命令安装git:
sudo apt-get install git
【注意】如果在安装git时出现E:Package ‘git’ has no installation candidate错误提示,只需使用以下命令代替即可:sudo apt-getinstall git-core
因为以太坊开发需要使用开发框架,但是,目前最好用且使用人数最多的是第三方开发框架Truffle。而Truffle建议系统所用NodeJS版本为5.0以上,因此,我们就需要安装NodeJS的最新版本。
有多种方法安装NodeJS:
方法一:使用apt,输入以下命令安装NodeJS 6.0以上版本(成功):
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash
sudo apt-get install -y nodejs
方法二:从Node官网下载源码并解压,然后自行编译安装(以安装Node V6.9.2为例):
tar -zxvf node-v6.9.2.tar.gzcd node-v6.9.2
sudo ./configuresudo make
sudo make install
方法二因为要重新编译,因此耗费的时间可能多一点。
(2)安装solc
【目的】编译以太坊智能合约使用。
输入以下命令安装solc:
sudo npm install -g solc
安装完后,我们就会发现在终端中输入solc命令返回一个出错信息。这是因为solc只是一个程序集,如果我们想要在终端中使用solc程序编译智能合约,则需要安装solc-cli,这是solc的命令行界面。
sudo npm install -g solc-cli
输入以下命令可以一并安装solc和solc-cli(推荐使用此命令安装):
sudo npm install -g solc solc-cli --save-dev
如果输入solcjs --help命令,有以下输出,则表明solc和solc-cli安装成功:
到了这里,如果想以后的智能合约编译工作不使用geth控制台来完成,那么solc编译器就算安装完了。但是,如果我们需要在geth控制台使用solc编译器,那么我们仍然需要安装solc二进制包。输入以下命令安装solc二进制包:
sudo add-apt-repository ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install solc
如果在输入第一条命令的时候出现了错误,可以尝试重新启动系统来解决。
【注意】
如果你安装了webthree-umbrella,那么solc就会默认安装,但是我们在终端输入solc并没有显示可用的命令,我们需要输入以下命令手动建立软链接:
sudoln-s/home/zcc/webthree-umbrella/solidity/build/solc/solc /bin/solc
这样就能直接在终端使用solc程序了。
【可选操作】
配置npm源为国内源(可选,可加快下载速度),命令行输入:
sudo npm config set registry http://registry.npm.taobao.org
不想用他们的,再设置回原来的就可以了:
sudo npm config set registry https://registry.npmjs.org
(3)安装testrpc
输入以下命令安装testrpc:
sudo npm install -g ethereumjs-testrpc
如果输入testrpc命令,有以下输出,则表明testrpc安装成功:
【注意】
(1)参考网页中的命令没有sudo,但是因为-g参数是表示全局安装,则需要使用root权限才能安装成功。
(2)安装过程可能会出错,可以多试几次安装命令。
(4)安装truffle
【目的】Truffle 是世界一流的开发环境,为以太坊的测试框架和资产管道,致力于使以太坊开发者的生活更容易。
输入以下命令:
sudo npm install -g truffle
如果输入truffle version命令,有以下输出,则表明truffle安装成功:
(5)安装Geth客户端
【目的】Geth是Go Ethereum开源项目的简称,它是使用Go语言编写且实现了Ethereum协议的客户端软件,也是目前用户最多,使用最广泛的客户端。通过Geth客户端与以太坊网络进行连接和交互可以实现账户管理、合约部署、挖矿等众多有趣且实用的功能。Geth支持Windows、Mac及Linux等主流操作系统。
有多种以太坊客户端,安装go-ethereum输入以下命令:
sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo apt-get update
sudo apt-get install ethereum
如果能运行GETH命令则表示按照成功了。
(6)安装 Ganache 【可选】
【定义】Ganache是为以太坊开发准备的个人区块链钱包,你可以用它执行智能合约,研发应用和执行测试用例。Ganache的前身是testrpc,跟testrpc的作用一样。
Ganache现在有两个版本,一个是带图形界面的版本,下载地址:
https://github.com/trufflesuite/ganache/releases
这些可执行文件的后缀都比较奇葩,参见下面的对应关系:
● Windows: Ganache-*.appx
● Mac: Ganache-*.dmg
● Linux: Ganache-*.AppImage
(1)在Ubuntu上安装采用命令行方式
命令如下:
sudo npm install -g ganache-cli
具体的命令行参数配置参见github:
https://github.com/trufflesuite/ganache-cli
安装界面截图:
运行命令:
ganache-cli
调用命令可显示10个虚拟账号和私钥:
Ganache-cli的命令参数帮助文档:
https://github.com/trufflesuite/ganache-cli/blob/master/README.md
(2)在WINDOWS上安装Ganache
https://github.com/trufflesuite/ganache/releases目录下下载最新的WINDOWS版本安装文件
(3) 在Ubuntu上安装Ganache图形化界面程序
下载.AppImage的程序,
chmod +x ganache-1.1.0-x86_64.AppImage//修改权限为可执行文件
sudo ./ganache-1.1.0-x86_64.AppImage //启动ganache
【结果】在作者的Ubuntu安装Gnaache图形程序没有成功,只能使用Ganache-clli版本了,可能是作者的Ubuntu是32位的,而程序是64位的原因?但是同样的操作在欧阳哥哥的环境是成功的,运行的界面同WINDOWS的界面程序。故障待探索。
【注意】这个操作要在Ubuntu的本机命令行界面进行操作,不可在Xshell的远程命令操作,否则不发触发图形界面。
【问题】如何启动远程Ganache服务器呢?
把HOSTNAME的IP地址更换为远程服务器地址,例如192.168.80.144,点击RESTART按钮。
(7)安装 MetaMask 【可选】
【定义】MetaMask 是一款插件形式的以太坊轻客户端,开发过程中使用MetaMask和我们的dapp进行交互是个很好的选择。
假设你运行的是CHROME浏览器,则官网下载扩展程序的链接地址(需要VPNFQ):
https://chrome.google.com/webstore/detail/nkbihfbeogaeaoehlefnkodbefgpgknn
或者从百度云盘获取:
链接:https://pan.baidu.com/s/1N0oH5AzbLqU0B3YIwNSvjQ 密码:77sl
在CHROME浏览器地址输入:chrome://extensions/
【MetaMask官网】https://metamask.io/#how-it-works
(8)安装 lite-server 【可选】
【定义】lite-server 是轻量级的,仅适用于开发 的 node 服务器, 它仅支持 web app。 它能够为你打开浏览器, 当你的html或是JavaScript文件变化时,它会识别到并自动帮你刷新浏览器, 还能使用套接字自动注入变化的CSS, 当路由没有被找到时,它将自动后退页面。
安装与使用
以下是被推荐的安装lite-server的方式:
$ npm install lite-server --save-dev
在你的项目中的 package.json 文件中添加一个 “script” 入口:
Inside package.json… “scripts”: {
“dev”: “lite-server” },
有了上面的script 入口, 你就可以通过以下命令来启动 lite-server 了:
$ npm run dev