4. 节点管理

4.1. 简介

ChainMaker区块链网络中有三类节点 共识节点 同步节点 轻节点
下面详细介绍各类型节点的管理操作。
也可使用 SDK 开发自定义管理工具。

4.2. 目录

4.2.1. 共识节点

4.2.1.1. 加入网络

4.2.1.1.1. BFT类(TBFT、Maxbft)共识、RAFT共识

如果新增共识节点所属的组织根证书不存在与区块链网络中,那么请先参考证书管理获得证书后,从第1步开始。
以创建新组织wx-org5.chainmaker.org为例,具体步骤如下:

  • 1.使用cmc添加组织根证书

  • 2.准备物料包,启动节点程序,等待节点同步至最新高度区块

    1. 复制部署包
    $ cd build/release
    $ cp -rf chainmaker-v2.0.0-wx-org1.chainmaker.org chainmaker-v2.0.0-wx-org5.chainmaker.org
    2. 把chainmaker-v2.0.0-wx-org5.chainmaker.org/bin下所有的.sh脚本中所有wx-org1.chainmaker.org替换为wx-org5.chainmaker.org
    3. 重命名
    $ cd build/release/chainmaker-v2.0.0-wx-org5.chainmaker.org/config
    $ mv wx-org1.chainmaker.org wx-org5.chainmaker.org
    4. 使用chainmaker-cryptogen生成的wx-org5.chainmaker.org下的node和user分别覆盖掉chainmaker-v2.0.0-wx-org5.chainmaker.org/config/wx-org5.chainmaker.org/certs下的node和user
    5. 修改chainmaker.yml
       把chainmaker-v2.0.0-wx-org5.chainmaker.org/config/wx-org5.chainmaker.org/chainmaker.yml中所有wx-org1.chainmaker.org替换为wx-org5.chainmaker.org
       修改net模块,把 listen_addr: /ip4/0.0.0.0/tcp/11301 修改为 listen_addr: /ip4/0.0.0.0/tcp/11305
       修改rpc模块,把 port: 12301 修改为 port: 12305
       修改monitor模块,把 port: 14321 修改为 port: 14325
       修改pprof模块,把 port: 24321 修改为 port: 24325
    6. 修改chainmaker-v2.0.0-wx-org5.chainmaker.org/config/wx-org5.chainmaker.org/chainconfig/bc1.yml中的trust_roots模块。
       把所有 ../config/wx-org1.chainmaker.org 修改为 ../config/wx-org5.chainmaker.org
    7. 启动节点
    $ cd build/release/chainmaker-v2.0.0-wx-org5.chainmaker.org/bin
    $ ./start.sh
    8. 通过日志观察节点同步的区块高度
    $ cd build/release/chainmaker-v2.0.0-wx-org5.chainmaker.org/log
    $ tail -f system.log | grep "commit block \["
    
  • 3.使用cmc添加为共识节点

4.2.1.1.2. DPoS 共识

因为【Chainmaker v1.2.0+】的DPoS基于证书体系构建的,所以,当添加新的共识节点时,需要先使用命令将新节点添加到证书体系中。

如果新增节点已经添加到链上的证书体系,请从第3步开始。
具体步骤如下:

4.2.1.2. 退出网络

4.2.1.2.1. BFT类(TBFT、Maxbft)共识、RAFT共识

具体步骤如下:

$ kill -15 <节点程序pid>

*

  • 退出网络时,如果要删除组织根证书,则必须先删除共识节点,才能删除组织根证书。

4.2.1.2.2. DPoS共识
$ kill -15 <节点程序pid>

4.2.1.3. 更新共识节点的 NodeID

使用cmc更新共识节点的 NodeID 后,无需重启节点程序。
具体步骤如下:

4.2.2. 同步节点

4.2.2.1. 开始同步

以为组织wx-org1.chainmaker.org新增一个同步节点为例,具体步骤如下:

  • 1.生成同步节点的证书 通过 chainmaker-cryptogen 或者自建的 CA证书服务 生成同步节点证书

  • 2.启动节点程序

    1. 复制部署包
    $ cd build/release
    $ cp -rf chainmaker-v2.0.0-wx-org1.chainmaker.org chainmaker-v2.0.0-wx-org1.chainmaker.org_common2
    2. 把chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/bin下所有的.sh脚本中所有wx-org1.chainmaker.org替换为wx-org1.chainmaker.org_common2
    3. 重命名
    $ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/config
    $ mv wx-org1.chainmaker.org wx-org1.chainmaker.org_common2
    4. 拷贝chainmaker-cryptogen扩展生成的crypto-config/wx-org1.chainmaker.org/node/common2 到 chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/config/wx-org1.chainmaker.org_common2/certs/node下
    5. 修改chainmaker.yml
       把chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/config/wx-org1.chainmaker.org_common2/chainmaker.yml中所有路径中包含的wx-org1.chainmaker.org替换为wx-org1.chainmaker.org_common2
       修改node模块,把 certs/node/consensus1/consensus1.sign.key 修改为 certs/node/common2/common2.sign.key
       修改node模块,把 certs/node/consensus1/consensus1.sign.crt 修改为 certs/node/common2/common2.sign.crt
       修改net模块,把 certs/node/consensus1/consensus1.tls.key 修改为 certs/node/common2/common2.tls.key
       修改net模块,把 certs/node/consensus1/consensus1.tls.crt 修改为 certs/node/common2/common2.tls.crt
       修改net模块,把 listen_addr: /ip4/0.0.0.0/tcp/11301 修改为 listen_addr: /ip4/0.0.0.0/tcp/11306
       修改rpc模块,把 port: 12301 修改为 port: 12306
       修改monitor模块,把 port: 14321 修改为 port: 14326
       修改pprof模块,把 port: 24321 修改为 port: 24326
    6. 修改chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/config/wx-org1.chainmaker.org_common2/chainconfig/bc1.yml中的trust_roots模块。
       把所有 ../config/wx-org1.chainmaker.org 修改为 ../config/wx-org1.chainmaker.org_common2
    7. 启动节点
    $ cd build/release/chainmaker-v2.0.0-wx-org1.chainmaker.org_common2/bin
    $ ./start.sh
    8. End
    

4.2.2.2. 停止同步

停止节点程序即可停止同步。
具体步骤如下:

  • 1.停止节点程序

$ kill -15 <节点程序pid>

4.2.3. 链配置

ChainMaker区块链网络在部署并启动完成后,使用 cmc 命令行工具进行链配置的查询、更新。
也可以使用 SDK 开发自定义客户端进行链配置的相关操作。

4.2.3.1. 查询类

4.2.3.2. 更新类