具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
如图1所示,是本发明实现高性能的区块链交易处理方法的电子装置1较佳实施例的示意图。
在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。
该电子装置1包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。通信总线17用于实现这些组件之间的连接通信。
存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储单元,例如所述电子装置1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。
在本实施例中,所述存储器11可以用于存储安装于所述电子装置1的应用软件及各类数据,例如区块链交易处理程序10的程序代码及其运行过程中产生的相关数据。
处理器13在一些实施例中可以是一中央处理器(Central Processing Unit,CPU),微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。
图1仅示出了具有组件11-17以及区块链交易处理程序10的电子装置1,但是应理解的是,图1并未示出电子装置1的所有组件,可以替代实施更多或者更少的组件。该电子装置1还可以包括射频(Radio Frequency,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-8中相关步骤。
如图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。
值得注意的是,当所述交易请求为智能合约调用请求时,一般情况下是由普通交易分区链向智能合约分区链发出请求,因此该交易为跨链交易。步骤S115中判断出该交易为跨链交易,表示所述交易请求需要调用的是其他分区链(智能合约分区链)中的智能合约。执行步骤S119,将所述交易请求发送至所述第二分区链(智能合约分区链),以完成对相应智能合约的调用。
步骤S121,第二分区链的节点验证跨链交易请求的合法性和交易的有效性。步骤S121、123、125的原理类似于上述步骤S105、S107、S109,此处不再赘述。当第二分区链的节点判断该跨链交易请求合法且该跨链交易有效时,执行步骤S127,第二分区链的记账节点将交易打包成区块,在记账节点间达成共识,完成交易后由第二分区链的监听节点反馈信息给第一分区链的监听节点。
如图6所示,是本发明区块链交易处理方法第三较佳实施例的流程图。在本实施例中,所述区块链交易处理方法的步骤与第二实施例类似,区别在于以智能合约调用为例对所述区块链交易处理方法的流程进行详细说明。
步骤S201,接收用户发送的智能合约调用请求。所述智能合约调用请求可以作为交易请求的其中一种。
步骤S203,根据智能合约调用请求方的地址与分区链的总分区数N的取模值M1将该交易请求发送至第一分区链。例如,当M1=1时,该智能合约调用请求发送至如图2所示的第一分区链1。
步骤S205,第一分区链的节点解析该智能合约调用请求及相关信息,以验证该智能合约调用请求的合法性和有效性。接收到智能合约调用请求后,非记账节点验证智能合约调用请求的合法性,即判断该智能合约调用请求是否属于本分区链的处理任务,验证方式为计算调用请求方的地址与分区链的总分区数N的取模值M1是否对应于该分区链,例如值M1是否等于该分区链的识别码。记账节点验证智能合约调用请求的有效性,例如该智能合约调用请求涉及的金额是否在允许范围之内。
步骤S207,第一分区链的节点根据解析结果判断该智能合约调用请求是否合法、是否有效。当判断该智能合约调用请求不合法、或该智能合约调用请求无效时,执行步骤S209,拒绝调用,流程可以结束,也可以反馈被拒绝的调用请求相关信息给发起智能合约调用请求的用户及相关机构。当判断该智能合约调用请求合法且有效时,执行步骤S211。
步骤S211,第一分区链的记账节点将智能合约调用信息打包成交易区块,在记账节点间达成共识。在本实施例中,所述智能合约调用可以作为一种交易。
步骤S213,第一分区链的监听节点解析区块中的智能合约调用信息。
步骤S215,第一分区链的监听节点根据解析判断区块中的智能合约调用是否涉及跨链交易。在本实施例中,判断所述智能合约调用是否涉及跨链交易的方式是:将调用接收方的地址与分区数N取模得到值M2,判断值M2是否对应于本分区链,如果对应的是其他分区链,则涉及跨链交易。
值得注意的是,智能合约调用请求一般情况下是由普通交易分区链向智能合约分区链发出,因此为跨链交易。当判断值M2对应于本分区链时,表示该智能合约调用请求有误,执行步骤S217,提示调用错误,拒绝请求,流程可以结束,也可以反馈该错误的调用请求相关信息给发起智能合约调用请求的用户及相关机构。当判断值M2对应于其他分区链时,执行步骤S219。
步骤S219,第一分区链的监听节点根据调用接收方的地址与总分区数N的取模值M2,将智能合约调用请求发送至第二分区链。例如,当值M2=2时,将该智能合约调用请求发送至图2、图3中的分区链2。
步骤S221,第二分区链的节点验证智能合约调用请求的合法性和有效性。步骤S221、223、225的原理类似于上述步骤S205、S207、S209,此处不再赘述。当第二分区链的节点判断该智能合约调用请求合法且有效时,执行步骤S227,第二分区链的记账节点将智能合约调用信息打包成区块,在记账节点间达成共识,完成智能合约调用后由第二分区链的监听节点反馈信息给第一分区链的监听节点。
如图7所示,是本发明区块链交易处理方法第四较佳实施例的流程图。
步骤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后,第一分区链中的第三节点等待跨链交易涉及的第二分区链反馈交易完成信息,若超时未收到反馈信息,则第一分区链中的第三节点从内存中读取缓存的该跨链交易的数据,再次发送至相应的第二分区链。
如图8所示,是本发明区块链交易处理方法第五较佳实施例的流程图。在本实施例中,所述区块链交易处理方法的步骤与第四实施例类似,区别在于以智能合约调用为例对所述区块链交易处理方法的流程进行详细说明。
步骤S401,接收用户发送的智能合约调用请求。
步骤S403,根据调用请求方的地址与分区链的总分区数N的取模值M1将该智能合约调用请求发送至第一分区链。例如M1=1,该智能合约调用请求发送至如图3所示的分区链1。
步骤S405,第一分区链的第一节点计算请求方地址与分区数N的取模值M1’。在本实施例中,第一节点为非记账节点。如图3所示,分区链1的非记账节点1接收到一个智能合约调用请求后,计算该请求方地址与分区数N的取模值M1’。
步骤S407,第一分区链的第一节点根据该取模值M1’验证该智能合约调用请求是否属于该第一分区链的交易。若验证不属于该第一分区链的交易,则判断该智能合约调用请求不合法,执行步骤S409,拒绝请求。流程可以结束,也可以反馈被拒绝的智能合约调用相关信息给发起请求的用户及相关机构。
若步骤S407判断该智能合约调用请求合法,则执行步骤S411。例如,当图3的非记账节点1判断取模值M1’对应的不是分区链1时,拒绝请求,若取模值M1’=1,则判断该智能合约调用请求合法。
步骤S411,第一分区链的第一节点广播该智能合约调用请求至该第一分区链的所有第二节点。在本实施例中,第二节点为记账节点。如图3所示,非记账节点1将该智能合约调用请求广播给记账节点1~4。
步骤S413,第一分区链的第二节点解析智能合约调用信息以验证该智能合约调用请求的有效性,例如该智能合约调用请求涉及的金额是否在允许范围之内。
步骤S415,第一分区链的第二节点判断智能合约调用请求是否有效。若无效,则执行步骤S417,拒绝请求。流程可以结束,也可以反馈被拒绝智能合约调用相关信息给发起请求的用户及相关机构。
若步骤S415判断智能合约调用请求有效,则执行步骤S419,第二节点将将智能合约调用信息打包成交易区块,在第二节点间达成共识。如图3所示,交易区块在记账节点1~4之间达成共识。
步骤S421,第一分区链的第三节点监听交易区块,解析区块中的智能合约调用信息,将调用接收方的地址与总分区数N取模得到第二取模值M2。在本实施例中,第三节点为监听节点,例如图3中的监听节点1、2。
步骤S423,第一分区链的第三节点根据第二取模值M2判断该智能合约调用是否涉及跨链交易。值得注意的是,智能合约调用请求一般情况下是由普通交易分区链向智能合约分区链发出,因此为跨链交易。当第二取模值M2对应于该第一分区链时,例如M2=1、对应于分区链1,表示该智能合约调用请求有误,执行步骤S325,提示调用错误,拒绝请求,流程可以结束,也可以反馈该错误的调用请求相关信息给发起智能合约调用请求的用户及相关机构。
当步骤S423判断该智能合约调用涉及跨链交易,执行步骤S427,第三节点签名智能合约调用请求后,根据值M2发送至第二分区链的第二节点,并缓存智能合约调用信息到本地内存。例如,M2=2、对应于图3中的分区链2,分区链1的监听节点2从本地内存(图中未示出)中读取数字签名对该智能合约调用请求进行签名后,将该智能合约调用请求发送至分区链2的记账节点4,并将该智能合约调用的相关信息缓存至本地内存。
步骤S429,第二分区链的第二节点接收到智能合约调用请求后,计算调用接收方地址与分区数N的取模值M2。
步骤S431,第二分区链的第二节点根据计算得到的取模值M2判断该智能合约调用请求是否合法,即是否有关该第二分区链的交易。若判断不合法,则执行步骤S433,拒绝请求。流程可以结束,也可以反馈被拒绝的智能合约调用相关信息给发起请求的用户及相关机构。
步骤S435,第二分区链的第二节点验证第一分区链的第三节点的签名有效性后,将该智能合约调用信息发送给该第二分区链中的其他第二节点达成共识,完成智能合约调用。例如,图3中分区链2的记账节点4验证分区链1的监听节点2的签名有效后,将该智能合约调用信息发送给分区链2的记账节点1、2、3达成共识后,完成调用。
步骤S437,第二分区链的第三节点监听到该智能合约调用完成后,通知第一分区链中的第三节点调用完成,第一分区链的第三节点删除内存中缓存的智能合约调用信息。例如,图3中分区链2的监听节点1监听到该智能合约调用完成后,通知分区链1的监听节点2调用完成。分区链1的监听节点2收到调用完成通知后,删除内存中缓存的该智能合约调用的相关数据。
在其他实施例中,在执行步骤S427后,第一分区链中的第三节点等待智能合约调用涉及的第二分区链反馈调用完成信息,若超时未收到反馈信息,则第一分区链中的第三节点从内存中读取缓存的该智能合约调用的数据,再次发送至相应的第二分区链。
需要指出的是,图5-8所示的流程图中,并不必然包括图中所示的所有步骤,也不限于图中所示的步骤。此外,有关区块链系统的常规处理步骤,可以根据实际应用场景纳入本发明。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。