技术领域
[0001] 本文件属于区块链技术领域,尤其涉及一种区块链的共识方法、共识节点及电子设备。
相关背景技术
[0002] 目前区块链的共识节点之间是通过广播方式将本节点交易池中的全量交易同步给其他共识节点。这种广播的同步方式会导致交易被冗余发送,从而造成带宽资源的大量浪费。对于共识节点规模较多以及交易数据庞大的区块链系统,带宽资源的浪费会导致共识算力下降,从而影响到区块链业务的执行效率。
[0003] 有鉴于此,当前亟需一种可以改善共识节点之间同步交易所造成的带宽资源浪费的技术方案。
具体实施方式
[0013] 为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0014] 如前所述,目前区块链的共识节点之间是通过广播方式将本节点交易池中的全量交易同步给其他共识节点。而这种广播的同步方式会导致交易被冗余发送,从而造成带宽资源的浪费。
[0015] 比如,共识节点A的交易池有交易1、2,共识节点B的交易池有交易2、3,共识节点C的交易池有交易4。在不考虑新交易添加以及旧交易移除的情况下,经第一轮交易同步后,共识节点A向共识节点B、C广播交易1、2,共识节点B向共识节点A、C广播交易2、3,共识节点C向共识节点A、B广播交易4。其中可以看出,第一轮同步造成交易2的冗余发送。
[0016] 由于经第一轮同步后,共识节点A、B、C各自的交易池均存储了交易1、2、3、4。因此在进行第二轮同步时,共识节点A、B、C会将各自交易池中的交易1、2、3、4全部进行冗余发送。
[0017] 可以看出,在传统的交易同步方式下,共识节点规模越多、交易数据越庞大,则带宽资源浪费的现象就越严重,从而导致区块链的共识算力大幅下降,最终影响到区块链业务的执行效率。
[0018] 为此,本文旨在提出一种能够改善共识节点之间同步交易所造成的带宽资源浪费的技术方案。
[0019] 图1是本说明书实施例区块链的共识方法的流程图。图1所示的方法可以由下文相对应的硬件执行,包括如下步骤:S102,区块链的目标共识节点执行视图切换操作,其中,目标共识节点在执行视图切换操作后为共识备份节点。
[0020] 应理解,区块链的各共识节点对应有视图编号。区块链一般会基于一定规则(比如轮询)定期切换视图,对应到共识节点就是执行视图切换操作。对于目标共识节点来讲,若区块链切换到本节点视图编号所对应的视图,则作为共识主节点,否则作为共识备份节点。基于这种视图切换机制,可以让区块链的各共识节点都有一定机会成为共识主节点以发起共识提议(共识备份节点无法发起共识提议),从而实现一定程度的去中心化。
[0021] S104,目标共识节点将本节点的交易池中的交易定向发送至区块链的共识主节点。
[0022] 应理解,本说明书实施例方案中,目标共识节点将本节点的交易池中的交易定向发送至区块链的共识主节点可以表示:共识备份节点只向共识主节点同步交易,也就是任意共识备份节点不会通过其他共识备份节点向本节点交易池中添加新的交易。
[0023] 这里,目标共识节点在作为共识备份节点时,可以获取区块链客户端所发起的新的交易,并将新的交易加至本节点的交易池中。在此基础上,为实现更小的带宽开销,作为可以但非必须的方案,目标共识节点在作为共识备份节点时,只会将区块链客户端发起的交易添加至本节点的交易池中,也就是只占用带宽资源接收直接来自区块链客户端发送的交易。当然,目标共识节点也可以不拒绝通过其他方式所接收的交易,但不进行处理。
[0024] S106,区块链的共识主节点对接收到的交易进行合法性验证,并将验证通过的交易存入本节点的交易池。
[0025] 其中,本步骤的合法性验证可以是指已有区块链共识节点在向交易池添加交易前所需执行的验证。由于本说明书实施例未涉及该方面的改进,因此不再具体赘述。
[0026] S108,共识主节点基于本节点的交易池中的交易发起共识提议。
[0027] 本步骤中,共识主节点会从本节点的交易池中选取至少一部分交易发起共识提议,这里被选取发起共识提供的交易可能会包含有目标节点所提供的交易。其中,达成共识的交易则会被各共识节点生成区块以进行保存,从而实现交易数据的上链。
[0028] 应理解,对于共识节点主备区别的共识机制中,区块链只有共识主节点能够针对交易发起共识提议。基于本说明书实施例的方法,区块链的共识备份节点只向共识主节点定向同步交易,可以有效节省带宽开销。后续如果区块链更换共识主节点,则共识备份节点再重新向新的共识主节点同步交易。此外,定向的同步方式还可以有效减少交易的冗余发送,从而改善带宽资源浪费的问题,可避免区块链系统因带宽占用过高而导致共识算力下降的问题发生。
[0029] 具体地,本说明实施例中,目标共识节点为共识备份节点时,可以对本节点的交易池中已向区块链的共识主节点发送的交易进行标记。对应地,在上述S104中,目标共识节点将本节点的交易池中未被标记的交易定向发送至区块链的共识主节点。也就是说,如果区块链未切换视图更换共识主节点,目标共识节点(共识备份节点)不会向共识主节点同步重复的交易。
[0030] 此外,在上述基础之上,目标共识节点在执行视图切换操作后,还可以清除本节点的交易池中交易的标记。应理解,区块链切换视图后会更换新的共识主节点,目标共识节点清除标记后再执行上述S104时,可以向新共识主节点发送原先向旧共识主节点发送但未向新共识主节点发送的交易。
[0031] 下面对本说明书实施例的共识方法进行详细介绍。
[0032] 在本说明书实施例的共识方法中,目标共识节点交易池中的交易主要分为两类。一类是目标共识节点自身节点的交易,是区块链客户端入目标共识节点后,直接向目标共识节点发起的交易;另一类是其他共识节点的交易,是其他区块链客户端接入其他共识节点后所发起的交易,需要在目标节点作为共识主节点后,经过其他共识节点(共识备份节点)进行同步。
[0033] 其中,以目标共识节点初始为共识备份节点为实例,执行共识方法的流程如图2所示,包括:目标共识节点将本节点的交易池中属于自己的交易发送至区块链当前的共识主节点。
这里,目标共识节点忽视本节点交易池中属于其他共识节点的交易。
[0034] 同时,目标共识节点也接收区块链客户端发起的新交易,并对区块链客户端发起的新交易进行合法性验证,如果验证通过,则添加至目标共识节点的交易池中。这里,目标共识节点添加区块链客户端发起的新交易属于完全独立的流程,并不受其他步骤以及主备之分的限制。
[0035] 之后,区块链切换视图发起换主,目标共识节点执行视图切换操作。
[0036] 如果目标共识节点在执行视图切换操作后依然为共识备份节点,则将本节点的交易池中所有属于自己的交易发送至区块链新的共识主节点,发送交易包括:之前向上一轮共识主节点发送交易,以及,此外通过区块链客户端向本节点交易池所添加的新交易。
[0037] 如果目标共识节点在执行视图切换操作后为共识主节点,则接收共识备份节点及区块链客户端发送的交易,并对接收到的交易进行合法性验证,并将验证通过的交易存入本节点的交易池。
[0038] 之后,如果触发共识执行条件,目标共识节点基于本节点的交易池中的交易发起共识提议。这里,被发起共识提议的交易不限于来源,可以是目标共识节点和其他共识节点的交易。
[0039] 显然基于本说明书实施例定向的同步方式,共识备份节点根据共识主节点是否切换来选择是否将存量的交易发送给新的共识主节点,即减少了网络带宽的使用,又保证了交易被打包成功率。对区块链的吞吐量实现了线性的提升。
[0040] 以上对本发明实施例方法的示例性介绍。在不脱离本文上述原理基础之上,还可以进行适当的变化,这些变化也应视为本发明实施例的保护范围。
[0041] 此外,还应理解的是,在本说明书实施例的方法中,若目标共识节在执行视图切换操作后为共识备份节点,则执行以下步骤:将本节点的交易池中的交易发送至所述区块链的共识主节点,使得区块链的共识主节点对接收到的交易进行合法性验证,并将验证通过的交易存入本节点的交易池,从而基于本节点的交易池中的交易发起共识提议。
[0042] 对应地,若目标共识节在执行视图切换操作后为共识主节点,则执行以下步骤:接收所述区块链的共识备份节点及区块链客户端发送的交易;对接收到的交易进行合法性验证,并将验证通过的交易存入本节点的交易池;基于本节点的交易池中的交易发起共识提议。
[0043] 此外,对应于图1所示的共识方法,本发明实施例还提供一种区块链的共识节点。图3是本发明实施例共识节点300的结构示意图,包括:
视图切换模块310,执行共识节点的视图切换操作。
[0044] 发送模块320,若所述视图切换操作使所述共识节点作为共识备份节点,则将所述共识节点的交易池中的交易定向发送至所述区块链的共识主节点。
[0045] 接收模块330,若所述视图切换操作使所述共识节点作为共识主节点,则接收所述区块链的共识备份节点及区块链客户端发送的交易。
[0046] 同步模块340,若所述视图切换操作使所述共识节点作为共识主节点,则对所述接收模块接收到的交易进行合法性验证,并将验证通过的交易存入所述共识节点的交易池。
[0047] 共识模块350,若所述视图切换操作使所述共识节点作为共识主节点,则基于所述共识节点的交易池中的交易发起共识提议。
[0048] 对于共识节点主备区别的共识机制中,区块链只有共识主节点能够针对交易发起共识提议。本说明书实施例的共识节点在执行视图切换操作后,若为共识备份节点,则只向共识主节点定向同步交易,从而有效节省带宽开销。后续如果区块链更换共识主节点,则再重新向新的共识主节点同步交易。此外,定向的同步方式还可以有效减少交易的冗余发送,从而改善带宽资源浪费的问题,可避免区块链系统因带宽占用过高而导致共识算力下降的问题发生。
[0049] 可选地,发送模块320只将所述共识节点的交易池中直接从区块链客户端获取到的交易定向发送至所述区块链的共识主节点。
[0050] 可选地,发送模块320在所述共识节点作为共识备份节点时,对所述共识节点的交易池中已向所述区块链的共识主节点发送的交易进行标记,并将本节点的交易池中未被标记的交易定向发送至所述区块链的共识主节点。
[0051] 在上述基础之上,发送模块320还可以在视图切换模块310每执行完成视图切换操作后,清除所述共识节点的交易池中交易的标记。
[0052] 可选地,所述同步模块340在所述共识节点作为共识备份节点时,只将区块链客户端所发起的交易添加至本节点的交易池中。
[0053] 显然,本说明书实施例的共识节点可以作为上述图1所示的共识方法的执行主体,因此能够实现共识方法在图1和图2所实现的功能。由于原理相同,本文不再赘述。
[0054] 图4是本说明书的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
[0055] 处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0056] 存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
[0057] 处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成共识装置,该共识装置可以是共识节点或者共识节点中的部件。处理器,执行存储器所存放的程序,并具体用于执行以下操作:执行共识节点的视图切换操作。
[0058] 若所述视图切换操作使所述共识节点作为共识备份节点,则将所述共识节点的交易池中的交易定向发送至所述区块链的共识主节点。
[0059] 若所述视图切换操作使所述共识节点作为共识主节点,则接收所述区块链的共识备份节点及区块链客户端发送的交易。
[0060] 若所述视图切换操作使所述共识节点作为共识主节点,则对所述接收模块接收到的交易进行合法性验证,并将验证通过的交易存入所述共识节点的交易池。
[0061] 若所述视图切换操作使所述共识节点作为共识主节点,则基于所述共识节点的交易池中的交易发起共识提议。
[0062] 对于共识节点主备区别的共识机制中,区块链只有共识主节点能够针对交易发起共识提议。基于本说明书实施例的电子设备,区块链的共识备份节点只向共识主节点定向同步交易,可以有效节省带宽开销。后续如果区块链更换共识主节点,则共识备份节点再重新向新的共识主节点同步交易。此外,定向的同步方式还可以有效减少交易的冗余发送,从而改善带宽资源浪费的问题,可避免区块链系统因带宽占用过高而导致共识算力下降的问题发生。
[0063] 上述如本说明书图1所示实施例揭示的共识方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
[0064] 应理解,本说明书实施例的电子设备可以实现上述共识方法在图1和图2所示的实施例的功能。由于原理相同,本文不再赘述。
[0065] 当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0066] 此外,本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图1所示实施例的方法,并具体用于执行以下步骤:执行共识节点的视图切换操作。
[0067] 若所述视图切换操作使所述共识节点作为共识备份节点,则将所述共识节点的交易池中的交易定向发送至所述区块链的共识主节点。
[0068] 若所述视图切换操作使所述共识节点作为共识主节点,则接收所述区块链的共识备份节点及区块链客户端发送的交易。
[0069] 若所述视图切换操作使所述共识节点作为共识主节点,则对所述接收模块接收到的交易进行合法性验证,并将验证通过的交易存入所述共识节点的交易池。
[0070] 若所述视图切换操作使所述共识节点作为共识主节点,则基于所述共识节点的交易池中的交易发起共识提议。
[0071] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0072] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0073] 以上仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。此外,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本文件的保护范围。