本技术涉及区块链领域,具体而言,涉及一种基于区块链的节点升级方法、装置以及电子设备。
背景技术:
1、联盟链在生产运营阶段可能因缺陷修正或新增功能而需要升级节点服务程序。联盟链网络中有多个节点,不同节点之间对交易的处理逻辑不一致可能会导致节点数据不一致。为了确保联盟链节点升级前后的数据完整性和一致性,现有技术在升级联盟链的节点时通常是由管理员停止所有节点,替换服务程序,当各个节点升级完毕后再统一启动节点,在新版本服务程序的基础上重新组建联盟链网络。
2、但是,依据上述现有的节点升级方式,在联盟链节点的升级过程中,区块链服务将被迫停止,如果节点升级后出现意外问题,则还需要修改升级问题才能恢复服务,服务停止时间会更长。如果节点数量较多,则升级的手工操作也会变得更加繁琐,出错概率增大,带来升级风险。由此可见,在现有的区块链节点升级方法中,存在有节点升级效率低的问题。
3、针对上述的问题,目前尚未提出有效的解决方案。
技术实现思路
1、本技术提供了一种基于区块链的节点升级方法、装置以及电子设备,以至少解决现有技术中需要对所有的区块链节点进行停用后才能逐一进行升级所导致的节点升级效率低的技术问题。
2、根据本技术的一个方面,提供了一种基于区块链的节点升级方法,包括:获取升级文件包,其中,升级文件包用于对区块链中的各个节点进行升级;将升级文件包分割为l个子文件包,其中,l为大于1的整数;将l个子文件包分发给区块链中的各个节点;控制区块链中的各个节点通过区块链的共识途径同步各个节点所接收到的子文件包;控制区块链中的各个节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包对节点进行升级操作。
3、可选地,基于区块链的节点升级方法,包括:获取区块链进行一次数据传输时的最大数据传输量;依据最大数据传输量将升级文件包分割为l个子文件包,其中,l个子文件包中的每个子文件包的数据量小于或等于最大数据传输量。
4、可选地,基于区块链的节点升级方法,包括:计算升级文件包的哈希值;依据升级文件包的哈希值生成包头信息,其中,包头信息至少包括子文件包的数量信息、升级文件包的大小信息以及升级文件包的哈希值对应的加密信息;计算l个子文件包中的每个子文件包的哈希值;将每个子文件包的哈希值和编号信息加密为该子文件包的签名信息;将包头信息、l个子文件包以及每个子文件包的签名信息分发给区块链中的各个节点,其中,包头信息分发给区块链中的所有节点,l个文件包中的一个子文件包以及该子文件包的签名信息发送至区块链中的一个节点。
5、可选地,基于区块链的节点升级方法,包括:在区块链中的第i个节点接收到包头信息之后,对包头信息中的升级文件包的哈希值对应的加密信息进行解密以及校验,其中,第i个节点为区块链中的任意一个节点;在升级文件包的哈希值对应的加密信息校验成功之后,获取全网位图以及第i个节点对应的节点位图,其中,全网位图用于记录区块链中的每个节点在当前时刻所接收到的子文件包以及未接收到的子文件包,第i个节点对应的节点位图用于记录第i个节点在当前时刻所接收到的子文件包以及未接收到的子文件包;根据全网位图和第i个节点对应的节点位图,控制第i个节点通过共识途径从与第i个节点建立有通讯联系的其他节点处获取第i个节点在当前时刻未接收到的子文件包。
6、可选地,基于区块链的节点升级方法,包括:根据全网位图和第i个节点对应的节点位图确定目标节点,其中,目标节点为与第i个节点建立有通讯联系的节点,目标节点在当前时刻接收到了第i个节点在当前时刻未接收到的子文件包;控制第i个节点向目标节点发送目标请求,其中,目标请求用于请求获取目标节点中存储的第i个节点在当前时刻未接收到的子文件包;控制目标节点向第i个节点发送目标节点中存储的第i个节点在当前时刻未接收到的子文件包。
7、可选地,基于区块链的节点升级方法,包括:将区块链中与第i个节点建立有通讯联系的所有节点作为第一节点;控制第i个节点获取所有的第一节点对应的节点位图;根据全网位图、每个第一节点对应的节点位图以及第i个节点对应的节点位图,将在当前时刻存储有第i个节点未接收到的子文件包的第一节点作为目标节点。
8、可选地,基于区块链的节点升级方法,包括:通过负载均衡策略将l个子文件包分发给区块链中的各个节点,其中,负载均衡策略用于保证l个子文件包中不同的子文件包以最大概率发送至不同的节点。
9、可选地,基于区块链的节点升级方法,包括:在区块链中的任意一个节点接收到l个子文件包之后,通过该节点发起升级共识请求,其中,升级共识请求用于统计是否有超过预设数量的节点同意进行节点升级,其中,区块链中的任意一个节点同意进行节点升级的触发条件为该节点接收到了l个子文件包;在依据升级共识请求统计到有超过预设数量的节点同意进行节点升级的情况下,控制每个同意进行节点升级的节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包进行升级操作;在依据升级共识请求未统计到有超过预设数量的节点同意进行节点升级的情况下,直至统计到有超过预设数量的节点同意进行节点升级之后,控制每个同意进行节点升级的节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包进行升级操作。
10、可选地,基于区块链的节点升级方法,包括:在控制每个同意进行节点升级的节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包进行升级操作之后,在检测到区块链中有任意一个未进行升级的节点发起一次升级共识请求时,控制已进行了升级操作的每个节点作为同意进行节点升级的节点参与到本次升级共识请求的处理过程中。
11、根据本技术的另一方面,还提供了一种基于区块链的节点升级装置,其中,基于区块链的节点升级装置包括:获取单元,用于获取升级文件包,其中,升级文件包用于对区块链中的各个节点进行升级;分割单元,用于将升级文件包分割为l个子文件包,其中,l为大于1的整数;分发单元,用于将l个子文件包分发给区块链中的各个节点;第一控制单元,用于控制区块链中的各个节点通过区块链的共识途径同步各个节点所接收到的子文件包;第二控制单元,用于控制区块链中的各个节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包对节点进行升级操作。
12、根据本技术的另一方面,还提供了一种计算机可读存储介质,其中,计算机可读存储介质中存储有计算机程序,其中,在计算机程序运行时控制计算机可读存储介质所在设备执行上述任意一项的基于区块链的节点升级方法。
13、根据本技术的另一方面,还提供了一种电子设备,其中,电子设备包括一个或多个处理器和存储器,存储器用于存储一个或多个程序,其中,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述任意一项的基于区块链的节点升级方法。
14、在本技术中,采用将升级文件包分割为l个子文件包分发给区块链中的各个节点,并控制区块链中的各个节点通过区块链的共识途径同步各个节点所接收到的子文件包的方式,在获取升级文件包之后,将升级文件包分割为l个子文件包,然后将l个子文件包分发给区块链中的各个节点,并控制区块链中的各个节点通过区块链的共识途径同步各个节点所接收到的子文件包。最后,控制区块链中的各个节点将接收到的l个子文件包拼接为升级文件包,并依据拼接完成的升级文件包对节点进行升级操作。其中,升级文件包用于对区块链中的各个节点进行升级,l为大于1的整数。
15、由上述内容可知,本技术将升级文件包分割为l个子文件包,利用区块链的共识机制和信息分发机制实现了对l个子文件包的传播,确保每个节点都能接收到升级文件包,通过本技术的技术方案,不需要对节点进行停用,仅在区块链原有的共识机制、交易机制、点对点传输机制上即可实现节点升级功能,只要节点能正常交易,就可以进行升级,从而解决了现有技术中需要对所有的区块链节点进行停用后才能逐一进行升级所导致的节点升级效率低的技术问题。