在home目录下新建fisco11文件夹并进入到fisco11文件夹下:
mkdir fisco11 && cd fisco11
下载:git clone https://gitee.com/FISCO-BCOS/generator.git
安装:cd ./generator && bash ./scripts/install.sh
检查是否安装成功,若成功,输出 usage: generator xxx
输入以下指令:./generator -h
获取节点二进制
拉取最新fisco-bcos二进制文件到meta中,如果网络较差,可以尝试通过其他方式下载fisco-bcos,或使用–cdn选项,并将下载好的二进制放置于meta文件夹下
./generator --download_fisco ./meta
官方给的下载链接太慢了,我这里是将下载好的二进制文件放入到meta 中
二进制fisco下载地址:https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/fisco-bcos.tar.gz
检查二进制版本
输入以下命令:./meta/fisco-bcos -v
一个如图所示的6节点3机构2群组的组网模式。机构B和机构C分别位于群组1和群组2中。机构A同属于群组1和群组2中。
每个节点的IP,端口号为如下:
机构 | 节点 | 所属群组 | P2P地址 | RPC监听地址 | Channel监听地址 |
---|---|---|---|---|---|
机构A | 节点0 | 群组1、2 | 127.0.0.1:30300 | 127.0.0.1:8545 | 0.0.0.0:20200 |
节点1 | 群组1、2 | 127.0.0.1:30301 | 127.0.0.1:8546 | 0.0.0.0:20201 | |
机构B | 节点2 | 群组1 | 127.0.0.1:30302 | 127.0.0.1:8547 | 0.0.0.0:20202 |
节点3 | 群组1 | 127.0.0.1:30303 | 127.0.0.1:8548 | 0.0.0.0:20203 | |
机构C | 节点4 | 群组2 | 127.0.0.1:30304 | 127.0.0.1:8549 | 0.0.0.0:20204 |
节点5 | 群组2 | 127.0.0.1:30305 | 127.0.0.1:8550 | 0.0.0.0:20205 |
注解
在/home/fisco11目录下初始化机构A
cp -r ./generator ./generator-A
在/home/fisco11目录下初始化机构B
cp -r ./generator ./generator-B
在证书颁发机构上进行操作,一条联盟链拥有唯一的链证书ca.crt
用 --generate_chain_certificate 命令生成链证书
在证书生成机构目录下操作:
cd ./generator
生成链证书文件到dir_chain_ca:
./generator --generate_chain_certificate ./dir_chain_ca
查看链证书和私钥:
ls ./dir_chain_ca
ca.crt为链证书,ca.key为链私钥
在/home/fisco11/generator目录下进行操作。
生成机构A证书:
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
查看机构证书及私钥:
ls dir_agency_ca/agencyA/
Agency.crt为机构证书、agency.key是机构私钥、ca.crt为链证书
发送链证书、机构证书、机构私钥至机构A,示例是通过文件拷贝的方式,从证书授权机构将机构证书发送给对应的机构,放到机构的工作目录的meta子目录下
cp ./dir_agency_ca/agencyA/* …/generator-A/meta/
在home/fisco11/generator目录下操作:
生成机构B证书:
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
发送链证书、机构证书、机构私钥至机构B,示例是通过文件拷贝的方式,从证书授权机构将机构证书发送给对应的机构,放到机构的工作目录的meta子目录下
cp ./dir_agency_ca/agencyB/* …/generator-B/meta/
node_deployment.ini为节点配置文件,运维部署工具会根据node_deployment.ini下的配置生成相关节点证书,及生成节点配置文件夹等。
机构A修改conf文件夹下的node_deployment.ini如下图所示:
在/home/fisco11/generator-A目录下进行操作
vim conf/node_deployment.ini
在/home/fisco11/generator-B目录下进行操做
vim conf/node_deployment.ini
在/home/fisco11/generator-A目录下操作
机构A生成节点证书及P2P连接信息文件,此步需要用到上述配置的node_deployment.ini,及机构meta文件夹下的机构证书与私钥,机构A生成节点证书及P2P连接信息文件
./generator --generate_all_certificates ./agencyA_node_info
查看生成文件:
ls ./agencyA_node_info
cert_127.0.0.1_30300.crt cert_127.0.0.1_30301.crt需要交互给机构A的节点证书 peersA.txt为节点P2P连接地址文件
机构生成节点时需要指定其他节点的节点P2P连接地址,因此,A机构需将节点P2P连接地址文件发送至机构B
cp ./agencyA_node_info/peers.txt …/generator-B/meta/peersA.txt
在/home/fisco11/generator-B目录下进行操作
机构B生成节点证书及P2P连接信息文件:
./generator --generate_all_certificates ./agencyB_node_info
生成创世区块的机构需要节点证书,示例中由A机构生成创世区块,因此B机构除了发送节点P2P连接地址文件外,还需发送节点证书至机构A
发送证书:
cp ./agencyB_node_info/cert*.crt …/generator-A/meta/
发送节点P2P连接地址文件:
cp ./agencyB_node_info/peers.txt …/generator-A/meta/peersB.txt
在home/fisco11/generator-A目录下进行操作
vim conf/group_genesis.ini
这里填写的是p2p节点连接地址,是构成群组所需要连接的p2p地址都放入进来
此步会根据机构A的meta文件夹下配置的节点证书,生成group_genesis.ini配置的群组创世区块,教程中需要机构A的meta下有名为cert_127.0.0.1_30300.crt,cert_127.0.0.1_30301.crt,cert_127.0.0.1_30302.crt,cert_127.0.0.1_30303.crt的节点证书,此步需要用到机构B的节点证书。
./generator --create_group_genesis ./group
ls group
分发群组1创世区块至机构B
cp ./group/group.1.genesis …/generator-B/meta
在home/fisco11/generator-A目录下进行操作
生成机构A所属节点,此命令会根据用户配置的node_deployment.ini文件生成相应的节点配置文件夹:
注意,此步指定的节点P2P连接信息peers.txt为群组内其他节点的连接信息,多个机构组网的情况下需要将其合并。
./generator --build_install_package ./meta/peersB.txt ./nodeA
查看生成节点配置文件夹:
ls ./nodeA
机构A启动节点:
bash ./nodeA/start_all.sh
查看节点进程:
ps -ef | grep fisco
当前操作都在/home/fisco11/generator-B下进行操作
./generator --build_install_package ./meta/peersA.txt ./nodeB
ls nodeB/
机构B启动节点:
bash ./nodeB/start_all.sh
查看节点进程:
ps -ef | grep fisco
查看进程:
ps -ef | grep fisco
查看节点log:
tail -f ./node*/node*/log/log* | grep +++
至此,我们完成了如图所示机构A、机构B搭建群组1的操作
下面的操作在/home/fisco11目录下进行
初始化机构C,请注意,此时generator目录下有链证书及私钥,实际环境中机构C无法获取链证书及私钥。
生成机构C证书
这里要在home/fisco11/generator目录下进行
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyC
查看机构证书及私钥:
ls dir_agency_ca/agencyC/
发送链证书、机构证书、机构私钥至机构C,示例是通过文件拷贝的方式,从证书授权机构将机构证书发送给对应的机构,放到机构的工作目录的meta子目录下
cp ./dir_agency_ca/agencyC/* …/generator-C/meta/
接下来,机构C需要与A进行新群组建立操作,示例中以C生成创世区块为例
机构A发送节点信息
当前操作路径在home/fisco11/generator-A目录下进行操作
由于机构A已经生成过节点证书及peers文件,只需将之前生成的节点P2P连接信息以及节点证书发送至机构C,操作如下:
示例中由机构C生成群组创世区块,因此需要机构A的节点证书和节点P2P连接地址文件,将上述文件发送至机构C
发送证书:
cp ./agencyA_node_info/cert*.crt …/generator-C/meta/
发送节点P2P连接地址文件:
cp ./agencyA_node_info/peers.txt …/generator-C/meta/peersA.txt
机构C修改配置文件
在home/fisco11/generator-C目录下进行操作
vim conf/node_deployment.ini
在home/fisco11/generator-C目录下进行操作
机构C生成节点证书及P2P连接信息文件:
./generator --generate_all_certificates ./agencyC_node_info
查看生成文件:
ls ./agencyC_node_info
机构生成节点时需要指定其他节点的节点P2P连接地址,因此,C机构需将节点P2P连接地址文件发送至机构A
cp ./agencyC_node_info/peers.txt …/generator-A/meta/peersC.txt
在home/fisco11/generator-C目录下进行操作
机构C修改conf文件夹下的group_genesis.ini如下图所示
vim conf/group_genesis.ini
此步会根据机构C的meta文件夹下配置的节点证书,生成group_genesis.ini配置的群组创世区块。
./generator --create_group_genesis ./group ls group
分发群组2创世区块至机构A
cp ./group/group.2.genesis …/generator-A/meta/
在home/fisco11/generator-C目录下进行操作
机构C启动节点:
bash ./nodeC/start_all.sh
查看节点进程:
ps -ef | grep fisco
在home/fisao11/generator-A目录下执行
添加群组2配置文件至已有节点,此步将群组2创世区块group.2.genesis添加至./nodeA下的所有节点内
./generator --add_group ./meta/group.2.genesis ./nodeA
添加机构C节点连接文件peers至已有节点,此步将peersC.txt的节点P2P连接地址添加至./nodeA下的所有节点内:
./generator --add_peers ./meta/peersC.txt ./nodeA
重启机构A节点:
bash ./nodeA/stop_all.sh
bash ./nodeA/start_all.sh
在home/fisco11/generator-C目录下进行操作
查看节点进程:
ps -ef | grep fisco
查看节点log:
tail -f ./node*/node*/log/log* | grep +++
至此,我们完成了如图所示的机构A、C搭建群组2构建
将节点加入已有群组需要用户使用控制台发送指令,将节点加入群组
在home/fisco11/generator-A目录下进行操作
发送群组1配置文件至机构C节点
./generator --add_group ./group/group.1.genesis …/generator-C/nodeC
重启机构C节点
bash …/generator-C/nodeC/stop_all.sh
bash …/generator-C/nodeC/start_all.sh
查看节点C的node.nodeid
cat nodeC/node_127.0.0.1_3030*/conf/node.nodeid
在home/fisco11/generator目录下生成机构Asdk文件
./generator --generate_sdk_certificate ./dir_sdk_caA ./dir_agency_ca/agencyA/
在home/fisco11/generator-A目录下进行操作
下载控制台curl -#LO [https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh](https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh)
将sdk证书和链证书拷贝到console/conf目录下
cp …/…/generator/dir_sdk_caA/sdk/ca.crt conf
cp …/…/generator/dir_sdk_caA/sdk/sdk.* conf
拷贝config-example.toml模板文件为conf.toml
cp -r conf/config-example.toml conf/config.toml
修改config.toml文件,将节点A的信息填入
vim conf/config.toml
启动控制台 :
bash start.sh
使用控制台将机构C的节点4注册为观察节点
addObserver d43aa3774b8f88001a5f93fc27bb976728501ed59f401a6a8efec4a892761e7fa3ddf645d7a2e4bd196b68adbba071942d6b041ca28c36c24edef980739fe6bd
使用控制台将机构C的节点5注册为共识节点
addSealer 70bcfaeabeac920c013fc20a90687df856a245665346175eb02027bf2cafa2655fb3c68c760eda4ebee00f7db42d9a387a70706b257f02fb6db8ce7349221cdd
退出控制台:
exit
在home/fisco11/generator-C/nodeC目录下进行操作
查看节点node_127.0.0.1_30304/log内群组1信息:
cat log_2024120503.00.log | grep g:1 | grep Report
查看节点node_127.0.0.1_30305/log内群组1信息
cat log_2024120503.00.log | grep g:1 | grep Report
至此已经完成了机构C加入群组1的操作
我们将会为机构A新增节点6,IP、端口号如下:
机构 | 节点 | 所属群组 | P2P地址 | RPC监听地址 | Channel监听地址 |
---|---|---|---|---|---|
机构A | 节点6 | 群组1 | 127.0.0.1:30306 | 127.0.0.1:8551 | 0.0.0.0:20206 |
在上述过程中,机构A已经生成了自己所属的机构证书及私钥,并且拥有了群组1的创世区块,扩容节点需要进行的操作如下。
将节点加入已有群组需要用户使用控制台发送指令,将节点加入群组,示例如下:
node_deployment.ini为节点配置文件,运维部署工具会根据node_deployment.ini下的配置生成相关节点证书,及生成节点配置文件夹等。
机构A修改conf文件夹下的node_deployment.ini如下图所示:
在home/fisco11/generator-A目录下进行操作
vim conf/node_deployment.ini
机构A生成节点证书及P2P连接信息文件,此步需要用到上述配置的node_deployment.ini,及机构meta文件夹下的机构证书与私钥,机构A生成节点证书及P2P连接信息文件
./generator --generate_all_certificates ./agencyA_node_info_new
查看生成文件:
ls ./agencyA_node_info_new
生成机构A所属节点,此命令会根据用户配置的node_deployment.ini文件生成相应的节点配置文件夹:
注意,此步指定的节点P2P连接信息peers.txt为群组内其他节点的连接信息,多个机构组网的情况下需要将其合并。
合并当前节点的peers.txt
cat ./agencyA_node_info/peers.txt >> ./meta/peersB.txt
生成新增节点:
./generator --build_install_package ./meta/peersB.txt ./nodeA_new
查看新增节点配置文件:
ls ./nodeA_new
机构A启动节点:
bash ./nodeA_new/start_all.sh
查看节点进程:
ps -ef | grep fisco
查看节点6的节点id
cat nodeA_new/node_127.0.0.1_30306/conf/node.nodeid
在home/fisco11/generator-A/console目录下进行操作
启动控制台:
bash start.sh
添加共识节点:
addSealer 2bd0316805da51bc35fd7e35a48c79a69150d7e079888c41be925d0badc2f6f14331d6dc12fa3c4405e11538b64c8e4e2cef2dbde0c63bf7fee9aa13af0228c6
查看节点共识列表
getSealerList
退出控制台
查看机构A新增节点
在home/fisco11/generator-A内进行操作
查看节点log内group1信息
cat nodeA_new/node_127.0.0.1_30306/log/log* | grep g:1 | grep Report
至此新增节点已经加入群组内