2024-03-30
区块链学习笔记
00
请注意,本文编写于 385 天前,最后修改于 215 天前,其中某些信息可能已经过时。

目录

FISCO-BCOS 2.0 星型并行多组国密搭建教程
一、星型拓扑网络节点搭建
1.场景描述:
2.组网描述:
3.生成组网配置文件ipconf
4.构建星型拓扑网络节点
5.启动节点
6.检查节点进程
7.检查angency的节点共识
8.检查连接数
二、并行多组搭建
1.单群组四节点网络搭建
2.启动所有节点
3.检查共识、连接数以及进程
4.群组扩容
1)进入节点目录
2)拷贝group.1.genesis 文件为 group.2.genesis
3)拷贝group.1.ini为group.2.ini
4)修改group.2.genesis中的id
5)拷贝文件到其他节点
6)重启节点
7)查看共识
三、国密版 FISCO BCOS搭建
1.国密版与标准版 FISCO BCOS算法差异
2.SSL连接差异
3.国密版与标准版FISCO BCOS在数据结构上的差异
4.搭建国密版FISCO BCOS区块链节点
5.启动所有节点
6.查看证书
7.查看节点进程
8.查看节点共识

FISCO-BCOS 2.0 星型并行多组国密搭建教程


此教程将演示 FOSCO-BCOS的其他搭建方式
当然这些都是自己做的笔记👀
本教程将从以下几个顺序分别演示fisco-bcos不同的搭建方式:
1. 星型拓扑网络节点搭建
2. 并行多组网络节点搭建
3. 国密版FISCO BCOS搭建

这里已经安装好操作环境,如果没安装请参考 FISCO-BCOS 2.0 星型并行多组国密搭建教程
本文Linux系统全部以ubuntu-22.04.2-desktop-amd64为例

一、星型拓扑网络节点搭建

1.场景描述:

星型拓扑结构是区块链中常用的组网方式,区块链中运行多个机构节点,中心机构节点同属于多个群组,其他每家机构属于不同的群组,本节将使用开发部署工具搭建一个单机、4机构、3群组、8节点的 FISCO BCOS 联盟链,组网结构如图:

image.png

2.组网描述:

agencyA:在127.0.0.1上有两个节点,同时属于group1、group2和group3
agencyB:在127.0.0.1上有两个节点,同时属于group1
agencyC:在127.0.0.1上有两个节点,同时属于group2
agencyD:在127.0.0.1上有两个节点,同时属于group3

3.生成组网配置文件ipconf

注意参数之间的空格,不能有空行

shell
fisco-bcos@fiscobcos:~/fisco$ cat > ipconf << EOF > 127.0.0.1:2 agencyA 1,2,3 > 127.0.0.1:2 agencyB 1 > 127.0.0.1:2 agencyC 2 > 127.0.0.1:2 agencyD 3 > EOF

相关信息

组网配置文件内容的格式:
IP:NUM AgencyName GroupList
IP:NUM : 机器的IP地址以及该机器上的节点数
AgencyName : 机构名,用于指定使用的机构证书
GroupList : 改行生成的节点所属的组,若有多个群组,以 “,” 分割。

4.构建星型拓扑网络节点

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

输出以下All completed表示构建成功

shell
fisco-bcos@fiscobcos:~/fisco$ bash build_chain.sh -f ipconf -p 30300,20200,8545 [INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ... ################################################################################################################################################################# 100.0% build_chain.sh: 行 1644: [[: 50440597 12111170: 表达式中有语法错误(错误记号是 "12111170") ============================================================== Generating CA key... ============================================================== Generating keys and certificates ... Processing IP=127.0.0.1 Total=2 Agency=agencyA Groups=1,2,3 Processing IP=127.0.0.1 Total=2 Agency=agencyB Groups=1 Processing IP=127.0.0.1 Total=2 Agency=agencyC Groups=2 Processing IP=127.0.0.1 Total=2 Agency=agencyD Groups=3 ============================================================== Generating configuration files ... Processing IP=127.0.0.1 Total=2 Agency=agencyA Groups=1,2,3 Processing IP=127.0.0.1 Total=2 Agency=agencyB Groups=1 Processing IP=127.0.0.1 Total=2 Agency=agencyC Groups=2 Processing IP=127.0.0.1 Total=2 Agency=agencyD Groups=3 ============================================================== Group:1 has 4 nodes Group:2 has 4 nodes Group:3 has 4 nodes ============================================================== [INFO] IP List File : ipconf [INFO] Start Port : 30300 20200 8545 [INFO] Server IP : 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2 127.0.0.1:2 [INFO] Output Dir : /home/fisco-bcos/fisco/nodes [INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/ [INFO] RSA channel : true ============================================================== [INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console. e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f ============================================================== [INFO] All completed. Files in /home/fisco-bcos/fisco/nodes

注意

如果构建失败请检查ipconf文件里面的内容是否正确

5.启动节点

启动构建好的星型拓扑网络

shell
fisco-bcos@fiscobcos:~/fisco$ bash nodes/127.0.0.1/start_all.sh

输出以下内容表示启动成功,在这里能看到8个节点启动成功

shell
try to start node0 try to start node1 try to start node2 try to start node3 try to start node4 try to start node5 try to start node6 try to start node7 node2 start successfully node0 start successfully node7 start successfully node4 start successfully node3 start successfully node6 start successfully node5 start successfully node1 start successfully

注意

如果启动失败或者启动不了全部节点,请检查ipconf文件里面的内容是否正确,尝试分别启动各个节点
检查端口是否被占用lsof -i:端口号,进行查看,如果端口被占用,更换端口或 kill 占用端口的进程

6.检查节点进程

查看进程

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

正常情况下能够看见8个进程,如果没有请检查端口是否被占用

shell
fisco-b+ 3849 1 1 18:50 pts/0 00:00:12 /home/fisco-bcos/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini fisco-b+ 3851 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node4/../fisco-bcos -c config.ini fisco-b+ 3853 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini fisco-b+ 3855 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node7/../fisco-bcos -c config.ini fisco-b+ 3857 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini fisco-b+ 3859 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node5/../fisco-bcos -c config.ini fisco-b+ 3862 1 0 18:50 pts/0 00:00:04 /home/fisco-bcos/fisco/nodes/127.0.0.1/node6/../fisco-bcos -c config.ini fisco-b+ 3866 1 1 18:50 pts/0 00:00:11 /home/fisco-bcos/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini

7.检查angency的节点共识

提示

节点的群组划分是按照顺序进行划分的
127.0.0.1:2 agencyA 1,2,3 包括的节点 node0 node1
127.0.0.1:2 agencyB 1 包括的节点 node2 node3
127.0.0.1:2 agencyC 2 包括的节点 node4 node5
127.0.0.1:2 agencyD 3 包括的节点 node6 node7

查看angencyA机构节点共识

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

可以看到angencyA中的node0节点在其他群组都有共识

shell
info|2024-03-30 18:59:59.550188|[g:2][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=8c88cefd... info|2024-03-30 18:59:59.566130|[g:3][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=8aa05d40... info|2024-03-30 19:04:20.167967|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=21e0e458...

查看angencyB机构节点共识

shell
fisco-bcos@fiscobcos:~/fisco$ tail -f nodes/127.0.0.1/node2/log/log* | grep +++

可以看到agencyB中的节点在群组1中共识

shell
info|2024-03-30 18:59:59.568219|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=1e20f24d... info|2024-03-30 19:16:05.748317|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=9328d76a... info|2024-03-30 19:16:09.762121|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=b2099105...

在这里就用前两个群组进行演示,其他的可以自行进行测试

8.检查连接数

这里就用node0 进行演示

shell
fisco-bcos@fiscobcos:~/fisco$ tail -f nodes/127.0.0.1/node0/log/log* | grep connected

可以看到node0的与其他7个节点都有连接,其他的几个节点是同样的

shell
info|2024-03-30 19:26:17.750329|[P2P][Service] heartBeat,connected count=7

二、并行多组搭建

场景描述:
本节将使用开发部署工具搭建一个单机、2群组、4节点的FISCO BCOS联盟链,为演示并行多组的扩容流程,将先构建单群组四节点网络,随后将群组2加入区块链中,组网结构 如图所示:

image.png

1.单群组四节点网络搭建

在演示前需要先搭建单群组四节点

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

出现All completed代表构建成功

shell
[INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ... curl: (92) HTTP/2 stream 1 was not closed cleanly before end of the underlying stream [INFO] Download speed is too low, try https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/fisco-bcos.tar.gz ################################################################################################################################################################# 100.0% build_chain.sh: 行 1644: [[: 50440597 12111170: 表达式中有语法错误(错误记号是 "12111170") ============================================================== Generating CA key... ============================================================== Generating keys and certificates ... Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1 ============================================================== Generating configuration files ... Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1 ============================================================== [INFO] Start Port : 30300 20200 8545 [INFO] Server IP : 127.0.0.1:4 [INFO] Output Dir : /home/fisco-bcos/fisco/nodes [INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/ [INFO] RSA channel : true ============================================================== [INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console. e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f ============================================================== [INFO] All completed. Files in /home/fisco-bcos/fisco/node

2.启动所有节点

shell
bash nodes/127.0.0.1/start_all.sh

输出以下信息表示成功启动

shell
try to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node2 start successfully node3 start successfully node1 start successfully

3.检查共识、连接数以及进程

检查进程

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

检查共识

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

检查连接数

shell
tail -f nodes/127.0.0.1/node0/log/log* | grep connected

4.群组扩容

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

1)进入节点目录

为了减少路径输入引起的麻烦和错误,这里就先进入节点目录

shell
cd nodes/127.0.0.1/
2)拷贝group.1.genesis 文件为 group.2.genesis

拷贝group.1.genesis为group.2.genesis

shell
cp node0/conf/group.1.genesis node0/conf/group.2.genesis
3)拷贝group.1.ini为group.2.ini
shell
cp node0/conf/group.1.ini node0/conf/group.2.ini

可以看到拷贝成功

shell
fisco-bcos@fiscobcos:~/fisco/nodes/127.0.0.1$ ls node0/conf/ ca.crt channel_cert group.1.genesis group.1.ini group.2.genesis group.2.ini node.crt node.key node.nodeid
4)修改group.2.genesis中的id

因为两个群组中只有group.id不同所以只需要修改id

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

可以看到已经修改成功

shell
fisco-bcos@fiscobcos:~/fisco/nodes/127.0.0.1$ cat node0/conf/group.2.genesis | grep "id" ; the node id of consensusers id=2
5)拷贝文件到其他节点

拷贝文件

shell
cp node0/conf/group.2.ini node1/conf cp node0/conf/group.2.ini node2/conf cp node0/conf/group.2.ini node3/conf cp node0/conf/group.2.genesis node3/conf cp node0/conf/group.2.genesis node2/conf cp node0/conf/group.2.genesis node1/conf

查看是否拷贝成功

shell
node1/conf ca.crt channel_cert group.1.genesis group.1.ini group.2.genesis group.2.ini node.crt node.key node.nodeid
6)重启节点

重启节点加载文件

shell
bash stop_all.sh && bash start_all.sh

重启成功

shell
try to stop node0 try to stop node1 try to stop node2 try to stop node3 stop node0 success. stop node2 success. stop node3 success. stop node1 success. try to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node3 start successfully node1 start successfully node2 start successfully
7)查看共识

查看共识检查节点是否加入群组2中

shell
tail -f node0/log/log* |grep ++++

可以看到节点成功加入群组2中

shell
info|2024-03-30 20:35:09.226595|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=82bf26f6... info|2024-03-30 20:35:09.308081|[g:2][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=3,hash=c59f63d7...

注意

如果没有节点没有加入群组,请检查group.2.genesis 文件中的id是否正确修改

三、国密版 FISCO BCOS搭建

1.国密版与标准版 FISCO BCOS算法差异

image.png

2.SSL连接差异

image.png

3.国密版与标准版FISCO BCOS在数据结构上的差异

image.png 场景描述
使用开发部署工具搭建一个单机单群组4节点的国密版FISCO BCOS联盟链

image.png

4.搭建国密版FISCO BCOS区块链节点

搭建国密版的需要用到 -g -G 参数

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

出现All completed表示构建成功

shell
[INFO] Downloading fisco-bcos binary from https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.1/fisco-bcos.tar.gz ... ###### 4.1%curl: (28) Operation too slow. Less than 102400 bytes/sec transferred the last 20 seconds [INFO] Download speed is too low, try https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/fisco-bcos.tar.gz ################################################################################################################################################################# 100.0% build_chain.sh: 行 1644: [[: 50440597 12111170: 表达式中有语法错误(错误记号是 "12111170") ============================================================== Generating CA key... Generating Guomi CA key... ============================================================== Generating keys and certificates ... Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1 ============================================================== Generating configuration files ... Processing IP=127.0.0.1 Total=4 Agency=agency Groups=1 ============================================================== [INFO] Start Port : 30300 20200 8545 [INFO] Server IP : 127.0.0.1:4 [INFO] Output Dir : /home/fisco-bcos/fisco/nodes [INFO] CA Path : /home/fisco-bcos/fisco/nodes/cert/ [INFO] Guomi CA Path : /home/fisco-bcos/fisco/nodes/gmcert/ [INFO] Guomi mode : true [INFO] SM channel : true ============================================================== [INFO] Execute the download_console.sh script in directory named by IP to get FISCO-BCOS console. e.g. bash /home/fisco-bcos/fisco/nodes/127.0.0.1/download_console.sh -f ============================================================== [INFO] All completed. Files in /home/fisco-bcos/fisco/nodes

5.启动所有节点

shell
bash nodes/127.0.0.1/start_all.sh

出现以下表示启动成功

shell
try to start node0 try to start node1 try to start node2 try to start node3 node0 start successfully node2 start successfully node3 start successfully node1 start successfully

6.查看证书

可以看到国密版FISCO BCOS有两套证书,一套国密版,一套标准版,节点与SDK之间即支持SSL连接进行通信,也支持国密SSL连接进行通信

shell
fisco-bcos@fiscobcos:~/fisco$ ll nodes/127.0.0.1/node0/conf 总计 52 drwxrwxr-x 4 fisco-bcos fisco-bcos 4096 3月 30 20:52 ./ drwxrwxr-x 6 fisco-bcos fisco-bcos 4096 3月 30 20:52 ../ drwxrwxr-x 2 fisco-bcos fisco-bcos 4096 3月 30 20:52 channel_cert/ -rw-rw-r-- 1 fisco-bcos fisco-bcos 676 3月 30 20:52 gmca.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 587 3月 30 20:52 gmennode.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 241 3月 30 20:52 gmennode.key -rw-rw-r-- 1 fisco-bcos fisco-bcos 1935 3月 30 20:52 gmnode.crt -rw-rw-r-- 1 fisco-bcos fisco-bcos 241 3月 30 20:52 gmnode.key -rw-rw-r-- 1 fisco-bcos fisco-bcos 129 3月 30 20:52 gmnode.nodeid -rw-rw-r-- 1 fisco-bcos fisco-bcos 16 3月 30 20:52 gmnode.serial -rw-rw-r-- 1 fisco-bcos fisco-bcos 1257 3月 30 20:52 group.1.genesis -rw-rw-r-- 1 fisco-bcos fisco-bcos 2852 3月 30 20:52 group.1.ini drwxrwxr-x 2 fisco-bcos fisco-bcos 4096 3月 30 20:52 origin_cert/ #标准版证书目录

7.查看节点进程

查看节点进程

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

输出进程

shell
fisco-b+ 9413 1 0 20:52 pts/0 00:00:08 /home/fisco-bcos/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini fisco-b+ 9415 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini fisco-b+ 9417 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini fisco-b+ 9419 1 0 20:52 pts/0 00:00:07 /home/fisco-bcos/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini

8.查看节点共识

查看节点共识

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

输出结果

shell
info|2024-03-30 20:59:59.070644|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=f35289da... info|2024-03-30 21:09:28.381847|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=ea6bb9e0... info|2024-03-30 21:09:32.423803|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=2,hash=9086f4e9...

到此三种搭建方式就已经演示完毕

本文作者:苏皓明

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!