区块链网络的交易处理方法及区块链网络与流程

文档序号:19352005发布日期:2019-12-06 21:30阅读:683来源:国知局
区块链网络的交易处理方法及区块链网络与流程

本发明涉及区块链技术,尤其涉及一种区块链网络的交易处理方法、区块链网络及存储介质。



背景技术:

区块链,是由区块形成的加密的、链式的交易的存储结构,基于节点间的共识算法实现区块的生成及链接。其中,区块链网络的节点根据交易的时间戳,对交易进行先后排序,从而生成新的区块,实现区块链的不断增长。

在相关技术提供的方案中,通常是由节点根据本地的系统时间,为交易设置时间戳。一方面来说,节点本地的系统时间可能与实际时间存在误差,导致存储于区块链的交易与实际交易情况不相符;另一方面来说,可能存在作恶节点恶意篡改系统时间,从而对交易的发生时间进行伪造。综上,相关技术提供的方案依赖于节点本地的系统时间,交易处理的可靠性差。



技术实现要素:

本发明实施例提供一种区块链网络的交易处理方法、区块链网络及存储介质,能够保证交易中的时间戳可信,提升交易处理的可靠性。

本发明实施例的技术方案是这样实现的:

本发明实施例提供一种区块链网络的交易处理方法,包括:

通过区块链网络的排序节点接收客户端提交的交易;

通过所述排序节点调用时间戳服务,生成与各所述交易一一对应的交易时间戳;

通过所述排序节点验证所述交易时间戳,且当对所述交易时间戳验证成功时,根据所述交易时间戳对接收的交易进行排序;

通过所述排序节点将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点;

通过所述记账节点验证所述新区块,且当验证成功时,将所述新区块追加至所述记账节点的区块链的尾部。

本发明实施例提供一种区块链网络,所述区块链网络包括排序节点及记账节点;

所述排序节点,用于接收客户端提交的交易;

所述排序节点,用于调用时间戳服务,生成与各所述交易一一对应的交易时间戳;

所述排序节点,用于验证所述交易时间戳,且当对所述交易时间戳验证成功时,根据所述交易时间戳对接收的交易进行排序;

所述排序节点,用于将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点;

所述记账节点,用于验证所述新区块,且当验证成功时,将所述新区块追加至所述记账节点的区块链的尾部。

本发明实施例提供一种区块链网络,包括:

存储器,用于存储可执行指令;

处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的区块链网络的交易处理方法。

本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的区块链网络的交易处理方法。

本发明实施例具有以下有益效果:

在本发明实施例中,通过区块链网络的排序节点调用第三方的时间戳服务,生成与接收到的交易一一对应的交易时间戳,并根据交易时间戳对接收的交易进行排序,构造出新区块,将新区块广播至记账节点,通过记账节点对新区块进行验证,且当验证成功时将新区块追加至记账节点的区块链的尾部,本发明实施例通过时间戳服务生成交易时间戳,保证了交易时间戳的可信,提升了交易处理的可靠性及安全性。

附图说明

图1是本发明实施例提供的区块链网络的应用系统的一个可选的结构示意图;

图2是本发明实施例提供的区块链网络的应用架构示意图;

图3是本发明实施例提供的区块链网络的交易处理流程示意图;

图4是本发明实施例提供的区块链网络的逻辑功能架构示意图;

图5是本发明实施例提供的区块链网络的节点的一个可选的结构示意图;

图6a是本发明实施例提供的区块链网络的交易处理方法的一个可选的流程示意图;

图6b是本发明实施例提供的区块链网络的交易处理方法的另一个可选的流程示意图;

图6c是本发明实施例提供的生成交易的一个可选的流程示意图;

图7是本发明实施例提供的区块链的创世区块的一个可选的结构示意图;

图8是本发明实施例提供的区块链网络的另一个可选的结构示意图;

图9是本发明实施例提供的区块链网络的另一个可选的结构示意图;

图10是本发明实施例提供的交易的一个可选的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。

在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。

对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。

1)交易提案(proposal),是执行交易中所包括的智能合约调用(下文简称为执行交易)的请求,包括接收交易的通道的标识、在通道中需要调用的智能合约的标识、以及需要向调用的智能合约传递的参数信息。

2)交易,也称为交易请求,等同于计算机术语事务(transaction),交易包括了需要提交到区块链网络执行的操作,以及对应的交易结果。并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。

例如,交易可以包括部署(deploy)交易和调用(invoke)交易,部署交易用于将智能合约到区块链网络的节点中并准备好被调用;调用(invoke)交易用于对账本中的状态数据库进行查询操作(即读操作)或更新操作(即写操作,包括增加、删除和修改)。

3)区块链(blockchain),是由区块(block)形成的加密的、链式的交易的存储结构。每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。

4)区块链网络(blockchainnetwork),通过共识的方式将新区块纳入区块链的一系列的节点的集合。

5)账本(ledger),是区块链(也称为账本数据)、以及与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(key)值(value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。

6)智能合约(smartcontracts),也称为链码(chaincode)或应用代码,部署在区块链网络的节点中的程序,承载了执行交易的业务逻辑,运行在隔离运行环境中(例如容器或虚拟机)。

7)共识(consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部。实现共识的机制包括工作量证明(pow,proofofwork)、权益证明(pos,proofofstake)、股份授权证明(dpos,delegatedproof-of-stake)、消逝时间量证明(poet,proofofelapsedtime)等。

8)成员(member),也称为业务主体,代表某个具体的实体身份(例如公司、企业和社会团体等),在区块链网络中有自己的根证书,区块链中的节点属于某个成员,同一个成员可以在同一个通道中拥有多个节点。

9)组织(organization),部分成员(接入区块链网络中的所有成员的子集)为实现特定业务(不需要所有成员参与)而形成的域。

10)通道(channel),区块链网络中向组织中成员的节点提供的私有隔离环境,通道中的智能合约和账本只对加入通道的成员的节点可见,同一个节点可以加入多个通道,并对应每个通道维护一个账本。

下面说明本发明实施例提供的区块链网络的示例性应用,参见图1,图1是本发明实施例提供的区块链网络200的示例性的应用系统100的架构示意图,包括区块链网络200、客户端510/410、认证中心(ca,certificateauthority)300及时间戳服务600。

区块链网络200的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的终端或服务器中运行的客户端,都可以在无需授权的情况下接入区块链网络200而成为一类特殊的节点,成为客户端节点;以联盟链为例,业务主体在被授权成为区块链网络200的成员后,对应的客户端可以接入区块链网络200而成为客户端节点。

需要指出,归属于同一业务主体客户端节点的数量不存在限制,图1中示出了业务主体400使用的一个客户端410,且可以接入区块链网络200而成为客户端节点,同理,业务主体500使用的一个客户端510可以接入区块链网络200而成为客户端节点。

客户端节点针对区块链网络200的操作主要包括账本查询与账本更新两种类型。对于账本查询来说,客户端节点向区块链网络200发起交易提案,交易提案中包括与查询操作相关的智能合约调用,由区块链网络200的节点执行交易提案中包括的智能合约调用以查询账本,并将查询到的数据作为交易结果携带在提案响应中以返回客户端。

对于账本更新来说,客户端节点向区块链网络200发起交易提案中包括与更新操作相关的智能合约调用,由区块链网络200的节点对账本模拟执行(即账本不会被改变)交易提案中包括的智能合约调用,将账本中被更新的键值对作为交易结果携带在提案响应中以返回客户端,客户端进而将交易提案、提案响应构造为交易,并提交到区块链网络200,由区块链网络200的节点根据交易调用时间戳服务,得到与交易对应的交易时间戳,并根据交易时间戳将交易记录到账本中。

客户端节点是一类区别于区块链网络200中的原生的节点的特殊节点,默认可以缺省区块链网络200中的原生的节点具有的记账功能,从而降低客户端的开发难度并实现客户端的轻量化。客户端与区块链网络200之间支持事件的传递,例如客户端通过可以监听/订阅区块链网络200运行中与智能合约调用相关的事件,例如生成新区块的事件,从而当区块链网络200中产生特定事件时,触发自身或外部系统的相关的业务逻辑。

区块链网络200外部的认证中心300用于响应客户端410/510(下面简称为客户端)的注册申请,返回注册密码用于登录,以便获取用于声明客户端所属成员的身份信息的数字证书。作为认证中心(ca,certificateauthority)300的替换方案,区块链网络200中可以设置有ca节点以实现上述功能。

在一些实施例中,区块链网络200中的记账节点根据其在记账功能之外实现的功能可以划分为不同的类型,作为图1中示出的区块链网络200的划分为不同类型的示例,参见图2,图2是本发明实施例提供的区块链网络200的应用架构100的示意图,除了客户端节点(客户端410/510),区块链网络200中的节点默认都具有验证交易并记账的功能,其中仅具有验证交易并记账功能的节点称为记账节点(committer),还包括一些特殊类型的记账节点:背书节点(endorser)、排序节点(orderer)和主节点(leaderpeer)。

作为区块链网络200中设置有通道的示例,区块链网络200中的上述节点可以加入不同组织的通道,如图2示出了开展不同业务的组织1和组织2,区块链网络200中归属于组织1/2的成员的节点可以对应加入组织1/2的通道,每个通道内的节点接收与所属组织的业务相关的交易,并将交易记录到账本中,账本对于通道外的节点是隔离的。

在一些实施例中,客户端中内置软件开发套件(sdk,softwaredevelopmentkit)来实现对区块链网络200的管控,从而客户端的原生代码可以只关注实现业务相关的逻辑,忽略区块链网络200的内部运行细节,降低客户端的开发难度。

作为示例,sdk向客户端提供了与区块链网络200的节点之间的基于远程过程调用(rpc,remoteprocedurecall)连接的一系列应用编程接口(api,applicationprogramminginterface),用于供客户端管理和使用区块链网络200的功能,这些功能包括:身份管理、账本管理、交易管理、智能合约、交易管理、成员管理、共识服务、智能合约服务、安全和密码服务和事件处理等,将在下文具体说明上述功能。

作为交易管理的示例,客户端通过sdk实现的交易管理功能包括提交交易提案和提交交易两个阶段,下面参见图3,图3是本发明实施例提供的区块链网络的交易处理流程示意图,结合图3示出的交易提案和提交交易两个阶段的处理过程,就上述不同类型的节点的功能进行说明。

客户端向区块链网络200中的背书节点发起交易提案,交易提案包括交易号、时间戳(发起交易提案的时间)、执行交易的通道(即交易中的调用的智能合约的所在的通道)的标识(例如序号或名称)、以及需要在通道中需要执行的智能合约调用,包括需要调用的智能合约的标识例如名称或序列号、智能合约的版本和需要向智能合约传递的参数信息等。其中智能合约和参数与客户端需要执行的操作相关,例如智能合约可以用于增加、删除、查询或修改操作,参数信息可以是增加、删除、查询或修改操作的数据。

交易提案还携带认证中心向客户端签发的数字证书、以及客户端针对交易提案的数字签名,数字证书用于声明客户端所属的成员的身份信息,数字签名用于证明交易提案没有被篡改。

背书节点在收到交易提案后会根据背书策略进行一些验证,包括:交易提案携带的数字证书是否是由受信任的认证中心签发;交易提案的数字签名是否有效;交易提案的格式是否正确;交易提案是否重复提交过;客户端在请求执行智能合约调用的通道中是否已被授权有写权限。

在一些实施例中,背书节点验证交易提案成功时,背书节点会对自身所维护的账本的状态数据库中模拟执行交易,即执行交易提案中包括的智能合约调用以得到交易结果。背书节点对交易结果进行签名(即背书),将数字签名结合背书节点的数字证书、以及其他的相关信息构造成为提案响应(proposalresponse),然后返回给客户端。

作为示例,当交易提案中包括用于查询操作的智能合约调用时,交易结果是读集(readset),包含模拟执行过程中从账本数据库读取的键值;当交易提案中包括用于查询操作的智能合约调用时,交易结果是写集(writeset)也包含了一个唯一键的列表,还有在模拟执行过程中对账本数据库写入的键值。

作为示例,其他的相关信息可以包括:成功码(指示验证交易提案成功)、时间戳(生成提案响应的时间)、背书节点针对交易结果的数字签名、接收交易的通道的标识(例如序列号或名称)和交易提案的哈希值(用于与交易提案一对一地绑定,避免在提交交易阶段交易被篡改)。

在一些实施例中,背书节点验证交易提案失败时,会向客户端返回携带失败码(指示验证交易提案失败的错误类型)的提案响应。

当客户端收到提案响应时,首先会通过验证交易提案携带的数字证书和数字签名以确认提案响应的有效性。当客户端收集到足够数量的背书节点的提案响应,且提案响应中的交易结果一致时,会根据交易提案以及提案响应来构造交易。

作为示例,交易包括:时间戳(构造交易的时间)、接收交易的通道的标识、需要在通道中调用的智能合约的标识(例如名称或序列号)、智能合约的版本和向智能合约传递的参数等和交易结果(例如读/写集)、以及背书节点针对交易结果的数字签名。

需要指出,如果客户端提交的交易提案中的智能合约调用仅用于查询账本(而不用于更新账本),则客户端不会构造交易,仅将提案响应中的交易结果作为账本查询结果来完成相关的业务逻辑。

客户端构造交易后,将交易广播给区块链网络200中的排序节点,对于所接收的交易,排序节点从交易中读取交易所属的通道的标识,按照接收的交易的先后顺序,排序节点调用时间戳服务600,得到每个交易对应的交易时间戳,并根据交易时间戳,将对应各个通道接收的交易构造相应通道的区块,将区块发送到相应通道中的主节点。

以图2为例,排序节点接收到交易时,根据交易中的通道的标识确定需要接收交易的通道是组织1的通道还是组织2的通道,根据对应各个通道的接收交易的先后顺序,构造对应组织1的通道的区块以及对应组织2的通道的区块,对应发送到组织1/组织2的通道中的主节点。

主节点是代表通道内的其他记账节点和排序节点通信的节点,用于从排序节点获取最新的区块并在通道内部同步;主节点可以是被强制设置的,也可以是动态选举产生的。

通道内的记账节点各自验证接收的区块中的各个交易,并在验证通过后追加到各自维护的区块链的尾部,并利用区块中交易的交易结果更新账本数据库。

在一些实施例中,记账节点对区块中交易的验证包括:

是否为合法的交易:交易格式是否正确,是否有合法的签名,交易内容是否被篡改;记账节点是否加入交易中所指示的接收交易的通道;交易是否符合背书策略。背书策略是对交易进行背书的规则,指定一个交易在提交前需要的背书所来自的组织、相应组织内节点的类型和有效背书的数量。

下面说明本发明实施例提供的区块链网络的示例性的逻辑功能架构,参见图4,图4是本发明实施例提供的区块链网络200的逻辑功能架构示意图,下面分别进行说明。

区块链网络200的上层对接客户端,客户端410/510中提供了标准的rpc接口,并在api的基础之上封装了sdk,从而使得开发人员可以在sdk中开发基于区块链的各种业务逻辑;客户端的事件机制能够使得客户端接收区块链网络200的各种事件时,例如当接收到创建新区块的事件时、执行智能合约的事件时,执行预先定义的回调函数,从而使得各个节点之间达成共识的执行时间尽量缩短。

在一些实施例中,从区块链网络200对接客户端的顶层的角度,区块链网络200的功能包括身份管理、账本管理、交易管理和智能合约的功能,下面分别进行说明。

(1)身份管理

客户端的用户注册和登录认证中心后,客户端获取到成员的数字证书(ecert),其他所有的操作都需要与数字证书关联的私钥进行签名,消息接收方与成员持有来自认证中心的相同的根证书,消息接收方首先会进行签名和数字证书的验证,才进行后续的消息处理。节点同样会用到认证中心颁发的数字证书,比如接入区块链网络的成员启动下辖的节点的系统和对下辖的节点进行管理时,身份管理功能都会对成员的身份信息进行认证和授权。

(2)账本管理

授权接入区块链网络200的成员查询账本,可以通过多种方式查询,包括根据区块号查询区块、根据区块哈希查询区块、根据交易号查询区块和根据交易号查询交易,还可以根据通道名称获取查询到的区块链。

(3)交易管理

账本只能通过提交交易的方式更新,客户端通过区块链网络200的交易管理功能提交交易提案,并获取到交易的背书后,再向排序节点提交交易,然后由排序节点打包生成区块。

(4)智能合约

实现“可编程的账本”(programmableledger),通过智能合约调用执行交易,实现基于区块链的智能合约业务逻辑。只有智能合约才能更新账本。

在一些实施例中,从区块链网络200对接底层的角度,区块链网络200的功能包括成员管理、共识服务、链码服务、安全和密码服务等,下面分别进行说明。

(1)成员管理

通过根信任证书(rootoftrustcertificate)体系,利用公钥基础设施(pki,publickeyinfrastructure)对成员的身份信息进行认证,验证成员的数字签名。结合区块链网络内部的认证中心或者第三方认证中心,提供成员的注册功能,并对成员的数字证书进行管理,例如证书新增和撤销。示例性地,数字的证书分为注册证书(ecert)、交易证书(tcert)和tls证书(tlscert),它们分别用于用户身份、交易签名和安全传输层协议(tls,transportlayersecurityprotocol)传输。

(2)共识服务

共识机制由3个阶段完成:客户端向背书节点提交提案以获得背书,客户端获得背书后提交交易给排序节点进行排序生成区块,之后广播给记账节点验证区块中交易后写入记账节点的本地账本。

(3)链码服务

智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。这里可采用docker管理普通的链码,提供安全的沙箱环境和镜像文件仓库。

(4)安全和密码服务

实现密钥生成、哈希运算、签名验签、加密解密等基础功能。

下面说明实现本发明实施例的区块链网络的节点的示例性结构,可以理解地,区块链网络200中的任一类型的节点的硬件结构可以根据下文说明的硬件结构而实施。

参见图5,图5是本发明实施例提供区块链网络200中的节点210的结构示意图,图5所示的节点210包括:至少一个处理器2110、存储器2140和至少一个网络接口2120。节点210中的各个组件通过总线系统2130耦合在一起。可理解,总线系统2130用于实现这些组件之间的连接通信。总线系统2130除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为总线系统2130。

处理器2110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digitalsignalprocessor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。

存储器2140可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器2140可选地包括在物理位置上远离处理器2110的一个或多个存储设备。

存储器2140包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,readonlymemory),易失性存储器可以是随机存取存储器(ram,randomaccessmemory)。本发明实施例描述的存储器2140旨在包括任意适合类型的存储器。

在一些实施例中,存储器2140能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。

操作系统2141,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;

网络通信模块2142,用于经由一个或多个(有线或无线)网络接口2120到达其他计算设备,示例性的网络接口2120包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universalserialbus)等;

在一些实施例中,本发明实施例提供的区块链网络的节点可以采用软件方式实现,图5示出了存储在存储器2140中的软件模块2143,其可以是程序和插件等形式的软件,包括以下子模块中的至少一个:排序功能模块21431,记账功能模块21432,背书功能模块21433,审计功能模块21434,主节点功能模块21435。这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。

将在下文中说明各个模块的功能。

将结合本发明实施例提供的区块链网络的示例性应用和实施,说明本发明实施例提供的区块链网络的交易处理方法。

参见图6a,图6a是本发明实施例提供的区块链网络的交易处理方法的一个可选的流程示意图,将结合图6a示出的步骤进行说明。

在步骤101中,区块链网络的排序节点接收客户端提交的交易。

节点是区块链网络的通信主体,根据功能的不同,本发明实施例涉及的节点可划分为客户端节点、背书节点、排序节点、记账节点及主节点,其中,区块链网络中的节点可以具有一种或一种以上的功能,例如,节点可以同时是背书节点和记账节点,也可以同时是背书节点、主节点和记账节点。客户端节点是业务主体下辖的电子设备接入区块链网络而成为的,根据区块链网络类型的不同,业务主体的接入情况也不同,例如在区块链网络为公有链的情况下,业务主体可不经验证,直接接入区块链网络;在区块链网络为联盟链的情况,可设置接入条件,只有在业务主体满足接入条件时,才允许业务主体的电子设备接入,成为区块链网络中的客户端节点,例如,接入条件为业务主体的名称包括特定标识。

区块链网络中的排序节点用于提供排序服务,在交易处理的过程中,业务人员通过客户端内置的sdk,调用客户端节点向排序节点发送交易,例如在区块链上添加新的业务数据的交易。排序节点接收该交易,并对该交易进行后续处理。

在步骤102中,所述排序节点调用时间戳服务,生成与各所述交易一一对应的交易时间戳。

排序节点根据时间对交易进行排序,为了确定接收的各交易的时间,排序节点调用第三方的时间戳服务,时间戳服务利用国家授时中心或其他可信的时间源,生成与各交易一一对应的交易时间戳,并将交易时间戳返回至排序节点。其中,时间戳服务是基于pki技术的时间戳系统对外提供的服务,采用精确的时间源及高强度高标准的安全机制,从而可确认交易在某一时间的存在性和相关交易的相对时间顺序,防止时间抵赖。值得说明的是,客户端在构造交易时,可能在交易中添加构造交易的时间戳,由于该时间戳是客户端采用未知的时间源生成,故排序节点在接收到交易后,忽略交易中已有的时间戳。

在步骤103中,所述排序节点验证所述交易时间戳。

排序节点对交易时间戳进行验证,具体包括两方面,其一是验证生成交易时间戳的主体是否为认证中心声明的用户,避免其他主体伪造交易时间戳;其二是验证交易时间戳内的信息是否完整,避免其他主体篡改交易时间戳内的信息,具体验证方式在后文进行详细阐述。

在步骤104中,当对所述交易时间戳验证成功时,所述排序节点根据所述交易时间戳对接收的交易进行排序。

在验证成功时,排序节点根据交易时间戳对接收的交易进行排序。

在一些实施例中,可以通过这样的方式实现上述的根据所述交易时间戳对接收的交易进行排序:通过所述排序节点读取接收的交易中的通道标识;根据所述交易时间戳,对所述通道标识相同的多个交易进行排序。

在本发明实施例中,存在两种存储机制,一种是区块链网络仅包括一个区块链,该区块链用于存储不同类型的交易;另一种是区块链网络包括多个与不同类型的交易对应的通道,每个通道对应一个区块链,并且每个通道内包括多个节点。对于后者,排序节点在实施排序服务时,读取接收的交易中由客户端添加的通道标识,通道标识指示该交易对应的通道。然后,排序节点根据交易时间戳,对通道标识相同的多个交易进行排序,完成后,对于每一种通道标识,得到排序完成的多个交易。通过上述的按通道标识单独排序的方式,提升了不同通道的交易之间的隔离性,同时提升了排序的准确性。

在步骤105中,所述排序节点将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点。

例如,排序节点根据排序后的多个交易进行区块填充,直到区块的容量达到设定容量(如1兆),将得到的区块确定为新区块。至此,排序节点完成排序服务,将新区块广播至区块链网络中的记账节点。

在一些实施例中,所述排序节点将排序后的多个所述交易构造为新区块之后,还包括:所述排序节点将所述新区块广播至所述区块链网络中的审计节点;所述审计节点根据所述新区块中的交易时间戳对各所述交易进行业务审计;当业务审计失败时,所述审计节点确定对所述新区块验证失败,向所述客户端发送错误信息。

排序节点还可将新区块广播至区块链网络中的审计节点,该审计节点是一种特殊的记账节点,用于进行业务审计。审计节点根据新区块中交易的交易时间戳,对各交易进行业务审计。例如,当新区块中各交易均符合设定的审计策略时,确定业务审计成功,将新区块追加至审计节点的区块链的尾部;当新区块中存在不符合审计策略的交易时,审计节点向客户端发送错误信息。通过上述的审计方式,提升了对实际应用场景的适应性。

在一些实施例中,可以通过这样的方式实现上述的将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点:所述排序节点将所述通道标识相同的、且排序后的多个所述交易构造为相应通道的新区块;将所述新区块广播至相应通道中的主节点;通过所述主节点将所述新区块广播至相应通道中的记账节点。

在对每一种通道标识对应的交易进行单独排序的基础上,排序节点将通道标识相同的、且排序后的多个交易构造为相应通道的新区块。然后,排序节点将新区块广播至相应通道中的主节点,主节点是代表通道内的其他记账节点和排序节点通信的节点。主节点从排序节点获取新区块后,将新区块在通道内部同步,即,将新区块广播至通道内部的记账节点,其中,主节点可以是被强制设置的,也可以是动态选举产生的。值得说明的是,不同通道可能存在重叠的节点,例如一个记账节点可以存在于通道a,同时存在于通道b。通过上述方式,实现了对不同通道的单独广播,提升了通道之间的隔离性。

在步骤106中,记账节点验证所述新区块,且当验证成功时,将所述新区块追加至所述记账节点的区块链的尾部。

记账节点对新区块中的交易进行验证,当验证成功时,将新区块追加至记账节点的区块链的尾部,完成交易的上链操作。

通过发明实施例对于图6a的上述示例性实施可知,本发明实施例通过调用时间戳服务生成交易时间戳,而不是利用节点本地的时间戳,保证了时间戳的可信,提升了交易处理的可靠性。

在一些实施例中,参见图6b,图6b是本发明实施例提供的区块链网络的交易处理方法的另一个可选的流程示意图,基于图6a,步骤102可更新为步骤201,在步骤201中,所述排序节点根据接收的交易的顺序对应调用时间戳服务。

客户端的业务人员通过调用客户端内置的sdk,将多个交易依次发送至排序节点,排序节点根据接收的交易的顺序对应调用时间戳服务。

在步骤202中,所述时间戳服务根据所述接收的交易的顺序,依次生成与各所述交易一一对应的时间戳信息,对所述时间戳信息进行签名得到时间戳签名,将所述时间戳信息及所述时间戳签名构造为交易时间戳,并将所述交易时间戳及时间戳服务的数字证书发送至所述排序节点;其中,所述时间戳服务的数字证书包括服务公钥、服务身份信息及服务签名。

时间戳服务根据接收的交易的顺序,依次生成与各交易一一对应的时间戳信息,该时间戳信息为具体的时间,如某月某日某时某分。时间戳服务持有利用非对称加密算法生成的一个密钥对,为了便于区分,将该密钥对中的公钥命名为服务公钥,将该密钥对中的私钥命名为服务私钥。时间戳服务对时间戳信息进行哈希处理,得到第一时间戳摘要,并根据服务私钥对第一时间戳摘要进行加密,得到时间戳签名,上述的哈希处理及加密的操作统称为签名。

时间戳服务将得到的时间戳信息及时间戳签名构造为交易时间戳,并将交易时间戳及时间戳服务的数字证书发送至排序节点,其中,时间戳服务的数字证书是时间戳服务向认证中心进行请求而得到的数字证书,时间戳服务的数字证书包括服务公钥、服务身份信息(即时间戳服务的身份信息)及服务签名。认证中心同样持有利用非对称加密算法生成的另一个密钥对,为了便于区分,将认证中心持有的公钥命名为中心公钥,将认证中心持有的私钥命名为中心私钥,则服务签名是认证中心根据中心私钥对服务公钥及服务身份信息进行签名后得到的。

基于图6a,步骤103可通过步骤203至步骤207实现,将结合各步骤进行说明。

在步骤203中,所述排序节点获取创世区块中的根证书。

在本发明实施例中,为了便于各节点获取根证书,将认证中心颁发的根证书添加至创世区块中,根证书包括认证中心的中心公钥,创世区块即为区块链的第一个区块。在本步骤,排序节点获取创世区块中的根证书。

在一些实施例中,可以通过这样的方式实现上述的所述排序节点获取创世区块中的根证书:所述区块链网络包括用于统一存储不同类型的交易的区块链,所述排序节点获取所述区块链的创世区块中的根证书;或者,所述区块链网络包括多个与不同类型的交易对应的通道,所述排序节点读取所述交易中的通道标识,确定所述通道标识对应通道的区块链,并获取所述区块链的创世区块中的根证书。

由于区块链网络可应用两种存储机制,对于第一种,即区块链网络包括用于统一存储不同类型的交易的区块链,则排序节点获取该区块链的创世区块中的根证书;对于第二种,即区块链网络包括多个与不同类型的交易对应的通道,每个通道对应一个区块链,则排序节点读取交易中由客户端添加的通道标识,确定该通道标识对应的通道,再从该通道的区块链中获取存储于创世区块的根证书。通过上述方式提升了对不同存储机制的适用性。

在步骤204中,所述排序节点根据所述根证书对所述时间戳服务的数字证书进行验证。

排序节点根据获取到的根证书,对交易时间戳附带的时间戳服务的数字证书进行验证,判断交易时间戳是否由时间戳服务生成。

在一些实施例中,可以通过这样的方式实现上述的所述排序节点根据所述根证书对所述时间戳服务的数字证书进行验证:所述排序节点根据所述根证书中的中心公钥,对所述时间戳服务的数字证书内的所述服务签名进行解密,得到第一服务摘要;对所述服务公钥及所述服务身份信息进行哈希处理,得到第二服务摘要;当所述第一服务摘要与所述第二服务摘要相同时,确定对所述时间戳服务的数字证书验证成功。

这里,排序节点根据根证书中的中心公钥,对时间戳服务的数字证书内的服务签名进行解密,得到第一服务摘要,该第一服务摘要是时间戳服务根据中心私钥对服务公钥及服务身份信息进行加密生成的。同时,排序节点对时间戳服务的数字证书内的服务公钥及服务身份信息进行哈希处理,得到第二服务摘要。当第一服务摘要与第二服务摘要相同时,证明服务公钥及服务身份信息来自于认证中心声明的用户,即时间戳服务,确定对时间戳服务的数字证书验证成功;当第一服务摘要与第二服务摘要不相同时,确定对时间戳服务的数字证书验证失败。通过上述的验证数字证书的方式,避免对非法用户发送的交易时间戳做处理,提升了交易处理的安全性。

在一些实施例中,可以通过这样的方式实现上述的所述排序节点根据所述根证书对所述时间戳服务的数字证书进行验证:所述排序节点获取所述创世区块中的吊销列表;当通过所述吊销列表确定所述根证书及所述时间戳服务的数字证书均有效时,根据所述根证书对所述时间戳服务的数字证书进行验证。

除了根证书外,还将认证中心发布的吊销列表存储于区块链的创世区块中,吊销列表包括已经吊销或挂起的数字证书信息。排序节点获取创世区块中的吊销列表,并查看根证书的信息及时间戳服务的数字证书的信息是否位于吊销列表中。当根证书的信息及时间戳服务的数字证书的信息均不位于吊销列表中时,确定根证书及时间戳服务的数字证书均有效,根据根证书对时间戳服务的数字证书进行验证;当根证书的信息及时间戳服务的数字证书的信息中的至少一个位于吊销列表中时,确定根证书及时间戳服务的数字证书中的至少一个无效,不进行后续验证。通过上述方式,避免根据过期的证书进行验证,进一步提升了验证的可靠性。

在步骤205中,当对所述时间戳服务的数字证书验证成功时,所述排序节点根据所述服务公钥,对所述交易时间戳中的时间戳签名进行解密得到第一时间戳摘要。

当对时间戳服务的数字证书验证成功时,排序节点根据服务公钥,对交易时间戳中的时间戳签名进行解密得到第一时间戳摘要,该第一时间戳摘要是时间戳服务根据服务私钥对时间戳信息进行签名得到的。

在步骤206中,所述排序节点对所述交易时间戳中的时间戳信息进行哈希处理,得到第二时间戳摘要。

在步骤207中,当所述第一时间戳摘要与所述第二时间戳摘要相同时,所述排序节点确定对所述交易时间戳验证成功。

当第一时间戳摘要与第二时间戳摘要相同时,确定时间戳信息并未在传输过程中被篡改,即确定对交易时间戳验证成功。

通过发明实施例对于图6b的上述示例性实施可知,本发明实施例通过对数字证书及时间戳签名进行验证,提升了交易时间戳的可靠性。

在一些实施例中,参见图6c,图6c是本发明实施例提供的生成交易的流程示意图,基于图6a,在步骤101之前,还可以在步骤301中,背书节点接收所述客户端发送的交易提案,并对所述交易提案进行验证。

这里,交易提案包括与查询/更新操作相关的智能合约调用。

在一些实施例中,可以通过这样的方式实现上述的对所述交易提案进行验证:所述背书节点对所述交易提案的格式进行验证,得到第一提案验证结果;在所述区块链网络中对所述交易提案进行重复性验证,得到第二提案验证结果;对所述交易提案包括的所述客户端的数字签名进行验证,得到第三提案验证结果;获取所述区块链网络中的权限信息,并根据所述权限信息对所述客户端进行权限验证,得到第四提案验证结果;当所述第一提案验证结果、所述第二提案验证结果、所述第三提案验证结果及所述第四提案验证结果均为成功时,确定对所述交易提案验证成功。

这里,背书节点对交易提案进行的验证包括四个方面。在第一方面,背书节点根据设定的提案格式对交易提案进行格式验证,判断交易提案中是否存在不符合提案格式的内容,若存在不符合提案格式的内容,则确定第一提案验证结果为失败;若不存在不符合提案格式的内容,则确定第一提案验证结果为成功。在第二方面,背书节点在区块链中查询是否存在与交易提案内容相同的交易,进行重复性验证,若存在重复的交易,则确定第二提案验证结果为失败;若不存在重复的交易,则确定第二提案验证结果为成功。在第三方面,客户端在向背书节点发送交易提案时,还会携带自身的数字证书及对交易提案的数字签名,背书节点对客户端的数字证书及数字签名进行验证,在两者均验证成功的基础上,确定第三提案验证结果为成功;若对客户端的数字证书和数字签名中的任一个验证失败,确定第三提案验证结果为失败。在第四方面,背书节点获取区块链网络中的权限信息,根据实际应用场景的不同,权限信息可为读取权限信息(对应查询操作的交易提案)或写入权限信息(对应更新操作的交易提案),在权限信息中查询客户端的信息,若查询到客户端的信息,则确定第四提案验证结果为成功;若未查询到客户端的信息,则确定第四提案验证结果为失败。当第一提案验证结果、第二提案验证结果、第三提案验证结果及第四提案验证结果中的任意一个为失败时,确定对交易提案验证失败;当第一提案验证结果、第二提案验证结果、第三提案验证结果及第四提案验证结果均为成功时,确定对交易提案验证成功。通过上述的四个方面的验证,提升了对交易提案进行验证的严密性。

在步骤302中,当对交易提案验证成功时,所述背书节点模拟执行交易得到交易结果。

在对交易提案验证成功的情况下,背书节点对账本模拟执行交易提案中包括的智能合约调用,将账本中被更新的键值对作为交易结果。当对交易提案验证失败时,背书节点向客户端返回携带失败码(指示验证交易提案失败的错误类型)的提案响应。

在步骤303中,所述背书节点对所述交易结果进行签名,得到背书节点签名。

背书节点持有根据非对称加密算法生成的密钥对,为了便于区分,将背书节点持有的密钥对中的公钥命名为节点公钥,将持有的私钥命名为节点私钥。背书节点对交易结果进行哈希处理,并根据节点私钥对哈希处理的结果进行加密,得到背书节点签名。

在步骤304中,所述背书节点将所述交易结果及所述背书节点签名发送至客户端。

在一些实施例中,在任意步骤之间,所述区块链网络的交易处理方法还包括:所述背书节点向认证中心发送认证请求,所述认证请求包括所述背书节点的节点公钥及节点身份信息,以使所述认证中心根据中心私钥对所述节点公钥及所述节点身份信息进行签名得到证书内签名,根据所述节点公钥、所述节点身份信息及所述证书内签名生成背书节点的数字证书,并将所述背书节点的数字证书发送至所述背书节点;通过所述背书节点将所述背书节点的数字证书发送至所述客户端,以使所述客户端根据所述背书节点的数字证书对所述背书节点签名进行验证。

这里,背书节点向认证中心发送自身持有的节点公钥及节点身份信息(即背书节点的身份信息),请求数字证书。认证中心对节点公钥及节点身份信息进行哈希处理,并根据中心私钥对哈希处理的结果进行加密,得到证书内签名,然后认证中心根据节点公钥、节点身份信息及证书内签名生成背书节点的数字证书,并将该数字证书发送至背书节点。

背书节点将交易结果、背书节点签名及背书节点的数字证书统一构造为提案响应,并将提案响应发送至客户端,以使客户端根据背书节点的数字证书对背书节点签名进行验证。除此之外,提案响应还可包括其他的相关信息,如还可包括用于指示验证交易提案成功的成功码、对交易结果进行哈希处理的结果等,本发明实施例对此不做限定。

在步骤305中,所述客户端将所述交易提案、所述交易结果及所述背书节点签名构造为交易,并将所构造的交易发送至排序节点。

客户端在验证背书节点签名有效的基础上,进行进一步验证,如验证是否收集到设定数量的背书节点签名,交易结果是否一致。当均验证成功,如已收集到设定数量的背书节点签名,且交易结果全部一致时,客户端将交易提案、交易结果及背书节点签名构造为交易,并将所构造的交易发送至排序节点。除此之外,交易还可包括其他的相关信息,如还可包括通道标识及智能合约的标识等,本发明实施例对此不做限定。

在一些实施例中,可以通过这样的方式实现上述的通过所述记账节点验证所述新区块:所述记账节点对所述新区块中的交易进行合法性验证,得到第一交易验证结果;获取所述新区块中的交易的通道标识,根据所述通道标识对所述记账节点进行归属验证,得到第二交易验证结果;根据背书策略对所述新区块中的交易进行背书验证,得到第三交易验证结果;当所述第一交易验证结果、所述第二交易验证结果及所述第三交易验证结果均为成功时,确定对所述新区块验证成功。

这里,记账节点对新区块中的交易进行的验证包括三个方面。在第一方面,记账节点对新区块中的交易进行合法性验证,例如,检验交易中的版本号是否与全局账本状态的版本号一致,得到第一交易验证结果。在第二方面,在新区块的交易包括通道标识时,记账节点获取通道标识,并判断自身是否位于通道标识对应的通道中,若该记账节点位于对应通道中,则确定第二交易验证结果为成功;若该记账节点不位于对应通道中,则确定第二交易验证结果为失败。在第三方面,记账节点根据设定的背书策略对交易进行背书验证,例如背书策略指定m个节点为背书节点,且交易至少要拥有n个背书节点签名,其中,m和n均为大于零的整数,且m≥n,当交易满足背书策略时,确定第三交易验证结果为成功;当交易不满足背书策略时,确定第三交易验证结果为失败。当第一交易验证结果、第二交易验证结果及第三交易验证结果中的任意一个为失败时,确定对交易验证失败;当第一交易验证结果、第二交易验证结果及第三交易验证结果均为成功时,确定对交易验证成功。通过上述的三个方面的验证,提升了对交易进行验证的严密性,实现了对非法交易的有效辨别。

通过发明实施例对于图6c的上述示例性实施可知,本发明实施例通过对客户端的交易提案进行预先背书,提升了客户端构造的交易的有效性。

下面,将说明本发明实施例在一个实际的应用场景中的示例性应用。

参见图7,图7是本发明实施例提供的区块链的创世区块的一个可选的结构示意图,在图7中,创世区块包括时间戳系统根证书,其中,时间戳系统用于提供时间戳服务。时间戳系统根证书包括认证中心的中心公钥,区块链网络的节点可通过获取时间戳系统根证书,从而对时间戳系统(服务)的数字证书进行验证。除了时间戳系统根证书之外,创世区块中还可配置认证中心发布的吊销列表,吊销列表包括被吊销或挂起的证书的信息,区块链网络的节点可通过获取吊销列表,从而确认证书的有效性。创世区块还包括系统通道配置,用于配置单通道或多通道,对于单通道,区块链网络包括统一存储不同类型的交易的区块链;对于多通道,区块链网络包括与每个通道一一对应的区块链,不同区块链用于存储不同类型的交易。创世区块还包括组织及节点信息,用于配置各节点的功能及各节点的归属通道,如指定某些记账节点同时为背书节点,指定某些节点归属于通道a,指定某些节点归属于通道b等。创世区块还包括其他配置信息,如在区块链涉及到虚拟资产时,对初始的资产情况进行配置,本发明实施例对此不做限定。

参见图8,图8是本发明实施例提供的区块链网络的另一个可选的结构示意图,在图8中,数字证书管理系统用于颁发数字证书,包括根证书、各节点的数字证书以及时间戳系统(服务)的数字证书。排序节点在接收到客户端提交的交易后,调用时间戳服务,时间戳服务通过国家授时中心等可信时间源生成时间戳信息,并对时间戳信息进行数字签名得到时间戳签名,将时间戳信息、时间戳签名及自身的数字证书一同返回至排序节点。排序节点在接收到时间戳服务返回的信息时,获取创世区块中的根证书,从而对时间戳服务的数字证书及时间戳签名进行验证。在两者均验证成功的基础上,排序节点根据时间戳信息从前到后的顺序,对各交易进行排序,生成新区块,并将新区块同步至其他的排序节点,同时,将包括交易时间戳的区块广播至区块链网络中的其他节点,如背书节点、记账节点以及审计节点,以使背书节点、记账节点及审计节点对新区块中的交易进行验证,并在验证成功时,将新区块追加至节点自身的区块链的尾部。

参见图9,图9是本发明实施例提供的区块链网络的另一个可选的结构示意图,为了便于理解,以图9示出的步骤序号进行说明。

1)业务系统通过sdk发起交易背书请求,收集背书结果。

业务系统即客户端,在交易处理的流程中,客户端通过内置的sdk,向区块链网络中的背书节点发起交易背书请求,该交易背书请求至少包括交易提案。背书节点对交易提案进行验证,在验证成功时,背书节点根据交易提案模拟执行交易得到背书结果,该背书结果即为上述的交易结果。背书节点将背书结果以及背书节点签名发送至客户端,例如,将背书结果、背书节点签名及背书节点的数字证书统一构造为提案响应,并将提案响应发送至客户端。

2)业务系统构造交易,并将交易发送至排序节点进行排序。

这里,客户端将交易提案、背书结果及背书节点签名构造为交易,并将所构造的交易发送至排序节点。除此之外,交易还可包括其他的相关信息,如还可包括通道标识及智能合约的标识等,本发明实施例对此不做限定。

3)排序节点调用时间戳服务,为每个交易都生成可信的交易时间戳。

排序节点根据接收到交易的顺序调用时间戳服务,以使时间戳服务生成与每个交易对应的交易时间戳,并将交易时间戳及时间戳服务的数字证书发送至排序节点,其中,该交易时间戳包括时间戳信息及时间戳签名。排序节点将获取到的交易时间戳添加在交易中。

为了便于理解,图10示出了本发明实施例提供的交易的一个可选的结构示意图,该交易是排序节点调用完成时间戳服务后得到的。在交易中,包括背书结果进行背书后得到的背书结果,以及时间戳服务生成的交易时间戳,该交易时间戳包括时间戳信息、时间戳签名以及其他元数据,元数据是指时间戳服务返回的附带信息,如时间戳服务自身的管理信息。

4)排序节点验证交易时间戳的时间戳签名,并在验证成功时,根据时间戳大小对交易进行排序,同时把多笔交易分割为一个区块;

排序节点获取创世区块中的根证书,从而对时间戳服务的数字证书以及时间戳签名进行验证,在对两者均验证成功时,排序节点根据时间戳信息从前到后的顺序,对各交易进行排序,并将排序后的多个交易构造为新区块。

5)排序节点向区块链网络中的其他节点广播新区块。

在图9中,示例性地示出了排序节点向背书节点及记账节点广播新区块的过程,其中,背书节点是一类特殊的记账节点。可根据实际应用场景确定广播的对象,并不限于图9的示例。

6)背书节点和记账节点通过交易时间戳验证新区块中的交易的有效性,在验证成功时,将新区块追加至节点自身的区块链的尾部。

背书节点和记账节点通过交易时间戳验证新区块中的交易的有效性,除此之外,还可进行其他验证,如验证交易是否符合设定的背书策略。在验证成功时,节点将新区块追加至节点自身保存的区块链的尾部,完成交易的上链。

通过发明实施例对于图9的上述示例性实施可知,本发明实施例通过调用第三方的时间戳服务,从而得到可信的交易时间戳,即使区块链网络中所有参与节点的系统时间被篡改,也无法伪造相同时间戳的交易,提升了交易处理过程的可靠性和安全性。

下面继续说明本发明实施例提供的软件模块2143的示例性结构,在一些实施例中,如图5所示,存储在存储器2140的软件模块2143可以包括以下子模块中的至少一个:排序功能模块21431,记账功能模块21432,背书功能模块21433,审计功能模块21434,主节点功能模块21435。

所述排序功能模块21431,用于接收客户端提交的交易;调用时间戳服务,生成与各所述交易一一对应的交易时间戳;验证所述交易时间戳,且当对所述交易时间戳验证成功时,根据所述交易时间戳对接收的交易进行排序;将排序后的多个所述交易构造为新区块,并将所述新区块广播至所述区块链网络中的记账节点;所述记账功能模块21432,用于验证所述新区块,且当验证成功时,将所述新区块追加至所述记账节点的区块链的尾部。

在一些实施例中,所述排序功能模块21431,还用于通过所述排序节点接收交易,并根据接收的交易的顺序对应调用时间戳服务,以使所述时间戳服务根据所述接收的交易的顺序,依次生成与各所述交易一一对应的时间戳信息,对所述时间戳信息进行签名得到时间戳签名,将所述时间戳信息及所述时间戳签名构造为交易时间戳,并将所述交易时间戳及时间戳服务的数字证书发送至所述排序节点;其中,所述时间戳服务的数字证书包括服务公钥、服务身份信息及服务签名。

在一些实施例中,所述排序功能模块21431,还用于获取创世区块中的根证书;根据所述根证书对所述时间戳服务的数字证书进行验证;当对所述时间戳服务的数字证书验证成功时,根据所述服务公钥,对所述交易时间戳中的时间戳签名进行解密得到第一时间戳摘要;对所述交易时间戳中的时间戳信息进行哈希处理,得到第二时间戳摘要;当所述第一时间戳摘要与所述第二时间戳摘要相同时,确定对所述交易时间戳验证成功。

在一些实施例中,所述排序功能模块21431,还用于根据所述根证书中的中心公钥,对所述时间戳服务的数字证书内的所述服务签名进行解密,得到第一服务摘要;对所述服务公钥及所述服务身份信息进行哈希处理,得到第二服务摘要;当所述第一服务摘要与所述第二服务摘要相同时,确定对所述时间戳服务的数字证书验证成功。

在一些实施例中,所述排序功能模块21431,还用于当所述区块链网络包括用于统一存储不同类型的交易的区块链时,获取所述区块链的创世区块中的根证书;或者,当区块链网络包括多个与不同类型的交易对应的通道时,读取所述交易中的通道标识,确定所述通道标识对应通道的区块链,并获取所述区块链的创世区块中的根证书。

在一些实施例中,所述排序功能模块21431,还用于获取所述创世区块中的吊销列表;当通过所述吊销列表确定所述根证书及所述时间戳服务的数字证书均有效时,根据所述根证书对所述时间戳服务的数字证书进行验证。

在一些实施例中,所述背书功能模块21433,用于接收所述客户端发送的交易提案,并对所述交易提案进行验证;当对所述交易提案验证成功时模拟执行交易,得到交易结果;对所述交易结果进行签名,得到背书节点签名;将所述交易结果及所述背书节点签名发送至所述客户端,以使所述客户端将所述交易提案、所述交易结果及所述背书节点签名构造为交易,并将所构造的交易发送至所述排序节点。

在一些实施例中,所述背书功能模块21433,还用于向认证中心发送认证请求,所述认证请求包括所述背书节点的节点公钥及节点身份信息,以使所述认证中心根据中心私钥对所述节点公钥及所述节点身份信息进行签名得到证书内签名,根据所述节点公钥、所述节点身份信息及所述证书内签名生成背书节点的数字证书,并将所述背书节点的数字证书发送至所述背书节点;将所述背书节点的数字证书发送至所述客户端,以使所述客户端根据所述背书节点的数字证书对所述背书节点签名进行验证。

在一些实施例中,所述背书功能模块21433,还用于对所述交易提案的格式进行验证,得到第一提案验证结果;在所述区块链网络中对所述交易提案进行重复性验证,得到第二提案验证结果;对所述交易提案包括的所述客户端的数字签名进行验证,得到第三提案验证结果;获取所述区块链网络中的权限信息,并根据所述权限信息对所述客户端进行权限验证,得到第四提案验证结果;当所述第一提案验证结果、所述第二提案验证结果、所述第三提案验证结果及所述第四提案验证结果均为成功时,确定对所述交易提案验证成功。

在一些实施例中,所述记账功能模块21432,还用于对所述新区块中的交易进行合法性验证,得到第一交易验证结果;获取所述新区块中的交易的通道标识,根据所述通道标识对所述记账节点进行归属验证,得到第二交易验证结果;根据背书策略对所述新区块中的交易进行背书验证,得到第三交易验证结果;当所述第一交易验证结果、所述第二交易验证结果及所述第三交易验证结果均为成功时,确定对所述新区块验证成功。

在一些实施例中,所述排序功能模块21431,还用于将所述新区块广播至所述区块链网络中的审计节点;所述审计功能模块21434,用于根据所述新区块中的交易时间戳对各所述交易进行业务审计;当业务审计失败时,向所述客户端发送错误信息。

在一些实施例中,所述排序功能模块21431,还用于通过所述排序节点读取接收的交易中的通道标识;还用于根据所述交易时间戳,对所述通道标识相同的多个交易进行排序。

在一些实施例中,所述排序功能模块21431,还用于将所述通道标识相同的、且排序后的多个所述交易构造为相应通道的新区块;将所述新区块广播至相应通道中的主节点;所述主节点功能模块21435,用于将所述新区块广播至相应通道中的记账节点。

本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的方法,例如,如图6a或6b示出的区块链网络的交易处理方法。

在一些实施例中,存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。

在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。

作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hypertextmarkuplanguage)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。

作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。

综上所述,本发明实施例通过调用第三方的时间戳服务,保证了交易时间戳的可信,在区块链网络的节点的本地系统时间有误或被恶意篡改的情况下,仍能通过交易时间戳对交易进行排序及有效验证,提升了交易处理的可靠性和安全性。

以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。

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