# 节点管理
## 简介
ChainMaker区块链网络中有三类节点 `共识节点` `同步节点` `轻节点`
下面详细介绍各类型节点的管理操作。
也可使用 [SDK](../dev/SDK.md) 开发自定义管理工具。
## 目录
- [共识节点](#consensusNode)
- [加入网络](#addConsensusNode)
- [退出网络](#delConsensusNode)
- [更新共识节点的 NodeID](#updateConsensusNodeId)
- [同步节点](#syncNode)
- [开始同步](#startSync)
- [停止同步](#stopSync)
- [轻节点](#spvNode)
- [链配置](#chainConfig)
### 共识节点
- [加入网络](#addConsensusNode)
- [退出网络](#delConsensusNode)
- [更新共识节点的 NodeID](#updateConsensusNodeId)
#### 加入网络
##### BFT类(TBFT、HotStuff)共识、RAFT共识
如果新增共识节点所属的组织根证书不存在与区块链网络中,那么请先参考[证书管理](./证书管理.md)获得证书后,从第1步开始。
具体步骤如下:
- 1.[使用cmc添加组织根证书](../dev/命令行工具.html#chainConfig.addOrgRootCA)
- 2.[使用cmc添加共识节点Org](../dev/命令行工具.html#chainConfig.addConsensusNodeOrg)
- 3.启动节点程序
```shell
$ chainmaker start -c /path/to/chainmaker.yml
```
##### DPoS 共识
因为【Chainmaker v1.2.0版本】的DPoS基于证书体系构建的,所以,当添加新的共识节点时,需要先使用命令将新节点添加到证书体系中。
如果新增节点已经添加到链上的证书体系,请从第3步开始。
具体步骤如下:
- 1.[使用cmc添加组织根证书](../dev/命令行工具.html#chainConfig.addOrgRootCA)
- 2.[使用cmc添加共识节点](../dev/命令行工具.html#chainConfig.addConsensusNode)
- 3.[使用工具从新用户证书计算用户的地址](../dev/命令行工具.html#chainConfig.addrFromCert)
- 4.[使用ERC20的管理员证书向新增节点的用户地址增发权益](../dev/命令行工具.html#chainConfig.dposMint)
- 5.[查询新增节点的用户地址的账户余额](../dev/命令行工具.html#chainConfig.dposBalanceOf)
- 6.[在stake合约中设置新节点的线上ID](../dev/命令行工具.html#chainConfig.dposSetNodeID)
- 7.[查询新节点的线上ID](../dev/命令行工具.html#chainConfig.dposGetNodeID)
- 8.[新节点通过抵押变为候选人参与共识](../dev/命令行工具.html#chainConfig.dposDelegate)
- 9.启动节点程序
```shell
$ chainmaker start -c /path/to/chainmaker.yml
```
#### 退出网络
##### BFT类(TBFT、HotStuff)共识、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)
#### 开始同步
具体步骤如下:
- 1.生成同步节点的证书
通过 [chainmaker-cryptogen](../dev/证书生成工具.html#extendCA) 或者自建的 [CA证书服务](./CA证书服务.md) 生成同步节点证书
- 2.以 [节点配置模版](https://git.chainmaker.org.cn/chainmaker/chainmaker-go/-/blob/master/config/config_tpl/chainmaker.yml) 为模版
其中blockchain.genesis与同一组织下的共识节点保持一致。
修改其中node证书和tls证书为上一步新生成的证书。
- 3.启动节点程序
```shell
$ chainmaker start -c /path/to/chainmaker.yml
```
#### 停止同步
停止节点程序即可停止同步。
具体步骤如下:
- 1.停止节点程序
```shell
$ kill -15 <节点程序pid>
```
### 轻节点SPV
[轻节点SPV详细文档](./轻节点SPV使用.md)
### 链配置
ChainMaker区块链网络在部署并启动完成后,使用 [cmc](../dev/命令行工具.md) 命令行工具进行链配置的查询、更新。
也可以使用 [SDK](../dev/SDK.md) 开发自定义客户端进行链配置的相关操作。
#### 查询类
- [使用cmc查询链配置](../dev/命令行工具.html#chainConfig.query)
#### 更新类
- [使用cmc更新出块时间](../dev/命令行工具.html#chainConfig.updateBlockInterval)