文章目录

      • 4、扩容节点
        • 1. 操作命令
        • 2. 操作步骤
          • 1. 获取证书生成脚本
          • 2. 生成新节点私钥证书
          • 3. 准备节点配置文件
          • 4. 节点加入群组

4、扩容节点

1. 操作命令

为保证区块链安全性,FISCO BCOS引入了游离节点、观察者节点和共识节点,这三种节点类型可通过控制台相互转换。

  • 共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。
  • 观察者节点:不参与共识,但能实时同步链上数据的节点。
  • 游离节点:已启动,待等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。

将指定节点分别转换成共识节点、观察者节点、游离节点,相关操作命令如下:

  • addSealer:根据节点NodeID设置对应节点为共识节点;
  • addObserver:根据节点NodeID设置对应节点为观察节点;
  • removeNode:根据节点NodeID设置对应节点为游离节点;
  • getSealerList:查看群组中共识节点列表;
  • getObserverList:查看群组中观察节点列表;
  • getNodeIDList:查看节点已连接的所有其他节点的NodeID。

节点准入操作前,请确保:

  • 操作节点Node ID存在,节点Node ID可在节点目录下执行 cat conf/node.nodeid获取
  • 节点加入的区块链所有节点共识正常:正常共识的节点会输出+++日志
# 设节点位于~/fisco/nodes/127.0.0.1/node0目录下cd ~/fisco # 获取节点Node ID(设节点目录为~/nodes/127.0.0.1/node0/)cat ~/fisco/nodes/127.0.0.1/node0/conf/node.nodeidbf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117 # 连接控制台(设控制台位于~/fisco/console目录)cd ~/fisco/console bash start.sh # 将指定节点转换为共识节点[group:1]> addSealer bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117# 查询共识节点列表[group:1]> getSealerList[bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117] # 将指定节点转换为观察者节点[group:1]> addObserver bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117 # 查询观察者节点列表[group:1]> getObserverList[bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa6701170] # 将指定节点转换为游离节点[group:1]> removeNode bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117 # 查询节点列表[group:1]> getNodeIDList[bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117]# 查询共识节点列表[group:1]> getSealerList[]# 查询观察者节点列表[group:1]> getObserverList[]
2. 操作步骤
  • 为新节点生成私钥证书
1. 获取证书生成脚本
cd ~/fisco/ && curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh && chmod u+x gen_node_cert.sh

如果因为网络问题导致长时间无法下载,请尝试

cd ~/fisco/ && curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master-2.0/tools/gen_node_cert.sh && chmod u+x gen_node_cert.sh
2. 生成新节点私钥证书
# -c指定机构证书及私钥所在路径# -o输出到指定文件夹,其中node4/conf中会存在机构agency新签发的证书和私钥# 成功会输出 All completed 提示bash gen_node_cert.sh -c nodes/cert/agency/ -o nodes/127.0.0.1/node4
3. 准备节点配置文件
  • 进入nodes/127.0.0.1/,拷贝node0/config.ininode0/start.shnode0/stop.sh到node4目录;
cd nodes/127.0.0.1/cp node0/config.ini node0/start.sh node0/stop.sh node4/
  • 修改node4/config.ini。对于[rpc]模块,修改listen_ipchannel_listen_portjsonrpc_listen_port;对于[p2p]模块,修改listen_port并在node.中增加自身节点信息;
vim node4/config.ini[rpc]channel_listen_ip=0.0.0.0channel_listen_port=20204jsonrpc_listen_ip=127.0.0.1jsonrpc_listen_port=8549disable_dynamic_group=false[p2p]listen_ip=0.0.0.0listen_port=30304; nodes to connectnode.0=127.0.0.1:30300node.1=127.0.0.1:30301node.2=127.0.0.1:30302node.3=127.0.0.1:30303node.4=127.0.0.1:30304
  • 节点4拷贝节点0的node0/conf/group.1.genesis(内含群组节点初始化列表)和node0/conf/group.1.ininode4/conf目录下,不需改动;
cd ~/fisco/nodes/127.0.0.1/cp node0/conf/group.1.genesis node4/conf/cp node0/conf/group.1.ini node4/conf/
  • 执行node4/start.sh启动节点;
bash node4/start.sh
  • 确认node4与其他节点连接已经建立,加入网络操作完成
tail -f node4/log/log* | grep connected# 以下日志表明节点node4与其他4个节点建立了连接info|2023-04-25 15:42:16.391604|[P2P][Service] heartBeat,connected count=4info|2023-04-25 15:42:26.400361|[P2P][Service] heartBeat,connected count=4info|2023-04-25 15:42:36.400797|[P2P][Service] heartBeat,connected count=4info|2023-04-25 15:42:46.401075|[P2P][Service] heartBeat,connected count=4
4. 节点加入群组
  • 获取node4的nodeid
cat node4/conf/node.nodeid

得到类似下面的字符串就是nodeid,nodeid是节点公钥的16进制表示

9a288280fac1f32e0db65ed9028aa418f74389d3f7a334a229d1f80c2171acc608ef02c98bd0f4f2ef1d9824dc7054a4df49c7e9b47e9f05ba5ac4a923d0ee1d
  • 使用控制台将node4加入群组1

回到cd ~/fisco/console路径,bash start.sh进入控制台

  • 使用addObserver将node4作为观察节点加入群组1
# 查询观察者节点列表[group:1]> getObserverList[]# 将指定节点转换为观察者节点[group:1]> addObserver 9a288280fac1f32e0db65ed9028aa418f74389d3f7a334a229d1f80c2171acc608ef02c98bd0f4f2ef1d9824dc7054a4df49c7e9b47e9f05ba5ac4a923d0ee1d{"code":1,"msg":"Success"}# 查询观察者节点列表[group:1]> getObserverList[9a288280fac1f32e0db65ed9028aa418f74389d3f7a334a229d1f80c2171acc608ef02c98bd0f4f2ef1d9824dc7054a4df49c7e9b47e9f05ba5ac4a923d0ee1d]
  • 使用addSealer将node4作为共识节点加入群组1
# 查询共识节点列表[group:1]> getSealerList[0dee66b823f6f3a533bbc62d799ec53a2e5a5ce366a59888fdf89afe00e32ad4d9baf8c7f18f6d76511510a3de7c92f5e59cf06a89540b6b668bcb13b87cc760,48a25b2f208e91ac91aa497156ee74d5a8eaa662f24df32562ba942e65ca9ef3134bd39c06d0551845bffc22fbbebb4aae03d35ff92b54b4d53d02e20af35d24,8fbf1678634d1c7fcb6e50dfa6d23c99fe3ed3fbd9594cde97b25c9fc93b0630c48bed8cd7e8d170859c22021514107f6ded2267c2a5cb0483d382309185ac1e,bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117]# 将指定节点转换为共识节点[group:1]> addSealer 9a288280fac1f32e0db65ed9028aa418f74389d3f7a334a229d1f80c2171acc608ef02c98bd0f4f2ef1d9824dc7054a4df49c7e9b47e9f05ba5ac4a923d0ee1d{"code":1,"msg":"Success"}# 查询共识节点列表[group:1]> getSealerList[0dee66b823f6f3a533bbc62d799ec53a2e5a5ce366a59888fdf89afe00e32ad4d9baf8c7f18f6d76511510a3de7c92f5e59cf06a89540b6b668bcb13b87cc760,48a25b2f208e91ac91aa497156ee74d5a8eaa662f24df32562ba942e65ca9ef3134bd39c06d0551845bffc22fbbebb4aae03d35ff92b54b4d53d02e20af35d24,8fbf1678634d1c7fcb6e50dfa6d23c99fe3ed3fbd9594cde97b25c9fc93b0630c48bed8cd7e8d170859c22021514107f6ded2267c2a5cb0483d382309185ac1e,bf4ff9364d481f658931a2d68a939e1f82c071491fb187801ab10b72b1ceea1ac79e260eaf6fba6fe26ce12b5dfa98d8febc7f3f37f69e74efa55465fa670117,9a288280fac1f32e0db65ed9028aa418f74389d3f7a334a229d1f80c2171acc608ef02c98bd0f4f2ef1d9824dc7054a4df49c7e9b47e9f05ba5ac4a923d0ee1d]