区块链扩充节点

国内的联盟链环境下,如果使用PBFT共识算法,要求满足 |R| >= 3f+1,其中R表示节点总数,f表示故障节点总数。联盟链的背后是一个利益共同体,他们共同维护、管理和监督着联盟链的正常运行。既然是组织,那发展好的话,组织是不是会不断扩大呢?组织成员是不是会增加呢?也就意味着区块链节点也要增加,哈。那怎么去扩充区块链节点呢?扩充之后应该注意什么呢?下面就以FISCO BCOS为例,分享一下怎么去扩充区块链节点。

关于FISCO BCOS扩充节点,第一手资料仍然是官方文档,其次是Google辅助资料、哔哩哔哩视频资料等,最后是经验前辈的咨询及官方支持等。

扩充节点前,先了解一下节点的状态类型。FISCO BCOS下有三种状态的节点:游离节点、观察者节点、共识节点。这三种节点类型可通过控制台相互转换。

共识节点:参与共识的节点,拥有群组的所有数据(搭链时默认都生成共识节点)。

观察者节点:不参与共识,但能实时同步链上数据的节点。

游离节点:已启动,待等待加入群组的节点。处在一种暂时的节点状态,不能获取链上的数据。

如果需要扩容一个参与共识的节点,就增加一个共识节点;如果需要扩容一个只同步链上数据的节点,就增加一个观察者节点。

扩容一个新节点,扩容操作一般分为两个阶段,分别为节点生成证书并启动 和 将节点加入群组。

在购买服务器的时候,应该考虑清楚性能、容量和网络,几vCPU几G内存够用?系统盘容量和数据盘容量应该多大?网络是否购买在同一VPC下,是否需要外网,网络带宽应该多大?性能方面,推荐4vCPU8G内存;系统盘的话,默认值50G即可,数据盘的话,看当前数据容量,建议多预留一些存储空间,减少扩容维护。容量方面,不足就加。一般建议节点部署在同一个VPC,通过内网交互,可以不需要外网,如果有通过外网IP访问服务器的需求,购买一个按量付费的5M带宽即可。

每个节点都需要有一套证书来与链上的其他节点建立连接,扩容一个新节点,首先需要为其签发证书。接下来,就是为节点生成证书并启动。先切换到工作目录,curl获取证书生成脚本,再运行脚本生成新节点私钥证书,这里需要注意证书是否为国密版本。

接着,配置新节点信息。配置新节点信息需要参照之前的存在节点信息,默认选择node0为参照。直接拷贝node0节点的config.ini、start.sh、stop.sh文件到新节点目录,然后修改config.ini文件中的rpc模块和p2p模块,在p2p模块需要增加新节点的信息。继续拷贝node0的group.1.genesis、group.1.ini到新节点目录下的conf文件夹。到此,新节点的配置就完成了。

接着,运行start.sh脚本启动节点。启动完成,需要确认新节点与原始节点的连接是否已经建立,新节点是否完成加入网络的操作。这个确认操作通过tail命令查询日志获取。

到这里,第一阶段的工作也就完成啦。现在进入第二阶段,把新节点加入到群组中。

首先获取新节点的nodeid,nodeid是节点公钥的16进制表示。然后看一下原始节点网络有几个群组,应该把新节点添加到哪个群组。接着到FISCO控制台,使用addObserver命令将新节点作为观察节点加入到目标群组。如果新节点的目标类型是观察者节点,那么到这里就结束啦。如果新节点的目标类型是共识节点,那么再继续往下操作。接着,再使用addSealer命令将新节点作为共识节点加入到目标群组。

最后,等待新节点链上数据的同步,然后到节点服务器查看数据同步情况,到FISCO的WeBase管理平台或区块链浏览器查看整个区块链网络的状态。

一切正常的话,区块链的新节点扩充就成功啦。不过,还需要继续监控新节点的状态,做好后期的维护工作。