在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搭建篇;但是在创建区块文件的json要指定目录“在go-ethereum-1.4.12/build/bin目录下创建init.json”

参考流程三

# 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

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
# 克隆并编译go-ethereum

git clone https://github.com/ethereum/go-ethereum.git
cd go-ethereum
make all
#创建完毕后在path中入geth路径
echo "export PATH=$PATH:/root/go-ethereum/build/bin" >> /etc/profile
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

# 解压并编译并安装
tar -xzvf cmake-3.9.2.tar.gz
cd cmaker-3.9.2
./bootstrap && make && makeinstall
# 启动网络时间同步

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

# 开启防火墙

systemctl start firewalld
# 放开端口

三、------------------------下面是自己另外参考博客完成初始化启动:地址

5. 创世区块文件的准备;具体的json文本还是用流程二的文本,否则会报缺失

扫描二维码关注公众号,回复: 3895874 查看本文章

在go-ethereum-1.4.12/build/bin目录下创建init.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
  }
}

6. 创世区块初始化

在go-ethereum-1.4.12/build/bin目录下执行以下命令以完成创世区块的创建:

./geth  --datadir "/app/chain" init init.json

注意:上面命令中--datadir后面的 /app/chain可以任意指定,无需提前创建,但是一定要保证有足够的磁盘空间。init.json是我们在上一步创建的文件,注意文件名要一致。

执行完成后,将会出现类似以下信息:

I0927 14:31:07.374864 ethdb/database.go:82] Alloted 16MB cache and 16 file handles to /app/chain/chaindata
I0927 14:31:07.402544 cmd/geth/main.go:299] successfully wrote genesis block and/or chain rule set: 244469eaad4c9c7a245fa4962a6ed7346e9925317f222b580e7f3113f9722657

我们的执行结果如下:

这样,创世区块就初始化完成了,下面将要进行最后一步,以太坊的启动。

7. 以太坊启动

仍然在go-ethereum-1.4.12/build/bin目录下执行,执行的命令是:

./geth --rpc --rpccorsdomain "*" --datadir "/app/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console

注意:上面命令中--datadir 后的"/app/chain"要跟我们上一步的--datadir 参数一致。

执行完此命令后将会出现类似以下信息:

I0927 14:32:17.538013 ethdb/database.go:82] Alloted 128MB cache and 1024 file handles to /app/chain/chaindata
I0927 14:32:17.554665 ethdb/database.go:169] closed db:/app/chain/chaindata
I0927 14:32:17.554722 cmd/utils/flags.go:592] WARNING: No etherbase set and no accounts found as default
I0927 14:32:17.555722 ethdb/database.go:82] Alloted 128MB cache and 1024 file handles to /app/chain/chaindata
I0927 14:32:17.575639 eth/backend.go:621] upgrading db log bloom bins
I0927 14:32:17.575767 eth/backend.go:629] upgrade completed in 138.089µs
I0927 14:32:17.575802 ethdb/database.go:82] Alloted 16MB cache and 16 file handles to /app/chain/dapp
I0927 14:32:17.580530 eth/backend.go:172] Protocol Versions: [63 62], Network Id: 100000
I0927 14:32:17.580584 eth/backend.go:201] Blockchain DB Version: 3
I0927 14:32:17.581103 core/blockchain.go:206] Last header: #0 [244469ea…] TD=0
I0927 14:32:17.581122 core/blockchain.go:207] Last block: #0 [244469ea…] TD=0
I0927 14:32:17.581131 core/blockchain.go:208] Fast block: #0 [244469ea…] TD=0
I0927 14:32:17.582008 p2p/server.go:313] Starting Server
I0927 14:32:19.644094 p2p/discover/udp.go:217] Listening, enode://e1f793e06289097df035e55d68f7667658630b48c1e7fd70b5dee7445db5bec9d808b6f329b774954e7800d3498a2e6307aa989b53a0758eed8f3d7cd5d584e4@[::]:30303
I0927 14:32:19.650870 node/node.go:366] HTTP endpoint opened: http://localhost:8545
I0927 14:32:19.652471 p2p/server.go:556] Listening on [::]:30303
I0927 14:32:19.652892 node/node.go:296] IPC endpoint opened: /app/chain/geth.ipc
Welcome to the Geth JavaScript console!

一直到出现Welcome to the Geth JavaScript console! 句话,并自动进入geth的命令行则说明以太坊私有链安装成功了。

注意:以上命令中 --datadir参数后面的"/app/chain"要和上一步保持一致。

我们的结果如下:

到目前为止,我们的私有链就搭建成功了。

下一次,我们会介绍账户创建,挖矿,转账等操作。搭建的最后一个步骤中 使用了./geth --rpc --rpccorsdomain "*" --datadir "/app/chain" --port "30303" --rpcapi "db,eth,net,web3" --networkid 100000 console 这个命令进行了以太坊的启动,并最终进入了命令行的模式;如果终端由于某种原因关闭,以太坊的进程也就自动消失了,我们可以再次运行以上命令,再次启动以太坊并再次进行命令行的模式

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

猜你喜欢

转载自blog.csdn.net/qq_32447321/article/details/81702860
今日推荐