区块链交易处理方法、装置及存储介质与流程

文档序号:15165026发布日期:2018-08-14 17:22阅读:155来源:国知局

本发明涉及区块链领域,尤其涉及一种高性能的区块链交易处理系统及方法。



背景技术:

基于实用拜占庭容错共识算法(practicalbyzantinefaulttolerance,pbft)的区块链系统,在接收到用户发起的交易请求后,要求区块链中的验证节点相互进行三轮投票。当用户请求数量大的情况下,网络通信负担重,尤其是当区块链中节点数量多的情况下,节点间通信量呈节点数的平方级增长,使得通信能力成为了区块链系统处理消息的瓶颈。



技术实现要素:

鉴于以上内容,本发明提供一种高性能的区块链交易处理方法,对区块链进行水平扩展,将交易路由到不同的区块链分区进行并行处理,提高交易吞吐量及处理时效。

为实现上述目的,本发明提供一种区块链交易处理方法,其该方法包括:

接收步骤:接收客户端用户发起的交易请求;及

处理步骤:将交易请求分发到若干个结构相同的分区链中并行处理。

优选地,所述处理步骤包括:将各个交易请求方的地址与分区链的总分区数分别进行取模运算得到第一取模值,根据第一取模值与分区链的对应关系将各个交易请求发送至相应的第一分区链。

此外,本发明还提供一种电子装置,该电子装置包括存储器及处理器。所述存储器上存储有区块链交易处理程序,该区块链交易处理程序被处理器执行时,实现如下步骤:

接收步骤:接收客户端用户发起的交易请求;及

处理步骤:将交易请求分发到若干个结构相同的分区链中并行处理。

优选地,所述处理步骤包括:将各个交易请求方的地址与分区链的总分区数分别进行取模运算得到第一取模值,根据第一取模值与分区链的对应关系将各个交易请求发送至相应的第一分区链。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括区块链交易处理程序,所述区块链交易处理程序被处理器执行时,可实现如上所述区块链交易处理方法中的步骤。

本发明提出的区块链交易处理方法、装置及存储介质,将发送到单一区块链处理的交易平均分散到若干个相同架构的区块链分区中,对区块链进行了水平扩展,将交易路由到不同的区块链分区进行并行处理,可以实现交易秒级到账。交易在不同分区具有相同的结构,保证交易在跨链转发的过程中可以被接受认可,可适用于广泛的应用场景。

附图说明

图1为本发明实现高性能的区块链交易处理方法的电子装置较佳实施例的示意图。

图2是本发明区块链交易处理方法对区块链进行水平扩展的示意图。

图3为图2中具有相同结构的分区链的示意图。

图4为本发明区块链交易处理方法第一较佳实施例的流程图。

图5为本发明区块链交易处理方法第二较佳实施例的流程图。

图6为本发明区块链交易处理方法第三较佳实施例的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

如图1所示,是本发明实现高性能的区块链交易处理方法的电子装置1较佳实施例的示意图。

在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。

该电子装置1包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线17用于实现这些组件之间的连接通信。

存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储单元,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

在本实施例中,所述存储器11可以用于存储安装于所述电子装置1的应用软件及各类数据,例如区块链交易处理程序10的程序代码及其运行过程中产生的相关数据。

处理器13在一些实施例中可以是一中央处理器(centralprocessingunit,cpu),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。

图1仅示出了具有组件11-17以及区块链交易处理程序10的电子装置1,但是应理解的是,图1并未示出电子装置1的所有组件,可以替代实施更多或者更少的组件。该电子装置1还可以包括射频(radiofrequency,rf)电路、传感器和音频电路等等,在此不再赘述。

在图1所示的电子装置1实施例中,作为一种计算机存储介质的存储器11中存储区块链交易处理程序10的程序代码,处理器13执行所述区块链交易处理程序10的程序代码时,将用户发起的交易请求路由到若干个架构相同的区块链分区中并行处理(如图2、图3所示)。以下结合图3~图6说明区块链交易处理程序10运行时实现的区块链交易处理方法。

如图4所示,是本发明区块链交易处理方法第一较佳实施例的流程图。在本实施例中,在本实施例中,处理器13执行存储器11中存储的区块链交易处理程序10的程序代码时实现的区块链交易处理方法包括:

步骤s10,接收客户端用户发起的交易请求。

步骤s20,将交易请求分发到若干个结构相同的分区链中并行处理。

如图2所示,具有相同结构的分区链总数为n(n为大于1的正整数),当接入层接收到用户发送的交易请求时,根据每个交易请求方的地址(类似于银行账号的一串数字)对分区数n取模的值,将交易请求分发到相应的分区链。例如,当某个交易请求方的地址对分区数n取模的值为1,该交易请求方的交易请求分发至分区链1处理;当另一个交易请求方的地址对分区数n取模的值为3,则将该交易请求方的交易请求分发至分区链3处理。在本实施例中,是以地址与分区链总数n的取模值对交易进行分发。在其他实施例中,也可以是依据其他映射关系对交易进行分发。

关于步骤s20的具体介绍,请参图5及图6中相关步骤。例如,步骤s20可以参照图5中步骤s103、图6中步骤s303实现,也可以涉及图5、图6中更多其他的步骤。

如图5所示,是本发明区块链交易处理方法第二较佳实施例的流程图。

步骤s101,接收用户发送的交易请求。

步骤s103,根据交易请求方的地址与分区链的总分区数n的取模值m1将该交易请求发送至第一分区链。例如,当m1=1时,该交易请求发送至如图2所示的第一分区链1。

步骤s105,第一分区链的节点解析该交易请求及该交易的相关信息,以验证该交易请求的合法性和交易的有效性。如图3所示,每个分区链包括多个节点,包括但不限于,非记账节点(peer节点)、记账节点(validator节点)及监听节点(listener节点)。接收到交易请求后,非记账节点验证交易请求的合法性,即判断该交易请求是否属于本分区链的处理任务,验证方式为计算交易请求方的地址与分区链的总分区数n的取模值m1是否对应于该分区链,例如值m1是否等于该分区链的识别码。记账节点验证交易的有效性,例如该交易请求涉及的金额是否在允许范围之内。

步骤s107,第一分区链的节点根据解析结果判断该交易请求是否合法、该交易是否有效。当判断该交易请求不合法、或该交易无效时,执行步骤s109,拒绝交易,流程可以结束,也可以反馈被拒绝的交易相关信息给发起交易请求的用户及相关机构。当判断该交易请求合法且该交易有效时,执行步骤s111。

步骤s111,第一区块链的记账节点将交易打包成区块,在记账节点间达成共识。记账节点将交易打包成区块遵循的原则可以是根据时间周期,当预设的时间周期到达时,将截止当前时间收到的交易打包成区块,也可以是依据交易数量,当收到的交易数量达到预设阈值时,将交易打包成区块。

步骤s113,第一区块链的监听节点解析区块中的交易信息。

步骤s115,第一区块链的监听节点根据解析判断区块中的交易是否涉及跨链交易。在本实施例中,判断一个交易是否涉及跨链交易的方式是:将该交易涉及到的接收方的地址与分区数n取模得到值m2,判断值m2是否对应于本分区链,如果对应的是其他分区链,则涉及跨链交易。当判断值m2对应于本分区链时,该交易为本区内交易,执行步骤s117,在该第一区块链中完成交易,流程结束。当判断值m2对应于其他分区链时,执行步骤s119。

步骤s119,第一区块链的监听节点根据交易接收方的地址与总分区数n的取模值m2,将跨链交易请求发送至第二分区链。例如,当值m2=2时,将该跨链交易请求发送至图2、图3中的分区链2。

步骤s121,第二分区链的节点验证跨链交易请求的合法性和交易的有效性。步骤s121、123、125的原理类似于上述步骤s105、s107、s109,此处不再赘述。当第二分区链的节点判断该跨链交易请求合法且该跨链交易有效时,执行步骤s127,第二区块链的记账节点将交易打包成区块,在记账节点间达成共识,完成交易后由第二分区链的监听节点反馈信息给第一分区链的监听节点。

如图6所示,是本发明区块链交易处理方法第三较佳实施例的流程图。

步骤s301,接收用户发送的交易请求。

步骤s303,根据交易请求方的地址与分区链的总分区数n的取模值m1将该交易请求发送至第一分区链。例如m1=1,该交易请求发送至如图3所示的分区链1。

步骤s305,第一分区链的第一节点计算请求方地址与分区数n的取模值m1’。在本实施例中,第一节点为非记账节点。如图3所示,分区链1的非记账节点1接收到一个交易请求后,计算该请求方地址与分区数n的取模值m1’。

步骤s307,第一分区链的第一节点根据该取模值m1’验证该交易请求是否属于该第一分区链的交易。若验证不属于该第一分区链的交易,则判断该交易请求不合法,执行步骤s309,拒绝交易。流程可以结束,也可以反馈被拒绝的交易相关信息给发起交易请求的用户及相关机构。

若步骤s307判断交易请求合法,则执行步骤s311。例如,当图3的非记账节点1判断取模值m1’对应的不是分区链1时,拒绝交易,若取模值m1’=1,则判断该交易请求合法。

步骤s311,第一分区链的第一节点广播该交易请求至该第一分区链的所有第二节点。在本实施例中,第二节点为记账节点。如图3所示,非记账节点1将该交易请求广播给记账节点1~4。

步骤s313,第一分区链的第二节点解析交易信息以验证交易的有效性,例如该交易请求涉及的金额是否在允许范围之内。

步骤s315,第一分区链的第二节点判断交易是否有效。若交易无效,则执行步骤s317,拒绝交易。流程可以结束,也可以反馈被拒绝的交易相关信息给发起交易请求的用户及相关机构。

若步骤s315判断交易有效,则执行步骤s319,第二节点将将交易打包成区块,在第二节点间达成共识。如图3所示,交易区块在记账节点1~4之间达成共识。记账节点将交易打包成区块遵循的原则可以是根据时间周期,当预设的时间周期到达时,将截止当前时间收到的交易打包成区块,也可以是依据交易数量,当收到的交易数量达到预设阈值时,将交易打包成区块。

步骤s321,第一分区链的第三节点监听交易区块,解析区块中的交易,将交易接收方的地址与总分区数n取模得到第二取模值m2。在本实施例中,第三节点为监听节点,例如图3中的监听节点1、2。

步骤s323,第一分区链的第三节点根据第二取模值m2判断该交易是否涉及跨链交易。当第二取模值m2对应于该第一分区链时,例如m2=1、对应于分区链1,判断该交易为本分区链内部交易,执行步骤s325,在该第一分区链中完成交易。流程可以结束,也可以反馈交易完成的相关信息给发起交易请求的用户及相关机构。

当步骤s323判断该交易涉及跨链交易,执行步骤s327,第三节点签名跨链交易后,根据值m2发送至第二分区链的第二节点,并缓存跨链交易到本地内存。例如,m2=2、对应于图3中的分区链2,分区链1的监听节点2从本地内存(图中未示出)中读取数字签名对该跨链交易进行签名后,将该跨链交易发送至分区链2的记账节点4,并将该跨链交易的相关信息缓存至本地内存。

步骤s329,第二分区链的第二节点接收到跨链交易后,计算跨链交易的接收方地址与分区数n的取模值m2。

步骤s331,第二分区链的第二节点根据计算得到的取模值m2判断该跨链交易是否合法,即是否有关该第二分区链的交易。若判断不合法,则执行步骤s333,拒绝请求。流程可以结束,也可以反馈被拒绝的交易相关信息给发起交易请求的用户及相关机构。

步骤s335,第二分区链的第二节点验证第一区块链的第三节点的签名有效性后,将该跨链交易发送给该第二分区链中的其他第二节点达成共识,完成交易。例如,图3中分区链2的记账节点4验证分区链1的监听节点2的签名有效后,将该跨链交易发生给分区链2的记账节点1、2、3达成共识后,完成交易。

步骤s337,第二区块链的第三节点监听到该跨链交易完成后,通知第一区块链中的第三节点交易完成,第一区块链的第三节点删除内存中缓存的跨链交易。例如,图3中分区链2的监听节点1监听到该跨链交易完成后,通知分区链1的监听节点2交易完成。分区链1的监听节点2收到交易完成通知后,删除内存中缓存的该跨链交易的相关数据。

在其他实施例中,在执行步骤s327后,第一区块链中的第三节点等待跨链交易涉及的第二区块链反馈交易完成信息,若超时未收到反馈信息,则第一区块链中的第三节点从内存中读取缓存的该跨链交易的数据,再次发送至相应的第二区块链。

需要指出的是,图5、图6所示的流程图中,并不必然包括图中所示的所有步骤,也不限于图中所示的步骤。此外,有关区块链系统的常规处理步骤,可以根据实际应用场景纳入本发明。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。

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