当前位置:   article > 正文

区块链搭建和运维1

区块链搭建和运维1

区块链的搭建与运维

任务一:搭建单群组联盟链

(1)依赖检查

开发部署工具 build_chain.sh 脚本依赖于以下库 openssl:用于在构建节点时生成证书 wget:用于下载开发部署工具 虚拟机已经提前预装了 openssl 和 wget,可在终端输入命令查看 openssl 和 wget 的 版本。

查看 openssl、 wget 版本信息

openssl veriosn
wget vcersion
  • 1
  • 2

下载工具:在终端输入如下命令,创建 fisco 目录并进入,在 fisco 目录下,输入如下面命令,下载开发部署工具 build_chain.sh

mkdir fisco && cd fisco

wget http://res.zhonghui.vip/blockchain/fiscobcos/01/resource/build_chain.sh
  • 1
  • 2
  • 3

输入以下命令,修改脚本运行权限,权限修改成功后,再次输入 ‘ls’ 命令,可看到文件 名变为绿色

chmod u+x build_chain.sh
  • 1

(2)检查端口占用

1.输入如下命令,检查 p2p 端口(30300-30303)是否占用,若端口没有被占用,则不 会输出任何信息

2.输入如下命令,检查 channel 端口(20200-20203)是否占用,若端口没有被占用, 则不会输出任何信息

3.输入如下命令,检查 rpc 端口(8545-8548)是否占用,若端口没有被占用,则不会输 出任何信息

lsof -i:30300-30303

lsof -i:20200-20203

lsof -i:8545-8548
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

(3)构建单群组网络节点

使用开发部署工具在本地构建单群组4节点的区块链网络,命令如下:

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
  • 1

在这里插入图片描述

参数说明:

-l:用于指定要生成的链的 IP 列表以及每个 IP 下的节点数,以逗号分隔。

-p:分别指定节点的 p2p, channel, jsonrpc 端口,同一个 IP 下的不同节点所使 用端口从起始端口递增

(4)查看节点连接数

tail -f nodes/127.0.0.1/node*/log/log* | grep connected
  • 1

在这里插入图片描述

(5)查看节点共识

输入以下命令,可查看节点 node0 的共识状态,正常情况下,终端会不断输出 “[SEALER]++++++++++++++++” 信息,表示节点共识正常。共识信息会不断打印,可 按 “ctrl + c” 退出。

tail -f nodes/127.0.0.1/node*/log/log* | grep +++
  • 1

在这里插入图片描述

任务二:搭建星型拓扑网络联盟链

在这里插入图片描述

(1)生成星型拓扑网络配置文件

cat > ipconf << EOF
127.0.0.1:1 agencyA 1,2,3
127.0.0.1:1 agencyB 1
127.0.0.1:1 agencyC 2
127.0.0.1:1 agencyD 3
EOF

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

参数说明

ip:num:物理机 IP 以及物理机上的节点数目

agency_name: 机构名称

group_list: 节点所属的群组列表,不同群组以逗号分隔

输入如下命令查看配置文件的内容是否正确

cat ipconf
  • 1

在这里插入图片描述

(2) 构建星型拓扑网络节点

启动节点并查看节点运行状态 、启动星型拓扑网络节点 输入如下命令并启动所有节点:

bash build_chain.sh -f ipconf -p 30300,20200,8545

bash  nodes/127.0.0.1/start_all.sh
  • 1
  • 2
  • 3

在这里插入图片描述

(3)检查节点进程

ps -ef | grep -v grep | grep fisco-bcos
  • 1

(4) 查看节点连接数

tail -f nodes/127.0.0.1/node*/log/log* | grep connected
  • 1

(5)查看共识

tail -f nodes/127.0.0.1/node*/log/log* | grep +++
  • 1

任务三:搭建并行多组网络联盟链

在这里插入图片描述

构建并行多组网络节点

说明:在并行多组网络的构建场景中,我们为演示并行多组的扩容流程,将先构建单群 组四节点网络,随后将群组2加入到区块链中,当然,并行多组的构建也可以采用星型 拓扑组网的构建方式。

(1)构建单群组四节点区块链网络

首先,输入如下命令,构建一个单群组四节点的网络

bash build_chain.sh -l 127.0.0.1:4 -o multi_nodes -p
30300,20200,8545
  • 1
  • 2

在这里插入图片描述

参数说明:

-l:用于指定要生成的链的 IP 列表以及每个 IP 下的节点数,以逗号分隔。

-o:指定生成的配置所在的目录,默认为nodes。

-p:分别指定节点的 p2p, channel, jsonrpc 端口,同一个 IP 下的不同节点所使 用端口从起始端口递增。

(2)启动并检查

bash multi_nodes/127.0.0.1/start_all.sh

ps -ef | grep -v grep | grep fisco-bcos

tail -f multi_nodes/127.0.0.1/node0/log/* | grep +++
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

(3)将群组2加入区块链

输入如下命令,可查看节点 node0 目录下的群组配置文件 group.1.genesis 和 group.1.ini

ls multi_nodes/127.0.0.1/node0/conf/
  • 1

由于在并行多组区块链中,每个群组的 ini 文件文件相同, 但 genesisi 文件中的 [group.id] 不同,为群组号,所以我们需要拷贝群组1的配置文件(genesis 和 ini 文 件),并修改拷贝后 genesis 文件。

为减少路径输入引起的麻烦和错误,我们先进入节点目录:

cd multi_nodes/127.0.0.1

  • 1
  • 2

拷贝节点 node0 中的群组1的配置文件 group.1.genesis,并将其命名为 group.2.genesis

cp node0/conf/group.1.genesis node0/conf/group.2.genesis
  • 1

输入如下命令验证拷贝是否成功,如出现 group.2.genesis 文件则说明成功

ls node0/conf/

  • 1
  • 2

接着拷贝节点 node0 中的群组1的配置文件 group.1.ini ,并将其命名为 group.2.ini

cp node0/conf/group.1.ini node0/conf/group.2.ini

  • 1
  • 2

输入如下命令验证拷贝是否成功,如出现 group.2.ini 文件则说明成功

ls node0/conf/
  • 1

在这里插入图片描述

输入如下命令,修改 group.2.genesis 文件中的 id 参数

sed -i "s/id=1/id=2/g" node0/conf/group.2.genesis
  • 1

输入如下命令,验证是否修改成功

cat node0/conf/group.2.genesis | grep "id"
  • 1

在这里插入图片描述

自此,节点 node0 的配置已经完成,接下来我们依次将群组2的配置文件拷贝到 其余节点

cp node0/conf/group.2.genesis node1/conf/group.2.genesis

cp node0/conf/group.2.ini node1/conf/group.2.ini

  • 1
  • 2
  • 3
  • 4

输入如下命令检查是否拷贝成功,若出现 group.2.genesis 和 group.2.ini 文件表示拷 贝成功

ls node1/conf/

  • 1
  • 2

重启节点并查看节点运行状态

(3) 重启节点

bash stop_all.sh && bash start_all.sh
  • 1

(4) 查看节点共识情况

tail -f node*/log/log* | grep +++
  • 1

在这里插入图片描述

任务四:搭建国密版联盟链

(1)构建区块链网络节点

使用开发部署工具在本地构建国密版单群组4节点的区块链网络,命令如下:

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G
  • 1

参数说明: -l:用于指定要生成的链的 IP 列表以及每个 IP 下的节点数,以逗号分隔。 -p:分别指定节点的 p2p, channel, jsonrpc 端口,同一个 IP 下的不同节点所使 用端口从起始端口递增。 -g:搭建国密版本的链 -G:设置 chain.sm_crypto_channel=true ,表示节点与SDK连接使用国密SSL

(2) 比较证书模式

输入如下命令,查看国密版证书文件:

ls nodes/gmcert

  • 1
  • 2

仔细观察,国密版 FISCO BCOS 在 nodes 目录下比标准版多了 gmcert 目录,此目录 为国密版证书文件,包括国密版证书和私钥等文件。国密版 FISCO BCOS 采用双证书 模式,分别为加密证书和签名证书,当然国密版 FISCO BCOS 还有其他特性,如SSL链 接、签名验证、消息摘要算法等

(3)启动节点并查看节点运行状态

启动国密版网络节点 输入如下命令,运行所有节点

bash nodes/127.0.0.1/start_all.sh
  • 1

在这里插入图片描述

查看节点进程,正常情况下应该有 4 个节点进程

ps -ef | grep -v grep | grep fisco-bcos
  • 1

查看节点共识 输入如下命令,查看节点 node0 的共识状态,出现 “[SEALER]++++++++++++++++” 信 息表示共识正常。

tail -f nodes/127.0.0.1/node0/log/* | grep +++
  • 1

在这里插入图片描述

任务五:命令交互控制台使用

(1)生成并行多组网络配置文件

在终端输入如下命令,生成并行多组网络的配置文件 ipconf,该文件将用于构并 行多组的网络节点(注意参数之间的空格)

cat > ipconf << EOF
127.0.0.1:4 agency 1,2
EOF
  • 1
  • 2
  • 3

(2)构建并行多组网络节点

使用开发部署工具构建并行多组网络节点,命令如下:

bash build_chain.sh -f ipconf -p 30300,20200,8545
  • 1

(3)启动节点并查看节点运行状态

bash nodes/127.0.0.1/start_all.sh

ps -ef |grep -v grep | grep fisco-bcos

tail -f nodes/127.0.0.1/node*/log/log* |grep +++
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

(4)配置控制台

控制台是基于 Java SDK 实现的,虚拟机已经预装了 Java,输入如下命令检查 Java 版 本。

java --version
  • 1

(5)下载控制台

在终端输入如下命令,下载控制台压缩包

wget http://res.zhonghui.vip/blockchain/fiscobcos/01/resource/console.tar.gz

tar -zxf console.tar.gz
  • 1
  • 2
  • 3

在终端输入如下命令,查看控制台目录结构,若出现下图(部分截图)结构,则说 明解压成功

tree ./console
  • 1

(6)配置控制台证书和配置文件

cp nodes/127.0.0.1/sdk/* console/conf/

cp console/conf/config-example.toml console/conf/config.toml
  • 1
  • 2
  • 3

(7)启动控制台

输入如下命令,启动控制台,成功启动控制台后,会出现下图标志

bash console/start.sh
  • 1

在这里插入图片描述

(8)使用控制台

1.查看节点版本
getNodeVersion
  • 1

在这里插入图片描述

2.部署合约
deploy HelloWorld.sol
  • 1

在这里插入图片描述

3.调用合约
call HelloWorld.sol 0x3b890219b503a15634ed539aaf651e7c31537974 get
  • 1

在这里插入图片描述

4.查看交易回执
getTransactionReceipt 0x9a7d2fef9d17c8d49349c6f31dd9576b5c9ba8433a95e93143093ce523c5a93c
  • 1

在这里插入图片描述

输入如下命令,查看之前调用 HelloWorld 合约 set 接口的交易回执。 其中第一个参数为交易hash,由之前调用合约set接口时获得,根据实际情况填写。

除了交易索引、区块高度、发送和接收地址,交易回执还包括以下信息:

status:执行结果,1表示成功,0表示失败

gasUsed:已消耗的Gas数量

transactionHash:交易Hash …

5.查看当前区块高度

输入以下命令,查看当前的区块高度。

getBlockNumber
  • 1

在这里插入图片描述

6.查看总交易数

输入如下命令,可查看区块链中的总交易数,不改变合约状态的方法不会产生交易,比 如调用 get 接口。

getTotalTransactionCount
  • 1

在这里插入图片描述

7.查看区块信息

输入以下命令,可根据区块高度查看区块信息。

getBlockByNumber 4
  • 1

在这里插入图片描述

8.查看区块hash

输入如下命令,查看区块高度为 4 的区块 hash。

getBlockHashByNumber 4
  • 1

在这里插入图片描述

9.查看区块头信息

输入如下命令,根据区块 hash 查看区块头信息。

getBlockHeaderByHash 0x61fa7091b8d5289e2a4d7c0b8a5258f2aad53a187d56833b3f66c8ccf90ecfed
  • 1

在这里插入图片描述

10.切换群组

输入如下命令,切换群组。

switch 2
  • 1

]

7.查看区块信息

输入以下命令,可根据区块高度查看区块信息。

getBlockByNumber 4
  • 1

[外链图片转存中…(img-WFR1jw6j-1722769941444)]

8.查看区块hash

输入如下命令,查看区块高度为 4 的区块 hash。

getBlockHashByNumber 4
  • 1

[外链图片转存中…(img-K2HQpAZM-1722769941444)]

9.查看区块头信息

输入如下命令,根据区块 hash 查看区块头信息。

getBlockHeaderByHash 0x61fa7091b8d5289e2a4d7c0b8a5258f2aad53a187d56833b3f66c8ccf90ecfed
  • 1

[外链图片转存中…(img-pMLc1d29-1722769941444)]

10.切换群组

输入如下命令,切换群组。

switch 2
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/946779
推荐阅读
相关标签
  

闽ICP备14008679号