一种基于异步多链的区块链交易确认方法及系统与流程

文档序号:18706624发布日期:2019-09-17 23:48阅读:313来源:国知局
一种基于异步多链的区块链交易确认方法及系统与流程

本发明涉及计算机技术领域,特别涉及一种基于异步多链的区块链交易确认方法及系统。



背景技术:

区块链(blockchain或blockchain)是借由密码学串接并保护内容的串连交易记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用默克尔树算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链所串接的分布式账本能让两方有效纪录交易,且可永久查验此交易。

区块链根据访问权限,通常可以分为公有链、联盟链和私有链。公有链是指任何人都可以根据协议接入并参共识的区块链;联盟链是指共识过程受到预选节点控制的区块链;私有链是指权限在一个组织中,并受该组织完全控制的区块链。

区块链在技术层面,通常分为共识算法、密码学、p2p网络等几个大的技术点。其中共识算法是区块链项目中最核心的部分。有分布式,就需要达成共识。目前为止,对于区块链项目争议最大的技术点也是共识算法。

联盟链由于对性能、延时等要求较高,适用于联盟链的共识算法多数是基于同步或弱同步,当前共识区块的传输很大程度上会影响共识的进程。当区块链网络的负载较高时,会导致区块体积较大,往往会由于区块传输过慢而阻塞共识进程,甚至会使共识进程停止。

目前,联盟链场景下,通常采用pbft(实用拜占庭容错算法)以及对pbft的各种演化版本作为共识算法来支持区块链的运转,在大多数应用场景下,pbft共识算法行之有效,解决了大部分联盟链场景的需求。

然而,在带来高性能、低延时的同时,pbft共识算法也有着其固有的缺陷。由于pbft算法的消息通讯量较大,在节点数较多(上百)的情况下,其共识性能大幅度降低,延时大幅度上升。并且在相对较为极端的情况下,共识过程会无法进行下去。这导致了pbft共识算法无法在节点数量较大规模(节点数上百到几百)的分布式网络中运行,基于此算法设计的区块链系统,横向扩展性较差。



技术实现要素:

为解决上述技术问题,本发明提供了一种基于异步多链的区块链交易确认方法及系统,其通过人工构建标签词典,以实现自建标准词库中的标准词尽可能多得找到对应的标签,实现大规模多标签技术。

本发明实施例提供的技术方案如下:

第一方面,提供了一种基于异步多链的区块链交易确认方法,所述方法至少包括如下步骤:

区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到所述第一节点的区块链中,并将所述第一区块在所述区块链网络中广播;

区块链网络中的第二节点接收并验证所述第一区块,若验证通过则存储所述第一区块并构造所述第一区块的第一区块发现信息,并将所述第一区块发现信息在所述区块链网络中广播;

区块链网络中除所述第二节点以外的其他节点接收所述第一区块发现信息,将其作为共识数据源进行共识,产生共识结果;

其中,所述第一节点、第二节点为所述区块链网络上的任意两个不同节点;

所述第一区块发现信息至少包括:第一区块的区块哈希、第二节点对区块哈希的签名及第二节点公钥。

在一些实施例中,所述区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到所述第一节点的区块链中,并将所述第一区块在所述区块链网络中广播,至少包括如下子步骤:

所述第一节点收集保存在本地的本地交易信息;

所述第一节点将其存储的一本地交易信息打包成第一区块;

所述第一节点将所述第一区块通过区块哈希添加到预先构建的第一节点的区块链中;

所述第一节点将所述第一区块在所述区块链网络中广播。

在一些实施例中,所述区块链网络中的第二节点接收并验证所述第一区块,若验证通过则存储所述第一区块并构造所述第一区块的第一区块发现信息,并将所述第一区块发现信息在所述区块链网络中广播,至少包括如下子步骤:

区块链网络中的第二节点接收所述第一节点广播的第一区块;

验证所述第一区块的区块信息;

若验证通过,则第二节点将所述第一区块存储至所述第二节点本地,构造一个由轻量数据结构构成的第一区块发现信息,并将所述第一区块发现信息在所述区块链网络中广播;

若验证失败,则丢弃所述第一区块;

其中,所述第一区块信息至少包括第一节点的公钥、第一节点对第一区块的签名、第一区块的区块大小、第一区块的区块高度、第一区块的父区块哈希。

在一些实施例中,所述区块链网络中除所述第二节点以外的其他节点接收所述第一区块发现信息,将其作为共识数据源进行共识,产生共识结果,至少包括如下子步骤:

所述第二节点以外的其他节点接收所述第二节点广播的第一区块发现信息;

将所述第一区块发现信息保存至共识进程内;

将所述第一区块发现信息作为共识数据源,采用共识算法进行共识,获得共识结果;

使用门限加密,对所述第一区块的签名信息进行汇总。

在一些实施例中,所述区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到所述第一节点的区块链中,并将所述第一区块在所述区块链网络中广播之前,还包括构建所述第一节点的区块链,至少包括如下子步骤:

所述第一节点接收相应客户端发送的若干交易信息;

将所述若干交易信息存储在当前节点本地;

将所述若干交易信息分别打包成若干区块;

所述若干区块之间使用区块哈希首尾连接形成所述第一节点的区块链。

在一些实施例中,所述区块链网络中的除所述第二节点以外的其他节点接收所述第一区块发现信息,保存所述第一区块发现信息并将其作为共识数据源进行共识,产生共识结果之后,还包括:

根据所述共识结果,执行所述共识结果中所确认的交易。

另一方面,提供了一种基于异步多链的区块链交易确认系统,所述系统至少包括:

第一处理模块:用于区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到所述第一节点的区块链中,并将所述第一区块在所述区块链网络中广播;

第二处理模块:用于区块链网络中的第二节点接收并验证所述第一区块,若验证通过则存储所述第一区块并构造所述第一区块的第一区块发现信息,并将所述第一区块发现信息在所述区块链网络中广播;

第三处理模块:区块链网络中除所述第二节点以外的其他节点接收所述第一区块发现信息,将其作为共识数据源进行共识,产生共识结果;

其中,所述第一节点、第二节点为所述区块链网络上的任意两个不同节点;

所述第一区块发现信息至少包括:第一区块的区块哈希、第二节点对区块哈希的签名及第二节点公钥。

进一步地,所述第一处理模块至少包括:

收集子模块:用于所述第一节点收集保存在本地的本地交易信息;

打包子模块:用于所述第一节点将其存储的一本地交易信息打包成第一区块;

上链子模块:用于所述第一节点将所述第一区块通过区块哈希添加到预先构建的第一节点的区块链中;

第一广播子模块:用于所述第一节点将所述第一区块在所述区块链网络中广播。

进一步地,所述第二处理模块至少包括:

第一接收子模块:用于区块链网络中的第二节点接收所述第一节点广播的第一区块;

验证子模块:用于验证所述第一区块的区块信息;

第一处理子模块:用于若验证通过,则第二节点将所述第一区块存储至所述第二节点本地,构造一个由轻量数据结构构成的第一区块发现信息,并将所述第一区块发现信息在所述区块链网络中广播;还用于若验证失败,则丢弃所述第一区块;

其中,所述第一区块信息至少包括第一节点的公钥、第一节点对第一区块的签名、第一区块的区块大小、第一区块的区块高度、第一区块的父区块哈希。

进一步地,所述第三处理模块至少包括:

第二接收子模块:用于所述第二节点以外的其他节点接收所述第二节点广播的第一区块发现信息,保存所述第一区块发现信息至共识进程内;

保存子模块:用于将所述第一区块发现信息保存至共识进程内;

共识子模块:用于将所述第一区块发现信息作为共识数据源,采用共识算法进行共识,获得共识结果;

后处理子模块:用于使用门限加密,对所述第一区块的签名信息进行汇总。

进一步地,所述系统还包括区块链构造模块,所述区块连构造模块至少包括:

第三接收子模块:用于所述第一节点接收相应客户端发送的若干交易信息;

存储子模块:用于将所述若干交易信息存储在当前节点本地;

打包子模块:用于将所述若干交易信息分别打包成若干区块;

成链子模块:用于所述若干区块之间使用区块哈希首尾连接形成所述第一节点的区块链。

进一步地,所述系统还包括执行模块,用于根据所述共识结果,执行所述共识结果中所确认的交易。

本发明相比现有技术而言的有益效果在于:

本发明实施例提供一种基于异步多链的区块链交易确认方法,在执行过程中,其区块的传输和共识进程完全异步进行,除极端情况外,共识进程不会因为区块链网络负载较高而运行缓慢甚至停止;

并且,该方法中由于参与共识的是区块发现信息,而区块发现信息随着节点数的增长,其增长幅度远低于基于交易共识的同步或弱同步的共识算法,因此基于本方法所设计的系统具有较好的横向扩展性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一中的基于异步多链的区块链交易确认方法的流程图;

图2是本发明实施例二中的基于异步多链的区块链交易确认系统的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本实施例提供一种基于异步多链的区块链交易确认方法,属于计算机技术领域,适用于多种基于异步多链的区块链交易确认业务场景,特别适用于联盟链技术。

在联盟链中,传统的基于交易共识的共识算法,为了支持较大的节点规模,通常采用交易全网广播的形式。联盟链通常节点之间相互连通性非常高,这就导致了网络通讯量极高,当区块链网络的负载较高时,会导致区块的体积较大,往往会由于区块传输过慢而阻塞共识过程,甚至会使共识进程停止。为此,本实施例提供一种基于异步多链的区块链交易确认方法,实现区块的传输及共识完全异步。

图1为本实施例一提供的一种基于异步多链的区块链交易确认方法的流程图,如图1所示,该基于异步多链的区块链交易确认方法具体包括如下步骤:

s1、区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到第一节点的区块链中,并将第一区块在区块链网络中广播。

具体地,步骤s1具体包括如下子步骤:

s11、第一节点收集保存在本地的本地交易信息。

本实施例中,第一节点为区块链网络上的任意节点。

具体地,区块链网络上的任意节点接收客户端发送到该节点上的交易信息,仅在该节点上进行存储并维护,而不向区块链网络中进行广播。需要说明的是,本实施例中所指的交易信息,指客户端待交易的交易对象。

本实施例中,任意节点接收到客户端发送的交易信息后,无需进行交易的广播,极大地降低了网络资源的消耗。

s12、第一节点将其存储的一本地交易信息打包成第一区块。

具体地,区块链网络上的所有节点在触发打包出块时,各自同时将存储在本地的多个本地交易信息分别打包成区块,且一个本地交易信息打包成一个区块。

s13、第一节点将所述第一区块通过区块哈希添加到预先构建的第一节点的区块链中。

因此,本实施例中,在步骤s1之前,该方法至少还包括:s0、预先构造第一节点的区块链,该步骤至少包括如下子步骤:

s01、第一节点接收相应客户端发送的若干交易信息;

s02、将若干交易信息存储在当前节点本地;

s03、将若干交易信息分别打包成若干区块;

s04、若干区块之间使用区块哈希首尾连接形成所述第一节点的区块链。

在构建该区块链网络时,每一节点各自将存储在当前节点的若干交易信息分别打包出块,块与块之间使用区块哈希(hash)首尾连接,形成不可篡改的传统链状结构,每一节点各自维护各自节点的区块链。之后,当该节点接收到新的交易信息时,同样将该新的交易信息打包成块,添加到该区块链当中。

s14、第一节点将第一区块在区块链网络中广播。

具体为:每一节点各自将其维护的区块链中的区块向区块链网络中广播。

示例性地,区块链网络中包括a、b、c三个节点,节点a经过步骤s1后,其维护的区块链中具有a1、a2、a3三个首尾相连的区块,节点a向区块链网络广播该三个区块。

本实施例中,区块的广播与共识的进程完全异步,因此区块的广播速度和整个区块链网络中的负载并不会对共识的进程造成较大的影响,从而使该区块链系统具有较好的横向扩展性。

s2、区块链网络中的第二节点接收并验证第一区块,若验证通过则存储第一区块并构造第一区块的第一区块发现信息,并将第一区块发现信息在区块链网络中广播。

具体地,步骤s2包括如下子步骤:

s21、区块链网络中的第二节点接收第一节点广播的第一区块。

s22、验证第一区块的区块信息。

具体地,通过验证第一节点的公钥、第一节点对第一区块的签名、第一区块的区块大小、第一区块的区块高度、第一区块的父区块哈希等第一区块的区块信息来验证第一区块。

s23、获得验证结果后,具体进行如下处理:

若验证通过,则第二节点将第一区块存储至第二节点本地,构造一个由轻量数据结构构成的第一区块发现信息,并将第一区块发现信息在区块链网络中广播,其中,区块发现信息至少包括区块哈希、当前节点对区块哈希的签名及当前节点公钥。

若验证失败,则丢弃第一区块;

本实施例中,第二节点为区块链网络上除第一节点以外的任意节点。

示例性地,首先,在节点a广播区块a1、a2、a3后,节点b和c均接收到这三个区块,并采用相同的方法对区块进行验证。下面以节点b为例作进一步描述,节点b接收到节点a广播的a1、a2、a3三个的区块,并通过验证节点a对每个区块的签名、每个区块的区块大小、每个区块的区块高度、每个区块的父区块哈希等来验证这三个区块。

经验证,区块a1、a2通过验证,则节点b将区块a1、a2均保存在本地,并分别构造相应的区块发现信息。以b节点构造区块a1的区块发现信息为例,a1区块发现信息至少包括:a1区块的区块哈希、b节点对区块哈希的签名及b节点公钥。节点b采用同样的方法构造a2区块发现信息。因此,区块发现信息是一个轻量的数据结构,用于证明节点b接受了区块a1、a2。

接着,节点向区块链网络中广播区块a1的区块发现信息及区块a2的区块发现信息。

而当区块a3没有通过验证,节点b丢弃该区块a3。

由于区块发现信息非常轻量,并且数量不多,因此广播区块发现信息不会对网络通信带来明显的影响。

s3、区块链网络中除第二节点以外的其他节点接收第一区块发现信息,将其作为共识数据源,进行共识,产生共识结果。

具体地,步骤s3具体包括如下子步骤:

s31、第二节点以外的其他节点接收第二节点广播的第一区块发现信息;

s32、将第一区块发现信息保存至共识进程内;

s33、将第一区块发现信息作为共识数据源,采用共识算法进行共识,获得共识结果;

s34、使用门限加密对第一区块的签名信息进行汇总。

由于区块发现信息的数量远小于交易数量,因此对区块发现信息进行共识的难度很小。对区块发现信息进行共识时,可任意采用合适的公式算法产生共识结果,即对于共识算法并没有特殊的要求。

另外,采用门限加密(thresholdencryption)对第一区块的签名信息进行汇总,可将最终共识结果的数据由节点数量的平方级别,降至节点数量的先行级别,大大降低共识结果的数据量。

示例性地,区块链网络中的节点a或节点c接收到节点b广播的区块a1的区块发现信息及区块a2的区块发现信息,分别将两个区块的区块发现信息保存至共识进程内,作为共识数据源。采用合适的共识算法,对节点a及节点c中的区块a1的区块发现信息进行共识,以及对节点a及节点c中的区块a2的区块发现信息进行共识,产生共识结果。然后采用门限加密减小共识结果的数据量。

每一轮共识,针对某一区块仅能共识一个区块发现信息。在一轮共识后,即使区块a1没有及时传输至节点b或c,而其他节点依然可以进行共识,甚至达成共识,当然,所产生的共识结果,可能是不完整的,甚至是空的,该情况下则继续进行下一轮共识。

在步骤s3之后,该方法至少还包括:

s4、根据共识结果,执行共识结果中所确认的交易。

共识结果产生之后,即可确定在这一轮共识中,哪些节点的区块被全网所接受,变得不可篡改。将这些区块中的交易按照合理的规则进行排序执行即可,这里具体的排序方式,可以根据实际的场景进行选择,能够尽可能防止当前出块节点对交易顺序的干涉即可。如果在共识结果产生之后,某节点发现并不具有共识结果所包含的所有区块,可以暂停交易的执行,从其他节点获取缺失的区块后继续交易的执行即可。交易的执行并不影响共识的进程,因为遵循正确规则的节点,只要按照既定规则执行交易,即可得到全网一致的结果,无论交易的执行发生在什么时候。

示例性地,第一轮共识结束后,若是节点a及节点c对区块a2的区块发现信息达成共识,则表明节点a中的区块a2已被全网接受,变得不可篡改。若是节点a及节点c对区块a1的区块发现信息达成共识,则通过合理排序并执行区块a1及区块a2中的交易信息。若是在产生共识后,c节点发现仅具有区块a2而不具有区块a1,则暂停执行区块a1对应的交易,通过从节点a或b节点追块以获取区块a1后,才能继续执行区块a1对应的交易。

本实施例所保护的基于异步多链的区块链交易确认方法,其区块的传输和共识进程完全异步进行,除极端情况外,共识进程不会因为区块的传输以及区块链网络负载较高而运行缓慢甚至停止;

并且,该方法中由于参与共识的是轻量数据结构的区块发现信息,而区块发现信息随着节点数的增长,其增长幅度远低于基于交易共识的同步或弱同步的共识算法,因此基于本方法所设计的区块链系统,具有较好的横向扩展性。

实施例二

为执行上述实施例一的一种基于异步多链的区块链交易确认方法,本实施例提供一种基于异步多链的区块链交易确认系统。

图2为本发明实施例二提供的一种基于异步多链的区块链交易确认系统的结构示意图。如图2所示,该基于异步多链的区块链交易确认系统100至少包括:

第一处理模块1:用于区块链网络中的第一节点将其存储的一本地交易信息打包成第一区块并添加到第一节点的区块链中,并将第一区块在区块链网络中广播;

第二处理模块2:用于区块链网络中的第二节点接收并验证第一区块,若验证通过则存储第一区块并构造第一区块的第一区块发现信息,并将第一区块发现信息在区块链网络中广播;

第三处理模块3:区块链网络中除第二节点以外的其他节点接收第一区块发现信息,将其作为共识数据源进行共识,产生共识结果;

其中,第一节点、第二节点均为区块链网络上的任意节点;

第一区块发现信息至少包括:第一区块的区块哈希、第二节点对区块哈希的签名及第二节点公钥。

在一些实施例中,第一处理模块1至少包括如下子模块:

收集子模块11:用于第一节点收集保存在本地的本地交易信息;

打包子模块12:用于第一节点将其存储的一本地交易信息打包成第一区块;

上链子模块13:用于第一节点将所述第一区块通过区块哈希添加到预先构建的第一节点的区块链中;

第一广播子模块14:用于第一节点将所述第一区块在区块链网络中广播。

在一些实施例中,第二处理模块2至少包括如下子模块:

第一接收子模块21:用于区块链网络中的第二节点接收第一节点广播的第一区块;

验证子模块22:用于验证第一区块的区块信息;

第一处理子模块23:若验证通过,则用于第二节点将第一区块存储至第二节点本地,构造一个由轻量数据结构构成的第一区块发现信息,并将第一区块发现信息在区块链网络中广播;若验证失败,则用于丢弃第一区块。

本实施例中,第一区块信息至少包括第一节点的公钥、第一节点对第一区块的签名、第一区块的区块大小、第一区块的区块高度、第一区块的父区块哈希。

进一步地,第三处理模块3至少包括:

第二接收子模块31:用于第二节点以外的其他节点接收第二节点广播的第一区块发现信息,保存第一区块发现信息至共识进程内;

保存子模块32:用于将第一区块发现信息保存至共识进程内;

共识子模块33:用于将第一区块发现信息作为共识数据源,采用共识算法进行共识,获得共识结果;

后处理子模块34:用于使用门限加密,对第一区块的签名信息进行汇总。

在一些实施例中,该系统100还包括区块链构造模块0,区块连构造模块0至少包括如下子模块:

第三接收子模块01:用于第一节点接收相应客户端发送的若干交易信息;

存储子模块02:用于将若干交易信息存储在当前节点本地;

打包子模块03:用于将若干交易信息分别打包成若干区块;

成链子模块04:用于若干区块之间使用区块哈希首尾连接形成所述第一节点的区块链。

在一些实施例中,该系统100还包括执行模块4,执行模块4用于根据共识结果,执行共识结果中的交易。

需要说明的是:上述实施例提供的基于异步多链的区块链交易确认系统在触发联盟链中交易确认业务时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将系统的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于异步多链的区块链交易确认系统与基于异步多链的区块链交易确认方法的实施例属于同一构思,即该系统是基于该方法的,其具体实现过程详见方法实施例,这里不再赘述。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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