(一)、centos7系统搭建Ethereum

时间:2024-03-30 13:17:49

    以太坊(英语:Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(“以太虚拟机” Ethereum Virtual Machine)来处理点对点合约。

    以下以centos7系统来搭建Ethereum环境,已便学习区块链知识

1.   下载依赖工具

安装好虚机后,更新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

(一)、centos7系统搭建Ethereum

 

2.   下载golang版本为

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

(一)、centos7系统搭建Ethereum

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

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

mv go /usr/local/  

配置GOROOT和PATH

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

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

source /etc/profile  

(一)、centos7系统搭建Ethereum

(一)、centos7系统搭建Ethereum

验证

go version

(一)、centos7系统搭建Ethereum

 

3.   克隆并编译go-ethereum

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

cd go-ethereum  

make all  

(一)、centos7系统搭建Ethereum

 

如果make all报如下错误:

(一)、centos7系统搭建Ethereum

到go-ethereum/vendor/gopkg.in/olebedev/go-duktape.v3/api.go修改第
976行 int64 改成 uint64。

(一)、centos7系统搭建Ethereum

然后再重新执行

(一)、centos7系统搭建Ethereum

 

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

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

source /etc/profile  

(一)、centos7系统搭建Ethereum

验证:

geth version

(一)、centos7系统搭建Ethereum

4.   安装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  

(一)、centos7系统搭建Ethereum


解压并编译并安装

tar -xzvf cmake-3.9.2.tar.gz  

cd cmake-3.9.2  

./bootstrap && make && makeinstall  

(一)、centos7系统搭建Ethereum

5.   启动网络时间同步

systemctl enable ntpd  

systemctl start ntpd  

(一)、centos7系统搭建Ethereum

 

 

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

6.   开启防火墙

systemctl start firewalld  

(一)、centos7系统搭建Ethereum

7.   放开端口

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

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

(一)、centos7系统搭建Ethereum

8.   配置geth私有的创世纪的配置文件:genesis.json,该文件描述了如何初始化一个私有的gethereum

1. cd  

2. vim genesis.json  

cd 

vim genesis.json 

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

  "nonce":"0x0000000000000042", 

  "timestamp": "0x00", 

  "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000", 

  "extraData": "0x00", 

  "gasLimit":"0x80000000", 

  "difficulty":"0x400", 

  "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000", 

  "coinbase": "0xa0B9171F2a60Bd1812fb0806ece01198Bd8e4A35", 

  "alloc": {}, 

  "config": { 

    "chainId": 15, 

    "homesteadBlock": 0, 

    "eip155Block": 0, 

    "eip158Block": 0 

  } 

}  

 

 

创建私有网络的gethereum

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

(一)、centos7系统搭建Ethereum

9.   启动geth

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

geth --dev console 2>> geth_dev_log  

进入到console下其实就进入了Ethereum的JavaScript环境。

 (一)、centos7系统搭建Ethereum


注,如果执行geth --dev console 2会报如下错误,原因是以太坊执行miner.start返回null

(一)、centos7系统搭建Ethereum

解决方案:geth --identity "TestNode" --rpc --rpcport"8545" --datadir /opt/data/ --port "30303" --nodiscover--dev --dev.period 1 console>> geth_dev_log



 

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

1. tail -f geth_dev_log