一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

升级区块链系统的方法、装置及终端设备与流程

2021-11-15 15:06:00 来源:中国专利 TAG:


1.本技术属于计算机应用技术领域,尤其涉及一种升级区块链系统的方法、装置及终端设备。


背景技术:

2.区块链系统作为一个分布式账本,可以由多个参与方节点组成。当区块链系统存在缺陷或新增功能时,可以通过系统升级的方式进行修复或更新。
3.然而,目前在区块链系统升级过程中,由于参与方节点的升级时间难以统一,使得区块链系统中可能同时存在不同运行版本的节点;由于升级时间不一致或版本差异,容易出现区块链系统无法达成共识或整个区块链系统不可用等情况,导致区块链系统升级效率较低。


技术实现要素:

4.本技术实施例提供了一种升级区块链系统的方法、装置及终端设备,可以提高区块链系统的升级效率。
5.第一方面,本技术提供了一种升级区块链系统的方法,该方法可以包括:在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;根据所述第一目标支持版本号,计算所述区块链系统中所有所述参与方节点共有的第一目标升级版本号;在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;其中,所述升级提案交易为链级管理员账户发起的,所述第一目标支持版本号的系统版本为所述目标二进制程序所兼容的系统版本,所述第一目标支持版本号包括所述初始运行版本号和所述第一目标升级版本号,所述第一目标升级版本号高于所述初始运行版本号,所述参与方节点为所述区块链系统中参与共识机制的节点。
6.在第一方面的一种可能的实现方式中,所述区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序,包括:所述区块链系统中预设数量的所述参与方节点按轮次停止线上运行,并进行数据备份;预设数量的所述参与方节点线下将所述初始二进制程序替换为所述目标二进制程序;其中,所述预设数量小于或等于所述区块链系统的所述共识机制容错的参与方节点数量;或者,所述预设数量小于或等于所述区块链系统中分区网络中所述共识机制容错的参与方节点数量。
7.在第一方面的一种可能的实现方式中,所述确定所述区块链系统的第一目标支持版本号,包括:所述参与方节点获取所述链级管理员账户针对支持版本号发起的上链请求;根据
所述上链请求,所述区块链系统中的每个所述参与方节点生成包含自身所述支持版本号的交易,并向所述区块链系统中的其他参与方节点广播所述交易;所有所述参与方节点在执行接收到的包含所述支持版本号的所述交易过程中,将所述交易中的所述支持版本号存储到账本中,得到所述区块链系统的所述第一目标支持版本号。
8.在第一方面的一种可能的实现方式中,所述向所述区块链系统中的其他参与方节点广播所述交易之后,所述方法还包括:在执行所述交易过程中,所述参与方节点对广播所述交易的参与方节点的权限进行识别;若广播所述交易的参与方节点为所述区块链系统中参与所述共识机制的节点,所述参与方节点将所有所述交易中的所述支持版本号存储到账本中。否则,该笔交易执行失败,不对账本进行修改。
9.在第一方面的一种可能的实现方式中,在所述参与方节点对系统升级提案交易的投票结果为通过之后,所述方法还包括:在执行所述系统升级提案交易过程中,若所述参与方节点的账本中所述第一目标升级版本号对应的有效值非空且所述第一目标升级版本号高于所述初始运行版本号,则将所述初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本。否则,系统升级提案交易执行失败,系统不会做升级。
10.在第一方面的一种可能的实现方式中,在所述根据所述第一目标支持版本号,计算所述区块链系统的第一目标升级版本号之后,所述方法还包括:若所述第一目标升级版本号高于所述初始运行版本号,则将账本中记录的初始升级版本号替换为所述第一目标升级版本号;若所述第一目标升级版本号不高于所述初始运行版本号,则保留账本中记录的初始升级版本号。
11.在第一方面的一种可能的实现方式中,在所述将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本之前,所述方法还包括:若所述区块链系统中加入新节点,则清空所述区块链系统的账本中记录的所述第一目标升级版本号;重新确定加入新节点后的区块链系统的第二目标支持版本号;根据所述第二目标支持版本号,计算所述区块链系统的第二目标升级版本号,并将所述第二目标升级版本号记录在账本中;相应的,在所述参与方节点对链级管理员账户重新发起的系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第二目标升级版本号的系统版本。
12.示例性的,重新确定加入新节点后的区块链系统的第二目标支持版本号,包括:所述新节点获取所述链级管理员账户针对支持版本号发起的上链请求;根据所述上链请求,所述新节点生成包含自身对应的所述支持版本的交易,并向所述区块链系统中的其他参与方节点广播所述交易;在执行所述交易的过程中,将所述交易中的所述支持版本号进行存储,更新账本中的支持版本号,得到所述第二目标支持版本号。
13.在第一方面的一种可能的实现方式中,所述参与方节点包括链级版本模块;在将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号
的系统版本之后,所述方法还包括:所述区块链系统中的所述参与方节点根据升级后的系统版本变更各个链级版本模块的运行逻辑。
14.在第一方面的一种可能的实现方式中,所述参与方节点包括节点级版本模块,所述方法还包括:所述参与方节点向网络模块注册所述节点级版本模块所支持的系统版本的版本号列表;在通过所述网络模块接收到建立网络连接请求时,通过所述网络模块对发起所述建立网络连接请求的参与方节点进行身份验证;在身份验证通过后,通过网络模块计算出进行网络连接的各个所述参与方节点中的所述节点级版本模块所共有的最大版本号;通过所述网络模块向进行网络连接的所述参与方节点中的节点级模块发送通知,所述通知用于指示进行网络连接的所述参与方节点中的节点级模块基于所述最大版本号进行通信。
15.第二方面,本技术实施例提供了一种升级区块链系统的装置,该装置可以包括:处理单元,用于在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;计算单元,用于根据所述第一目标支持版本号,计算所述区块链系统的第一目标升级版本号;升级单元,用于在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;其中,所述升级提案交易为链级管理员账户发起的,所述第一目标支持版本号的系统版本为所述目标二进制程序所兼容的系统版本,所述第一目标支持版本号包括所述初始运行版本号和所述第一目标升级版本号,所述第一目标升级版本号高于所述初始运行版本号,所述参与方节点为所述区块链系统中参与共识机制的节点。
16.第三方面,本技术提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的方法。
17.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的方法。
18.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第一方面所述的方法。
19.可以理解的是,上述第二方面至第五方面的有益效果可以参见第一方面中的相关描述,在此不再赘述。
20.本技术与现有技术相比存在的有益效果是:通过本技术,在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;根据所述第一目标支持版本号,计算所述区块链系统中所述参与方节点共有的第一目标升级版本号;在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述
区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;通过本技术,参与方节点更新的目标二进制程序可以兼容区块链系统的初始运行版本,区块链系统升级之前以初始版本运行,可以保证区块链系统在升级之前共识机制及可用性,将二进制程序提前更新完成,在确定出第一目标升级版本后,直接进行系统版本的更新,提高了区块链系统升级效率;从而解决了升级区块链系统过程中容易出现无法达成共识或整个区块链系统不可用的问题,提高了区块链系统的升级效率;具有较强的易用性与实用性。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术一实施例提供的应用场景的系统架构示意图;图2是本技术一实施例提供的区块链升级方法的流程示意图;图3是本技术一实施例提供的升级过程节点示意图;图4是本技术另一实施例提供的升级过程节点示意图;图5是本技术一实施例提供的区块链升级装置的结构示意图;图6是本技术实施例提供的终端设备的结构示意图。
具体实施方式
23.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
24.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
25.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
26.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0027]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0028]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、

在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0029]
联盟区块链是由多家企业或机构共同参与计算的分布式账本,参与方都至少部署了一个区块链节点,用于同步全量区块链数据,以及参与账本的计算和共识,该包括多个参与方的系统可以成为区块链系统。
[0030]
当区块链系统存在缺陷时,针对修复后不存在无法兼容问题的简单缺陷,可以通过开发人员增加新的节点二进制包(修复后的二进制程序),区块链系统中的参与方可以自行选择时间进行二进制包的替换即可完成修复,无需进行整个区块链系统的升级。
[0031]
然而,当区块链系统出现交易执行逻辑变更、协议变更、功能新增等情况时,则需要进行整个区块链系统的升级。
[0032]
联盟区块链系统升级过程中,由于参与方较多,并且存在一定的地理隔离或机构隔离,多个参与方节点难以线下协调出一直的系统升级时间,各方升级时间错开,将导致区块链系统里同时存在历史版本的节点和更新版本的节点,由于版本的差异,可能存在版本差异的节点对同一个区块的执行结果不同,进而也无法达成共识等严重情况;并且在所有参与方节点均完成二进制升级之前,整个区块链系统可能处于不可用状态,从而无法保证升级过程中持续为上层应用提供共识记账服务。
[0033]
目前,针对联盟区块链系统升级的方法包括线下系统升级和线上系统升级。
[0034]
其中,线下系统升级需要多个参与方协调出一个大家都可以接受的升级周期,在该升级周期内,停止区块链系统中所有应用服务,待所有参与方系欸但的二进制程序都完成替换,并且重启后的区块链系统正常运行才确认升级成功。该线下升级方式,线下沟通成本较大,很难协商出一致的升级周期,并且在进行二进制程序的替换过程中各个参与方需要保持联系,且在所有参与方节点都完成二进制程序的替换后,才可以查看本地节点是否可以正常运行;同时在升级过程中,可能存在不同的二进制程序版本,从而使得整个区块链系统可能无法正常提供区块链服务。
[0035]
而线上系统升级则需要区块链系统获取用户提出的系统升级提案交易,在各个参与方节点对该系统升级提案交易的投票通过后,执行该系统升级提案交易。在执行过程中,参与方节点需要通过网络请求从远程自动获取升级需要的二进制文件和升级脚本,并与其他参与方节点对比二进制文件的哈希值,哈希值一致才执行升级脚本,进行区块链系统的升级。该线上系统升级由于各个参与方节点的环境差异及复杂性,可能存在网络请求二进制文件失败的风险;而且升级脚本负责停止节点旧二进制程序的运行进程,启动节点新二进制程序的运行进程,使得可能存在有的节点的升级脚本执行成功,有的执行失败的情况,在节点出现错误的数量超过区块链系统所能支持的拜占庭节点的个数时,区块链系统将会处于不可用的状态。
[0036]
本技术实施例中的升级区块链系统的方法,可以实现参与方节点多个系统版本的兼容性,通过线上版本管理和版本协商,减少了线下沟通成本,提高了区块链系统升级的效率;同时保证了区块链系统在升级过程中,还可以生成新的区块,持续为上层应用提供服务。
[0037]
请参见图1,图1是本技术一实施例提供的应用场景的系统架构示意图。区块链系
统是一个分布式账本,是由多个参与方节点组成的网络集群,如图1所示,该区块链系统包括参与方节点1至7,每个参与方节点可以包括节点级版本的模块(例如通信网络模块)和链级版本的模块(例如共识算法模块、执行引擎模块、虚拟机模块以及密码学模块等)。
[0038]
在一些实施例中,各个参与方节点进行二进制程序升级的时间可以均不相等,因此需要保证区块链系统中的各个参与方的数据兼容性、协议兼容性以及通信兼容性等。由于区块链系统为包括通信网络模块、共识算法模块、执行引擎模块、虚拟模块以及密码学模块等组成的系统,通过将区块链系统的各个模块对应的系统版本划分为节点级版本和链级版本,对各个模块对应的系统版本进行管理,实现区块链系统升级过程中各个模块的兼容性。
[0039]
其中,节点级版本是指区块链系统中参与方节点之间通信交互不受共识机制约束的模块对应的系统版本,相应的版本号不需要记录到区块链的账本上,仅需通信的两个节点协商出该模块共有的最大版本号,以该最大版本号所定义的逻辑运行。链级版本是指参与方节点之间通信交互受共识机制约束的模块对应的系统版本,相应的版本号需要记录到区块链的账本上,基于所有参与方节点通过共识机制协商出共有的最大版本号,各个参与方节点以该最大版本号定义的逻辑运行。
[0040]
示例性的,共识机制约束包括共识法定数量quorum约束。该共识quorum约束为在类实用拜占庭容错(practical byzantine fault tolerance,pbft)联盟链共识算法里,当节点广播一个共识消息后,需要收到法定数量quorum个节点的回复才能继续往下执行的机制。
[0041]
需要说明的是,一般链级版本的模块或协议,会影响参与方节点的交易执行逻辑、交易执行结果等,因此本技术在区块链系统升级过程中,针对区块链系统中链级版本的模块进行管理,实现各模块对应的系统版本的兼容性。
[0042]
基于上述情况,本技术实施例提供了一种升级区块链系统的方法,可以实现区块链系统升级过程中各模块的兼容性,提高区块链系统的升级效率。下面通过本技术实施例介绍该方法实现的具体过程。
[0043]
请参见图2,图2是本技术一实施例提供的区块链升级方法的流程示意图。如图2所示,该方法包括以下步骤:步骤s201,在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号。
[0044]
在一些实施例中,该方法的执行主体可以是区块链系统中的参与方节点对应的终端设备,该终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。
[0045]
在一些实施例中,二进制程序为多行字符编写的数据或程序指令的程序文件,为用于支撑区块链系统运行的程序文件。区块链系统在进行线上升级之前,各个参与方节点需要进行二进制程序的线下替换升级。由于二进制程序的升级需要参与方节点停止线上运行,为保证区块链系统升级过程中不受影响,且符合区块链系统的共识机制可容的拜占庭节点的数量,各个参与方节点的线下升级需要按轮次进行。
[0046]
应理解,区块链系统在升级过程中,区块链系统中的参与方节点对应的终端设备可以接收用户输入的升级指令,终端设备执行该升级指令,将区块链系统中的初始二进制程序升级替换为目标二进制程序。
[0047]
在一些实施例中,所述区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序,包括:所述区块链系统中预设数量的所述参与方节点按轮次停止线上运行,并进行数据备份;预设数量的所述参与方节点线下将所述初始二进制程序替换为所述目标二进制程序。
[0048]
其中,所述预设数量小于或等于所述区块链系统的所述共识机制容错的参与方节点数量;或者,所述预设数量小于或等于所述区块链系统中分区网络中所述共识机制容错的参与方节点数量。
[0049]
第一种情况,如图3所示,该区块链系统的参与方节点为节点1至节点7。在该由七个节点组成的区块链共识网络里,根据冗余拜占庭容错(redundant byzantine fault tolerance,rbft)共识算法的公式可知系统可容拜占庭节点数量f=2,即同一时刻最多只能存在两个节点停机,超过该数量,区块链系统将无法进行共识。因此需要按轮次对该区块链共识网络里的节点进行二进制程序的更新。
[0050]
示例性的,节点在停止线上运行之前对应支持的系统版本为初始二进制程序所兼容的系统版本,例如在第一轮升级之前节点1至节点7对应的支持版本为v1.0版本;线下升级后对应支持的系统版本为目标二进制程序所兼容的版本,例如在第一轮升级后节点1和节点2所对应的支持版本包括v1.0版本和v2.0版本。
[0051]
如图3所示,该区块链共识网络里的最初七个节点都只支持v1.0协议,区块链系统运行的也是v1.0版本,需要将系统版本升级为v2.0版本,则通过每个轮次停止两个节点,线下升级二进制程序,通过四轮次的升级,使整个区块链共识网络里的所有节点完成对二进制程序的升级替换。
[0052]
如图3所示,第一轮二进制程序升级由节点1和节点2进行,升级完成后,节点1和节点2支持v1.0版本和v2.0版本,由于整个系统运行的系统版本依旧是v1.0版本,因此节点1和节点2运行的也是v1.0版本。第二轮二进制程序升级由节点3和节点4进行,升级完成后,节点3和节点4支持v1.0版本和v2.0版本,由于整个系统运行的依旧是v1.0版本,因此节点3和节点4运行的也是v1.0版本。第三轮升级、第四轮升级同理。
[0053]
第二种情况,如图4所示,当区块链系统包括多个分区网络时,还可以按分区网络进行二进制程序的升级替换。
[0054]
如图4所示,在多分区网络的区块链系统里,每一个分区网络都是一条独立的应用链,分区网络1由节点1、节点2、节点3和节点4组成,分区网络2由节点4、节点5、节点6和节点7组成;其中,节点4处于两个分区网络。
[0055]
示例性的,最初分区网络1与分区网络2运行的系统版本均为v1.0版本,之后分区网络1要升级到v2.0版本。首先,分区网络1的节点进行线下二进制程序的升级替换,成功启动后,重新初始化分区网络1里节点的链上的支持版本,之后通过系统升级提案将系统版本升级到v2.0版本。
[0056]
其中,分区网络1的整个升级过程对于分区网络2来说几乎无感知,只有节点4发生了短暂的停机重启,在共识算法的可容拜占庭数量f的区块链网络里,节点4的短暂停机不会对分区网络2的业务运行造成影响。最后,两个分区运行的链级版本不一样,分区1运行的是v2.0版本的协议,分区2运行的是v1.0版本的协议。节点4同时支持v1.0和v2.0版本,在分
区1中运行v2.0版本,在分区2中运行v1.0版本。
[0057]
应理解,针对第二种情况,存在多个分区网络的区块链系统,在分区网络1的系统版本升级过程中,进行线下二进制程序的替换时,可以是按第一种情况中的节点按轮次进行二进制程序的线下升级替换,经过多个轮次分区网络中的所有节点完成线下二进制程序的升级。
[0058]
另外,在进行二进制程序的升级替换之前,节点还进行数据备份,该数据备份包括对系统版本的备份以及其他交易执行结果数据等的备份。在替换二进制程序之后,该节点更改相应的配置,例如重新配置系统参数等。
[0059]
示例性的,区块链系统中属于链级版本的版本号可以记录在创世genesis区块中,对区块链系统升级之前的创世链进行初始化;其中,记录在创世genesis区块中的版本号包括该创世节点支持的链级版本号列表(所有支持版本的版本号)和正在运行使用的链级版本号(运行版本的版本号)。以便于后续升级过程中对版本进行查询或参考。
[0060]
可理解的,在进行创世链初始化时,将区块链系统中链级版本号记录在创世区块中的同时,区块链系统的账本中记录系统的初始运行版本和初始支持版本,在区块链系统中节点完成二进制程序的线下升级,启动后,账本中重新记录目标二进制程序所兼容的支持版本。
[0061]
需要说明的是,七个节点完成二进制程序的升级替换,区块链系统启动运行的依旧是账本里记录的初始运行版本(如v1.0版本)。从而保证了区块链系统在升级过程中各个模块的兼容性,满足区块链系统的共识机制,区块链系统中即使存在可兼容不同系统版本的二进制程序,该区块链共识网络仍可以正常提供共识服务。
[0062]
另外,一般情况下区块链系统中的各个节点升级后的目标二进制程序相同,每个节点所支持的系统版本一致。但也可能存在替换了不同的目标二进制程序,使得节点之间所兼容的系统版本可能不同,具体还可以根据实际应用需要进行设定。如果存在替换错误的情况,后续还可以进行纠错处理;从而在整体的升级过程中,均减少了线下沟通的成本。
[0063]
示例性的,第一目标支持版本号为区块链系统中各个参与方节点对应的支持版本的版本号的集合,或者整个区块链系统对应的支持版本的版本号。例如图3中的最初七个节点升级后都只支持v1.0版本和v2.0版本,则区块链系统对应的该第一目标支持版本号包括v1.0和v2.0。
[0064]
在一些实施例中,所述确定所述区块链系统的第一目标支持版本号,包括:所述参与方节点获取所述链级管理员账户针对支持版本号发起的上链请求;根据所述上链请求,所述区块链系统中的每个所述参与方节点生成包含自身所述支持版本号的交易,并向所述区块链系统中的其他参与方节点广播所述交易;所有所述参与方节点在执行接收到的包含所述支持版本号的所述交易过程中,将所述交易中的所述支持版本号存储到账本中,得到所述区块链系统的所述第一目标支持版本号。
[0065]
在一些实施例中,链级管理员账户可以为区块链系统中被授权的一个参与方节点上设置的账户,还可以是被授权的创世区块上设置账户,或者级别更高且被授权的区块中设置的账户;通过该账户可以向区块链系统中的参与方节点发起上链请求。该上链请求中可以包括针对各个节点的支持版本的参量。区块链系统中的各个参与方节点在接收到该上链请求后,基于自身的节点账户构造一项包含自己支持版本的交易,并向整个区块链系统
中的节点进行广播。
[0066]
示例性的,在区块链系统中的参与方节点生成交易并向其他参与方节点广播后,接收到交易的参与方节点将交易缓存在交易池,参与方节点中的主节点可以从交易池中取出交易池中的交易,并将一个或多个交易打包成区块后,向其他参与方节点广播,参与方节点对该区块进行共识,在该区块的通过区块链系统中各参与方节点的共识机制后,各参与方节点执行该区块里的交易,在执行交易的过程中,修改账本状态,将交易中的支持版本号存储到账本中。
[0067]
应理解,该区块链系统中的每个参与方节点作为执行主体,可以为该交易的发起方,也可以为该交易的接收方。
[0068]
示例性的,当参与方节点执行该交易时,将接收到的交易中的支持版本存储到账本中。待参与方节点完成该交易后,即可确定该区块链系统对应的第一目标支持版本号。例如图3所示,在进行升级之前,根据参与方节点执行的交易,可以确定该区块链系统对应的第一目标支持版本号包括v1.0和v2.0。
[0069]
在一些实施例中,所述向所述区块链系统中的其他参与方节点广播所述交易之后,所述方法还包括:在执行所述交易过程中,所述参与方节点对广播所述交易的参与方节点的权限进行识别;若广播所述交易的参与方节点为所述区块链系统中参与所述共识机制的节点,所述参与方节点将所有所述交易中的所述支持版本号存储到账本中。
[0070]
示例性的,在区块链系统中的各个参与方节点执行交易过程中,接收到交易时,还需要对该交易的发起方进行权限检查,若该交易的发起方为该区块链系统共识网络中的一员,则继续执行该交易。否则,该交易接收方节点返回该笔交易执行失败的提示,并不对账本进行修改。
[0071]
步骤s202,根据所述第一目标支持版本号,计算所述区块链系统中所述参与方节点共有的第一目标升级版本号。
[0072]
在一些实施例中,在区块链系统确定所支持的第一目标支持版本号后,可以基于该第一目标支持版本号,确定出区块链系统对应的第一目标升级版本号。
[0073]
例如,一个二进制程序可以兼容多个系统版本,比如二进制程序a兼容的系统版本为 v1.0和v1.1;之后经过开发增加了一些新特性,系统版本为v1.2,则二进制程序b兼容的系统版本为 v1.0、v1.1和v1.2。即区块链系统中的参与方节点在二进制程序a时,所支持的系统版本包括v1.0版本和v1.1版本;在将二进制程序a升级替换成二进制程序b时,该区块链系统中参与方节点所支持的系统版本包括v1.0版本、v1.1版本和v1.2版本,即可以确定第一目标支持版本包括v1.0版本、v1.1版本和v1.2版本。根据该第一目标支持版本,可以计算出各个参与方节点共有的第一目标升级版本号,例如v1.2版本。
[0074]
在一些实施例中,在所述根据所述第一目标支持版本号,计算所述区块链系统的第一目标升级版本号之后,所述方法还包括:若所述第一目标升级版本号高于所述初始运行版本号,则将账本中记录的初始升级版本号替换为所述第一目标升级版本号;若所述第一目标升级版本号不高于所述初始运行版本号,则保留账本中记录的初始升级版本号。
[0075]
在一些实施例中,区块链系统或参与方节点的账本中记录有系统升级之前的初始
运行版本号;区块链系统可能经过多次系统升级,则在账本中还可能记录上次系统升级时的初始升级版本号,相应的,系统升级后所运行的系统版本的版本号也是该初始升级版本号;那么,在下一次升级时,若所述第一目标升级版本号高于所述初始运行版本号(也即初始升级版本号),将重新计算出的第一目标升级版本号替换原来的初始升级版本号。
[0076]
步骤s203,在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本。
[0077]
在一些实施例中,该升级提案交易为被授权的链级管理员账户发起的,该第一目标支持版本号的系统版本为目标二进制程序所兼容的系统版本,第一目标支持版本号包括初始运行版本号和第一目标升级版本号,第一目标升级版本号高于初始运行版本号,参与方节点为所述区块链系统中参与共识机制的节点。
[0078]
在一些实施例中,在所述参与方节点对系统升级提案交易的投票结果为通过之后,所述方法还包括:在执行所述系统升级提案交易过程中,若所述参与方节点的账本中所述第一目标升级版本号对应的有效值非空且所述第一目标升级版本号高于所述初始运行版本号,则将所述初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本。
[0079]
在一些实施例中,链级管理员向区块链系统发起一笔系统升级提案交易,该区块链系统的参与方节点投票通过后,执行该系统升级提案交易。在执行过程中,如果当前账本里第一目标升级版本为非空值,并且该值大于区块链系统当前运行的系统版本(对应初始运行版本号),则重置当前运行的初始运行版本号的系统版本为第一目标升级版本号的系统版本,完成系统升级。否则,该系统升级提案交易执行失败,系统不执行升级操作。
[0080]
示例性的,一个二进制程序可以兼容多个系统版本,比如二进制程序a支持的系统版本为 v1.0和v1.1,假设启动后当前区块链系统运行的是v1.1版本。之后经过开发增加了一些新特性,系统版本为v1.2,则二进制程序b支持的系统版本为 v1.0、v1.1和v1.2,启动后,系统运行的还是 v1.1。然后系统升级提案交易的经过投票同意后,区块链系统的系统版本升级到 v1.2。
[0081]
如图3所示,在第四轮升级后,各个节点线上执行系统升级提案交易,将系统的运行版本重置为v2.0版本。
[0082]
在一些实施例中,在所述将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本之前,所述方法还包括:若所述区块链系统中加入新节点,则清空所述区块链系统的账本中记录的所述第一目标升级版本号;重新确定加入新节点后的区块链系统的第二目标支持版本号;根据所述第二目标支持版本号,计算所述区块链系统的第二目标升级版本号,并将所述第二目标升级版本号记录在账本中;相应的,在所述参与方节点对链级管理员账户重新发起的系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第二目标升级版本号的系统版本。
[0083]
在一些实施例中,重新确定加入新节点后的区块链系统的第二目标支持版本号,包括:所述新节点获取所述链级管理员账户针对支持版本号发起的上链请求;根据所述
上链请求,所述新节点生成包含自身对应的所述支持版本的交易,并向所述区块链系统中的其他参与方节点广播所述交易;在执行所述交易的过程中,将所述交易中的所述支持版本号进行存储,更新账本中的支持版本号,得到所述第二目标支持版本号。
[0084]
在一些实施例中,如果有新节点请求加入该区块链系统的共识网络,在该区块链系统中的其他旧节点投票同意该新节点加入后,该新节点信息被记录到该区块链系统的内置合约中。
[0085]
示例性的,由于新节点的加入,该区块链系统的可升级版本(第一目标升级版本)可能发生变化,需要重新计算。区块链系统清空当前账本的中第一目标升级版本号。新节点接收被授权的链级管理员账户发送的针对支持版本的上链请求,新节点对应的节点账户构造一笔携带自己的支持版本号的交易广播到全网,更新账本里的第一目标支持版本号,得到更新后的第二目标支持版本号,根据第二目标支持版本号计算得到第二目标升级版本号。从而可以保证区块链系统升级过程中,在有新的区块节点加入区块链系统时,可以持续为上层应用提供服务。
[0086]
在一些实施例中,参与方节点包括链级版本模块;在将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本之后,所述方法还包括:所述区块链系统中的所述参与方节点根据升级后的系统版本变更各个链级版本模块的运行逻辑。
[0087]
示例性的,该区块链系统中的各个参与方节点重置完系统的运行版本(目标升级版本)以后,将该运行版本的版本号通知给各个链级版本的协议或模块,进行逻辑的变更。
[0088]
在一些实施例中,针对区块链系统中的节点级版本的模块或协议的管理过程,在各个参与方节点的上层的节点级协议或模块相互通信时,若存在版本差异,该方法还包括:所述参与方节点向网络模块注册所述节点级版本模块所支持的系统版本的版本号列表;在通过所述网络模块接收到建立网络连接请求时,通过所述网络模块对发起所述建立网络连接请求的参与方节点进行身份验证;在身份验证通过后,通过网络模块计算出进行网络连接的各个所述参与方节点中的节点级模块所共有的最大版本号;通过所述网络模块向进行网络连接的所述参与方节点中的所述节点级版本模块发送通知,所述通知用于指示进行网络连接的所述参与方节点中的节点级模块基于所述最大版本号进行通信。
[0089]
其中,网络模块可以为接收到网络连接请求的参与方节点中的模块。
[0090]
示例性的,区块链系统中上层的各个节点级协议或模块向网络模块注册该协议或模块所支持的系统版本的版本号列表;网络模块接收到一项网络连接,完成发起该网络连接的参与方节点的身份验证后,进入协议版本协商;通过协议版本协商分别计算出这两个节点的节点级协议或模块共有的最大版本号;网络模块将协商结果返回给上层的各个节点级协议或模块;上层的节点级协议或模块记录网络模块协议版本协商的结果,后续该两个参与方节点通信均以该共有的最大版本号的系统版本定义的逻辑运行。
[0091]
其中,上述的网络模块可以为相互通信的两个参与方节点的中的模块,上述流程的执行主体可以是区块链系统中接收网络连接的参与方节点。
[0092]
另外,针对可能与多个节点建立了网络连接的本地节点,由于网络通信不受共识quorum约束,每条网络连接都相互独立,本地节点可能与不同节点的通信使用不同的节点
级版本。
[0093]
通过本技术实施例,在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;根据所述第一目标支持版本号,计算所述区块链系统中所述参与方节点共有的第一目标升级版本号;在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;减少了线下沟通成本,提高了系统升级效率;二进制升级过程中,只要停机的节点数量不超过系统所能容忍的拜占庭节点数量,即使存在不同二进制版本的节点,区块链系统依旧可以正常提供共识服务;使系统升级过程总体可控。
[0094]
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
[0095]
对应于上文实施例所述的区块链升级方法,图5示出了本技术实施例提供的区块链升级装置的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。
[0096]
参照图5,该装置包括:处理单元51,用于在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;计算单元52,用于根据所述第一目标支持版本号,计算所述区块链系统的第一目标升级版本号;升级单元53,用于在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;其中,所述升级提案交易为链级管理员账户发起的,所述第一目标支持版本号的系统版本为所述目标二进制程序所兼容的系统版本,所述第一目标支持版本号包括所述初始运行版本号和所述第一目标升级版本号,所述第一目标升级版本号高于所述初始运行版本号,所述参与方节点为所述区块链系统中参与共识机制的节点。
[0097]
通过本技术实施例,在区块链系统中的参与方节点将初始二进制程序更新为目标二进制程序后,确定所述区块链系统的第一目标支持版本号;根据所述第一目标支持版本号,计算所述区块链系统中所述参与方节点共有的第一目标升级版本号;在所述参与方节点对系统升级提案交易的投票结果为通过时,将所述区块链系统当前运行的初始运行版本号的系统版本升级为所述第一目标升级版本号的系统版本;减少了线下沟通成本,提高了系统升级效率;二进制升级过程中,只要停机的节点数量不超过系统所能容忍的拜占庭节点数量,即使存在不同二进制版本的节点,区块链系统依旧可以正常提供共识服务;解决了升级区块链系统过程中容易出现无法达成共识或整个区块链系统不可用的问题,使系统升级过程总体可控。
[0098]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0099]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功
能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0100]
本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
[0101]
本技术实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
[0102]
图6为本技术一实施例提供的终端设备6的结构示意图。如图6所示,该实施例的终端设备6包括:至少一个处理器60(图6中仅示出一个)处理器、存储器61以及存储在所述存储器61中并可在所述至少一个处理器60上运行的计算机程序62,所述处理器60执行所述计算机程序62时实现上述实施例中的步骤。
[0103]
所述终端设备6可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备6可包括,但不仅限于,处理器60、存储器61。本领域技术人员可以理解,图6仅仅是终端设备6的举例,并不构成对终端设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
[0104]
所称处理器60可以是中央处理单元(central processing unit,cpu),该处理器60还可以是其他通用处理器、数字信号处理器 (digital signal processor,dsp)、专用集成电路 (application specific integrated circuit,asic)、现成可编程门阵列 (field

programmable gate array,fpga) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0105]
所述存储器61在一些实施例中可以是所述终端设备6的内部存储单元,例如终端设备6的硬盘或内存。所述存储器61在另一些实施例中也可以是所述终端设备6的外部存储设备,例如所述终端设备6上配备的插接式硬盘,智能存储卡(smart media card, smc),安全数字(secure digital, sd)卡,闪存卡(flash card)等。进一步地,所述存储器61还可以既包括所述终端设备6的内部存储单元也包括外部存储设备。所述存储器61用于存储操作系统、应用程序、引导装载程序(bootloader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器61还可以用于暂时地存储已经输出或者将要输出的数据。
[0106]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可
以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
[0107]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0108]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0109]
在本技术所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0110]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0111]
以上所述实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献