节点组网拓扑结构
一个如图所示的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 |
- | 节点4 | 群组1、2 | 127.0.0.1:30304 | 127.0.0.1:8549 | 0.0.0.0:20202 |
机构B | 节点2 | 群组1 | 127.0.0.1:30302 | 127.0.0.1:8547 | 0.0.0.0:20203 |
- | 节点3 | 群组1 | 127.0.0.1:30303 | 127.0.0.1:8548 | 0.0.0.0:20204 |
机构C | 节点5 | 群组1、2 | 127.0.0.1:30305 | 127.0.0.1:8550 | 0.0.0.0:20205 |
关键流程
FISCO BCOS 实操
下载安装
cd ~/ && git clone https://github.com/FISCO-BCOS/generator.git
cd ~/generator && bash ./scripts/install.sh //安装
./generator -h //查看帮助信息
./generator --download_fisco ./meta //拉取最新fisco-bcos二进制文
./meta/fisco-bcos -v //查看版本
联盟链初始化
初始化机构A、B
cp -r ~/generator ~/generator-A
cp -r ~/generator ~/generator-B
初始化链证书
cd ~/generator
./generator --generate_chain_certificate ./dir_chain_ca //生成链证书ca.crt 链私钥ca.key
ls ./dir_chain_ca //查看链证书及私钥:ca.crt ca.key
//机构本地生成私钥agency.key–>生成请书请求文件–>证书签发机构获取证书agency.crt
//生成机构A证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyA
ls dir_agency_ca/agencyA/ 查看机构证书、机构私钥、链证书
cp ./dir_agency_ca/agencyA/* ~/generator-A/meta/
//机构B证书
./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyB
cp ./dir_agency_ca/agencyA/* ~/generator-A/meta/
机构A修改配置文件
node_deployment.ini为节点配置文件,运维部署工具会根据node_deployment.ini下的配置生成相关节点证书,及生成节点配置文件夹等
cd ../generator-A
vim ~/generator-A/conf/node_deployment.ini
[node0]
p2p_listen_port=30300
channel_listen_port=20200
jsonrpc_listen_port=8545
[node1]
p2p_listen_port=30301
channel_listen_port=20201
jsonrpc_listen_port=8546
修改node_deployment.ini文件
修改以下配置
vim ~/generator-B/conf/node_deployment.ini
[node0]
p2p_listen_port=30302
channel_listen_port=20202
jsonrpc_listen_port=8547
[node1]
p2p_listen_port=30303
channel_listen_port=20203
jsonrpc_listen_port=8548
机构A、B生成并发送节点信息,
生成节点证书,p2p连接地址文件
cd ~/generator-A & ./generator --generate_all_certificates ./agencyA_node_info
cd ~/generator-B & ./generator --generate_all_certificates ./agencyB_node_info
互存p2p地址文件
cp ~/generator-A/agencyA_node_info/peers.txt ~/generator-B/meta/peersA.txt
cp ~/generator-B/agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt
生成节点证书及p2p连接信息文件
./generator --generate_all_certificates ./agencyB_node_info
B节点证书及p2p连接信息,存入A机构
cp ./agencyB_node_info/cert*.crt ~/generator-A/meta/
cp ./agencyB_node_info/peers.txt ~/generator-A/meta/peersB.txt
机构A生成群组1创世区块
cd ~/generator-A
vim ~/generator-A/conf/group_genesis.ini //修改机构A配置文件,用来生成创世块
/修改以下信息
[group]
group_id=1
[nodes]
node0=127.0.0.1:30300
node1=127.0.0.1:30301
node2=127.0.0.1:30302
node3=127.0.0.1:30303
生成创世块,创世块分发给机构B
./generator --create_group_genesis ./group //生成创世块
cp ./group/group.1.genesis ~/generator-B/meta //创世块分发
根据node_deployment.ini文件生成A,B节点信息
cd ~/generator & ./generator --build_install_package ./meta/peersB.txt ./nodeA //生成节点nodeA
bash ./nodeA/start_all.sh //启动节点nodeA
cd ~/generator & ./generator --build_install_package ./meta/peersA.txt ./nodeB //生成节点nodeB
bash ./nodeB/start_all.sh