您的位置:首页 > 其它

搭建以太坊私有链和部署智能合约开发环境

2017-03-19 21:07 666 查看

前言

搭建以太坊私有链和学习智能合约去年九月份做过一次,但是因为其他事情暂时搁下了,最近准备开始学习以太坊智能合约开发,以后会在论坛上发表一系列的相关博客,这次搭建解决了上次没完全解决的几个坑,相信很多用过ubuntu14.04的同学都应该碰到过。这次教程会非常详细,欢迎大家指导和提问题。

以太坊区块链我认为就像苹果手机和其他智能手机的关系,它绝对进行了一次区块链的革命,他最重要的思想我觉得是账户模型和执行智能合约的虚拟机。昨天在微信学习群里看到有前辈说以太坊正在考虑UTXO模型,我当时觉得很无解,但是鉴于是前辈的原因我没有争论,欢迎有想法的同学在下面讨论。

下面开始搭建以太坊私有链以及部署智能合约开发环境。

准备工具:ubuntu14.04LTS vim git

安装以太坊客户端

以太坊客户端有很多版本,我安装的是Go-ethereum,因为对geth的命令解释的比较详细。

执行命令

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 --help


会出现geth的各种操作命令说明,包括以太坊、账户、网络配置、虚拟机和GAS PRICE。

安装成功后直接启动,就可以链接到公有链上,下面开始建立自己的私有链。

sudo apt-get install vim -y
mkdir eth
cd eth
vim piccgenesis.json


把以下参数的配置复制进来。

{
"nonce":"0x0000000000000042",
"mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x4000",
"alloc": {},
"coinbase":"0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "SecBroBlock",
"gasLimit":"0x0000ffff"
}


解释一下区块里面的参数,从参考文献里直接截图过来的,大家如果觉得不是太准确,可以去参考官方文档,都在下面的参考文献中。



下面开始初始化和启动节点

启动私有链节点所需要的参数



切换到eth目录中

获取当前目录的路径

basepath=$(cd `dirname $0`; pwd)


创建数据存放的目录路径和初始化创世块

geth  --datadir "$basepath/chain" init piccgenesis.json


启动私有链,secbro etherum是区块链名字随便取,我直接复制的参考文档里的,但是自己的路径要改,-dev是开发者模式。

geth --identity "secbro etherum" --rpc --rpccorsdomain "*" --datadir "/home/csy/eth/chain" --port "30303" --rpcapi "db,eth,net,web3" -- networkid 95518 console --dev




看到以上输出就是成功了,然后打开新终端输入命令

geth --dev console 2>> file_to_log_output


可以看到以太坊节点启动的画面,在这里面就可以进行账户的创建,挖矿,交易了。这个我就不演示了,放在下一篇展示,不然我下一篇没东西写怎么办。。。



安装solc

solc是solidity的编译器,是基于nodejs开发的,所以依赖nodejs环境,首先搭建nodejs开发环境,ubuntu上终端直接安装的nodejs环境特别低,我是直接去官网上下载源码编译安装。https://nodejs.org/en/download/文件下载后解压,输入命令

cd /home/csy/node-v6.10.0
./configure
make (一个小时。。。有更好的办法的欢迎大家分享)
sudo make install


此时安装好的nodejs是自带npm的,nodejs –version是6.10.0 npm–version是3.10.10。

然后开始安装solc了,前方有坑,红色警戒。

如果你是直接执行

sudo npm -g install solc
sudo npm -g install solc-cli


或者

sudo npm -g install solc solc-cli --save-dev


那么就进坑了。。。就会出现下面这种情况



对,就是一片红色,其中有一句话是图片里面有的但我还是要把它写出来纪念一下。

solc-cli@^0.3.0 requires a peer of solc@^0.3.5 but none was installed.

我就不明白了有什么软件是和命令行版本可以冲突的。。。

一开始我以为是nodejs和npm版本太高,还不稳定,于是我又重新下了一个稳定的版本,又make了一遍。。。结果还是不行,后来看了solc的官方文档都没提这档子事。。。再次体会到绝望。。。

突然想起了一个好办法,它说需要solc@^0.3.5的,那我指定安装这个版本的不就行了嘛,然后执行命令

sudo npm -g install solc@^0.3.5
solcjs --version
0.3.6!!!


执行

sudo npm -g install solc-cli


solc-cli@^0.3.0 requires a peer of solc@^0.3.5 but none was installed.

扎心啊老铁!!!

正确命令来了

sudo npm -g install solc@^0.3.5 solc-cli --save-dev






一片绿色,这时候我真想下去买瓶牛奶两个牛肉包子对自己好点。

如果我们需要在geth控制台使用solc编译器,那么我们仍然需要安装solc二进制包。输入以下命令安装solc二进制包8:

sudo add-apt-repository ppa:ethereum/ethereum -y
sudo apt-get update
sudo apt-get install solc


安装testrpc

testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试特别方便快捷,当合约在testrpc中测试通过后,再部署到geth中去。

sudo npm install -g ethereumjs-testrpc




错误,是因为我的新环境没有安装git

sudo apt-get install git build-essential -y
sudo npm install -g ethereumjs-testrpc
testrpc


输入testrpc之后出现以下输出就是正确的。



安装truffle

truffle是本地编译部署智能合约的工具,这个在我后面的博客使用时会详细介绍。

sudo npm install -g truffle
truffle version
Truffle v3.1.2


至此所有的开发工具都安装完毕。

总结

首先要感谢以下参考文献的作者,有这么多前辈的总结使我的搭建过程变得简单了很多,也感谢自己坚持的填坑才把solc和testrpc成功安装部署,接下来的时间里我会以智能合约开发为一个系列经常发表自己学习的心得和新的发现,欢迎大家指导。

ps: make的那两个小时王者荣耀从黄金三掉到黄金四,求带。。。

参考文档

区块链开发(一)搭建基于以太坊go-ethereum的私有链环境

Ubuntu系统搭建以太坊开发平台过程

https://github.com/ethereum/go-ethereum

https://www.npmjs.com/package/solc

https://github.com/trufflesuite/truffle

https://github.com/ethereumjs/testrpc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: