在CENTOS7上入门Ethereum区块链(1):实验前的准备工作

参考文章:搭建顺序及发布合约服务流程如下

1:在CENTOS7上入门Ethereum区块链(1):Ethereum搭建篇

2:在CENTOS7上入门Ethereum区块链(2):Ethereum挖矿转账初体验

3:在CENTOS7上入门Ethereum区块链(3):实验前的准备工作

4:在CENTOS7上入门Ethereum区块链(5): 实验一--在两台主机上分别部署eth rpc与truffle合约服务

5:在CENTOS7上入门Ethereum区块链(6):实验二--对外发布智能合约服务

ps:本机省略centos7网络环境搭建,直接从eth开始。(博主客

二、Ethereum搭建篇(环境搭建非常重要,预填后面探索过程中的许多深坑!)

# Ethereum大家都知道是以太坊,但读出口估计大家和我一样懵逼。我留意了下网站视频中的读法,大家可以勉强读作:伊瑟琳。

# 安装好虚机后,更新centos服务器并下载git、wget、vim、gcc-c++、ntp组件、nodejs以及添加epel第三方安装源。本步骤非常重要,可以节约大家在后续安装Ethereum以及开放框架时经常出错而到处摸索的时间。简要介绍下各个工具的说明:

 

# git、wget:安装相关的组件,下载安装各类开源代码与工具的利器;

# vim:文本编辑工具,取代vi;

# gcc-c++:c/c++编译工具,用于golang下部分c库的编译以及truffle组件的编译

# ntp:网络时钟同步组件;Ethereum的rpc网络需要时间同步;

# nodejs:ethereum前端开发JavaScript包管理软件

# epel:网络第三方的linux安装包源

 

yum update -y && yum install git wget bzip2 vim gcc-c++ ntp epel-release nodejs cmake -y

 

# 下载最新golang(当前最新版本为1.9)

wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz

# 解压golang并将工作目录移动到/usr/local/go

 
  1. tar zxvf go1.9.linux-amd64.tar.gz

  2. mv go /usr/local/

# 配置GOROOT和PATH

 
  1. echo "export GOROOT=/usr/local/go" >> /etc/profile

  2. echo "export PATH=$PATH:/usr/local/go/bin" >> /etc/profile

  3. source /etc/profile

# 克隆并编译go-ethereum

 
  1. git clone https://github.com/ethereum/go-ethereum.git

  2. cd go-ethereum

  3. make all

#创建完毕后在path中入geth路径

 

 
  1. echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile

  2. source /etc/profile

# 安装cmake:智能合约编译solc需cmake编译

# 本来要用yum一起安装cmake的,但yum与epel源中只有2.8.x版本的cmake,而智能合约编译器solc的安装需要3.0.x以上的cmake版本。故只能去官网独立安装。

# 下载cmake最新版本,登录https://cmake.org/download/,找到最新版本下载地址

 

 

cd && wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz


# 解压并编译并安装

 

 

 
  1. tar -xzvf cmake-3.9.2.tar.gz

  2. cd cmaker-3.9.2

  3. ./bootstrap && make && makeinstall

 

# 启动网络时间同步

 
  1. systemctl enable ntpd

  2. systemctl start ntpd

 

 

# 另外geth会用到8078和30303端口,放开防火墙端口 8078与30303

# 开启防火墙

systemctl start firewalld

# 放开端口

 firewall-cmd --zone=public --add-port=8087/tcp --permanent

firewall-cmd --zone=public --add-port=30303/tcp --permanent

 

  1. cd

  2. vim genesis.json

  3. # 输入以下内容,然后存盘退出

  4. {

  5. "nonce": "0x0000000000000042",

  6. "timestamp": "0x00",

  7. "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

  8. "extraData": "0x00",

  9. "gasLimit": "0x80000000",

  10. "difficulty": "0x400",

  11. "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

  12. "coinbase": "0x2D356ee3F5b8718d8690AFCD31Fe2CB5E602677e",

  13. "alloc": {},

  14. "config": {

  15. "chainId": 15,

  16. "homesteadBlock": 0,

  17. "eip155Block": 0,

  18. "eip158Block": 0

  19. }

  20. }

# 创建私有网络的gethereum

 

 

cd root & geth --datadir "/home/ethbase/chain" init genesis.json

 

# 但不知道为什么,geth还是我行我素的在 /root/.ethereum/geth/chain下建立数据目录

# 研究了好久,妈的,终于搞清楚了,原来从网上copy回来的代码在word文档存放时会把“--”自动变成了“-“.;geth在错误指令下会执行默认的初始化创建工作。

# 所以在这里提醒下大家,很多指令参数都是两个减号而不是一个减号。这个错误有时候网络富文本编辑器会自动做转义,有时候整理到本地的word里面会自动做纠正。

# 大家在这个问题上一定要留神。否则会在这个坑里耽误不少时间。

# 更常用的是开发环境下的测试,可直接启动默认的geth开发环境,注意:双减号、2与>>之间没有空格

 

geth --dev console 2>> geth_dev_log


 

 

# 进入到console下其实就进入了Ethereum的JavaScript环境,我想大概这里就是伟大的EVM(以太坊虚机)了。

# 如果想关注在操作过程中的日志,可以另起一个SSH通过tail观察

 

tail -f geth_dev_log


 

 

# OK,如果出现上图的运行结果,说明gethereum的框架已经搭建完成,可以去喝杯奶茶庆祝下了!

阅读更多

更多精彩内容