一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链网络的证书处理方法、装置、电子设备及存储介质与流程

2021-11-05 21:16:00 来源:中国专利 TAG:

区块链网络的证书处理方法、装置、电子设备及存储介质
1.本技术是申请号为201910866712.4,申请日为2019年09月12日,名称为:一种区块链网络的证书处理方法、装置、电子设备及存储介质的分案申请。
技术领域
2.本发明涉及区块链技术,尤其涉及一种区块链网络的证书处理方法、装置、电子设备及存储介质。


背景技术:

3.区块链网络从最初被设计用来进行加密数字货币的交易,到目前已经发展为支持各种应用的通用性的后台服务,通过在区块链网络中部署的智能合约、可以对应用提交的数据进行上链存储、进行业务逻辑相关的处理和查询服务,并实现数据的不可篡改和可追溯的特性,因而在不同行业中得到日益普遍地使用。
4.然而,相关技术提供的区块链网络都存在区块体积过大的问题,严重影响了系统的可扩展性;一方面区块中交易的体积太大,导致区块和交易在系统节点之间传播变慢,限制了整个区块链网络的吞吐量;另一方面,区块链网络中存储所有的历史区块和交易,随着时间推移占用的存储空间也激增。
5.现有技术中没有提出一个通用的减小区块链体积的方案,只适合于使用脚本实现资产转移的数字货币的区块链网络。对于使用智能合约的区块链网络不适用,例如,对于使用证书作为区块链数字身份的联盟链不适用。


技术实现要素:

6.本发明实施例提供一种区块链网络的证书处理方法、装置、电子设备及存储介质,能够有效减小交易的体积,进而提升区块链网络的吞吐量。
7.本发明实施例的技术方案是这样实现的:
8.本发明实施例提供一种区块链网络的证书处理方法,包括:
9.通过区块链网络中的节点接收客户端提交的交易提案;
10.基于背书策略对所述交易提案进行验证,当验证通过时,向所述客户端返回提案响应;
11.其中,所述提案响应包括:交易结果、背书策略验证通过的节点的数字证书、以及背书策略验证通过的节点针对所述交易结果的数字签名;所述交易提案和所述提案响应用于供所述客户端构造交易,并向所述区块链网络中的节点提交所述交易;
12.通过所述区块链网络的节点对区块进行共识,当共识通过时从所述区块的交易中提取数字证书,并将所述数字证书存储到所述节点的数据库中;
13.通过所述区块链网络的节点接收所述客户端提交的交易,基于所述交易构造新区块;
14.从所述节点的数据库中查询所述新区块的交易中的哈希值对应的数字证书,并利
用查询到的数字证书对所述新区块中的交易进行验证。
15.本发明实施例提供一种区块链网络的证书处理装置,包括:
16.证书提取模块,用于:
17.通过区块链网络中的节点接收客户端提交的交易提案;
18.基于背书策略对所述交易提案进行验证,当验证通过时,向所述客户端返回提案响应;
19.其中,所述提案响应包括:交易结果、背书策略验证通过的节点的数字证书、以及背书策略验证通过的节点针对所述交易结果的数字签名;所述交易提案和所述提案响应用于供所述客户端构造交易,并向所述区块链网络中的节点提交所述交易;
20.通过所述区块链网络的节点对区块进行共识,当共识通过时从所述区块的交易中提取数字证书,并将所述数字证书存储到所述节点的数据库中;
21.交易裁剪模块,用于:
22.通过所述区块链网络的节点接收所述客户端提交的交易,基于所述交易构造新区块;
23.从所述节点的数据库中查询所述新区块的交易中的哈希值对应的数字证书,并利用查询到的数字证书对所述新区块中的交易进行验证。
24.上述方案中,所述证书提取模块,还用于:
25.通过所述区块链网络中的节点对所述区块中的每个交易执行以下验证操作:
26.通过所述交易中的客户端数字证书验证所述交易中的客户端数字签名;
27.通过所述交易的节点数字证书验证所述交易中的节点数字签名;
28.验证所述区块中的交易符合背书策略。
29.在上述方案中,所述交易裁剪模块,还用于:
30.通过所述区块链网络的节点接收所述客户端提交的交易,当从所述数据库中查询到所述提交的交易中的数字证书时,将所述提交的交易中的数字证书替换为对应的哈希值;
31.通过所述区块链网络中的节点将经过替换处理的交易构造为新区块;
32.当通过所述区块链网络的节点对所述新区块进行共识时,从所述新区块的交易中提取哈希值;
33.从所述节点的数据库中查询所述哈希值对应的数字证书。
34.上述方案中,所述证书提取模块,还用于:
35.通过区块链网络的节点对区块进行共识之前,通过所述区块链网络中的节点接收所述客户端提交的交易提案;
36.基于背书策略对所述交易提案进行验证,当验证通过时,向所述客户端返回提案响应;
37.其中,所述提案响应包括:交易结果、背书策略验证通过的节点的数字证书、以及背书策略验证通过的节点针对所述交易结果的数字签名,以使
38.所述客户端收到所述交易提案时,将所述交易提案和所述提案响应构造为交易,并向所述区块链网络中的节点提交所述构造的交易。
39.上述方案中,所述证书提取模块,还用于:
40.通过所述区块链网络中的节点,对所述客户端构造并提交的经过替换处理的交易按照接收的先后顺序进行排序以构造为区块,并将所述构造的区块广播到所述区块链网络中,以使接收到所述构造的区块的节点进行共识。
41.上述方案中,所述证书提取模块,还用于:
42.当共识通过时从所述区块中的每个交易中提取提交所述交易的客户端的数字证书、以及针对所述交易进行背书的节点的数字证书;
43.将所述提取的数字证书的键值对存储在所述节点的数据库中;其中,所述键值对中的键为所述提取的数字证书的哈希值,所述键值对中的值为所述提取的数字证书的二进制数据。
44.上述方案中,所述交易裁剪模块,还用于:
45.通过所述区块链网络的节点对所述新区块进行共识之前,通过所述区块链网络中的节点接收所述客户端提交的交易提案,
46.当接收所述交易提案的节点在本地的数据库中查询到自身的数字证书、且基于背书策略验证所述交易提案通过时,确定为所述交易背书并向所述客户端返回提案响应;
47.其中,所述提案响应包括:交易结果、为所述交易背书的节点的数字证书的哈希值、为所述交易背书的节点针对所述交易结果的数字签名,以使
48.所述客户端接收到所述交易提案时,将所述交易提案和所述提案响应构造为交易,并向所述区块链网络中的节点提交所述封装的交易。
49.上述方案中,所述交易裁剪模块,还用于:
50.通过所述区块链网络中的节点,对所述客户端封装并提交的交易按照接收的先后顺序进行排序以构造为新区块,并将所述构造的新区块广播到所述区块链网络中,以使接收到所述构造的新区块的节点进行共识。
51.上述方案中,所述交易裁剪模块,还用于:
52.从所述新区块中的每个交易中提取提交所述交易的客户端的数字证书的哈希值、以及为所述节点背书的节点的数字证书的哈希值;
53.通过所述提取的哈希值,从所述节点的数据库中查询所述提交所述交易的客户端的数字证书、以及为所述交易背书的节点的数字证书。
54.上述方案中,所述交易裁剪模块,还用于:
55.通过所述区块链网络中的节点对所述区块中的每个交易执行以下验证操作:
56.通过所述节点的根证书验证所述为所述交易背书的节点的数字证书;
57.验证通过时从为所述交易背书的节点的数字证书中,提取为所述交易背书的节点的公钥,通过所提取的公钥验证所述交易中的节点数字签名;
58.通过所述节点的根证书验证所述为所述交易背书的节点的数字证书;
59.验证通过时从为所述交易背书的节点的数字证书中,提取为所述交易背书的节点的公钥,通过所提取的公钥验证所述交易中的节点数字签名。
60.上述方案中,所述交易裁剪模块,用于:
61.通过所述区块链网络中的节点对所述区块中的每个交易执行验证操作时,验证所述区块中的交易格式正确;
62.验证为所述交易背书的节点加入所述交易中所指示的接收交易的通道;
63.验证所述交易符合背书策略。
64.上述方案中,所述证书提取模块,还用于:
65.在所述节点的缓存中存储查询频率高于频率阈值的数字证书的键值对;
66.从所述节点的缓存中查询所述哈希值对应的数字证书;
67.当未查找到时,从所述节点的数据库中查询所述哈希值对应的数字证书。
68.上述方案中,所述证书提取模块,还用于:
69.确定所述节点在所述区块链网络中所加入的各个通道中交易的数字证书被使用的频率;
70.将每个通道中使用频率高于频率阈值的数字证书存储到所述节点本地的缓存中。
71.本发明实施例提供一种运行区块链网络中节点的电子设备,包括:
72.存储器,用于存储可执行指令;
73.处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的区块链网络的证书处理方法。
74.本发明实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的区块链网络的证书处理方法。
75.本发明实施例具有以下有益效果:
76.通过在共识过程中收集交易中的数字证书并替换为哈希值的方式存储到数据库,利用哈希值从数据库中提取对应的数字证书的方式验证交易,实现了对数据库中数字证书的复用,从而不需要将数字证书中存储到交易中,由于哈希值的体积具有远小于数字证书的特点,因此有效减小的交易的体积,进而使得区块可以存储更多的交易,有效提升了区块链网络的吞吐性能;同时由于各种区块链网络的交易都是以数字证书作为凭证的,因此能够广泛应用于各种区块链网络。
附图说明
77.图1是本发明实施例提供的区块链网络200的示例性的应用系统100的架构示意图;
78.图2是本发明实施例提供的区块链网络200的应用架构100的示意图;
79.图3是本发明实施例提供的区块链网络的交易处理流程示意图;
80.图4是本发明实施例提供的区块链网络200的逻辑功能架构示意图;
81.图5是本发明实施例提供的运行区块链网络200中的共识节点的电子设备的结构示意图;
82.图6a是本发明实施例提供的区块链网络的证书处理方法的流程示意图;
83.图6b是本发明实施例提供的区块链网络的证书处理方法的流程示意图;
84.图7是本发明实施例提供的区块链交易流程中提取交易的数字证书的流程示意图;
85.图8是本发明实施例提供的区块链网络的交易过程中进行交易裁剪的流程示意图。
具体实施方式
86.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
87.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
88.除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
89.对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
90.1)交易提案(proposal),是执行交易中所包括的智能合约调用(下文简称为执行交易)的请求,包括接收交易的通道的标识、在通道中需要调用的智能合约的标识、以及需要向调用的智能合约传递的参数信息。
91.2)交易,也称为交易请求,等同于计算机术语事务(transaction),交易包括了需要提交到区块链网络执行的操作,以及对应的交易结果。并非单指商业语境中的交易,鉴于在区块链技术中约定俗成地使用了“交易”这一术语,本发明实施例遵循了这一习惯。
92.例如,交易可以包括部署(deploy)交易和调用(invoke)交易,部署交易用于将智能合约到区块链网络的节点中并准备好被调用;调用(invoke)交易用于对账本中的状态数据库进行查询操作(即读操作)或更新操作(即写操作,包括增加、删除和修改)。
93.3)区块链(blockchain),是由区块(block)形成的加密的、链式的交易的存储结构。每个区块的头部既可以包括区块中所有交易的哈希值,同时也包含前一个区块中所有交易的哈希值,从而基于哈希值实现区块中交易的防篡改和防伪造;新产生的交易被填充到区块并经过区块链网络中节点的共识后,会被追加到区块链的尾部从而形成链式的增长。
94.4)区块链网络(blockchain network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
95.5)账本(ledger),是区块链(也称为账本数据)、以及与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(key)值(value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。
96.6)智能合约(smart contracts),也称为链码(chaincode)或应用代码,部署在区块链网络的节点中的程序,承载了交易相关的业务逻辑,运行在隔离运行环境中(例如容器或虚拟机)。
97.7)共识(consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部。实现共识的机制包括工作量证明(pow,proof of work)、权益证明(pos,proof of stake)、股份授权证明(dpos,delegated proof

of

stake)、消逝时间量证明(poet,proof of elapsed time)等。
98.8)成员(member),也称为业务主体,代表某个具体的实体身份(例如公司、企业和社会团体等),在区块链网络中有自己的根证书,区块链中的节点属于某个成员,同一个成员可以在同一个通道中拥有多个节点。
99.9)组织(organization),部分成员(接入区块链网络中的所有成员的子集)为实现特定业务(不需要所有成员参与)而形成的域,组织内的成员拥有相同的根证书。
100.10)通道(channel),区块链网络中向组织中成员的节点提供的私有隔离环境,通道是一个逻辑结构,由物理存在的各种节点组成;通道中的智能合约和账本只对加入(也称为订阅)通道的成员的节点可见,同一个节点可以加入多个通道,并对应每个通道维护一个账本。
101.下面说明本发明实施例提供的区块链网络的示例性应用,参见图1,图1是本发明实施例提供的区块链网络200的示例性的应用系统100的架构示意图,包括区块链网络200(包括多个节点)、客户端510/410和认证中心(ca,cert ificate authority)300。
102.区块链网络200中的节点具有一个或多个功能,其中账本功能(即维护账本)和共识功能(即进行共识)是节点的默认功能;节点还可以具有排序功能、背书功能和证书数据库,其中排序功能用于保证在多个节点对交易排序的一致性,背书功能用于对客户端提交的交易提案进行背书验证,证书数据库用于存储节点在共识阶段从区块中收集的数字证书。在一些实施例中,证书数据库可以缺省并使用账本数据库代替,从而降低节点功能架构的复杂度,提高节点的数据库操作效率。
103.区块链网络200的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的终端或服务器中运行的客户端,都可以在无需授权的情况下接入区块链网络200而成为一类特殊的节点,称为客户端节点;以联盟链为例,业务主体在被授权成为区块链网络200的成员后,对应的客户端可以接入区块链网络200而成为客户端节点,为方便描述,下文中客户端节点也简称为客户端。
104.作为示例,客户端可以与业务主体的业务相关的各种用途的应用程序,例如社交网络客户端、物流客户端;客户端可以是各种平台的应用程序,例如移动app(安卓app和ios app)、桌面软件(widow系统软件和mac系统软件)等。
105.需要指出,归属于同一业务主体的客户端节点的数量不存在限制,图1中示出了业务主体500使用的一个客户端510,且可以接入区块链网络200而成为客户端节点,同理,业务主体400使用的一个客户端410可以接入区块链网络200而成为客户端节点。
106.客户端节点是一类区别于区块链网络200中原生的节点的特殊节点,默认可以缺省区块链网络200中的原生的节点具有的功能,从而降低客户端的开发难度并实现客户端的轻量化。客户端与区块链网络200之间支持事件的传递,例如客户端通过可以监听/订阅区块链网络200运行中与智能合约调用相关的事件,例如生成新区块的事件,从而当区块链网络200中产生特定事件时,触发本地或外部系统的相关的业务逻辑。
107.在一些实施例中,客户端针对区块链网络200中账本的操作主要包括账本查询与账本更新两种类型。对于账本查询来说,客户端向区块链网络200发起交易提案,交易提案中的交易数据(与查询操作相关的智能合约调用),由区块链网络200的节点执行交易提案中包括的智能合约调用以查询账本,并将查询到的数据作为交易结果携带在提案响应中以返回客户端。
108.对于账本更新来说,客户端节点向区块链网络200发起交易提案,其中包括与更新操作相关的智能合约调用(即交易数据),由区块链网络200的节点对账本模拟执行(即账本不会被改变)交易提案中包括的交易数据(即与更新操作相关的智能合约调用),将模拟执行的得到的键值对作为交易结果携带在提案响应中以返回客户端,客户端节点进而将交易提案、提案响应构造为交易,并提交到区块链网络200,由区块链网络200的节点将交易记录到账本中。
109.区块链网络200外部的认证中心300用于响应客户端410/510(下面简称为客户端)的注册申请,返回注册密码用于登录,以便获取用于声明客户端所属成员的身份信息的数字证书。作为认证中心(ca,certificate authority)300的替换方案,区块链网络200中可以设置有ca节点以实现认证中心(ca,certificate authority)300的功能。
110.在一些实施例中,区块链网络200中的记账节点根据在账本功能和共识功能之外实现的功能可以划分为不同的类型,作为图1中示出的区块链网络200的划分为不同类型的示例,参见图2,图2是本发明实施例提供的区块链网络200的应用架构100的示意图,除了客户端节点(客户端410/510),区块链网络200中的节点默认都具有共识功能和账本功能,其中仅具有验证交易并记账功能的节点称为记账节点(committer)或共识节点,还包括一些特殊类型的记账节点:具有背书功能的背书节点(endorser)、具有排序功能的排序节点(orde rer)和代表通道中的记账节点与排序节点通道的主节点(leader peer)。
111.区块链网络200中的上述节点可以加入不同组织的通道,每个组织(组织1和组织2)的通道内包括归属于组织成员的多个记账节点,如图2示出了开展不同业务的组织1和组织2,区块链网络200中归属于组织1/2的成员的节点可以对应加入组织1/2的通道,每个通道内的节点接收与所属组织的客户端提交的业务相关的交易,并将交易到账本中,账本对于通道外的节点是隔离的。
112.在一些实施例中,客户端中内置软件开发套件(sdk,software developm ent kit)来实现对区块链网络200的管控,从而客户端的原生代码可以只关注实现业务相关的逻辑,忽略区块链网络200的内部运行细节,降低客户端的开发难度。
113.作为示例,sdk向客户端提供了与区块链网络200的节点之间的基于远程过程调用(rpc,remote procedure call)连接的一系列应用编程接口(api,application programming interface),用于供客户端管理和使用区块链网络200的功能,这些功能包括:身份管理、账本管理、交易管理、智能合约、交易管理、成员管理、共识服务、智能合约服务、安全和密码服务和事件处理等,将在下文具体说明上述功能。
114.作为交易管理的示例,客户端通过sdk实现的交易管理功能包括提交交易提案和提交交易两个阶段,下面参见图3,图3是本发明实施例提供的区块链网络的交易处理流程示意图,结合图3示出的交易提案和提交交易两个阶段的处理过程,就上述不同类型的节点的功能进行说明。
115.客户端向区块链网络200中一个或多个通道中的背书节点发起交易提案,交易提案包括交易号、时间戳(发起交易提案的时间)和交易数据。其中交易数据包括:执行交易的通道(即交易中的调用的智能合约的所在的通道)的标识(例如序号或名称)、以及需要在通道中需要执行的智能合约调用(包括需要调用的智能合约的标识例如名称或序列号、智能合约的版本和需要向智能合约传递的参数信息等)。智能合约和参数与客户端需要执行的
操作相关,例如智能合约可以用于增加、删除、查询或修改操作,参数信息可以是增加、删除、查询或修改操作的数据。
116.交易提案还携带认证中心向客户端签发的客户端数字证书、以及客户端针对交易提案中交易数据签署的数字签名,客户端数字证书包括:客户端所属的成员的身份信息、客户端的公钥,认证中心使用认证中心的私钥(与客户端和节点预先向认证中心请求的根证书中的公钥对应)对客户端的身份信息和客户端的公钥签署的数字签名。客户端数字证书用于声明客户端所属的成员的身份信息,客户端数字签名用于证明交易提案中的交易数据没有被篡改。
117.背书节点在收到交易提案后会根据背书策略进行一些背书验证,包括:交易提案携带的数字证书是否是由受信任的认证中心签发;交易提案的数字签名是否有效;交易提案的格式是否正确;交易提案是否重复提交过;客户端在请求执行智能合约调用的通道中是否已被授权有写权限。当判断均为是时背书验证成功。
118.在一些实施例中,背书节点验证交易提案成功时,背书节点会基于本地所维护的账本的状态数据库来模拟执行交易数据,即执行交易提案中包括的智能合约调用以得到交易结果。背书节点使用自己的私钥对交易结果进行签名(即背书),将背书节点的数字签名结合背书节点的数字证书(包括背书节点的公钥、以及认证中心使用认证中心的私钥对背书节点的公钥和身份信息签署的数字签名)、以及其他的相关信息构造成为提案响应(proposal response),然后返回给客户端。
119.作为示例,当交易提案中包括用于查询操作的智能合约调用时,交易结果是读集(read set),包含模拟执行过程中从账本数据库读取的键值对;当交易提案中包括用于查询操作的智能合约调用时,交易结果是写集(write set)也包含了一个唯一键的列表,还有在模拟执行过程中对账本数据库写入的键值对。
120.作为示例,上文所述的其他的相关信息可以包括:成功码(指示验证交易提案成功)、时间戳(生成提案响应的时间)、接收交易的通道的标识(例如序列号或名称)和交易提案的哈希值(用于与交易提案一对一地绑定,避免在提交交易阶段交易被客户端篡改)。
121.在一些实施例中,背书节点验证交易提案失败时,会向客户端返回携带失败码(指示验证交易提案失败的错误类型)的提案响应。
122.当客户端收到提案响应时,首先会通过验证交易提案携带的数字证书和数字签名以确认提案响应的有效性。当客户端收集到足够数量(预定数量)的背书节点的提案响应,且提案响应中的交易结果一致时,会根据交易提案以及提案响应来构造交易。
123.作为示例,交易包括:时间戳(构造交易的时间)、接收交易的通道的标识、需要在通道中调用的智能合约的标识(例如名称或序列号)、智能合约的版本和向智能合约传递的参数等和交易结果(例如读/写集)、以及背书节点针对交易结果的数字签名。
124.需要指出,如果客户端提交的交易提案中的智能合约调用仅用于查询账本(而不用于更新账本),则客户端不会构造交易,仅将提案响应中的交易结果作为账本查询结果来完成相关的业务逻辑。
125.客户端构造交易后,将交易广播给区块链网络200中的排序节点,对于所接收的交易,排序节点从交易中读取交易所属的通道的标识,按照接收的交易的先后顺序,将对应各个通道接收的交易构造相应通道的区块,并将区块发送到相应通道中的主节点。
126.以图2为例,排序节点接收到交易时,根据交易中的通道的标识确定需要接收交易的通道是组织1的通道还是组织2的通道,根据对应各个通道的接收交易的先后顺序,构造对应组织1的通道的区块以及对应组织2的通道的区块,对应发送到组织1/组织2的通道中的主节点。
127.主节点是代表通道内的其他记账节点和排序节点通信的节点,用于从排序节点获取最新的区块并在通道内部同步;主节点可以是被强制设置的,也可以是动态选举产生的。
128.通道内的记账节点各自对接收的区块中的各个交易进行共识验证,并在验证通过后追加到各自维护的区块链的尾部,并利用区块中交易的交易结果更新账本数据库。
129.在一些实施例中,记账节点对区块中交易的共识验证包括:交易格式是否正确,是否有合法的签名(包括客户端的数字签名和背书节点的数字签名),即验证交易内容是否被篡改;记账节点是否加入交易中所指示的接收交易的通道;交易是否符合背书策略。背书策略是背书节点对交易进行背书的规则,指定一个交易在提交前需要的背书所来自的组织、相应组织内节点的类型和有效背书的数量。当判断结果均为是时表示共识验证通过。
130.下面说明本发明实施例提供的区块链网络的示例性的逻辑功能架构,参见图4,图4是本发明实施例提供的区块链网络200的逻辑功能架构示意图,下面分别进行说明。
131.区块链网络200的上层对接客户端,客户端410/510中提供了标准的rpc接口,并在api的基础之上封装了sdk,从而使得开发人员可以在sdk中开发基于区块链的各种业务逻辑;客户端的事件机制能够使得客户端接收区块链网络200的各种事件时,例如当接收到创建新区块的事件时、执行智能合约的事件时,执行预先定义的回调函数,从而使得各个节点之间达成共识的执行时间尽量缩短。
132.在一些实施例中,从区块链网络200对接客户端的顶层的角度,区块链网络200的功能包括身份管理、账本管理、交易管理和智能合约的功能,下面分别进行说明。
133.(1)身份管理
134.客户端的用户注册和登录认证中心后,客户端获取到成员的数字证书(ec ert),其他所有的操作都需要与数字证书关联的私钥进行签名,消息接收方与成员持有来自认证中心的相同的根证书,消息接收方首先会进行签名和数字证书的验证,才进行后续的消息处理。节点同样会用到认证中心颁发的数字证书,比如接入区块链网络的成员启动下辖的节点的系统和对下辖的节点进行管理时,身份管理功能都会对成员的身份信息进行认证和授权。
135.(2)账本管理
136.授权接入区块链网络200的成员查询账本,可以通过多种方式查询,包括根据区块号查询区块、根据区块哈希查询区块、根据交易号查询区块和根据交易号查询交易,还可以根据通道名称获取查询到的区块链。
137.(3)交易管理
138.账本只能通过提交交易的方式更新,客户端通过区块链网络200的交易管理功能提交交易提案,并获取到交易的背书后,再向排序节点提交交易,然后由排序节点构造为区块。
139.(4)智能合约
140.实现“可编程的账本”(programmable ledger),通过智能合约调用执行交易,实现
基于区块链的智能合约业务逻辑。只有智能合约才能更新账本。
141.在一些实施例中,从区块链网络200对接底层的角度,区块链网络200的功能包括成员管理、共识服务、链码服务、安全和密码服务,下面分别进行说明。
142.(1)成员管理
143.通过根信任证书(root of trust certificate)体系,利用(pki,public key infrastructure)对成员的身份信息进行认证,验证成员的数字签名。结合区块链网络内部的认证中心或者第三方认证中心,提供成员的注册功能,并对成员的数字证书进行管理,例如证书新增和撤销。示例性地,数字的证书分为注册证书(ecert)、交易证书(tcert)和tls证书(tls cert),它们分别用于用户身份、交易签名和安全传输层协议(tls,transport layer security pro tocol)传输。
144.(2)共识服务
145.共识机制由3个阶段完成:客户端向背书节点提交提案以获得背书,客户端获得背书后提交交易给排序节点进行排序生成区块,之后广播给记账节点验证区块中交易后写入记账节点的本地账本。
146.(3)链码服务
147.智能合约的实现依赖于安全的执行环境,确保安全的执行过程和用户数据的隔离。
148.(4)安全和密码服务
149.实现密钥生成、哈希运算、签名验签、加密解密等基础功能。
150.下面说明本发明实施例提供的运行区块链网络的节点的电子设备的示例性结构,参见图5,图5是本发明实施例提供的运行区块链网络200中的节点的电子设备的结构示意图,电子设备可以是终端(例如pc)、服务器或服务器的集群,提供虚拟化的节点运行环境,图5所示的电子设备600包括:至少一个处理器610、存储器650和至少一个网络接口620。电子设备中的各个组件通过总线系统640耦合在一起。可理解,总线系统640用于实现这些组件之间的连接通信。
151.处理器610可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
152.存储器650可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器650可选地包括在物理位置上远离处理器610的一个或多个存储设备。
153.存储器650包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,read only me mory),易失性存储器可以是随机存取存储器(ram,random access memor y)。本发明实施例描述的存储器650旨在包括任意适合类型的存储器。
154.在一些实施例中,存储器650能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
155.操作系统651,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,
例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
156.网络通信模块652,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universal serial bus)等;
157.在一些实施例中,本发明实施例提供的区块链网络的证书处理装置655可以采用软件方式实现,图5示出了存储在存储器650中的证书处理装置655,其可以是程序和插件等形式的软件,包括以下软件模块:证书提取模块6551和交易裁剪模块6552,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
158.将结合本发明实施例提供的区块链网络的示例性应用和实施,说明本发明实施例提供的区块链网络的证书处理方法,包括证书收集阶段和交易裁剪阶段,每个阶段中区块链都会对多个交易进行处理,例如,在证书收集阶段区块链网络会接收到不同客户端/相同客户端的提交的多个交易,从而从交易中收集证书到证书数据库;在交易裁剪阶段,对相同/不同客户端提交多个交易,根据证书数据库进行裁剪从而减小交易体积;在下文中,以证书收集阶段和交易裁剪阶段各处理一个交易为例说明,但不应视为各阶段处理的交易数量的限制。
159.此外,下文重点说明在证书收集阶段中证书收集的方案、以及在交易裁剪阶段关于交易裁剪的方案,对于区块链网络对于交易的其他处理环节,可以根据上文区块链网络的交易处理过程(包括提交交易提案和提交交易两个阶段)而理解,不再重复说明。
160.参见图6a,图6a是本发明实施例提供的区块链网络的证书处理方法的流程示意图,下面结合图6a示出的步骤进行说明。
161.在步骤101中,通过区块链网络的节点对区块进行共识,
162.在一些实施例中,通过区块链网络的节点对区块进行共识,包括:通过区块链网络中的节点对区块中的每个交易执行以下验证操作:通过交易中的客户端数字证书验证交易中的客户端数字签名;通过交易的节点数字证书验证交易中的节点数字签名;验证交易符合背书策略。
163.在一些实施例中,参见图6b,图6b是本发明实施例提供的区块链网络的证书处理方法的流程示意图,通过区块链网络的节点对区块进行共识之前,还可以在步骤108中,通过区块链网络中的节点接收客户端提交的交易提案;在步骤109中,基于背书策略对交易提案进行(背书)验证,当验证通过时,向客户端返回提案响应;其中,提案响应包括:交易结果、背书策略验证通过的节点的数字证书、以及背书策略验证通过的节点针对交易结果的数字签名,以使客户端收到交易提案时,在步骤110中,将交易提案和提案响应构造为交易,并向区块链网络中的节点提交构造的交易。
164.在步骤102中,当共识通过时从区块的交易中提取数字证书,并将数字证书存储到节点的数据库中。
165.在一些实施例中,当共识通过时从区块的交易中提取数字证书,将数字证书存储到节点的数据库中,包括:当共识通过时从区块中的每个交易中提取提交交易的客户端的数字证书、以及针对交易进行背书的节点的数字证书;将提取的数字证书的键值对存储在节点的数据库中,例如专用的证书数据库,或节点用于存储账本状态的状态数据库;其中,
键值对中的键为提取的数字证书的哈希值,键值对中的值为提取的数字证书的二进制数据。
166.需要指出,上文所述的步骤是区块链网络从交易中收集数字证书到节点的数据库的证书收集节点,下文所述的步骤是区块链网络基于证书数据库对后续接收的交易进行裁剪(即缩小体积)的处理过程。
167.在步骤103中,通过区块链网络的节点接收客户端提交的交易。
168.在一些实施例中,如图6b所示,通过区块链网络的节点接收客户端提交的交易之前,还可以在步骤111中,通过区块链网络中的节点接收客户端提交的交易提案,在步骤112中,当接收交易提案的节点在本地的数据库中查询到自身的数字证书、且基于背书策略验证交易提案通过时,确定为交易背书并向客户端返回提案响应。
169.其中,提案响应包括:交易结果、为交易背书的节点的数字证书的哈希值、为交易背书的节点针对交易结果的数字签名,以使客户端接收到提案响应时,在步骤113中,将交易提案和提案响应构造为交易,以在步骤103中向区块链网络中的节点提交封装的交易。
170.在步骤104中,当从数据库中查询到提交的交易中的数字证书时,将提交的交易中的数字证书替换为对应的哈希值。
171.例如,区块的每个交易中包括客户端数字证书和节点数字证书,通过在数据库中查询相应的哈希值并替换交易中的数字证书。
172.在步骤105中,通过区块链网络中的节点将经过替换处理的交易构造为新区块。
173.在一些实施例中,通过区块链网络中的节点,对客户端封装并提交的交易按照接收的先后顺序进行排序以构造为新区块后,如图6b所示,在步骤114中,将构造的新区块在区块链网络中广播,以使接收到构造的新区块的节点进行共识。
174.在步骤106中,当通过区块链网络的节点对新区块进行共识时,从新区块的交易中提取哈希值,从节点的数据库中查询哈希值对应的数字证书。
175.在一些实施例中,从新区块的交易中提取哈希值,从节点的数据库中查询哈希值对应的数字证书,包括:从新区块中的每个交易中提取提交交易的客户端的数字证书的哈希值、以及为节点背书的节点的数字证书的哈希值;通过提取的哈希值,从节点的数据库中查询提交交易的客户端的数字证书、以及为交易背书的节点的数字证书。
176.在一些实施例中,如图6b所示,还可以在步骤115中,在节点的缓存中存储使用频率高于频率阈值的数字证书的键值对;例如,确定节点在区块链网络中所加入的各个通道中交易的数字证书被使用的频率;将每个通道中使用频率高于频率阈值的数字证书存储到节点本地的缓存中。相应地,从节点的数据库中查询哈希值对应的数字证书之前,还可以在步骤116中对新区块进行共识时,从节点的缓存中查询哈希值对应的数字证书;当未查找到时,再从节点的数据库中查询哈希值对应的数字证书。从而减少数据库访问,提升数字证书的处理效率。
177.在步骤107中,利用查询到的数字证书对新区块中的交易进行验证。
178.在一些实施例中,利用查询到的数字证书对新区块中的交易进行(共识)验证,包括:通过区块链网络中的节点对区块中的每个交易执行以下验证操作:通过节点的根证书验证为交易背书的节点的数字证书;验证通过时从为交易背书的节点的数字证书中,提取为交易背书的节点的公钥,通过所提取的公钥验证交易中的节点数字签名;通过节点的根
证书验证为交易背书的节点的数字证书;验证通过时从为交易背书的节点的数字证书中,提取为交易背书的节点的公钥,通过所提取的公钥验证交易中的节点数字签名。此外,通过区块链网络中的节点对区块中的每个交易执行验证操作时,还可以验证区块中的交易格式正确;验证为交易背书的节点加入交易中所指示的接收交易的通道;验证交易符合背书策略。
179.节点对新区块共识通过时,还会将区块追加到所记录的区块链的尾部,并利用区块中交易的交易结果(读写集)利用区块中各个交易的交易结果更新账本数据库。
180.本发明实施例通过复用区块链中交易中的证书,减小区块链体积的区块链网络,同时使得单个区块中可以存储的有效交易数量变多,进而提高了区块链网络的吞吐量。需要指出,本发明实施例提供的方案适用于任意使用证书来进行身份验证的区块链网络。
181.本发明实施例提供的技术方案的基本流程是:1)交易被提交到区块链网络时,由区块链网络中的节点达成共识后,统一提取区块的交易中的数字证书,保存在节点本地的证书数据库(例如可以是状态数据库)中;2)对于区块链网络里面后续接收的交易,节点查询本地的证书数据库,如果发现交易中的数字证书已经存在,就使用数字证书的哈希值来替换交易中相应的证书。由于证书的体积远超过交易数据本身,比如x509证书一般是800字节以上,而一笔普通的交易的体积一般在100字节以内,所以对交易中的数字证书进行替换后,使得在区块链网络中传播的交易的体积大大减小;而且由于区块链网络中节点本地的证书数据库的数字证书记录是在共识阶段生成的,可以保证一致性,区块链网络里面的节点在共识阶段对交易进行验证时,可以根据从交易中提取的哈希值来查询证书数据库中对应的数字证书,进而通过数字证书来验证交易,交易的安全性得以保证。为了提高性能,对于常用的数字证书可以使用节点的内存来缓存以实现数字证书的快速速度,从而提高共识阶段对交易的处理效率。
182.下面结合一个具体的区块链网络说明本发明实施例提供的证书处理方案。
183.参见图7,图7是本发明实施例提供的区块链交易流程中提取交易的数字证书的流程示意图,结合图7进行说明。
184.图7示出了加入区块链网络的3个组织(组织0、组织1和组织2),每个组织的成员在区块链网络中都拥有多个peer节点(即记账节点,图7中仅针对每个组织示例性示出了1个peer节点)。以客户端向组织0的通道发起交易为例说明证书的提取过程,对于向组织1和组织2的处理过程是类似的。
185.客户端发起一笔交易提案到区块链网络中组织0的具有背书功能的peer节点(也称为背书节点),交易提案包含交易号(记为txid)、客户端的数字证书(记为clientcert)、交易数据和客户端针对交易数据(记为data)的数字签名。交易提案还包括生成交易提案的时间戳。
186.组织0中的各个具有背书功能的peer0节点根据背书策略对交易提案进行验证,验证通过后,在交易提案里面增加peer0节点的数字证书(记为peercer t)、针对模拟执行交易数据得到的交易结果的数字签名,作为提案响应发送给客户端。提案响应中还包括生成提案响应的时间戳。
187.客户端收集到组织0中足够数量的具有背书功能的peer节点返回的签名的提案响应后,将交易提案和提案响应构造为交易(记为tx),并发送给区块链网络中的排序节点
(orderer),其中,交易包括交易号、客户端针对交易数据的数字签名、客户端的数字证书、peer节点的数字证书和peer节点针对交易结果的数字签名。
188.对于从客户端接收的交易,排序节点会对交易排序(例如,按照交易提案或交易响应的时间戳进行排序),并打包成一个区块(包含多个交易),发送给组织0中所有的peer节点;组织0中的peer节点和排序节点会对区块进行共识,在共识过程中,会验证每个交易中的数字证书和数字签名,当验证通过后,将区块追加到本地的区块链的尾部,并根据交易结果更新状态数据库;同时,提取区块中所有交易中的数字证书(包括peercert和clientcert),形成键值对,是数字证书的哈希值(hash),值是数字证书(也即是数字证书的二进制数据),键值对表示为:key=hash(cert),value=cert,并保存在本地的证书数据库(例如状态数据库)。
189.上述的过程会重复执行,从而区块链网络中的peer节点和排序节点可以全面收集客户端和其他节点的数字证书。下面,假设各个节点已经在各自的证书数据库中收集了足够的客户端和其他节点(包括peer节点和排序节点)的数字证书,说明根据证书数据库对后续提交到区块链网络的交易的处理过程、以及在这个处理过程中对交易的裁剪处理。
190.参见图8,图8是本发明实施例提供的区块链网络的交易过程中进行交易裁剪的流程示意图,结合图8示出的步骤进行说明。
191.客户端向组织0中具有背书功能的peer节点(也称为背书节点)发起一笔交易提案,交易提案包含交易号、客户端的证书(记为clientcert)、交易数据和客户端针对交易数据的数字签名;还包括提交交易提案的时间戳。
192.组织0中具有背书功能的各个peer节点(即背书节点)根据背书策略交易提案验证通过后,查询本地证书数据库db,发现peer0节点本地的peercert已经以键值对的形式存在,在交易提案里面增加自己的证书peercert的hash和针对交易结果的数字签名,作为提案响应发送给客户端。
193.客户端收集到足够数量的具有背书功能的peer节点签名的交易提案后,将交易提案和提案响应构造为交易,交易中包括交易号(记为txid)、客户端的数字证书(记为clientcert)、交易数据和客户端针对交易数据(记为data)的数字签名。交易提案还包括生成交易提案的时间戳。
194.客户端将构造的交易发送排序节点,排序节点对接收的多个交易进行预处理,查询本地证书数据库发现交易中的客户端数字证书已经存在对应的键值对,在交易中使用客户端数字证书的哈希值替换客户端数字证书,对预处理后的交易排序生成一个新区块(包含多个交易),发送给组织0中所有的peer节点。
195.组织0中的peer节点接收到新区块后,对新区块中的交易共识的验证,在验证过程中,发现交易中携带了数字证书的哈希值,就从本地的证书数据库中查询对应的数字证书,包括客户端的数字证书、针对交易背书的peer节点的数字证书,并利用数字证书完成交易的验证,在验证通过后,将区块追加到peer节点本地的区块链的尾部,并根据交易的交易结果更新状态数据库。
196.本发明实施例提供的证书处理方案应用在联盟链中,对于一个包含100笔交易的区块,实验数据对比如下表1所示,在采用不同的背书策略的情况下,区块的体积都减少了80%以上。
[0197][0198]
表1
[0199]
下面继续说明本发明实施例提供的区块链网络的证书处理装置655实施为软件模块的示例性结构,在一些实施例中,如图5所示,存储在存储器650中的区块链网络的证书处理装置655中的软件模块可以包括证书提取模块6551和交易裁剪模块6552,下面分别进行说明。
[0200]
证书提取模块6551,用于:通过区块链网络的节点对区块进行共识,当共识通过时从区块的交易中提取数字证书,并将数字证书存储到节点的数据库中;
[0201]
交易裁剪模块6552,用于:通过区块链网络的节点接收客户端提交的交易,当从数据库中查询到提交的交易中的数字证书时,将提交的交易中的数字证书替换为所对应提取的数字证书的哈希值;通过区块链网络中的节点将经过替换处理的交易构造为新区块;当通过区块链网络的节点对新区块进行共识时,从新区块的交易中提取哈希值,从节点的数据库中查询哈希值对应的数字证书,以及利用查询到的数字证书对新区块中的交易进行验证。
[0202]
在一些实施例中,证书提取模块6551,还用于:通过区块链网络中的节点对区块中的每个交易执行以下验证操作:通过交易中的客户端数字证书验证交易的客户端数字签名;通过交易的节点数字证书验证交易中的节点数字签名;验证区块中的交易符合背书策略。
[0203]
在一些实施例中,证书提取模块6551,还用于:通过区块链网络的节点接收客户端提交的交易之前,通过区块链网络中的节点接收客户端提交的交易提案;基于背书策略对交易提案进行验证,当验证通过时,向客户端返回提案响应;其中,提案响应包括:交易结果、背书策略验证通过的节点的数字证书、以及背书策略验证通过的节点针对交易结果的数字签名,以使客户端收到交易提案时,将交易提案和提案响应构造为交易,并向区块链网络中的节点提交构造的交易。
[0204]
在一些实施例中,证书提取模块6551,还用于:通过区块链网络中的节点,对客户端构造并提交的交易按照接收的先后顺序进行排序以构造为区块,并将构造的区块在区块链网络中进行广播,以使接收到构造的区块的节点进行共识。
[0205]
在一些实施例中,证书提取模块6551,还用于:当共识通过时从区块中的每个交易中提取提交交易的客户端的数字证书、以及针对交易进行背书的节点的数字证书;将提取的数字证书的键值对存储在节点的数据库中;其中,键值对中的键为提取的数字证书的哈希值,键值对中的值为提取的数字证书的二进制数据。
[0206]
在一些实施例中,交易裁剪模块6552,还用于:通过区块链网络的节点对新区块进行共识之前,通过区块链网络中的节点接收客户端提交的交易提案,当接收交易提案的节点在本地的数据库中查询到自身的数字证书、且基于背书策略验证交易提案通过时,确定为交易背书并向客户端返回提案响应;其中,提案响应包括:交易结果、为交易背书的节点的数字证书的哈希值、为交易背书的节点针对交易结果的数字签名,以使客户端接收到提案响应时,将交易提案和提案响应构造为交易,并向区块链网络中的节点提交封装的交易。
[0207]
在一些实施例中,交易裁剪模块6552,还用于:通过区块链网络中的节点,对客户端封装并提交的交易按照接收的先后顺序进行排序以构造为新区块,并将构造的新区块广播到区块链网络中,以使接收到构造的新区块的节点进行共识。
[0208]
在一些实施例中,交易裁剪模块6552,还用于:从新区块中的每个交易中提取提交交易的客户端的数字证书的哈希值、以及为节点背书的节点的数字证书的哈希值;通过提取的哈希值,从节点的数据库中查询提交交易的客户端的数字证书、以及为交易背书的节点的数字证书。
[0209]
在一些实施例中,交易裁剪模块6552,还用于:通过区块链网络中的节点对区块中的每个交易执行以下验证操作:通过节点的根证书验证为交易背书的节点的数字证书;验证通过时从为交易背书的节点的数字证书中,提取为交易背书的节点的公钥,通过公钥验证交易中的节点数字签名;通过节点的根证书验证为交易背书的节点的数字证书;验证通过时从为交易背书的节点的数字证书中,提取为交易背书的节点的公钥,通过公钥验证交易中的节点数字签名。
[0210]
在一些实施例中,交易裁剪模块6552,用于:通过区块链网络中的节点对区块中的每个交易执行验证操作时,验证区块中的交易格式正确;验证为交易背书的节点加入交易中所指示的接收交易的通道;验证交易符合背书策略。
[0211]
在一些实施例中,证书提取模块6551,还用于:在节点的缓存中存储查询频率高于频率阈值的数字证书的键值对;从节点的缓存中查询哈希值对应的数字证书;当未查找到时,从节点的数据库中查询哈希值对应的数字证书。
[0212]
在一些实施例中,证书提取模块6551,还用于:确定节点在区块链网络中所加入的各个通道中交易的数字证书被查询的频率;将每个通道中使用频率高于频率阈值的数字证书存储到节点本地的缓存中。
[0213]
本发明实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的方法,例如,如图3、图6a、图6b、图7和图8任一附图示出的区块链网络的证书处理方法。
[0214]
在一些实施例中,存储介质可以是fram、rom、prom、eprom、ee prom、闪存、磁表面存储器、光盘、或cd

rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0215]
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0216]
综上所述,本发明实施例通过证书复用的方式,对于交易里面出现的证书,内节点之间共识之后把证书的哈希值和数字证书二进制数据信息组合为键值对存储在区块链网络节点本地的证书数据库,这样后面所有交易中的数字证书都会被替换成对应的哈希值,
交易验证的时候从节点本地获取哈希值对应的数字证书来校验,从而减小了交易和区块的体积大小。适用于所有联盟链的场景,还有使用数字证书作为身份验证的任意区块链网络,而且从根本上减小每个区块的体积,同时可以提高整个区块链网络的吞吐量。
[0217]
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献