前置条件: 机构 节点 所属群组 P2P 地址 RPC 监听地址 Channel 监听地址 IP 地址 机构 A 节点 0 群组 1,2 30300 20200 8545 127.0.0.1 节点 1 群组 1,2 30301 20201 8546 127.0.0.1 机构 B 节点 2 群组 1 30302 20202 8547 127.0.0.1 节点 3 群组 1 30303 20203 8548 127.0.0.1 机构 C 节点 4 群组 2 30304 20204 8549 127.0.0.1
下载工具 Generator
1 git clone https://gitee.com/FISCO-BCOS/generator.git
切进目录并进行安装
1 2 3 4 cd generator/./scripts/install.sh ./generator -h
image.png
下载并解压二进制文件
1 2 git clone https://gitee.com/BackRe/resource.git tar -zxvf ./resource/fisco-bcos.tar.gz -C ./meta
查看 fisco 版本信息
准备工作 根据前置条件中可以看到需求是 ABCD 机构所以要将当前的文件复制成 ABCD 四份。
1 2 3 4 cp -r generator/ generator-acp -r generator/ generator-bcp -r generator/ generator-ccp -r generator/ generator-d
image.png
生成区块链的唯一密钥证书 (在 generator 目录下生成)
1 ./generator --generate_chain_certificate ./dir_chain_ca
--generate_chain_certificate生成区块链唯一的密钥相当于之前搭建中 nodes/127.0.0.1/sdk 内的内容
./dir_chain_ca生成的文件名称
1 2 3 4 5 root@backrer-virtual-machine:~/fisco/generator# ./generator --generate_chain_certificate ./dir_chain_ca INFO | Chain cert begin. INFO | Generate root cert success, dir is /root/fisco/generator/dir_chain_ca INFO | Chain cert end.
然后生成各个机构的证书及密钥, 并复制到指定的机构目录下的 meta 中
1 2 3 4 ./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencya ./generator --generate_agency_certificate ./dir_agency_ca ./dir_chain_ca agencyb cp -r ./dir_agency_ca/agencya/* ../generator-a/meta/cp -r ./dir_agency_ca/agencyb/* ../generator-b/meta/
--generate_agency_certificate生成机构的密钥
./dir_agency_ca生成的文件位置
./dir_chain_ca区块链的唯一密钥
agencyxx机构名称
机构 A,B 的生成和群组 1 准备 切换到 generator-a 目录中,编辑 conf / node_deployment.ini
根据提供的 ip 端口进行对应的修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [group] group_id=1 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; Listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30300 channel_listen_port=20200 jsonrpc_listen_port=8545 [node1] p2p_ip=127.0.0.1 rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30301 channel_listen_port=20201 jsonrpc_listen_port=8546
同理切换到 generator-b, 编辑 conf / node_deployment.ini
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [group] group_id=1 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; Listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30302 channel_listen_port=20202 jsonrpc_listen_port=8547 [node1] p2p_ip=127.0.0.1 rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30303 channel_listen_port=20203 jsonrpc_listen_port=8548
生成机构 A 的节点证书和 p2p 连接信息文件 (切换到 generator-a)
1 2 ./generator --generate_all_certificates ./agencya_node_info ll agencya_node_info
将 p2p 连接信息文件复制到 agency-b 中
1 cp agencya_node_info/peers.txt ../generator-b/meta/peersa.txt
同理生成机构 B 的节点证书和 p2p 连接信息文件 (切换到 generator-b)
1 ./generator --generate_all_certificates ./agencyb_node_info
将 p2p 连接信息文件复制到 agency-a 中
1 cp agencyb_node_info/peers.txt ../generator-a/meta/peersb.txt
这里要注意一点,由于目前是要生成群组 1 所以群组需要创世区块,我们要将机构机构 B 中的两个 cert 文件拷贝到机构 A 的 meta 中。
1 cp -r agencyb_node_info/cert_* ../generator-a/meta/
切换到机构 A 中并编辑文件conf/group_genesis.ini
1 2 cd ../generator-a/vim conf/group_genesis.ini
1 2 3 4 5 6 7 8 [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
group_id群组号
根据前置要求表中配置好 node 的 ip 以及端口
结合四个节点证书生成创世块.
1 ./generator --create_group_genesis ./group
1 2 3 4 root@backrer-virtual-machine:~/fisco/generator-a# ./generator --create_group_genesis ./group INFO | Build operation begin. INFO | generate ./group/group.1.genesis, successful INFO | Build operation end.
image.png
将group.1.genesis文件复制到机构 B 中
1 cp group/group.1.genesis ../generator-b/meta/
生成机构 A 在 generator-a 文件下
使用--build_install_package生成机构的所有节点。
1 2 ./generator --build_install_package ./meta/peersb.txt ./nodea ll ./nodea
./meta/peersB.txt放置群组内其他节点的连接信息
./nodeA节点文件的输出目录
启动机构 A 的两个节点
1 2 3 bash nodea/start_all.sh ps -ef | grep fisco
image.png
生成机构 B 切换到机构 B
生成机构 B, 并且启动
1 2 3 4 ./generator --build_install_package ./meta/peersa.txt ./nodeb bash nodeb/start_all.sh ps -ef | grep fisco
查看群组 1 的共识情况
1 tail -f ./node*/node*/log/log* | grep +++
机构 C 的生成与群组 2 切到机构 C, 编辑文件conf/node_deployment.ini
1 2 cd ../generator-cvim conf/node_deployment.ini
根据前置要求设置好对应的端口,以及群组 id
这里就不展示修改后的文档了。
生成机构 C 的节点证书和 p2p 连接信息,并将连接信息拷贝给机构 A
1 2 ./generator --generate_all_certificates ./agencyc_node_info cp -r agencyc_node_info/peers.txt ../generator-a/meta/peersc.txt
在这里由于我们需要生成群组 2,又因为机构 A 也在群组 2 中,所以我们要将机构 A 的连接信息和 cert 文件拷贝给机构 C 以便于生成创世区块。
1 2 cp -r ../generator-a/agencya_node_info/cert* meta/cp -r ../generator-a/agencya_node_info/peers.txt meta/peersa.txt
编辑机构 C 的conf/group_genesis.ini文件
1 2 3 4 5 6 7 8 [group] group_id=2 [nodes] node0=127.0.0.1:30300 node1=127.0.0.1:30301 node2=127.0.0.1:30301 node3=127.0.0.1:30305
生成群组 2 的创世块文件, 并将创世区块拷贝给机构 A
1 2 ./generator --create_group_genesis ./group cp -r group/group.2.genesis ../generator-a/meta/
生成机构 C 并启动
1 2 3 ./generator --build_install_package ./meta/peersa.txt ./nodec bash nodec/start_all.sh ps -ef | grep fisco
现在将机构 A 添加到群组 2 中 (切到机构 A)
1 2 cd ../generator-a./generator --add_group ./meta/group.2.genesis ./nodea
./meta/group.2.genesis群组 2 的创世块
./nodea需要加入群组的节点目录
使机构 A 连接机构 C
1 ./generator --add_peers ./meta/peersc.txt ./nodea
./meta/peersc.txt连接信息文件
./nodea要连接的节点
重新启动机构 A,并查询机群组 2 是否有共识存在
1 2 3 4 bash nodea/stop_all.sh bash nodea/start_all.sh tail -f ./node*/node*/log/log* | grep g:2.*+++
机构 D 的生成与群组 3 的创建 方法与上方类似
切换到 generator-d, 并编辑文件conf/node_deployment.ini
1 2 cd ../generator-cvim conf/node_deployment.ini
由于这里是三个节点所有在配置文件时要多配置一个节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [group] group_id=3 [node0] ; Host IP for the communication among peers. ; Please use your ssh login IP. p2p_ip=127.0.0.1 ; Listening IP for the communication between SDK clients. ; This IP is the same as p2p_ip for the physical host. ; But for virtual host e.g., VPS servers, it is usually different from p2p_ip. ; You can check accessible addresses of your network card. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/ ; for more instructions. rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30306 channel_listen_port=20206 jsonrpc_listen_port=8551 [node1] p2p_ip=127.0.0.1 rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30307 channel_listen_port=20207 jsonrpc_listen_port=8552 [node2] p2p_ip=127.0.0.1 rpc_ip=127.0.0.1 channel_ip=0.0.0.0 p2p_listen_port=30308 channel_listen_port=20208 jsonrpc_listen_port=8553
生成机构 D 的节点证书和 p2p 连接信息文件
1 ./generator --generate_all_certificates ./agencyd_node_info
将连接信息拷贝给机构 A
1 cp -r agencyd_node_info/peers.txt ../generator-a/meta/peersd.txt
将 A 的信息拷贝给 D 用于创建创世区块
1 2 cp -r ../generator-a/agencya_node_info/peers.txt meta/peersa.txtcp -r ../generator-a/agencya_node_info/cert* meta/
配置group_genesis.ini
1 2 3 4 5 6 7 8 9 [group] group_id=3 [nodes] node0=127.0.0.1:30300 node1=127.0.0.1:30301 node2=127.0.0.1:30306 node3=127.0.0.1:30307 node3=127.0.0.1:30308
创建群组 3 创世区块,并将文件拷给机构 A
1 2 ./generator --create_group_genesis ./group cp -r group/group.3.genesis ../generator-a/meta/
生成机构 D 节点并启动
1 2 ./generator --build_install_package ./meta/peersa.txt ./noded bash noded/start_all.sh
切换机构 A 中,将群组 3 的初始化以及连接机构 D
1 2 ./generator --add_group ./meta/group.3.genesis ./nodea/ ./generator --add_peers ./meta/peersd.txt ./nodea/
重启机构 A, 并且查看共识
1 2 3 bash nodea/stop_all.sh bash nodea/start_all.sh tail -f ./node*/node*/log/log* | grep g:3.*+++
机构 E 同理 自行完成