区块链共识系统及方法与流程

文档序号:21837126发布日期:2020-08-14 16:08阅读:208来源:国知局
区块链共识系统及方法与流程

本发明涉及区块链技术领域和共识算法领域,尤指一种区块链共识系统及方法。



背景技术:

区块链技术是一种以去中心化方式集体维护一份或多份可靠数据的技术方案,具有去中心化、防篡改、高度可扩展等特点,正逐渐成为继大数据、云计算、人工智能、虚拟现实等技术后一项对世界产生重大影响的新兴技术。

区块链核心技术主要是点对点分布式技术、非对称加密技术、哈希算法和共识机制。随着区块链技术的逐步推广,共识机制已经成为区块链系统提升的关键瓶颈。

当前的共识算法主要有pow(工作量证明),pos(权益证明),pbft(拜占庭容错算法),raft等。经业界实践了解到,单一的共识算法均存在各种问题,pow尽管在容错性和参与节点数量上有较为明显的优势,但需要计算大量的散列函数并达成共识,性能和时间损耗较大;pos存在“富豪统治”问题,pbft算法相对而言性能稍有提升,并能在运行过程中容易发现恶意节点,但当节点数量超过一定规模后,性能就会有较大幅度的下降。如何通过共识算法解决节点规模、性能、容错性三者之间的关系成为当前区块链技术和共识算法发展亟需解决的问题。

经初步了解业界共识算法应用的方式,当一个区块链网络运用某种共识算法时,无论区块链网络中存在多少个节点,所有节点都需要完整经历一遍甚至多遍共识算法的流程,整个区块链网络才能达成理论上的最终共识,如当区块链网络运用pbft算法时,所有节点需要彼此之间互相通讯三轮后才能达成共识,在这样的机制下,随着节点数慢慢增加,算法的效率也随着下降。



技术实现要素:

本发明目的在于提供一种区块链共识系统及方法,通过架构分层的方式将共识算法应用于区块链网络局部节点中以实现区块链网络分级共识的效果,并且能在一定程度提高区块链性能及其吞吐量。

为达上述目的,本发明所提供的区块链共识系统,所述系统包含多个区块链节点,所述区块链节点包含多个共识节点和多个代理节点;其中,多个所述代理节点构成主网络,多个共识节点与一个所述代理节点构成子共识网络;所述共识节点用于接收的交易请求,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理;以及,接收所处子共识网络中其他共识节点广播的交易请求或代理节点提供的交易请求,根据所述交易请求生成准备消息并将所述准备消息广播至所处子共识网络中其他共识节点,当接收到的准备消息数量高于预定阈值时,处理所述交易请求生成交易结果;将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链;所述代理节点用于根据所处子共识网络广播的交易请求,通过拜占庭算法将所述交易请求共识至所述主网络中其他代理节点;获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较;以及,通过拜占庭算法获得所述主网络中其他代理节点共识的交易请求,将所述交易请求提供至所处子共识网络供所述共识节点处理;获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较。

在上述区块链共识系统中,优选的,所述区块链节点包含收发请求模块、广播请求模块、交易执行模块和共识模块;所述收发请求模块用于接收外部应用上传的交易请求;或,接收所处子共识网络中其他共识节点广播的交易请求或代理节点提供的交易请求;所述广播请求模块用于根据所处子共识网络中其他共识节点和所述代理节点的ip地址,将所述交易请求广播至对应共识节点和代理节点;所述交易执行模块用于处理所述交易请求生成交易结果;将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链;所述共识模块用于拼接拜占庭共识算法共识过程中的消息报文,根据所述消息报文的一致性生成准备消息。

在上述区块链共识系统中,优选的,所述区块链节点还包含过滤模块和统计模块;所述过滤模块用于根据所处子共识网络的路由表获得其他共识节点和所述代理节点的ip地址;所述统计模块用于将接收到的准备消息数量与预定阈值比较,当接收到的准备消息数量高于预定阈值时,通知所述交易执行模块处理所述交易请求生成交易结果。

在上述区块链共识系统中,优选的,所述区块链节点还包含节点排序模块和节点角色模块;所述节点排序模块用于按照预定排序规则,每一预设周期调整所述区块链节点中共识节点和代理节点的身份信息,并通过调整后的身份信息更新当前区块链节点的身份角色为共识节点或代理节点;所述节点角色模块用于记录当前区块链节点的身份角色。

本发明还提供一种区块链共识方法,所述方法包含:通过预设规则将区块链节点分为共识节点和代理节点,多个所述代理节点构成主网络,多个共识节点与一个所述代理节点构成子共识网络;所述共识节点接收的交易请求,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理;所述共识节点所处子共识网络中其他共识节点根据所述交易请求生成准备消息并将所述准备消息广播至所处子共识网络中其他共识节点,当接收到的准备消息数量高于预定阈值时,处理所述交易请求生成交易结果;通过代理节点获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较;所述共识节点将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链。

在上述区块链共识方法中,优选的,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理包含:所述共识节点根据所处子共识网络的路由表获得其他共识节点和所述代理节点的ip地址;通过所述ip地址将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理。

在上述区块链共识方法中,优选的,通过代理节点获得所述交易请求在所述主网络的共识结果包含:所述代理节点根据所处子共识网络广播的交易请求,通过拜占庭算法将所述交易请求共识至所述主网络中其他代理节点;根据所述交易请求在所述主网络中共识情况生成共识结果。

在上述区块链共识方法中,优选的,获得所述交易请求在所述主网络的共识结果还包含:所述代理节点所处主网络的其他代理节点收到所述交易请求后,对所述交易请求进行验证,并将验证结果广播至所述主网络的其他代理节点;接收其他代理节点广播的验证结果并与自身的验证结果比较,当比较结果一致的数量高于预定阈值时,将所述交易请求广播至所处子共识网络中所有共识节点进行处理。

在上述区块链共识方法中,优选的,所述预定阈值为所述共识节点所处的子共识网络或所述代理节点所处的主网络中2f+1个节点数目;其中f为所述子共识网络或所述主网络中作恶节点上限数目或故障节点数目。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。

本发明的有益技术效果在于:通过架构分层的方式将全网分为多个子共识网络和一个核心主网络,在这样的架构下,多个节点由于共识而需要通讯的次数因此减少了;同事相对提升了全网响应的吞吐量;另外,在共识的过程中,子共识网络的各个节点能先一步执行对应的交易,并以交易结果作为校验的标准,这样的方式使得节点共识的过程和执行交易过程并行,也一定程度提高了全网的性能。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:

图1为本发明一实施例所提供的区块链共识系统的结构示意图;

图2为本发明一实施例所提供的pbft三阶段共识流程示意图;

图3为本发明一实施例所提供的区块链节点结构示意图;

图4为本发明一实施例所提供的区块链共识方法的流程示意图;

图5为本发明一实施例所提供的共识节点接收外部请求交易流程示意图;

图6为本发明一实施例所提供的代理节点接收外部请求交易流程示意图;

图7为本发明一实施例所提供的电子设备的结构示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

另外,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

请参考图1所示,本发明所提供的区块链共识系统,所述系统包含多个区块链节点,所述区块链节点包含多个共识节点和多个代理节点;其中,多个所述代理节点构成主网络,多个共识节点与一个所述代理节点构成子共识网络;所述共识节点用于接收的交易请求,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理;以及,接收所处子共识网络中其他共识节点广播的交易请求或代理节点提供的交易请求,根据所述交易请求生成准备消息并将所述准备消息广播至所处子共识网络中其他共识节点,当接收到的准备消息数量高于预定阈值时,处理所述交易请求生成交易结果;将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链;所述代理节点用于根据所处子共识网络广播的交易请求,通过拜占庭pbft算法将所述交易请求共识至所述主网络中其他代理节点;获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较;以及,通过拜占庭算法获得所述主网络中其他代理节点共识的交易请求,将所述交易请求提供至所处子共识网络供所述共识节点处理;获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较。以此,在这样的架构下,多个节点由于共识而需要通讯的次数因此减少了。如当全网存在16个节点时,正常的pbft共识流程节点需要彼此通讯次数总和至少为363次(11*11*3),而按照这样架构下,pbft共识流程节点彼此通讯次数总和至少为36次(3*3*3+3*3)。通讯次数的减少,减少了全网对一次交易相应的响应时间,相对提升了全网响应的吞吐量。另外,在共识的过程中,子共识网络的各个节点能先一步执行对应的交易,并以交易结果作为校验的标准,这样的方式使得节点共识的过程和执行交易过程并行,也一定程度提高了全网的性能。

在上述实施例中,结合了dpos共识算法和pbft算法,亦即,在该系统运行过程中,系统将会在所有节点中随机指定一定数量的代理节点,代理节点的数量等于当前网络中子共识网络的数量-1。系统将会存在一个核心主网络,核心主网络是由当选的代理节点组成,主要负责最重要的共识流程,而其他子共识网络一方面通过代理节点在核心主网络获取到共识的结果,各个子共识网络另一方面将和代理节点开始新一轮共识流程,随着各个子共识网络成功完成各自的共识流程,整个网络进而达成全面共识。该系统将在每一个周期重新选举代理节点,代理节点所在子共识网络的各个成员也会不一样,系统进而避免出现“统治富豪”或“独裁节点”。与此同时,上述实施例将pbft算法共识过程划分为三个阶段:pre-pare阶段、perpare阶段、commit阶段,当且仅当三个阶段绝大多数节点(2f+1个节点,f代表该网络能容忍的作恶节点或故障节点数目)都同意一笔交易时候,该交易才是公认的交易。pbft算法通过三阶段共识能在一定程度发现故障节点和作恶节点,但随着节点数量的增加,三阶段共识的成本也随着上升。以此,将pbft算法中三阶段的任务分配到核心主网络和各个子共识网络,由核心主网络负责完成完整的pbft算法三阶段共识,而各个子共识网络中的节点主要负责执行自己接收到的交易,将交易结果和核心主网络共识结果进行比对,如果交易结果一致,各个子共识网络节点将会将对应的交易结果入链;如果不一致,等全网共识结果稳定后,各个子共识网络节点将以共识结果作为最后结果入链。

在实际工作中,pbft算法三阶段流程如图2所示,主要包括pre-prepare阶段、prepare阶段和commit阶段。在pbft算法机制下,全网节点会推选一个主节点(leader),新区块由主节点负责生成,备份节点可以通过视图(view)编号确定当前主节点是否有变化。在一个视图里,一个是主节点,其余的都叫做备份节点。

所述的“pre-prepare”阶段中,每个节点会客户端发来的交易向全网广播,主节点0从网络中收集到需要放入新区块内的多个交易排序后放入列表,并向其他备份节点广播。因为pre-prepare消息在共识过程起到一种证明作用,证明某一请求在主节点0被处理,预准备消息的格式为<<pre-prepare,v,n,d>,m>,v代表视图编号,m是客户端发送的请求信息,d是请求消息m的摘要,一般来说,客户端的请求并没有包含在pre-prepare消息中,但在该系统中,为了能将对应的请求转发或广播,pre-prepare消息中会保存一定的请求数据。

所述的“prepare”阶段中,每个节点接收到交易列表后,根据排序模拟执行这些交易。等所有交易执行完之后,备份节点基于交易结果计算新区块的哈希摘要,并向其他节点广播prepare消息。等所有节点从2f个不同副本节点广播的prepare消息并确定所接收的prepare消息中消息摘要m,消息序号n,视图编号v和本身的prepare消息中的一致,全网进入了commit阶段。

所述的“commit”阶段中,当每个节点收到2f个不同节点发来的prepare消息,并prepare消息中关于消息摘要m,消息序号n,视图编号v和本身生成的prepare消息中的一致,节点就会向全网广播一条commit消息。等所有节点从f+1个不同副本接收到一致的commit消息,全网所有节点都以正常的顺序执行所有请求。

再请参考图3所示,在本发明一实施例中,所述区块链节点包含收发请求模块11、广播请求模块12、交易执行模块13和共识模块16;所述收发请求模块用于接收外部应用上传的交易请求;或,接收所处子共识网络中其他共识节点广播的交易请求或代理节点提供的交易请求;所述广播请求模块用于根据所处子共识网络中其他共识节点和所述代理节点的ip地址,将所述交易请求广播至对应共识节点和代理节点;所述交易执行模块用于处理所述交易请求生成交易结果;将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链;所述共识模块用于拼接拜占庭共识算法共识过程中的消息报文,根据所述消息报文的一致性生成准备消息。进一步的,所述区块链节点还包含过滤模块14、统计模块15、节点排序模块18和节点角色模块17;所述过滤模块用于根据所处子共识网络的路由表获得其他共识节点和所述代理节点的ip地址;所述统计模块用于将接收到的准备消息数量与预定阈值比较,当接收到的准备消息数量高于预定阈值时,通知所述交易执行模块处理所述交易请求生成交易结果;所述节点排序模块用于按照预定排序规则,每一预设周期调整所述区块链节点中共识节点和代理节点的身份信息,并通过调整后的身份信息更新当前区块链节点的身份角色为共识节点或代理节点;所述节点角色模块用于记录当前区块链节点的身份角色。

具体的,所述收发请求模块11一方面负责接收外部应用系统发给区块链节点的所有请求,提取请求中的数据,转化为子共识网络内部广播请求,并应答请求;另一方面负责接收其他节点所广播的请求对请求结果进行验证或进行共识。

所述广播请求模块12负责将区块链节点所接收的请求向节点所在网络的其他节点发送广播请求,区块链会先在本身的存储模块19中获取所在网络的路由表,节点将根据路由表上其他节点的ip地址发送广播请求。

所述交易执行模块13一方面负责执行收发请求模块11所接收的请求,并将执行结果使用存储模块19进行存储,另一方面负责验证其他节点所广播的请求。

所述过滤模块14在该系统节点中主要起到过滤请求的作用,当区块链节点接收到其他节点所广播的请求时,区块链节点会先在存储模块19中获取所在网络的路由表,检查所接收的请求的发送方是否在路由表中,如果不在路由表中,区块链节点将不会应答此请求。

所述统计模块15主要在该系统进行pbft三阶段共识时发挥作用,当区块链节点接收其他节点pre-prepare消息、prepare消息、commit消息时,区块链节点会统计所接收到一致的消息是否满足pbft三阶段共识的阈值。

所述共识模块16是该系统进行pbft算法共识的主要模块,共识模块16主要负责拼接pbft算法三阶段过程中消息报文,校验三段过程中各种消息报文一致性,生成pbft三阶段共识结果等。

所述角色功能模块17代表着节点所拥有的角色,共识节点或代理节点。根据节点角色的不同,角色功能模块17定义该节点所履行的功能也不一样。

所述节点排序模块18是主要协助系统根据一定的规则,并在一定的系统周期内,将共识节点和代理节点两种角色在各个节点中进行分配,并将节点所拥有的角色使用存储模块19进行存储。在一定的周期内,节点角色可能会发生改变,节点所拥有的功能也会因此发生改变。

所述存储模块19主要存储着各个请求的执行结果、验证结果、共识结果以及在每个系统周期中,节点被节点排序模块18所分配的角色。

综上,结合图1所示,在实际工作中,本发明所提供的区块链共识系统主要包括两种节点:多个共识节点1和多个代理节点2,多个共识节点1和一个代理节点2会在逻辑上组成子共识网络3,多个代理节点2则会组成一个核心主网络。

所述的共识节点1是区块链网络中对交易进行接收,执行,转发,验证,存储的网络节点,共识节点1主要负责接收并执行外部访问的请求,在对应的子共识网络中进行广播请求、对别的共识节点1或代理节点2的请求进行验证,并将对应的交易和交易结果请求上链。

所述的代理节点2和共识节点1相类似,代理节点2不仅仅能处理其外部发送的请求,而且在对应的子共识网络中起到“哨兵”的作用,代理节点2将该子共识网络接收到的请求转发到代理节点2所在的核心主网络,而核心主网络中的其他代理节点2接收到其他代理节点2所广播的请求后,各个代理节点2会在各自的子共识网络中广播,让各个共识节点1去执行对应的交易。在核心主网路中,代理节点2将参与完整的pbft三阶段共识,并将核心主网络中共识结果往所在的子共识网络广播,并根据子共识网络每个共识节点1的验证结果,确定是否将对应的交易和交易结果在代理节点2上链。

所述的子共识网络3是该系统根据一定的规则将多个共识节点1和某个代理节点2逻辑上组成的网络,在该子共识网络中的各个节点只会将所接收的交易在该子共识网络广播,在子共识网络中,各个共识节点1仅仅会执行pbft算法三阶段中commit阶段,当所有的共识节点1和所包含的代理节点2中存在绝大多数节点(2f+1个节点,f代表该网络能容忍的作恶节点或故障节点数目)认可一笔交易,该子共识网络将会在各个节点同步该交易。

所述的核心主网络4是该系统根据一定的规则将所有的代理节点2逻辑上组成的网络,核心主网络中的各个节点和子共识网络的节点一样,节点只会将接收的交易在核心主网络的节点中广播。在核心主网络中,当各个代理节点2接收到其他代理节点2所广播的请求时,代理节点2会先将该请求广播给所在的子共识网络,让共识节点1去执行,而核心主网络中各个代理节点2会完整经过pbft算法三阶段,当核心主网路中所有节点对交易结果达成共识后,各个代理节点2会在各个所在的子共识网络进行广播交易结果,由各个子网络中的共识节点1去验证对应的结果。

请参考图4所示,本发明还提供一种区块链共识方法,所述方法包含:

步骤s401:通过预设规则将区块链节点分为共识节点和代理节点,多个所述代理节点构成主网络,多个共识节点与一个所述代理节点构成子共识网络;

步骤s402:所述共识节点接收的交易请求,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理;

步骤s403:所述共识节点所处子共识网络中其他共识节点根据所述交易请求生成准备消息并将所述准备消息广播至所处子共识网络中其他共识节点,当接收到的准备消息数量高于预定阈值时,处理所述交易请求生成交易结果;

步骤s404:通过代理节点获得所述交易请求在所述主网络的共识结果,将所述共识结果提供至所处子共识网络供所述共识节点比较;

步骤s405:所述共识节点将所述交易结果与所述代理节点反馈的共识结果比较验证,根据验证结果将所述交易结果或所述共识结果入链。

在上述实施例中,将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理可包含:所述共识节点根据所处子共识网络的路由表获得其他共识节点和所述代理节点的ip地址;通过所述ip地址将所述交易请求广播至所处子共识网络中其他共识节点和所述代理节点进行验证处理。

在本发明一实施例中,通过代理节点获得所述交易请求在所述主网络的共识结果包含:所述代理节点根据所处子共识网络广播的交易请求,通过拜占庭算法将所述交易请求共识至所述主网络中其他代理节点;根据所述交易请求在所述主网络中共识情况生成共识结果。同时,所述代理节点所处主网络的其他代理节点收到所述交易请求后,对所述交易请求进行验证,并将验证结果广播至所述主网络的其他代理节点;接收其他代理节点广播的验证结果并与自身的验证结果比较,当比较结果一致的数量高于预定阈值时,将所述交易请求广播至所处子共识网络中所有共识节点进行处理。

在上述实施例中,所述预定阈值为所述共识节点所处的子共识网络或所述代理节点所处的主网络中2f+1个节点数目;其中f为所述子共识网络或所述主网络中作恶节点上限数目或故障节点数目。

为便于更清楚的理解本发明所提供的上述实施例,请参考图5所示,在实际工作中,所述区块链共识方法的具体实现流程如下:

步骤s501:接入区块链的应用系统发送请求到某一子共识网络的共识节点1,共识节点1通过收发请求模块11接收请求后判断请求是否需要修改区块链的数据,如世界状态。共识节点1将该请求转化为内部请求,根据请求是否需要修改区块链数据在请求报文打上对应的标签。共识节点1使用存储模块19获取当前共识节点1所在子共识网络的路由表,并往路由表中其它节点广播对应的请求。与此同时,该共识节点1开始通过交易执行模块13开始执行交易,并将交易结果利用存储模块19存储起来,并根据pbft的规则开始组装pbft第三阶段即commit阶段的报文。

步骤s502:当接收请求的共识节点1所在子共识网络的代理节点1接收到请求时,代理节点1通过存储模块19获取代理节点所在的核心主网络的路由表后,代理节点1提取部分请求数据,再按照pbft第一阶段即pre-prepare阶段中pre-prepare报文的请求组装广播的报文,并通过代理节点1的广播请求模块12开始向核心主网络的其他节点广播pre-prepare报文。

步骤s503:当核心主网络的另一个代理节点2接收到的pre-prepare请求后,首先,按照pbft的规则,代理节点2对pre-preprare报文进行相关的验证,验证后,代理节点2也向核心主网络发送代理节点2的pre-prepare消息,与此同时,代理节点2也通过统计模块15开始统计代理节点所接收到的一致的pre-prepare消息报文,当满足接收到其他2f个节点发送的pre-prepare的报文并且所有的pre-prepare报文都一致的情况下,代理节点2通过存储模块19获取代理节点2所在的子共识网络的路由表,然后代理节点2从代理节点1所广播的请求中开始分离出原始的请求数据并通过收发请求模块11组装内部报文,并通过代理节点2的广播请求模块12向子共识网络中的其他节点广播请求交易。

步骤504:核心主网络中各个代理节点按照pbft算法的规则开始进行三阶段共识,等到核心主网络共识完成后,各个代理节点执行交易,将交易结果和pbft第三阶段即commit阶段的commit报文组装成新的报文开始在各个所在的子共识网络中广播。

步骤s505:当没有接受到外部请求的子共识网络的共识节点2通过收发请求模块11接受到对应的代理节点2所广播的请求后,共识节点2通过交易执行模块13执行交易,并通过存储模块19存储交易结果,并根据pbft的规则开始组装pbft第三阶段即commit阶段的报文。

步骤s506:当子共识网络的共识节点通过收发请求模块11接收到代理节点广播的新commit消息时,新commit消息包含了代理节点在核心主网络共识第三阶段后拥有的commit报文数据和代理节点执行交易请求后的交易结果。共识节点1按照pbft第三阶段即commit阶段的方式,也重新组装commit报文,并在该共识节点1所在的子共识网路中广播commit报文,等共识节点通过统计模块18确定已经接受到子共识网络中其他2f个一致的commit消息后,共识节点从存储模块19中获取对应交易的执行结果,如果执行结果一致,共识节点按照打包的规则将请求打包上链。

步骤s507:当代理节点2接收到来自子共识网络其他2f个一致的commit消息后,代理节点2通过存储模块19将对应的交易打包并上链。

步骤s508:当接收请求的共识节点1按照以上步骤正常执行交易并校验通过交易结果后,共识节点1通过收发请求装置对接收的请求进行应答。

步骤s509:当接收请求的共识节点1按照以上步骤正常执行交易但校验交易结果不通过时,根据少数服从多数的原则,共识节点1将从该子共识网络中其他节点拉取该请求交易结果和对应区块或者借助代理节点2从核心主网络中其他代理节点拉取请求交易结果和区块,并根据拉取的交易结果对接收的请求应答。

当然,实际工作中也存在代理节点收到交易请求的情况;为此,请参考图6所示,在本发明一实施例中,所述区块链共识方法的具体实现流程如下:

步骤s601:接入区块链的应用系统发送请求到某一代理节点1,代理节点1通过收发请求模块11接收请求后判断请求是否需要修改区块链的数据,如世界状态。代理节点1将该请求转化为内部请求,根据请求是否需要修改区块链数据在请求报文打上对应的标签。代理节点1使用存储模块19获取当前代理节点1所在子共识网络的路由表,并往路由表中其它节点广播对应的请求。另外,该代理节点1使用存储模块19获取核心主网络的路由表,然后,代理节点1提取部分请求数据,再按照pbft第一阶段即pre-prepare阶段中pre-prepare报文的请求组装广播的报文,并通过代理节点1的广播请求模块12开始向核心主网络的其他节点广播pre-prepare报文。

步骤s602:当没有接受到外部请求的子共识网络的共识节点2通过收发请求模块11接受到对应的代理节点2所广播的请求后,共识节点2通过交易执行模块13执行交易,并通过存储模块19存储交易结果,并根据pbft的规则开始组装pbft第三阶段即commit阶段的报文。

步骤s603:当核心主网络的另一个代理节点2接收到的pre-prepare请求后,首先,按照pbft的规则,代理节点2对pre-preprare报文进行相关的验证,验证后,代理节点2也向核心主网络发送代理节点2的pre-prepare消息,与此同时,代理节点2也通过统计模块15开始统计代理节点所接收到的一致的pre-prepare消息报文,当满足接收到其他2f个节点发送的pre-prepare的报文并且所有的pre-prepare报文都一致的情况下,代理节点2通过存储模块19获取代理节点2所在的子共识网络的路由表,然后代理节点2从代理节点1所广播的请求中开始分离出原始的请求数据并通过收发请求模块11组装内部报文,并通过代理节点2的广播请求模块12向子共识网络中的其他节点广播请求交易。

步骤s604:核心主网络中各个代理节点按照pbft算法的规则开始进行三阶段共识,等到核心主网络共识完成后,各个代理节点执行交易,将交易结果和pbft第三阶段即commit阶段的commit报文组装成新的报文开始在各个所在的子共识网络中广播。

步骤s605:当子共识网络的共识节点通过收发请求模块11接收到代理节点广播的新commit消息时,新commit消息包含了代理节点在核心主网络共识第三阶段后拥有的commit报文数据和代理节点执行交易请求后的交易结果。共识节点按照pbft第三阶段即commit阶段的方式,也重新组装commit报文,并在该共识节点1所在的子共识网路中广播commit报文,等共识节点通过统计模块18确定已经接受到子共识网络中其他2f个一致的commit消息后,共识节点从存储模块19中获取对应交易的执行结果,如果执行结果一致,共识节点按照打包的规则将请求打包上链。

步骤s606:当代理节点1接收到来自子共识网络其他2f个一致的commit消息后,代理节点1通过存储模块19将对应的交易打包并上链。

步骤s607:当接收请求的代理节点1按照以上步骤正常执行交易但校验交易结果不通过时,根据少数服从多数的原则,代理节点1将从核心主网络中其他代理节点拉取请求交易结果和区块,并根据拉取的交易结果对接收的请求应答,并同步到所在子共识网络的各个共识节点。

本发明的有益技术效果在于:通过架构分层的方式将全网分为多个子共识网络和一个核心主网络,在这样的架构下,多个节点由于共识而需要通讯的次数因此减少了;同事相对提升了全网响应的吞吐量;另外,在共识的过程中,子共识网络的各个节点能先一步执行对应的交易,并以交易结果作为校验的标准,这样的方式使得节点共识的过程和执行交易过程并行,也一定程度提高了全网的性能。通过架构分层的方式将pbft三阶段分离到不同层级的节点中,相对减少了系统响应时间,提高了系统本身的吞吐量等性能指标;架构分层使得不需要进行完整共识流程的节点能先一步执行交易,使得请求交易执行和共识并行处理。

本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法。

本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。

如图7所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理单元130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图7中所示的所有部件;此外,电子设备600还可以包括图7中没有示出的部件,可以参考现有技术。

如图7所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。

其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。

输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为lcd显示器,但并不限于此。

该存储器140可以是固态存储器,例如,只读存储器(rom)、随机存取存储器(ram)、sim卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为eprom等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。

存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。

通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。

基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1