fisco 之多群组多节点

搭建一个 4 机构 3 群组 8 节点

此篇章是以官方为基础搭建的

前置需求:

机构 群组 IP
机构 A (2 节点) node0,1 群组 1,2,3 127.0.0.1
机构 B (2 节点) node2,3 群组 1
机构 C (2 节点) node4,5 群组 2
机构 D (2 节点) node6,7 群组 3

先将构建 fisco 的脚本下载下来

1
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh

创建一个配置文件

1
vim ipconf

配置文件内容

1
2
3
4
127.0.0.1:2 A 1,2,3
127.0.0.1:2 B 1
127.0.0.1:2 C 2
127.0.0.1:2 D 3

文件结构详解

1
2
IP:节点数量 机构名称 所在群组
.... .... ....

使用命令一键创建

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

-f指定一个文件,这个文件编写的内容是创建信息

image.png
image.png

启动所有节点

1
bash nodes/127.0.0.1/start_all.sh 

查看节点进程

1
ps aux | grep fisco-bcos

image.png
image.png

查看所有群组的共识

1
tail -f nodes/127.0.0.1/node0/log/* | grep "g.*++"

查看单个群组共识

1
tail -f nodes/127.0.0.1/node0/log/* | grep "g:1.*++"

g:int将 int 改成所要查询的群组

node0将 node0 也可以改成其他节点,查看其他节点的群组是否正常或者存在

image.png
image.png

扩容节点

前置要求:

节点 群组 IP
机构 D (1 节点) 3 群组 127.0.01

获取证书的生成脚本

1
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh

下载失败使用这个:curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh

为新节点生成密钥

1
bash gen_node_cert.sh -c nodes/cert/D/ -o node8

-c指定要在哪个机构下新增节点

-o新的节点名称

image.png
image.png

拷贝所需要的配置文件 (由于这里是在机构 D 新增的节点所以拷贝节点 6 和节点 7 都可以)

1
cp nodes/127.0.0.1/node7/config.ini nodes/127.0.0.1/node7/start.sh nodes/127.0.0.1/node7/stop.sh node8/

这里是将配置文件启动文件都拷贝了过去

编辑 node8 的配置文件

1
vim node8/config.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[rpc]
channel_listen_ip=0.0.0.0
channel_listen_port=20208
jsonrpc_listen_ip=127.0.0.1
jsonrpc_listen_port=8553
disable_dynamic_group=false
[p2p]
listen_ip=0.0.0.0
listen_port=30308
; nodes to connect
node.0=127.0.0.1:30300
node.1=127.0.0.1:30301
node.2=127.0.0.1:30302
node.3=127.0.0.1:30303
node.4=127.0.0.1:30304
node.5=127.0.0.1:30305
node.6=127.0.0.1:30306
node.7=127.0.0.1:30307
node.8=127.0.0.1:30308

p2p加入自身的信息

listen_port端口自增一下,我这里拷贝的是 node7 所有自增一下就可以,如果拷贝的 node6 那就需要自增两下

channel_listen_port同上

jsonrpc_listen_port同上

将群组的连接信息和配置文件拷贝进去

1
cp nodes/127.0.0.1/node7/conf/group.3.genesis nodes/127.0.0.1/node7/conf/group.3.ini node8/

先将新节点复制到当前的 nodes 文件下, 然后启动节点

1
2
cp -r node8/ nodes/127.0.0.1/
bash node8/start.sh

查看节点连接

1
tail -f nodes/127.0.0.1/node8/log/log*  | grep "connected count"

image.png
image.png

将节点添加到群组中

查看节点 nodeid

1
cat nodes/127.0.0.1/node8/conf/node.nodeid

image.png
image.png

进入控制台 3 群组

1
bash console/start.sh 3

image.png
image.png

addObserver观察节, 不参与共识,但能实时同步链上数据的节点。

addSealer共识节, 参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。

这里需要共识所有添加到共识节点内

1
addSealer 替换成自己节点的nodeid

image.png
image.png

新增群组

前置需求

将 node8 节点添加至新增的群组中


获取时间戳

1
echo $(($(date '+%s')*1000))

将时间戳记下来后开启控制台

1
bash console/start.sh

查看节点 IP 与 Post 端口号

1
getAvailableConnections

获取节点 nodeid

1
getSealerList

选择第一个 nodeid

为节点动态创建一个新群组

1
generateGroup 127.0.0.1:20200 4 1736048077000 8b77bf44e79b207fcefe2d350ee4d9af0f45ef9425a7ce12cc61f6c87effc00c24dbbe5aa874179b9800584906b54b79a0f88ccda9f76c2b91058807a23985cf

命令详解: generateGroup 获取的 IP 和 Post 端口 新群组 id 时间戳 节点 nodei

image.png
image.png

启动新群组, 切换新群组

1
2
startGroup 127.0.0.1:20200 4
switch 4

将 node8 节点添加到新群组中

1
2
cat nodes/127.0.0.1/node8/conf/node.nodeid #获取节点id
addSealer 8b77bf44e79b207fcefe2d350ee4d9af0f45ef9425a7ce12cc61f6c87effc00c24dbbe5aa874179b9800584906b54b79a0f88ccda9f76c2b91058807a23985cf

image.png
image.png

结尾

小作业:

1. 创建四机构三群组 10 节点的区块链,详细要求如下:

机构 群组 节点
机构 A (3 节点) 1,2,3 node0,1,2
机构 B (1 节点) 1 node3
机构 C (4 节点) 2 node4,5,6,7
机构 D (2 节点) 1,3 node8,9

2. 新增节点 node10,node11,node12 详细要求如下:

机构 群组 节点
机构 A 3 node11
机构 B 1 node10,12

3. 新增群组 4, 并将 node10,node11,node12 添加至其中

Icon喜欢这篇作品的话,奖励一下我吧~
💗感谢你的喜欢与支持!
致谢名单
本作品由 JoBackRer 于 2025-01-05 09:57:07 发布
作品地址:fisco 之多群组多节点
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 JoBackRer の blog
Logo