咱们先来搭建环境
安装完CentOS7以后,我们下载git、wget、vim、gcc-c++、ntp组件、nodejs以及添加epel第三方安装源。
本步骤非常重要,可以节约大家在后续安装Ethereum以及开放框架时经常出错而到处摸索的时间。
简要介绍下各个工具的说明:
# ntp:网络时钟同步组件;Ethereum的rpc网络需要时间同步;
# nodejs:ethereum前端开发JavaScript包管理软件
yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y
下载最新golang(当前最新版本为1.11)
我的go语言版本为1.11
在下载该包时,是https下载,但是会出错原因是需要检查证书
解决方法:
如果使用 wget下载https开头的网址域名 时报错,你需要加上 --no-check-certificate (不检查证书)选项
wget --no-check-certificate https://storage.googleapis.com/golang/go1.11.linux-amd64.tar.gz
解压golang并将解压后的目录作为go语言安装目录
vi /etc/profile
在最后面加入,因为我的目录是/opt/golang/go
然后保存,进行刷新
source /etc/profile
我们在/opt下,进行下载代码,使目录为/opt/go-ethereum
git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make all
make以后在/etc/profile下,再在path中加入geth路径
export PATH=$PATH:/opt/go-ethereum/build/bin
然后保存,进行刷新
source /etc/profile
安装cmake:智能合约编译solc需cmake编译
本来要用yum一起安装cmake的,但yum与epel源中只有2.8.x版本的cmake,而智能合约编译器solc的安装需要3.0.x以上的cmake版本。故只能去官网独立安装。
下载cmake最新版本,登录https://cmake.org/download/,找到最新版本下载地址
在/opt下创建cmake目录,然后进去
cd /opt/cmake
wget https://cmake.org/files/v3.12/cmake-3.12.4-Linux-x86_64.tar.gz
解压后由于我们下载的这个包是编译好的包,我们直接进行将该目录指定到path变量上就可以
tar -xzvf cmake-3.12.4-Linux-x86_64.tar.gz
我们看到
说明确实是已经编译好的包,我们需要将该bin目录指定到环境变量上
export PATH=$PATH:/opt/cmake/cmake-3.12.4-Linux-x86_64/bin
source /etc/profile
另外geth会用到8078和30303端口,放开防火墙端口 8078与30303
其实我们就直接关闭了防火墙,并且开机禁用防火墙
systemctl stop firewalld
systemctl disable firewalld
我们在opt下创建我们的文件夹
mkdir /opt/mychain
然后在其中
配置geth私有的创世纪的配置文件:genesis.json,该文件描述了如何初始化一个私有的gethereum
vim genesis.json
# 输入以下内容,然后存盘退出
{
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x80000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",
"alloc": {},
"config": {
"chainId": 15,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
创建私有网络的gethereum,我们在/opt/mychain下创建data目录,用于存放数据,这就是初始化
mkdir /opt/mychain/data
geth --datadir "/opt/mychain/data" init genesis.json
初始化完成以后我们就可以启动了
我们常用的启动的方法是可直接启动默认的geth开发环境,注意:双减号、2与>>之间没有空格
geth --dev console 2>> geth_dev_log
进入到console下其实就进入了Ethereum的JavaScript环境,这里就是伟大的EVM(以太坊虚机)了。
如果想关注在操作过程中的日志,可以另起一个SSH通过tail观察
cd /opt/mychain
tail -f geth_dev_log
OK,如果出现上图的运行结果,说明gethereum的框架已经顺利搭建完成。