区块链交易处理方法、交易节点以及区块链系统与流程

文档序号:21088062发布日期:2020-06-12 17:01阅读:502来源:国知局
区块链交易处理方法、交易节点以及区块链系统与流程

本发明涉及区块链技术领域,具体涉及区块链交易处理方法、交易节点以及区块链系统。



背景技术:

区块链中的每一笔交易,除了可以执行基本的虚拟货币转账之外,还可以发布或调用智能合约。智能合约技术的使用,使区块链具备图灵完备的特性,以执行各种复杂的业务逻辑。但是,区块链上的每一个智能合约,都是开放给任何节点进行调用的,容易使智能合约遭受恶意攻击,存在一定的安全隐患。然而,由于区块链的分布式冗余执行和存储的特性,如果每个节点各自单独对智能合约的调用进行权限控制,容易造成节点校验结果不一致,最终导致区块链出现大量分叉的情况发生。



技术实现要素:

针对现有技术中的问题,本发明提供一种区块链交易处理方法、交易节点以及区块链系统,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

为解决上述技术问题,本发明提供以下技术方案:

本发明的一个方面,一种区块链交易处理方法,包括:

接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;

若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;

若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约。

在优选实施例中,还包括:

向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表。

在优选实施例中,还包括:

接收交易请求,根据所述交易请求中的合约操作标志和合约唯一标识,生成交易唯一标识,并依此生成交易;

将所述交易广播到所述区块链中的其他交易节点;

将所述交易唯一标识记入对应自身的合法交易列表中。

在优选实施例中,在广播所述交易之前,所述区块链交易处理方法还包括:

接收来自所述区块链中的权限管理节点发送的权限证书;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

使用权限证书的私钥对所述交易进行签名,并在交易附上签名结果和权限证书,以使所述其他交易节点根据所述合约操作标志、合约唯一标识以及所述权限证书对所述交易进行验证。

在优选实施例中,还包括:

接收区块链中一交易节点广播的预准备共识报文;

进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

在优选实施例中,在接收预准备共识报文之前,还包括:

利用本地根证书验证所述交易中的权限证书的合法性;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

若验证通过,使用所述交易中权限证书的公钥对所述交易进行签名验证;

若签名验证通过,根据合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性;其中所述合约操作标志和所述合约唯一标识包括于交易对应的交易请求中;

若校验交易合法,则将所述交易中的交易唯一标识记入对应自身的合法交易列表。

在优选实施例中,所述交易中的合约操作标志为发布合约;

所述根据所述合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性,包括:

判断所述交易中权限证书的发布合约权限;其中若发布合约权限为是则验证通过。

在优选实施例中,所述交易中的合约操作标志为调用合约,所述根据所述合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性,包括:

检索所述交易中权限证书的合约权限列表,若检索出所述合约唯一标识,则验证通过。

在优选实施例中,所述所需认可节点数通过下式确定:

其中,函数floor()为取浮点数的整数下限,函数ceil()为取浮点数的整数上限,区块链网络总节点数为n,网络中允许存在的恶意节点数为f,q为所述所需认可节点数。

本发明的又一个方面,一种区块链中的交易节点,包括:

准备共识报文接收模块,接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;

准备共识报文累计模块,若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;

共识模块,若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约。

在优选实施例中,还包括:

预准备共识报文广播模块,向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表。

在优选实施例中,还包括:

交易请求接收模块,接收交易请求,根据所述交易请求中的合约操作标志和合约唯一标识,生成交易唯一标识,并依此生成交易;

交易广播模块,将所述交易广播到所述区块链中的其他交易节点;

交易唯一标识记入模块,将所述交易唯一标识记入对应自身的合法交易列表中。

在优选实施例中,所述区块链中的交易节点还包括:

权限证书接收模块,在广播所述交易之前,接收来自所述区块链中的权限管理节点发送的权限证书;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

签名模块,使用权限证书的私钥对所述交易进行签名,并在交易附上签名结果和权限证书,以使所述其他交易节点根据所述合约操作标志、合约唯一标识以及所述权限证书对所述交易进行验证。

在优选实施例中,还包括:

预准备共识报文接收模块,接收区块链中一交易节点广播的预准备共识报文;

准备共识报文广播模块,进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

在优选实施例中,还包括:

权限证书验证模块,利用本地根证书验证所述交易中的权限证书的合法性;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

签名验证模块,若验证通过,使用所述交易中权限证书的公钥对所述交易进行签名验证;

合法性校验模块,若签名验证通过,根据合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性;其中所述合约操作标志和所述合约唯一标识包括于交易对应的交易请求中;

交易唯一标识记入模块,若校验交易合法,则将所述交易中的交易唯一标识记入对应自身的合法交易列表。

在优选实施例中,所述交易中的合约操作标志为发布合约;

所述交易唯一标识记入模块判断所述交易中权限证书的发布合约权限;其中若发布合约权限为是则验证通过。

在优选实施例中,所述交易中的合约操作标志为调用合约,所述交易唯一标识记入模块检索所述交易中权限证书的合约权限列表,若检索出所述合约唯一标识,则验证通过。

在优选实施例中,所述所需认可节点数通过下式确定:

其中,函数floor()为取浮点数的整数下限,函数ceil()为取浮点数的整数上限,区块链网络总节点数为n,网络中允许存在的恶意节点数为f,q为所述所需认可节点数。

本发明的又一个方面,一种区块链系统,包括:

多个交易节点;其中,所述交易节点包括主节点和备节点;

所述交易节点接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约;

所述主节点进一步向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表;

所述备节点进一步接收区块链中一交易节点广播的预准备共识报文;进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

在优选的实施例中,还包括:

权限管理节点,用于配置每个所述交易节点的发布合约权限和合约权限列表;所述发布合约权限用于表示证书拥有节点是否拥有发布合约的权限,所述合约权限列表表示证书拥有节点可调用的合约列表;

所述主节点进一步接收来自所述区块链中的权限管理节点发送的权限证书;然后使用权限证书的私钥对所述交易进行签名,并在交易附上签名结果和权限证书;

所述备节点进一步根据所述合约操作标志、合约唯一标识以及所述权限证书对所述交易进行验证。

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

本发明的又一个方面,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的交易处理方法。

由上述技术方案可知,本发明提供的区块链交易处理方法、交易节点以及区块链系统,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

附图说明

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

图1为现有技术那个一种节点各自单独校验权限的区块链交易流程图。

图2为本发明实施例中一种权限控制智能合约的区块链系统的网络结构图。

图3为本发明实施例中一种权限管理节点的结构图。

图4为本发明实施例中一种权限证书集合的结构图。

图5为本发明实施例中一种权限证书的结构图。

图6a为本发明实施例中一种交易处理方法流程图之一。

图6b为本发明实施例中一种交易处理方法流程图之二。

图6c为本发明实施例中一种交易处理方法流程图之三。

图7为本发明实施例中一种生成区块链根证书和权限证书的流程图。

图8为本发明实施例中一种权限控制智能合约的区块链的处理合法交易的流程图。

图9为本发明实施例中一种权限控制智能合约的区块链的处理非法交易的流程图。

图10为本发明实施例中一种区块链pbft算法在预准备阶段的处理流程图。

图11为本发明实施例中一种区块链pbft算法在准备阶段的处理流程图。

图12为本发明实施例中一种区块链pbft算法在提交阶段的处理流程图。

图13为本发明实施例中交易节点的模块结构示意图。

图14为本发明实施例中主节点的模块结构示意图。

图15为本发明实施例中备节点的模块结构示意图。

图16为本发明实施例中的电子设备的结构示意图。

具体实施方式

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

如图1示出一种节点各自单独校验权限的区块链交易流程图,如果区块链网络中,每个节点各自单独对智能合约的调用进行权限控制,可能出现部份节点校验通过(如交易接收者1),部份节点校验不通过(如交易接收者2)的情况,即每个节点对同一个交易的处理结果不一致,最终造成分叉的情况发生。

基于上述,考虑到区块链的分布式冗余执行和存储的特性,如果每个节点各自单独对智能合约的调用进行权限控制,容易造成节点校验结果不一致,最终导致区块链出现大量分叉的情况发生。本发明提供的区块链交易处理方法、交易节点以及区块链系统,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

在本发明的一个或多个实施例中,为了解决上述的区块链网络分叉的问题,在共识算法中增加交易合法性校验步骤,如图2所示的一种区块链系统,多个交易节点2;其中,所述交易节点包括主节点和备节点。

所述“交易节点2”是指区块链中对交易进行接收、广播、共识、执行和存储的网络节点,一般是各区块链成员的可信服务器、工作站等,负责把用户的请求封装成交易再广播到其他交易节点,或者根据区块链共识算法的规则对其他交易节点广播的交易进行共识,对于共识通过的交易会进行智能合约处理,最后根据处理的结果生成区块并进行持久化保存。区块链中的所有交易节点2会相互之间建立p2p(peertopeer,点对点)网络连接,共同使用基于pbft(practicalbyzantinefaulttolerance,实用拜占庭容错)的算法对交易进行共识。每个交易节点2会根据权限证书校验交易发送方是否有发布合约的权限或调用指定合约的权限,如果有则继续共识流程,否则拒绝执行该交易的后续共识流程。

所述交易节点2接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约;

所述主节点进一步向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表。

所述备节点进一步接收区块链中一交易节点广播的预准备共识报文;进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

上述实施例中,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

在本发明的一个或多个优选的实施例中,进一步包括一个权限管理节点1,其中权限管理节点1与所有交易节点2之间、所有交易节点2相互之间进行网络连接。

所述“权限管理节点1”为一台服务器或多台相互备份的服务器,为受区块链网络中各个参与方信任的权威管理节点,通过为交易节点2签发权限证书进行身份认证和准入校验,为整个区块链网络提供成员管理服务和权限认证服务。权限证书中指定了证书拥有者的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表。所有区块链节点通过校验权限证书中的发布合约权限和合约权限列表,判断交易的合法性。

可以理解的是,各个节点服务器之间可以使用任何合适的网络协议进行通信,包括在本发明提交日尚未开发出的网络协议。所述网络协议例如可以包括tcp/ip协议、udp/ip协议、http协议、https协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的rpc协议(remoteprocedurecallprotocol,远程过程调用协议)、rest协议(representationalstatetransfer,表述性状态转移协议)等。

在本发明的一个或多个实施例中,如图6a所示的由上述区块链系统中的交易节点执行的交易处理方法,具体如下:

s100:接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;

s200:若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;

s300:若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约。

根据上述共识流程可以知晓,本发明中的共识算法是拜占庭共识算法,即pbft共识,在pbft共识中共分为三个阶段,预准备阶段、准备阶段以及提交阶段。其中预准备阶段广播预准备共识报文,准备阶段广播准备共识报文,并且可以理解的是,pbet共识达成共识的条件是每个交易节点需要收到数量至少为共识通过所需认可节点数的共识报文应答,该交易才算共识通过。

可以理解,执行上述方法的交易节点可以是主节点(接收客户端上传的交易请求的节点,又称为交易发起节点),也可以备节点,即接收所述主节点广播的交易的节点。在进行共识流程时,主节点执行共识发起操作,上述方法对交易节点的身份不做限制,下面以拜占庭共识为例说明。

在本发明的一个或多个实施例中,执行上述步骤的节点身份是主节点,则可以理解,该实施例中,如图6b,作为主节点的交易节点进一步执行如下步骤:

s0110:向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表。

主节点是接收到交易请求的节点,其基于交易请求打包生成交易,进而由主节点广播预准备共识报文。

在本发明的一个或多个实施例中,如图6c主节点执行的步骤还包括:

s0101:接收交易请求,根据所述交易请求中的合约操作标志和合约唯一标识,生成交易唯一标识,并依此生成交易;

s0102:将所述交易广播到所述区块链中的其他交易节点;

s0103:将所述交易唯一标识记入对应自身的合法交易列表中。

优选地,上述权限管理节点每个交易节点的权限证书,权限证书被用于交易的签名和验签,该实施例中,主节点进一步执行如下步骤:

s0100a:在广播所述交易之前,接收来自所述区块链中的权限管理节点发送的权限证书;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

s0100b:使用权限证书的私钥对所述交易进行签名,并在交易附上签名结果和权限证书,以使所述其他交易节点根据所述合约操作标志、合约唯一标识以及所述权限证书对所述交易进行验证。

具体而言,如图4示出一种权限证书集合的结构图,图5示出每个交易节点权限证书的结构示意图,权限证书中指定了证书拥有者即属于哪个交易节点2,并且指定了证书拥有者的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表。

可以理解的是,权限证书的公私钥对是交易节点生成的,每个交易节点还存储有自身的根证书。

本实施例中,权限控制以“节点+合约+操作类型(发布或调用)”为粒度,使指定的合约只能被特定的节点进行发布或调用,通过对区块链节点签发权限证书,并且权限证书中指定了证书拥有者的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表,所有区块链节点通过校验权限证书中的发布合约权限和合约权限列表,判断交易的合法性。

在本发明的一个或多个实施例中,执行步骤s100至s300的是交易节点中的备节点,该实施例中,如图6c所示,备节点进一步执行如下步骤:

s0201:接收区块链中一交易节点广播的预准备共识报文;

s0202:进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

在优选实施例中,在接收预准备共识报文之前,备节点进一步执行:

s0200a:利用本地根证书验证所述交易中的权限证书的合法性;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

s0200b:若验证通过,使用所述交易中权限证书的公钥对所述交易进行签名验证;

s0200c:若签名验证通过,根据合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性;其中所述合约操作标志和所述合约唯一标识包括于交易对应的交易请求中;

s0200d:若校验交易合法,则将所述交易中的交易唯一标识记入对应自身的合法交易列表。

具体而言,在本发明的一个或多个实施例中,所述交易中的合约操作标志为发布合约,合法性校验步骤s0200d具体为判断所述交易中权限证书的发布合约权限;其中若发布合约权限为是则验证通过。

亦或是,在本发明的一个或多个实施例中,所述交易中的合约操作标志为调用合约,合法性校验步骤s0200d具体为检索所述交易中权限证书的合约权限列表,若检索出所述合约唯一标识,则验证通过。

本实施例中,本实施例中,权限控制以“节点+合约+操作类型(发布或调用)”为粒度,使指定的合约只能被特定的节点进行发布或调用,通过对区块链节点签发权限证书,并且权限证书中指定了证书拥有者的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表,所有区块链节点通过校验权限证书中的发布合约权限和合约权限列表,判断交易的合法性。

此外,在本发明的一个或多个实施例中,基于拜占庭共识(pbet共识)需要确定所需认可节点数。

具体而言,上述实施例中,当区块链网络总节点数为n时,网络中允许存在的恶意节点数f和共识通过所需认可节点数q的计算方式为:

其中函数floor()为取浮点数的整数下限,函数ceil()为取浮点数的整数上限。

从上述实施例的描述可知本发明提供的区块链交易处理方法,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

进一步地,在优选实施例中通过权限管理节点配置每个交易节点的权限证书,以“节点+合约+操作类型(发布或调用)”为粒度,使指定的合约只能被特定的节点进行发布或调用,对运行在区块链上的智能合约进行统一的权限控制,使指定的合约只能被特定的节点进行发布或调用,加强区块链中节点发布智能合约或对智能合约调用的安全管理,进一步的,权限证书经过受区块链网络中各个参与方信任的权威管理节点签发,无法被伪造,保证了区块链中节点发布智能合约或对智能合约调用的合法性。

下面结合示出若干具体场景。

生成区块链根证书和权限证书

如图7示出一种生成区块链根证书和权限证书的流程图,成员管理节点1的初始化,以及每个交易节点2生成权限证书和对应的公私钥对,处理步骤如下:

步骤s101:成员管理节点1的证书模块13,通过调用密码模块14的接口,根据椭圆曲线算法(ecdsa或sm2)生成根证书公私钥对。

步骤s102:成员管理节点1的证书模块13,通过调用密码模块14的接口,使用根证书私钥对根证书公钥进行自签名,生成根证书。

步骤s103:交易节点2的证书模块22,通过调用密码模块23的接口,根据椭圆曲线算法(ecdsa或sm2)生成权限证书公私钥对。

步骤s104:交易节点2所属机构,把权限证书公钥,通过安全的渠道(邮件或者线下拷贝等方式),提交给成员管理节点1。

步骤s105:成员管理节点1从权限配置模块11中,查找该交易节点2的发布合约权限和合约权限列表。

步骤s106:成员管理节点1的证书模块13,通过调用密码模块14的接口,使用根证书私钥,根据该交易节点2的发布合约权限和合约权限列表,以及权限证书公钥,签发权限证书。权限证书中指定了证书拥有者的发布合约权限和合约权限列表。

步骤s107:成员管理节点1的通讯模块12,把根证书和权限证书,返回给对应的交易节点2。

步骤s108:交易节点2的证书模块22,存储和管理根证书、本节点的权限证书和对应的公私钥对。

处理合法交易

如图8示出一种权限控制智能合约的区块链的处理合法交易的流程图,合法交易的处理流程和权限控制,处理步骤如下:

步骤s201:交易节点2的通讯模块21,接收到来自客户端的交易请求后,读取合约操作标志(发布或者调用)、合约唯一标识(操作标志为调用时需要上送)等关键信息,生成交易唯一标识,以此生成交易(包含交易唯一标识、合约操作标志、合约唯一标识),通过调用密码模块23的接口,使用权限证书私钥,对交易进行签名,并在交易附上签名结果和权限证书。

步骤s202:交易节点2的通讯模块21,通过与其他交易节点2建立p2p网络连接把交易广播到其他交易节点2,同时把该交易的交易唯一标识记入本节点的合法交易列表,并把该交易交由共识模块25进行后续处理。

步骤s203:其他交易节点2的通讯模块21,收到交易后,使用根证书,验证交易中的权限证书的合法性,验证不通过则拒绝该交易,验证通过则使用交易中的权限证书里的权限证书公钥,对交易中的签名结果进行验签,验签不通过则拒绝该交易,验签通过则继续以下步骤。

步骤s204:其他交易节点2的权限校验模块24,根据交易合约的操作标志、合约唯一标识和权限证书中的发布合约权限和合约权限列表,校验交易的合法性。

校验方法为:

1、如果交易中的合约操作标志为发布合约,则判断交易中的权限证书中的发布合约权限,如果发布合约权限为是则校验通过,如果发布合约权限为否则校验不通过;

2、如果交易中的合约操作标志为调用合约,则根据交易中的合约唯一标识,在权限证书中的合约权限列表中进行检索,如果检索得到则校验通过,如果检索不到则校验不通过。

交易校验通过,则记录该交易的交易唯一标识到合法交易列表,并继续以下步骤。

步骤s205:所有交易节点2的共识模块25,进行三阶段的pbft共识。本发明对每阶段的pbft共识过程中,每个交易节点2接收到共识报文后,会在合法交易列表中检索共识报文的交易唯一标识,如果检索失败则拒绝下一阶段的共识流程处理,如果检索成功则继续下一阶段的共识流程处理。

三阶段的pbft共识分别为:预准备、准备、提交,在提交阶段,每个交易节点2需要收到数量至少为共识通过所需认可节点数的共识报文应答,该交易才算共识通过。

当区块链网络总节点数为n时,网络中允许存在的恶意节点数f和共识通过所需认可节点数q的计算方式为:

其中函数floor()为取浮点数的整数下限,函数ceil()为取浮点数的整数上限。

对于共识通过的交易,会从合法交易列表中删除该交易的交易唯一标识,并继续以下步骤。

步骤s206:所有交易节点2的执行模块26,执行交易中指定的智能合约。

步骤s207:所有交易节点2的存储模块27,持久化存储交易执行的结果。

处理非法交易

如图9一种权限控制智能合约的区块链的处理非法交易的流程图,非法交易的处理流程和权限控制,处理步骤如下:

步骤s301:交易节点2的通讯模块21,接收到来自客户端的交易请求后,读取合约操作标志(发布或者调用)、合约唯一标识(操作标志为调用时需要上送)等关键信息,生成交易唯一标识,以此生成交易(包含交易唯一标识、合约操作标志、合约唯一标识),通过调用密码模块23的接口,使用权限证书私钥,对交易进行签名,并在交易附上签名结果和权限证书。

步骤s302:交易节点2的通讯模块21,通过与其他交易节点2建立p2p网络连接把交易广播到其他交易节点2,同时把该交易的交易唯一标识记入本节点的合法交易列表,并把该交易交由共识模块25进行后续处理。

步骤s303:其他交易节点2的通讯模块21,收到交易后,使用根证书,验证交易中的权限证书的合法性,验证不通过则拒绝该交易,验证通过则使用交易中的权限证书里的权限证书公钥,对交易中的签名结果进行验签,验签不通过则拒绝该交易,验签通过则继续以下步骤。

步骤s304:其他交易节点2的权限校验模块24,根据交易合约的操作标志、合约唯一标识和权限证书中的发布合约权限和合约权限列表,校验交易的合法性。

校验方法为:

1、如果交易中的合约操作标志为发布合约,则判断交易中的权限证书中的发布合约权限,如果发布合约权限为是则校验通过,如果发布合约权限为否则校验不通过;

2、如果交易中的合约操作标志为调用合约,则根据交易中的合约唯一标识,在权限证书中的合约权限列表中进行检索,如果检索得到则校验通过,如果检索不到则校验不通过。

交易校验不通过,则放弃该交易。

步骤s305:所有交易节点2的共识模块25,进行三阶段的pbft共识。本发明对每阶段的pbft共识过程中,每个交易节点2接收到共识报文后,会在合法交易列表中检索共识报文的交易唯一标识,如果检索失败则拒绝下一阶段的共识流程处理,如果检索成功则继续下一阶段的共识流程处理。

三阶段的pbft共识分别为:预准备、准备、提交,在提交阶段,每个交易节点2需要收到数量至少为共识通过所需认可节点数的共识报文应答,该交易才算共识通过。

当区块链网络总节点数为n时,网络中允许存在的恶意节点数f和共识通过所需认可节点数q的计算方式为:

其中函数floor()为取浮点数的整数下限,函数ceil()为取浮点数的整数上限。

对于共识不通过的交易,会放弃该交易。

pbft共识流程预准备阶段

如图10一种区块链pbft算法在预准备阶段的处理流程图,本发明在pbft算法在预准备阶段的处理流程,步骤如下:

步骤s401:交易节点2(主节点)向其他交易节点2(备份节点)广播预准备共识报文,报文中会包含交易体。

步骤s402:每个交易节点2(备份节点)收到预准备共识报文后,根据报文中的交易唯一标识,在本节点的合法交易列表中检索,如果检索失败则丢弃该报文,如果检索成功则继续以下步骤。

步骤s403:每个交易节点2(备份节点)向所有交易节点2——包括本节点,广播准备共识报文,报文中会包含交易唯一标识。

pbft共识流程准备阶段

如图11一种区块链pbft算法在准备阶段的处理流程图,本发明在pbft算法在准备阶段的处理流程,步骤如下:

步骤s501:每个交易节点2接收来自所有交易节点2(备份节点)的准备共识报文。

步骤s502:每个交易节点2根据报文中的交易唯一标识,在本节点的合法交易列表中检索,如果检索失败则丢弃该报文,如果检索成功则继续以下步骤。

步骤s503:每个交易节点2以交易唯一标识区分,累计每个交易收到并校验通过的准备共识报文,计算是否满足以下关系:

收到并校验通过的准备共识报文的数量>=共识通过所需认可节点数-1

当某个交易满足以上关系时,继续以下步骤。

步骤s504:每个交易节点2向所有交易节点2——包括本节点,广播提交共识报文,报文中会包含交易唯一标识。

pbft共识流程提交阶段

如图12一种区块链pbft算法在提交阶段的处理流程图,本发明在pbft算法在提交阶段的处理流程,步骤如下:

步骤s601:每个交易节点2接收来自所有交易节点2的提交共识报文。

步骤s602:每个交易节点2以交易唯一标识区分,累计每个交易收到的提交共识报文,计算是否满足以下关系:

收到的提交共识报文的数量>=共识通过所需认可节点数

当某个交易满足以上关系时,共识通过。

从上述场景案例可以知晓,本发明具有如下优点:

1、以“节点+合约+操作类型(发布或调用)”为粒度,对运行在区块链上的智能合约进行统一的权限控制,使指定的合约只能被特定的节点进行发布或调用,加强区块链中节点发布智能合约或对智能合约调用的安全管理。

2、通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,保证整个区块链网络所有正常节点校验结果的最终一致性,避免出现大量分叉的情况发生,降低了区块链网络的维护成本。

3、权限证书经过受区块链网络中各个参与方信任的权威管理节点签发,无法被伪造,保证了区块链中节点发布智能合约或对智能合约调用的合法性。

基于相同的发明构思,本发明在虚拟装置层面提供权限管理节点的模块结构,如图3所示的一种权限管理节点的结构图,所述“权限管理节点1”包含:权限配置模块11、通讯模块12、证书模块13、密码模块14。

所述“权限配置模块11”负责配置各个交易节点2的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表。

所述“通讯模块12”负责与各个交易节点2建立rpc(remoteprocedurecall,远程过程调用)网络连接,接收交易节点2的请求,并进行应答。

所述“证书模块13”通过调用密码模块14的接口,生成自签名的根证书,以及为各个交易节点2签发权限证书。权限证书中指定了证书拥有者的发布合约权限和合约权限列表,发布合约权限描述了证书拥有者是否拥有发布合约的权限,合约权限列表描述了证书拥有者可调用的合约列表。

所述“密码模块14”属于技术支撑模块,为证书模块13生成证书提供密码算法支持。签名算法可以使用ecdsa或者sm2。

从上述实施例的描述可知本发明提供的权限管理节点,通过权限管理节点配置每个交易节点的权限证书,以“节点+合约+操作类型(发布或调用)”为粒度,使指定的合约只能被特定的节点进行发布或调用,对运行在区块链上的智能合约进行统一的权限控制,使指定的合约只能被特定的节点进行发布或调用,加强区块链中节点发布智能合约或对智能合约调用的安全管理,进一步的,权限证书经过受区块链网络中各个参与方信任的权威管理节点签发,无法被伪造,保证了区块链中节点发布智能合约或对智能合约调用的合法性。

基于相同的发明构思,本发明在虚拟装置层面提供交易节点的模块结构,如图13所示,无论主节点亦或是备节点均包括:

准备共识报文接收模块100,接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;

准备共识报文累计模块200,若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;

共识模块300,若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约。

可以理解,作为主节点,在一个或多个实施例中,如图14,交易节点还包括:

预准备共识报文广播模块0110,向区块链中除自身之外的其他交易节点广播预准备共识报文,所述预准备共识报文包括一交易唯一标识,每个交易节点中包括对应其自身的合法交易列表。

此外,作为主节点,在一个或多个实施例中,请继续结合图14,交易节点还包括:

交易请求接收模块0101,接收交易请求,根据所述交易请求中的合约操作标志和合约唯一标识,生成交易唯一标识,并依此生成交易;

交易广播模块0102,将所述交易广播到所述区块链中的其他交易节点;

交易唯一标识记入模块0103,将所述交易唯一标识记入对应自身的合法交易列表中。

在包括权限管理节点的实施例中,作为主节点的所述区块链中的交易节点还包括:

权限证书接收模块0100a,在广播所述交易之前,接收来自所述区块链中的权限管理节点发送的权限证书;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

签名模块0100b,使用权限证书的私钥对所述交易进行签名,并在交易附上签名结果和权限证书,以使所述其他交易节点根据所述合约操作标志、合约唯一标识以及所述权限证书对所述交易进行验证。

同样可以理解的是,在一个或多个实施例中,作为备节点,如图15所示,交易节点还包括:

预准备共识报文接收模块0201,接收区块链中一交易节点广播的预准备共识报文;

准备共识报文广播模块0202,进行验证步骤,若验证通过则向其他交易节点广播所述准备共识报文。

此外,基于上述实施例,在包括权限管理节点的实施例中,备节点进一步包括:

权限证书验证模块,利用本地根证书验证所述交易中的权限证书的合法性;所述权限证书包括发布合约权限和合约权限列表;所述发布合约权限用于表示对应交易节点是否拥有发布合约的权限,所述合约权限列表表示对应交易节点可调用的合约列表;

签名验证模块,若验证通过,使用所述交易中权限证书的公钥对所述交易进行签名验证;

合法性校验模块,若签名验证通过,根据合约操作标志、合约唯一标识、所述交易中权限证书的发布合约权限和合约权限列表,校验交易的合法性;其中所述合约操作标志和所述合约唯一标识包括于交易对应的交易请求中;

交易唯一标识记入模块,若校验交易合法,则将所述交易中的交易唯一标识记入对应自身的合法交易列表。

在一个或多个实施例中,所述交易中的合约操作标志为发布合约;所述交易唯一标识记入模块判断所述交易中权限证书的发布合约权限;其中若发布合约权限为是则验证通过。

在一个或多个实施例中,所述交易中的合约操作标志为调用合约,所述交易唯一标识记入模块检索所述交易中权限证书的合约权限列表,若检索出所述合约唯一标识,则验证通过。

从上述描述可知,本发明提供的区块链中的交易节点,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

此外配合权限管理节点,加强区块链中节点发布智能合约或对智能合约调用的安全管理,进一步的,权限证书经过受区块链网络中各个参与方信任的权威管理节点签发,无法被伪造,保证了区块链中节点发布智能合约或对智能合约调用的合法性。

从硬件层面来说,本发明提供一种用于实现交易处理方法中的全部或部分内容的电子设备的实施例,所述电子设备具体包含有如下内容:

处理器(processor)、存储器(memory)、通信接口(communicationsinterface)和总线;其中,所述处理器、存储器、通信接口通过所述总线完成相互间的通信;所述通信接口用于实现服务器、装置、分布式消息中间件集群装置、各类数据库以及用户终端等相关设备之间的信息传输;该电子设备可以是台式计算机、平板电脑及移动终端等,本实施例不限于此。在本实施例中,该电子设备可以参照实施例中的交易处理方法的实施例,以及,交易节点、权限节点的实施例进行实施,其内容被合并于此,重复之处不再赘述。

图16为本发明实施例的电子设备9600的系统构成的示意框图。如图16所示,该电子设备9600可以包括中央处理器9100和存储器9140;存储器9140耦合到中央处理器9100。值得注意的是,该图16是示例性的;还可以使用其他类型的结构,来补充或代替该结构,以实现电信功能或其他功能。

一实施例中,交易处理步骤可以被集成到中央处理器9100中。例如,中央处理器9100可以被配置为进行如下控制:

s100:接收来自于通过验证步骤的其他交易节点的准备共识报文,并连同通过验证步骤的其他交易节点再次进行验证步骤,所述验证步骤包括验证对应自身的合法交易列表中是否包括接收报文中的交易唯一标识;其中,其他交易节点同样接收来自于非自身交易节点的准备共识报文;所述准备共识报文是共识过程中准备阶段广播的报文;

s200:若再次验证通过,则连同再次验证通过的其他交易节点累计收到的准备共识报文数量,并确定是否大于所需认可节点数;

s300:若所有参与累计的交易节点累计的准备共识报文数量均大于所述所需认可节点数,则达成共识,执行交易中指定的智能合约。

从上述描述可知,本发明的实施例提供的电子设备,通过在共识算法中增加交易合法性校验的步骤,对运行在区块链上的智能合约进行统一的权限控制,所有区块链节点还通过约定的共识算法,保证对同一个交易的权限校验结果相同,只有交易共识通过才会执行该交易,否则拒绝执行该交易,即保证有相同的处理结果,避免了区块链网络出现分叉的情况,降低了区块链网络的维护成本。

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

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

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

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

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

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

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

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

本发明的实施例还提供能够实现上述实施例中的执行主体可以为交易节点或者权限管理节点中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的交易处理方法的全部步骤。

从上述描述可知,本发明的实施例提供的计算机可读存储介质,在保证了具有存储节点高可用能力的前提下,通过分布式消息中间件记录主节点所有写请求数据包,并在备节点中记录同步主节点数据时最后一条数据完成同步的时间戳,当出现主备切换时,利用了分布式消息中间件可以根据时间戳来查找对应的数据包的特性,找到主备节点间的差异数据,并将这些数据通过补数机制写入主备切换后新的主节点中,从而避免了主备切换后的数据丢失。

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

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

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

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

本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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