在CentOS7.9上搭建以太坊私链

Posted sanqima

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在CentOS7.9上搭建以太坊私链相关的知识,希望对你有一定的参考价值。

    为了方便了解以太坊的操作流程,故在CentOS7上搭建以太坊的私链。下面,介绍在CentOS7.9 x64上部署以太坊的私链。
    常用的以太坊源码是用Go语言编写的,所以要安装Go。这里选择Go 1.15.6。

1、搭建Go软件环境

    安装方法,请参考这篇文章:
https://blog.csdn.net/sanqima/article/details/113623784

2、设置Go访问代理

go env -w GOPROXY=https://goproxy.cn,direct

3、设置CentOS的镜像源

    将CentOS的镜像源设置为阿里云,具体请参考这篇文章:
https://blog.csdn.net/sanqima/article/details/117634934

4、安装工具软件

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

5、下载以太坊源码(Go Ethereum)

5.1 下载源码并编译

    这里选择 Go Ethereum v1.9.25
    下载地址: https://github.com/ethereum/go-ethereum/archive/refs/tags/v1.9.25.tar.gz

    将go-ethereum-1.9.25.tar.gz存放到如下目录:
/home/levent/myProject/unit01/ethBase

    依次使用如下命令:

cd /home/levent/myProject/unit01/ethBase
sudo tar -zxvf go-ethereum-1.9.25.tar.gz
cd go-ethereum-1.9.25
make all

5.2 设置geth环境

    a) 打开/etc/profile

vim /etc/profile

    b) 在/etc/profile里,添加如下语句:

export GOROOT=/usr/local/go
export GOPATH=/usr/local/gocode
export ETH_Base=/home/levent/myProject/unit01/ethBase/go-ethereum-1.9.25
export PATH=$PATH:$GOROOT/bin:$GPPATH/bin:${ETH_Base}/build/bin

    c) 使能profile

source /etc/profile

    d) 查看geth的版本信息

geth version

    效果如下:

图(1) 查看geth的版本信息

    若可以查看geth的版本信息,则说明geth环境配置成功。

7、升级cmake到3.x

//卸载旧版本的cmake
yum remove cmake

//安装cmake 3.19.8
wget -c https://github.com/Kitware/CMake/releases/download/v3.19.8/cmake-3.19.8.tar.gz
sudo tar -zxvf cmake-3.19.8.tar.gz
cd cmake-3.19.8
./bootstrap && make && make install

8、启动网络时间同步

systemctl enable ntpd

systemctl start ntpd

9、关闭防火墙

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

systemctl stop firewalld

10、设置ETH环境

    a) 在/home/levent/myProject/unit01/ethBase里新建一个文件夹名称为ethdata

cd /home/levent/myProject/unit01/ethBase
mkdir ethdata
cd ethdata
mkdir db
touch gensis.json 

其目录结构如下:

图(2) ethdata的目录结构

    gensis.json的内容如下:

{
  "nonce": "0x0000000000000042",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

  "extraData": "0x00",
  "gasLimit": "0x80000000",
  "difficulty": "0x400",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x1d756B49b5401d9713bEA016bcC7cC09E1259A5f",
  "alloc": {},

  "config": {

    "chainId": 15,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0

  }

}

    b) 初始化

cd /home/levent/myProject/unit01/ethBase/ethdata

geth --datadir "./db" init gensis.json

    初始化之后,会生成db/geth、db/keystore等文件夹; 其中,db/geth/chaindata中存放的是区块数据,db/keystore中存放的是账户数据。

    c)启动私有链

cd /home/levent/myProject/unit01/ethBase/ethdata

geth --datadir "./db" --nodiscover console 2>>geth.log

    d) 创建用户

//创建3个用户
personal.newAccount("password1")
personal.newAccount("password2")
personal.newAccount("password3")

//查看用户
eth.accounts

//查看用户1的余额
eth.getBalance(eth.accounts[0])

//查看用户2的余额
eth.getBalance(eth.accounts[1])

//查看用户3的余额
eth.getBalance(eth.accounts[2])

    用户的公钥文件保存在 ethdata/db/keystore里

ls /home/levent/myProject/unit01/ethBase/ethdata/db/keystore

    e) 开启挖矿

//设置挖矿奖励的地址,选择第一个创建的用户
miner.setEtherbase(eth.accounts[0])

//查看挖矿地址
eth.coinbase

//开启挖矿
miner.start()

    f) 停止挖矿

miner.stop()

以上是关于在CentOS7.9上搭建以太坊私链的主要内容,如果未能解决你的问题,请参考以下文章

以太坊私链搭建——genesis.json字段解读

geth控制台操控以太坊私链挖矿

搭建以太坊私链完整版

搭建多节点以太坊私链 10分钟搞定(超简洁)

区块链学习--win10下构建以太坊私链

问题以太坊私链连接钱包报错解决汇总