机构A、C构建群组2

接下来,机构C需要与A进行新群组建立操作,示例中以C生成创世区块为例。

机构A发送节点信息

由于机构A已经生成过节点证书及peers文件,只需将之前生成的节点P2P连接信息以及节点证书发送至机构C,操作如下:

在~/generator-A目录下执行下述命令

  1. cd ~/generator-A

示例中由机构C生成群组创世区块,因此需要机构A的节点证书和节点P2P连接地址文件,将上述文件发送至机构C

发送证书

  1. cp ./agencyA_node_info/cert*.crt ~/generator-C/meta/

发送节点P2P连接地址文件

  1. cp ./agencyA_node_info/peers.txt ~/generator-C/meta/peersA.txt

机构C修改配置文件

机构C修改conf文件夹下的node_deployment.ini如下图所示:

在~/generator-C目录下执行下述命令

  1. cd ~/generator-C
  1. cat > ./conf/node_deployment.ini << EOF
  2. [group]
  3. group_id=2
  4.  
  5. [node0]
  6. ; host ip for the communication among peers.
  7. ; Please use your ssh login ip.
  8. p2p_ip=127.0.0.1
  9. ; listen ip for the communication between sdk clients.
  10. ; This ip is the same as p2p_ip for physical host.
  11. ; But for virtual host e.g. vps servers, it is usually different from p2p_ip.
  12. ; You can check accessible addresses of your network card.
  13. ; Please see https://tecadmin.net/check-ip-address-ubuntu-18-04-desktop/
  14. ; for more instructions.
  15. rpc_ip=127.0.0.1
  16. p2p_listen_port=30304
  17. channel_listen_port=20204
  18. jsonrpc_listen_port=8549
  19.  
  20. [node1]
  21. p2p_ip=127.0.0.1
  22. rpc_ip=127.0.0.1
  23. p2p_listen_port=30305
  24. channel_listen_port=20205
  25. jsonrpc_listen_port=8550
  26. EOF

机构C生成并发送节点信息

在~/generator-C目录下执行下述命令

  1. cd ~/generator-C

机构C生成节点证书及P2P连接信息文件:

  1. ./generator --generate_all_certificates ./agencyC_node_info

查看生成文件:

  1. ls ./agencyC_node_info
  1. # 上述命令解释
  2. # 从左至右分别为需要交互给机构A的节点证书,节点P2P连接地址文件(根据node_deployment.ini生成的本机构节点信息)
  3. cert_127.0.0.1_30304.crt cert_127.0.0.1_30305.crt peers.txt

机构生成节点时需要指定其他节点的节点P2P连接地址,因此,C机构需将节点P2P连接地址文件发送至机构A

  1. cp ./agencyC_node_info/peers.txt ~/generator-A/meta/peersC.txt

机构C生成群组2创世区块

在~/generator-C目录下执行下述命令

  1. cd ~/generator-C

机构C修改conf文件夹下的group_genesis.ini如下图所示:

  1. cat > ./conf/group_genesis.ini << EOF
  2. [group]
  3. group_id=2
  4.  
  5. [nodes]
  6. node0=127.0.0.1:30300
  7. node1=127.0.0.1:30301
  8. node2=127.0.0.1:30304
  9. node3=127.0.0.1:30305
  10. EOF

命令执行之后会修改./conf/group_genesis.ini文件:

  1. ;命令解释
  2. [group]
  3. group_id=2
  4.  
  5. [nodes]
  6. node0=127.0.0.1:30300
  7. ;机构A节点p2p地址
  8. node1=127.0.0.1:30301
  9. ;机构A节点p2p地址
  10. node2=127.0.0.1:30304
  11. ;机构C节点p2p地址
  12. node3=127.0.0.1:30305
  13. ;机构C节点p2p地址

教程中选择机构C生成群组创世区块,实际生产中可以通过联盟链委员会协商选择。

此步会根据机构C的meta文件夹下配置的节点证书,生成group_genesis.ini配置的群组创世区块。

  1. ./generator --create_group_genesis ./group

分发群组2创世区块至机构A:

  1. cp ./group/group.2.genesis ~/generator-A/meta/

机构C生成所属节点

在~/generator-C目录下执行下述命令

  1. cd ~/generator-C
  1. ./generator --build_install_package ./meta/peersA.txt ./nodeC

机构C启动节点:

  1. bash ./nodeC/start_all.sh
  1. ps -ef | grep fisco
  1. # 命令解释
  2. # 可以看到如下进程
  3. fisco 15347 1 0 17:22 pts/2 00:00:00 ~/generator-A/nodeA/node_127.0.0.1_30300/fisco-bcos -c config.ini
  4. fisco 15402 1 0 17:22 pts/2 00:00:00 ~/generator-A/nodeA/node_127.0.0.1_30301/fisco-bcos -c config.ini
  5. fisco 15457 1 0 17:22 pts/2 00:00:00 ~/generator-B/nodeB/node_127.0.0.1_30302/fisco-bcos -c config.ini
  6. fisco 15498 1 0 17:22 pts/2 00:00:00 ~/generator-B/nodeB/node_127.0.0.1_30303/fisco-bcos -c config.ini
  7. fisco 15550 1 0 17:22 pts/2 00:00:00 ~/generator-C/nodeC/node_127.0.0.1_30304/fisco-bcos -c config.ini
  8. fisco 15589 1 0 17:22 pts/2 00:00:00 ~/generator-C/nodeC/node_127.0.0.1_30305/fisco-bcos -c config.ini

机构A为现有节点初始化群组2

在~/generator-A目录下执行下述命令

  1. cd ~/generator-A

添加群组2配置文件至已有节点,此步将群组2创世区块group.2.genesis添加至./nodeA下的所有节点内:

  1. ./generator --add_group ./meta/group.2.genesis ./nodeA

添加机构C节点连接文件peers至已有节点,此步将peersC.txt的节点P2P连接地址添加至./nodeA下的所有节点内:

  1. ./generator --add_peers ./meta/peersC.txt ./nodeA

重启机构A节点:

  1. bash ./nodeA/stop_all.sh
  1. bash ./nodeA/start_all.sh

查看群组2节点运行状态

查看节点进程:

  1. ps -ef | grep fisco
  1. # 命令解释
  2. # 可以看到如下进程
  3. fisco 15347 1 0 17:22 pts/2 00:00:00 ~/generator-A/nodeA/node_127.0.0.1_30300/fisco-bcos -c config.ini
  4. fisco 15402 1 0 17:22 pts/2 00:00:00 ~/generator-A/nodeA/node_127.0.0.1_30301/fisco-bcos -c config.ini
  5. fisco 15457 1 0 17:22 pts/2 00:00:00 ~/generator-B/nodeB/node_127.0.0.1_30302/fisco-bcos -c config.ini
  6. fisco 15498 1 0 17:22 pts/2 00:00:00 ~/generator-B/nodeB/node_127.0.0.1_30303/fisco-bcos -c config.ini
  7. fisco 15550 1 0 17:22 pts/2 00:00:00 ~/generator-C/nodeC/node_127.0.0.1_30304/fisco-bcos -c config.ini
  8. fisco 15589 1 0 17:22 pts/2 00:00:00 ~/generator-C/nodeC/node_127.0.0.1_30305/fisco-bcos -c config.ini

查看节点log:

在~/generator-C目录下执行下述命令

  1. cd ~/generator-C
  1. tail -f ./node*/node*/log/log* | grep +++
  1. # 命令解释
  2. # log中打印的+++即为节点正常共识
  3. info|2019-02-25 17:25:56.028692| [g:2][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=833bd983...
  4. info|2019-02-25 17:25:59.058625| [g:2][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=0,hash=343b1141...
  5. info|2019-02-25 17:25:57.038284| [g:2][p:264][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,myIdx=1,hash=ea85c27b...

至此,我们完成了如图所示的机构A、C搭建群组2构建:

../../_images/tutorial_step_2.png