# 节点管理 ## 简介 ChainMaker区块链网络中有三类节点 `共识节点` `同步节点` `轻节点`
下面详细介绍各类型节点的管理操作。
也可使用 [SDK](../dev/SDK.md) 开发自定义管理工具。 ## 目录 - [共识节点](#consensusNode) - [加入网络](#addConsensusNode) - [退出网络](#delConsensusNode) - [更新共识节点的 NodeID](#updateConsensusNodeId) - [同步节点](#syncNode) - [开始同步](#startSync) - [停止同步](#stopSync) - [链配置](#chainConfig) ### 共识节点 - [加入网络](#addConsensusNode) - [退出网络](#delConsensusNode) - [更新共识节点的 NodeID](#updateConsensusNodeId) #### 加入网络 ##### BFT类(TBFT、Maxbft)共识、RAFT共识 如果新增共识节点所属的组织根证书不存在与区块链网络中,那么请先参考[证书管理](./证书管理.md)获得证书后,从第1步开始。
以创建新组织wx-org5.chainmaker.org为例,具体步骤如下: - 1.[使用cmc添加组织根证书](../dev/命令行工具.html#chainConfig.addOrgRootCA) - 2.准备物料包,启动节点程序,等待节点同步至最新高度区块 ```sh 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添加为共识节点](../dev/命令行工具.html#chainConfig.addConsensusNodeOrg) ##### DPoS 共识 因为【Chainmaker v1.2.0+】的DPoS基于证书体系构建的,所以,当添加新的共识节点时,需要先使用命令将新节点添加到证书体系中。 如果新增节点已经添加到链上的证书体系,请从第3步开始。
具体步骤如下: - 1.[使用cmc添加组织根证书](../dev/命令行工具.html#chainConfig.addOrgRootCA) - 2.准备物料包,启动节点程序,等待节点同步至最新高度区块(具体操作见上节) - 3.[使用cmc添加共识节点](../dev/命令行工具.html#chainConfig.addConsensusNodeOrg) - 4.[使用工具从新用户证书计算用户的地址](../dev/命令行工具.html#chainConfig.addrFromCert) - 5.[使用ERC20的管理员证书向新增节点的用户地址增发权益](../dev/命令行工具.html#chainConfig.dposMint) - 6.[查询新增节点的用户地址的账户余额](../dev/命令行工具.html#chainConfig.dposBalanceOf) - 7.[在stake合约中设置新节点的线上ID](../dev/命令行工具.html#chainConfig.dposSetNodeID) - 8.[查询新节点的线上ID](../dev/命令行工具.html#chainConfig.dposGetNodeID) - 9.[新节点通过抵押变为候选人参与共识](../dev/命令行工具.html#chainConfig.dposDelegate) #### 退出网络 ##### BFT类(TBFT、Maxbft)共识、RAFT共识 具体步骤如下: - 1.[使用cmc删除共识节点](../dev/命令行工具.html#chainConfig.delConsensusNodeId) - 2.停止节点程序 ```shell $ kill -15 <节点程序pid> ``` ***注** * 退出网络时,如果要删除组织根证书,则必须先删除共识节点,才能删除组织根证书。 ##### DPoS共识 - 1.[查询网络验证人节点的最少抵押数量要求](../dev/命令行工具.html#chainConfig.dposMinSelfDelegation) - 2.[查询验证人数据](../dev/命令行工具.html#chainConfig.dposValidatorInfo) - 3.[解除共识节点的抵押](../dev/命令行工具.html#chainConfig.dposUndelegate) - 4.停止节点程序 ```shell $ kill -15 <节点程序pid> ``` #### 更新共识节点的 NodeID 使用cmc更新共识节点的 NodeID 后,无需重启节点程序。
具体步骤如下: - 1.[使用cmc更新共识节点的 NodeID](../dev/命令行工具.html#chainConfig.updateConsensusNodeId) ### 同步节点 - [开始同步](#startSync) - [停止同步](#stopSync) #### 开始同步 以为组织wx-org1.chainmaker.org新增一个同步节点为例,具体步骤如下: - 1.生成同步节点的证书 通过 [chainmaker-cryptogen](../dev/证书生成工具.html#extendCA) 或者自建的 [CA证书服务](./CA证书服务.md) 生成同步节点证书 - 2.启动节点程序 ```sh 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 ``` #### 停止同步 停止节点程序即可停止同步。
具体步骤如下: - 1.停止节点程序 ```shell $ kill -15 <节点程序pid> ``` ### 链配置 ChainMaker区块链网络在部署并启动完成后,使用 [cmc](../dev/命令行工具.md) 命令行工具进行链配置的查询、更新。
也可以使用 [SDK](../dev/SDK.md) 开发自定义客户端进行链配置的相关操作。 #### 查询类 - [使用cmc查询链配置](../dev/命令行工具.html#chainConfig.query) #### 更新类 - [使用cmc更新出块时间](../dev/命令行工具.html#chainConfig.updateBlockInterval)