半同步及异步网络区块链共识切换方法及装置

未命名 09-07 阅读:82 评论:0


1.本技术涉及信息安全技术领域,特别涉及一种半同步及异步网络区块链共识切换方法及装置。


背景技术:

2.区块链是一种根据时间顺序用链表的形式来记录数据的数据结构,依托于密码学哈希函数等工具提供区块数据的完整性和不可否认性的安全服务,通常区块中所存储的内容主要为每隔一段时间内网络的交易数据。共识机制是区块链技术的基础和核心技术,决定了区块链网络中所有参与节点以何种方式对某些特定的数据(如交易,数据块等)的有效性和真实性达成一致,并起到平衡节点状态等作用。对于大部分已有的共识协议,高性能和可容错性两个需求往往不可兼得。现有研究主要单方面对于共识算法的通信复杂度进行优化以提升性能,或者单方面对于算法的安全性进行提高。通过设计共识切换协议,可以满足不同区块链应用对于交易事务处理的个性化需求。
3.现有的区块链系统中,与共识切换相关的方案主要有以下四种:
4.(1)执行路径切换
5.相关研究人员提出了bolt dumbo transformer,底层dumbo协议性能较差,一般采用顶层bolt快速通道以执行协议,如果bolt超时则回退到transformer后再回退至dumbo的悲观路径,执行一轮后再次重启bolt。在网络条件较好时,可以实现类似半同步共识的延迟。
6.该方案的主要问题在于仅可以基于预设的执行路径来进行切换,以达到提高异步共识协议的性能的效果,但是无法根据的对于交易事务的动态需求来动态更新共识协议本身;
7.(2)停机重启切换
8.国内自主研发的联盟链cita链将共识拆解为微服务组件,可以同时支持raft共识协议和bft共识协议,并且支持节点运行时进出。该方案的主要问题在于切换的方式是通过停机后再更新的解决方法,导致每一次从旧的共识协议切换到新的共识协议时,都需要经过停机、下线原有共识算法、采用新共识算法与配置、重启的一系列过程,导致服务中断。并且该方案仅经过了工程上的验证,并没有进行理论上的安全分析。
9.相关研究机构提出一种共识切换方法及装置、存储介质,利用该方法可以在用户控制区块链系统在raft或者mq等共识协议之间进行切换,该方法的主要问题是共识切换完成时需要对于服务进行重启,破坏系统服务的连续性;
10.(3)硬分叉共识切换
11.目前,以太坊网络实现了从pow共识到pos共识的切换,该共识切换过程通过硬分叉方式进行。
12.使用硬分叉的方式来进行共识算法的切换的主要问题为需要所有节点由管理人员手动更换客户端程序,如果没有及时更换则可能造成实际的链分叉,然后硬分叉的推动
者(社区或者有影响力的个人)已经获得了区块链网络的控制权,破坏了区块链的去中心化性质;
13.(4)无法应用于异步环境中的共识切换
14.此外,一些研究机构还提出了一种可以在不停机的条件下切换共识算法的方法,该方法具有两个主要的问题,首先是在共识算法切换的过程中,无法处理交易,只能对于待处理的交易进行缓存。第二个是方法需要在共识切换没有成功时进行回退,返回利用第一共识算法处理交易。在实际运行时,该方法通过一定时间内切换没有完成来判断切换失败,而异步环境中不使用计时器,因此该方法不适用于异步环境。
15.目前,现有的共识切换方案存在以下三种主要问题:
16.(1)共识模块解耦合
17.在系统模块设计中,会将不同功能的构件划分为不同的模块,一般共识算法会被单独解耦为共识模块,并对外提供统一的接口;但是,上述解耦合为面向功能的解耦合,共识模块中的不同共识算法相互独立,不存在任何横向的交互,也就无法进行相互切换,例如分布式账本平台hyperledger fabric支持solo、raft和kafka三种共识协议,当fabric启动时,需要在配置文件中指明选择哪一个共识算法,一旦系统启动,便不能再切换新的共识,只有设置新的共识参数并重启动fabric才能更换新的共识算法,在该过程中可能导致业务处理的中断;
18.(2)共识切换过程复杂,容易引入硬分叉,或者破坏去中心化性质
19.在实际的区块链项目中,共识协议的切换过程非常复杂,通常使用硬分叉甚至停机重启的方式来进行,而使用硬分叉的方式进行共识切换,需要所有的参与节点都由节点管理人员手动更换客户端程序,如果没有及时进行更换,则网络有可能出现实质上的分叉。而停机重启的方式要求所有的节点同步停机重启,即有人可以控制网络停下,破坏了区块链网络去中心化的特征;
20.(3)异步和半同步共识的通用切换
21.异步共识和半同步共识是工作在不同网络环境的共识,异步共识可以工作在半同步环境下,但是半同步共识在异步环境下会丧失活性。当前在学术界存在一些可以在异步环境进行切换的方案,但上述共识切换方案只能针对特定性质和属性的共识算法,适用性范围很小,不具有实用性,并且无法扩展更新共识算法。因此,由于不同共识算法的结构各异,且共识的许多子功能和定义无法兼容,目前尚不存在可以同时在异步和半同步环境下工作的通用共识切换方案。
22.综上所述,目前共识切换方法的共识模块中不同共识算法难以相互切换或共识切换过程复杂,容易引入硬分叉或者破坏去中心化性质,且无法扩展更新共识算法,适用性范围很小,实用性较差,亟待解决。


技术实现要素:

23.本技术提供一种半同步及异步网络区块链共识切换方法及装置,以解决共识切换方法的共识模块中不同共识算法难以相互切换或共识切换过程复杂,容易引入硬分叉或者破坏去中心化性质,且无法扩展更新共识算法,适用性范围很小,实用性较差等问题。
24.本技术第一方面实施例提供一种半同步及异步网络区块链共识切换方法,包括以
下步骤:接收管理员发送的共识切换提议,并发送所述共识切换提议至底层共识,并判断所述底层共识的输出;如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识;当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入锁定交易,当所述底层共识输出所述锁定交易时,将所述底层共识切换至对应的候选共识。
25.可选地,在本技术的一个实施例中,所述如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识,包括:将消息缓存中满足预设条件的消息发送至所述候选共识,并将所述消息从所述消息缓存中删除。
26.可选地,在本技术的一个实施例中,还包括:如果所述输出为锁定交易,则根据所述锁定交易中的所述候选共识输出及证据得到对应的候选共识,并判断所述候选共识的输出缓存中所有交易是否输出;如果所述候选共识的输出缓存存在未输出的交易,则输出所述候选共识的输出缓存中所述未输出的交易。
27.可选地,在本技术的一个实施例中,还包括:如果所述输出为普通交易,且所述普通交易未被输出时,则输出所述普通交易,并从提议缓存中删除所述普通交易对应的普通提议。
28.可选地,在本技术的一个实施例中,所述当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入一个锁定交易,包括:当所述至少一个候选共识中任意一个候选共识输出时,判断所述任意一个候选共识是否为首次输出;若所述任意一个候选共识为首次输出,则将所述输出的内容附带所述输出的证据构成锁定提议发送至所述底层共识,并将所述输出加入对应的输出缓存中;若所述任意一个候选共识不是首次输出时,则将所述输出添加至所述输出缓存中。
29.本技术第二方面实施例提供一种半同步及异步网络区块链共识切换装置,包括:第一判断模块,用于接收管理员发送的共识切换提议,并发送所述共识切换提议至底层共识,并判断所述底层共识的输出;启动模块,用于如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识;切换模块,用于当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入锁定交易,当所述底层共识输出所述锁定交易时,将所述底层共识切换至对应的候选共识。
30.可选地,在本技术的一个实施例中,所述启动模块包括:删除单元,用于将消息缓存中满足预设条件的消息发送至所述候选共识,并将所述消息从所述消息缓存中删除。
31.可选地,在本技术的一个实施例中,还包括:第二判断模块,用于如果所述输出为锁定交易,则根据所述锁定交易中的所述候选共识输出及证据得到对应的候选共识,并判断所述候选共识的输出缓存中所有交易是否输出;第一输出模块,用于如果所述候选共识的输出缓存存在未输出的交易,则输出所述候选共识的输出缓存中所述未输出的交易。
32.可选地,在本技术的一个实施例中,还包括:第二输出模块,用于如果所述输出为普通交易,且所述普通交易未被输出时,则输出所述普通交易,并从提议缓存中删除所述普通交易对应的普通提议。
33.可选地,在本技术的一个实施例中,所述切换模块包括:分析单元,用于当所述至少一个候选共识中任意一个候选共识输出时,判断所述任意一个候选共识是否为首次输出;第一添加单元,用于若所述任意一个候选共识为首次输出,则将所述输出的内容附带所
述输出的证据构成锁定提议发送至所述底层共识,并将所述输出加入对应的输出缓存中;第二添加单元,用于若所述任意一个候选共识不是首次输出时,则将所述输出添加至所述输出缓存中。
34.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述实施例所述的半同步及异步网络区块链共识切换方法。
35.本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,该程序被处理器执行时实现如上的半同步及异步网络区块链共识切换方法。
36.由此,本技术的实施例具有以下有益效果:
37.本技术的实施例可通过接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出;如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识;当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识,从而可实现异步和半同步共识之间的通用切换,并能够适配网络环境对于共识协议进行升级。由此,解决了共识切换方法的共识模块中不同共识算法难以相互切换或共识切换过程复杂,容易引入硬分叉或者破坏去中心化性质,且无法扩展更新共识算法,适用性范围很小,实用性较差等问题。
38.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
39.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
40.图1为本技术的半同步及异步网络区块链共识切换方法的逻辑架构示意图;
41.图2为根据本技术实施例提供的一种半同步及异步网络区块链共识切换方法的流程图;
42.图3为本技术的一个实施例提供的一种半同步及异步网络区块链共识切换方法的执行逻辑示意图;
43.图4为本技术的一个实施例提供的一种半同步及异步网络区块链共识切换系统的结构示意图;
44.图5为根据本技术实施例的半同步及异步网络区块链共识切换装置的示例图;
45.图6为本技术实施例提供的电子设备的结构示意图。
46.其中,10-半同步及异步网络区块链共识切换装置、100-第一判断模块、200-启动模块、300-切换模块、601-存储器、602-处理器、603-通信接口。
具体实施方式
47.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附
图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
48.下面参考附图描述本技术实施例的半同步及异步网络区块链共识切换方法及装置。针对上述背景技术中提到的问题,本技术提供了一种半同步及异步网络区块链共识切换方法,在该方法中,通过接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出;如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识;当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。本技术通过将共识的功能进行抽象,将可切换共识的内部进行解耦,从而支持一般化的共识切换,进而,本技术可确定性的完成或者拒绝共识的切换过程,不会导致区块链的分叉;此外,本技术的共识切换过程完全在区块链上进行,不会破坏区块链网络的去中心化性质,从而可实现异步和半同步共识之间的通用切换,并能够适配网络环境对于共识协议进行升级。由此,解决了共识切换方法的共识模块中不同共识算法难以相互切换或共识切换过程复杂,容易引入硬分叉或者破坏去中心化性质,且无法扩展更新共识算法,适用性范围很小,实用性较差等问题。
49.为了便于对本技术的半同步及异步网络区块链共识切换方法进行介绍,于此,本技术可将半同步及异步网络区块链共识切换方法所涉及的符号、假设条件以及共识的性质进行说明:
50.(1)符号定义
51.本技术的半同步及异步网络区块链共识切换方法中使用大写希腊字母π表示可切换的共识协议;使用小写希腊字母π表示基础共识协议,如honey badger bft等;使用[]表示从0到n-1的整数集合,即[n]=0,1,

,n-1。
[0052]
本技术所介绍的共识也可称为如共识机制、共识算法、分布式一致性算法、分布式容错、拜占庭容错、崩溃容错等。
[0053]
(2)假设条件
[0054]
本技术的半同步及异步网络区块链共识切换方法可以应用在半同步网络环境下或者的异步网络环境下,因此,本技术需满足以下假设之一:
[0055]
半同步假设:存在一个未知的全局同步时间(global stabilization time,gst),在gst之前,消息可能被任意延迟,在gst之后,所有的消息都会在已知的δ时间内被送达;
[0056]
异步假设:敌手能够任意拖延诚实用户的消息或将其打乱顺序,只保证最终诚实用户的消息能够到达彼此。
[0057]
(3)共识的性质
[0058]
为了能够实现半同步和异步网络环境下的共识协议切换方法,需要对于共识协议的性质进行一定的限制,对满足一定性质的共识协议均可利用本技术的半同步及异步网络区块链共识切换方法进行切换,而不限于某种特定的共识协议,因此本技术要求共识协议具有以下性质:
[0059]
性质1(一致性):一致性包括公共前缀与自我一致性:
[0060]
公共前缀:假设诚实节点i输出的日志为log,诚实节点j输出的日志为log

,那么一定有log<log

,或者log

<log。其中<表示前缀,对于任意log,满足且log<log;
[0061]
自我一致性:如果诚实节点i在某时刻输出的日志为log,一段时间之后输出的日志为log

,那么log<log


[0062]
性质2(活性):
[0063]
如果一个诚实节点收到交易tx作为输入,那么所有的诚实节点输出的日志中最终都会包含tx。
[0064]
性质3(可验证的输出):
[0065]
节点(可能是恶意的)输出tx时会附带证据proof,当节点收到proof时,如果验证verify9tx,proof)=1,那么节点(如果还未输出tx)可以直接输出tx。
[0066]
对于pbft算法来说,proof可以是commit轮的2f+1个投票。对于honey-badger bft算法来说,proof可以是包含tx的区块头,merkle树证明以及后面一定数据量的区块头。
[0067]
上述底层共识的三种基本性质中,其中一致性和活性是共识协议的通用性质;可验证的输出性质虽然不是共识协议的通用性质,但是几乎所有的区块链共识机制均已实际具有该性质。
[0068]
本技术中的可切换的共识协议π包含有一系列共识协议的实例{πi|i∈[n]},π控制共识协议的工作与切换过程,各个节点的基础共识协议π之间不直接交互,而是通过本节点的π进行交互,π从π获取消息,并将输出发送给π,然后由π进行输出。对于任意i∈[n],假设协议πi满足上述一致性、活性和可验证的输出性质,π的运行分epoch进行,每个epoch中运行一种共识协议,并可能存在下一个epoch的多个候选实例。在epoche中运行的实例共识可以表示为如图1所示,其中,是当前正在运行的底层共识;bufin是提议缓存,保存当前已经被输入但是还没有被输出的普通消息;bufmsg是消息缓存,保存当前接收者没有启动的消息;candi是收到有效的共识切换提议之后启动的下一个epoch的候选底层共识集合以及每个候选共识对应的输出缓冲bufout,即其中cnt表示已经启动的epoche+1的候选共识个数。epoch具有从0开始唯一的编号。每个epoch中有若干round,每轮中的每个round具有从0开始唯一的编号。
[0069]
此外,本技术中的共识协议支持共识切换交易、锁定交易以及普通交易三种类型的交易;且支持共识切换提议消息、锁定提议消息、普通提议消息以及普通消息四种类型的消息,本技术在对于共识切换交易进行共识的过程中,除了最初的提议消息,其他共识协议中进行交互的消息均为普通消息,本技术假设普通交易消息具体需要发送给哪个底层共识π的实例可以根据消息本身进行判断。
[0070]
具体而言,图2为本技术实施例所提供的一种半同步及异步网络区块链共识切换方法的流程图。
[0071]
如图2所示,该半同步及异步网络区块链共识切换方法包括以下步骤:
[0072]
在步骤s201中,接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出。
[0073]
本技术的实施例首先通过每个节点对相应的可切换共识π的实例进行初始化,并使epoche=0,所有节点的可切换共识π初始化同一种共识底层共识π。
[0074]
需要注意的是,本技术的实施例假设只有一个管理员可以发送共识切换提议,该
管理员作为本技术实施例中的一个角色,在实际中也可由一定阈值的节点组成,用来发出可以被验证的切换提议,具体可以是某一个人、一个智能合约或者一组投票结果等,例如在联盟链环境中,管理员可以由几个企业共同充当,在公有链环境中,可以是一个预先设计好的智能合约,可以是社区的投票决定等很多种形式,本技术实施例中仅需要上述管理员发出的共识切换提议可被所有节点验证即可。
[0075]
当管理员发送共识切换提议后,在本技术实施例中,可通过可切换共识接收管理员发送的共识切换提议,进而,本技术的实施例可通过底层共识接收从管理员等其他节点发送的消息,并对接收的消息的类型进行分析判断:
[0076]
1、当底层共识接收到共识切换提议消息《consensus-update-propose》,即对共识切换进行提议的消息时,可将共识切换提议消息发送给本节点当前运行的基础共识
[0077]
2、当底层共识接收到普通提议消息《propose》时,底层共识可将普通提议加入输入缓存bufin中,并将普通提议发送给本节点的当前的底层共识以及candi中的所有共识;
[0078]
3、当底层共识接收到普通消息《other》时,底层共识可根据消息的内容判断消息的接收者是否已经启动且没有停止,如是,则发送给对应的接收者,否则对消息所属的epoche

进行判断,如果e

≥e,则将消息加入msgbuf,否则丢弃消息。
[0079]
需要注意的是,在本技术的实施例中,由于锁定提议消息《lock-propose》,即对于锁定交易进行提议的消息由底层共识产生,因此底层共识不会收到锁定提议消息。
[0080]
可以理解的是,在底层共识接收到共识切换提议消息,且底层共识输出交易时,本技术的实施例可通过π将输出和proof同时广播给所有节点,接收者指定为对应的底层共识实例,且本技术的实施例需对该交易类型进行判断,从而为后续半同步及异步网络区块链共识切换提供依据。
[0081]
在步骤s202中,如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识。
[0082]
当收到当前epoch的底层共识的输出后,本技术实施例可判断输出交易的类型,在当前共识输出共识切换交易时,本技术的实施例可根据共识切换提议启动一个候选共识,如图3所示,当任意一个候选共识输出时,均在当前的共识输入一个内容包含候选共识的输出及证据的锁定交易。
[0083]
其中,在本技术的实施例中,上述共识切换交易中应当包含一定的配置信息,配置信息需要保证共识的安全性,例如委员会共识的配置信息中应当包含委员会的成员,其中恶意节点的比例应当有上限。
[0084]
可以理解的是,本技术的实施例通过利用候选共识集合而不是单个候选共识,有效解决了管理员节点单次提议的候选共识可能无法正常运行的问题。
[0085]
可选地,在本技术的一个实施例中,如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识,包括:将消息缓存中满足预设条件的消息发送至候选共识,并将消息从消息缓存中删除。
[0086]
本领域技术人员可以理解的是,由于在异步环境下所有的诚实节点无法同步启动共识协议,存在节点还没有启动新的共识,新的共识消息就已经到达等问题,本技术温度实施例设计一个消息缓存,存储暂时没有启动的共识消息,以满足异步假设(消息可以无限延
迟,但不会被丢弃)。
[0087]
因此,当任意一个候选共识输出时,本技术的实施例可将其输出缓存初始化为如果消息缓存msgbuf中有指定接收者为该候选共识的消息,则将这些消息发送给该候选共识,并从消息缓存msgbuf中删除。
[0088]
由此,本技术的实施例利用消息缓存的方式解决了半同步与异步网络中可能存在的共识消息到达早于共识启动的问题,从而可以适用于较差的网络环境中。
[0089]
可选地,在本技术的一个实施例中,还包括:如果输出为锁定交易,则根据锁定交易中的候选共识输出及证据得到对应的候选共识,并判断候选共识的输出缓存中所有交易是否输出;如果候选共识的输出缓存存在未输出的交易,则输出候选共识的输出缓存中未输出的交易。
[0090]
需要说明的是,如果当前epoch的底层共识的输出为锁定交易,该锁定交易应当包含下一种共识的第一轮输出,本技术的实施例可根据该锁定交易所包含的候选共识输出及证据找到对应候选共识,对于该候选共识bufout中的所有交易,如果之前没有输出过,则输出并从bufin中删除,然后将该候选共识设置为epoche+1的底层共识同时将epoch的编号增加1。对应bufin中的所有交易,都重新提议给将msgbuf中的所有epoch编号小于等于e的消息删除,完成共识切换。
[0091]
可选地,在本技术的一个实施例中,还包括:如果输出为普通交易,且普通交易未被输出时,则输出普通交易,并从提议缓存中删除普通交易对应的普通提议。
[0092]
在实际执行过程中,如果当前epoch的底层共识的输出交易为普通交易,且之前没有输出过该交易,则输出该交易,并从bufin中删除对应的提议。
[0093]
在步骤s203中,当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。
[0094]
当任意一个候选共识向当前底层共识输入锁定交易,当底层共识输出第一个锁定交易时,本技术的实施例可进行共识的切换,将底层共识切换至对应的候选共识。
[0095]
可以理解的是,本技术的实施例可以在半同步或者异步网络中实现区块链共识动态平滑热切换,相比于仅支持执行路径切换的共识协议,本技术的实施例可以完整切换共识协议,面向未来提供用于共识切换的接口,在出现更优的共识协议选择时完成切换;相比基于停机重启的共识协议切换方法,本技术的实施例无需停掉系统就可以完成共识切换;相比于基于硬分叉的共识切换方法,本技术实施例提供的共识切换方法没有运行分叉的风险,不会破坏系统的完整性。
[0096]
可选地,在本技术的一个实施例中,当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入一个锁定交易,包括:当至少一个候选共识中任意一个候选共识输出时,判断任意一个候选共识是否为首次输出;若任意一个候选共识为首次输出,则将输出的内容附带输出的证据构成锁定提议发送至底层共识,并将输出加入对应的输出缓存中;若任意一个候选共识不是首次输出时,则将输出添加至输出缓存中。
[0097]
需要说明的是,在本技术的实施例中,当epoche+1的候选共识输出时,由于仅向其提议过普通提议,其仅可能输出普通交易。
[0098]
如果是第一次输出,则将输出的内容附带输出的证据构成一个锁定提议给π,并将输出加入对应的bufout中,否则仅将输出加入bufout中。
[0099]
在实际执行过程中,本技术的实施例可将半同步网络环境下区块链共识切换方法与同步网络环境下的共识切换方法相统一,因此可以在半同步共识协议和异步共识协议之间进行切换。在网络条件相对好时,可以切换到半同步共识协议来获取较高的工作效率,而网络条件很差时,可利用异步的共识协议来保证最差情况下共识切换的进展。
[0100]
进一步地,本技术实施例中的半同步及异步网络区块链共识切换系统整体包含三个模块,如图4所示,分别是应用模块,存储模块和共识模块,具体如下所述:
[0101]
(1)应用模块
[0102]
应用模块是区块链的服务层,用来具体执行交易事务,外部进入的交易首先发送给应用模块,然后由应用模块通知共识模块对于交易进行共识。完成共识的交易由共识模块发送给应用模块在区块链虚拟机中进行执行。应用模块依靠存储模块来提供状态数据的存储,应用模块向共识模块提供验证交易有效性的服务;应用模块和共识模块之间使用基于grpc的应用区块链接口(application blockchain interface,abci)进行交互。
[0103]
(2)存储模块
[0104]
存储模块是一个支持数据持久化的键值型数据库。存储模块用来保存应用层的状态数据以及共识模块使用的交易数据。
[0105]
(3)共识模块
[0106]
共识模块用来对于交易达成一致。共识模块中同时运行一个底层共识,0个或者多个候选共识,底层共识以及候选共识之间通过基于管道的abci来进行交互。
[0107]
abci使用三条连接,分别是共识连接、内存池连接和信息连接。其中,共识连接包含五个请求,为initchain、beginblock、delivertx,endblock、commit,内存池连接包含checktx一个请求,信息连接包含三个请求,分别是info、setoption和query。
[0108]
当共识模块收到来自底层共识或候选共识的内存池请求或者信息请求时,直接把请求转发给应用模块,并将回复转发给请求者。
[0109]
当收到底层共识的initchain、beginblock、endblock、commit请求时,将请求直接发送给应用模块,当接收到底层共识的delivertx请求时,可按照上述方式进行处理,如果需要提交交易,则将delivertx请求转发给应用模块。
[0110]
当收到候选共识的initchain、beginblock、endblock请求时,只记录信息,不转发请求。当收到候选共识的delivertx请求时,将其中的tx候选共识对应的输出缓存,当收到候选共识的commit请求时,记录其已经提交交易,生成锁定交易并发送至当前底层共识。
[0111]
根据本技术实施例提出的半同步及异步网络区块链共识切换方法,通过接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出;如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识;当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。本技术通过将共识的功能进行抽象,将可切换共识的内部进行解耦,从而支持一般化的共识切换,进而,本技术可确定性的完成或者拒绝共识的切换过程,不会导致区块链的分叉;此外,本技术的共识切换过程完全在区块链上进行,不会破坏区块链网络的去中心化性质,从而可实现异步和半同步共识之间的通用切换,并能够适配网络环境对于共识协议进行升级。
[0112]
其次,参照附图描述根据本技术实施例提出的半同步及异步网络区块链共识切换
装置。
[0113]
图5是本技术实施例的半同步及异步网络区块链共识切换装置的方框示意图。
[0114]
如图5所示,该半同步及异步网络区块链共识切换装置10包括:第一判断模块100、启动模块200以及切换模块300。
[0115]
其中,第一判断模块100,用于接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出。
[0116]
启动模块200,用于如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识。
[0117]
切换模块300,用于当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。
[0118]
可选地,在本技术的一个实施例中,启动模块200包括:删除单元,用于将消息缓存中满足预设条件的消息发送至候选共识,并将消息从消息缓存中删除。
[0119]
可选地,在本技术的一个实施例中,本技术实施例的半同步及异步网络区块链共识切换装置10还包括:第二判断模块和第一输出模块。
[0120]
其中,第二判断模块,用于如果输出为锁定交易,则根据锁定交易中的候选共识输出及证据得到对应的候选共识,并判断候选共识的输出缓存中所有交易是否输出。
[0121]
第一输出模块,用于如果候选共识的输出缓存存在未输出的交易,则输出候选共识的输出缓存中未输出的交易。
[0122]
可选地,在本技术的一个实施例中,本技术实施例的半同步及异步网络区块链共识切换装置10还包括:第二输出模块,用于如果输出为普通交易,且普通交易未被输出时,则输出普通交易,并从提议缓存中删除普通交易对应的普通提议。
[0123]
可选地,在本技术的一个实施例中,切换模块300包括:分析单元、第一添加单元以及第二添加单元。
[0124]
其中,分析单元,用于当至少一个候选共识中任意一个候选共识输出时,判断任意一个候选共识是否为首次输出。
[0125]
第一添加单元,用于若任意一个候选共识为首次输出,则将输出的内容附带输出的证据构成锁定提议发送至底层共识,并将输出加入对应的输出缓存中。
[0126]
第二添加单元,用于若任意一个候选共识不是首次输出时,则将输出添加至输出缓存中。
[0127]
需要说明的是,前述对半同步及异步网络区块链共识切换方法实施例的解释说明也适用于该实施例的半同步及异步网络区块链共识切换装置,此处不再赘述。
[0128]
根据本技术实施例提出的半同步及异步网络区块链共识切换装置,通过接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出;如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识;当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易,当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。本技术通过将共识的功能进行抽象,将可切换共识的内部进行解耦,从而支持一般化的共识切换,进而,本技术可确定性的完成或者拒绝共识的切换过程,不会导致区块链的分叉;此外,本技术的共识切换过程完全在区块链上进行,不会破坏区块链网络的去中心化性质,从而可实现异步和半同步共识之间的通用
切换,并能够适配网络环境对于共识协议进行升级。
[0129]
图6为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
[0130]
存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序。
[0131]
处理器602执行程序时实现上述实施例中提供的半同步及异步网络区块链共识切换方法。
[0132]
进一步地,电子设备还包括:
[0133]
通信接口603,用于存储器601和处理器602之间的通信。
[0134]
存储器601,用于存放可在处理器602上运行的计算机程序。
[0135]
存储器601可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0136]
如果存储器601、处理器602和通信接口603独立实现,则通信接口603、存储器601和处理器602可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0137]
可选地,在具体实现上,如果存储器601、处理器602及通信接口603,集成在一块芯片上实现,则存储器601、处理器602及通信接口603可以通过内部接口完成相互间的通信。
[0138]
处理器602可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0139]
本技术实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的半同步及异步网络区块链共识切换方法。
[0140]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0141]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0142]
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的
实施例所属技术领域的技术人员所理解。
[0143]
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或n个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
[0144]
应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
[0145]
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
[0146]
此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
[0147]
上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。

技术特征:
1.一种半同步及异步网络区块链共识切换方法,其特征在于,包括以下步骤:接收管理员发送的共识切换提议,并发送所述共识切换提议至底层共识,并判断所述底层共识的输出;如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识;当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入锁定交易,当所述底层共识输出所述锁定交易时,将所述底层共识切换至对应的候选共识。2.根据权利要求1所述的方法,其特征在于,所述如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识,包括:将消息缓存中满足预设条件的消息发送至所述候选共识,并将所述消息从所述消息缓存中删除。3.根据权利要求1所述的方法,其特征在于,还包括:如果所述输出为锁定交易,则根据所述锁定交易中的所述候选共识输出及证据得到对应的候选共识,并判断所述候选共识的输出缓存中所有交易是否输出;如果所述候选共识的输出缓存存在未输出的交易,则输出所述候选共识的输出缓存中所述未输出的交易。4.根据权利要求1所述的方法,其特征在于,还包括:如果所述输出为普通交易,且所述普通交易未被输出时,则输出所述普通交易,并从提议缓存中删除所述普通交易对应的普通提议。5.根据权利要求1所述的方法,其特征在于,所述当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入一个锁定交易,包括:当所述至少一个候选共识中任意一个候选共识输出时,判断所述任意一个候选共识是否为首次输出;若所述任意一个候选共识为首次输出,则将所述输出的内容附带所述输出的证据构成锁定提议发送至所述底层共识,并将所述输出加入对应的输出缓存中;若所述任意一个候选共识不是首次输出时,则将所述输出添加至所述输出缓存中。6.一种半同步及异步网络区块链共识切换装置,其特征在于,包括:第一判断模块,用于接收管理员发送的共识切换提议,并发送所述共识切换提议至底层共识,并判断所述底层共识的输出;启动模块,用于如果所述输出为共识切换交易,则启动至少一个候选共识中所述共识切换提议对应的候选共识;切换模块,用于当所述至少一个候选共识中任意一个候选共识输出时,向当前所述底层共识输入锁定交易,当所述底层共识输出所述锁定交易时,将所述底层共识切换至对应的候选共识。7.根据权利要求6所述的装置,其特征在于,所述启动模块包括:删除单元,用于将消息缓存中满足预设条件的消息发送至所述候选共识,并将所述消息从所述消息缓存中删除。8.根据权利要求6所述的装置,其特征在于,还包括:第二判断模块,用于如果所述输出为锁定交易,则根据所述锁定交易中的所述候选共
识输出及证据得到对应的候选共识,并判断所述候选共识的输出缓存中所有交易是否输出;第一输出模块,用于如果所述候选共识的输出缓存存在未输出的交易,则输出所述候选共识的输出缓存中所述未输出的交易。9.根据权利要求6所述的装置,其特征在于,还包括:第二输出模块,用于如果所述输出为普通交易,且所述普通交易未被输出时,则输出所述普通交易,并从提议缓存中删除所述普通交易对应的普通提议。10.根据权利要求6所述的装置,其特征在于,所述切换模块包括:分析单元,用于当所述至少一个候选共识中任意一个候选共识输出时,判断所述任意一个候选共识是否为首次输出;第一添加单元,用于若所述任意一个候选共识为首次输出,则将所述输出的内容附带所述输出的证据构成锁定提议发送至所述底层共识,并将所述输出加入对应的输出缓存中;第二添加单元,用于若所述任意一个候选共识不是首次输出时,则将所述输出添加至所述输出缓存中。11.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如权利要求1-5任一项所述的半同步及异步网络区块链共识切换方法。12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行,以用于实现如权利要求1-5任一项所述的半同步及异步网络区块链共识切换方法。

技术总结
本申请涉及一种半同步及异步网络区块链共识切换方法及装置,其中,方法包括:接收管理员发送的共识切换提议,并发送共识切换提议至底层共识,并判断底层共识的输出;如果输出为共识切换交易,则启动至少一个候选共识中共识切换提议对应的候选共识;当至少一个候选共识中任意一个候选共识输出时,向当前底层共识输入锁定交易;当底层共识输出锁定交易时,将底层共识切换至对应的候选共识。由此,解决了共识切换方法的共识模块中不同共识算法难以相互切换或共识切换过程复杂,容易引入硬分叉或者破坏去中心化性质,且无法扩展更新共识算法,适用性范围很小,实用性较差等问题。实用性较差等问题。实用性较差等问题。


技术研发人员:伍前红 张宇鹏 林学承 李明航 翟明哲 谢思芃
受保护的技术使用者:北京航空航天大学
技术研发日:2023.06.25
技术公布日:2023/9/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐