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

区块链交易池实现方法、装置、计算机设备和存储介质与流程

2022-02-19 05:19:07 来源:中国专利 TAG:


1.本技术涉及网络通信技术领域,特别是涉及一种区块链交易池实现方法、装置、计算机设备和存储介质。


背景技术:

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.图1为一个实施例中区块链交易池实现方法的应用环境图;
56.图2为一个实施例中区块链交易池实现方法的流程示意图;
57.图3为一个实施例中共识节点各个交易轮次生成的交易块的结构示意图;
58.图4为一个实施例中生成交易块步骤的流程示意图;
59.图5为一个实施例中生成仲裁证书步骤的流程示意图;
60.图6为一个实施例中验证交易块步骤的流程示意图;
61.图7为一个实施例中验证交易块有效性步骤的流程示意图;
62.图8为一个实施例中交易块有效性证明过程中的交易同步步骤的流程图;
63.图9为一个实施例中仲裁证书共识步骤的流程示意图;
64.图10为一个实施例中仲裁证书验证步骤的流程示意图;
65.图11为一个实施例中仲裁证书引用路径上的全部交易块的示意图;
66.图12为一个实施例中区块链交易池实现装置的结构框图;
67.图13为一个实施例中计算机设备的内部结构图。
具体实施方式
68.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
69.本技术提供的区块链交易池实现方法,可以应用于如图1所示的区块链系统100的任一共识节点(例如共识节点102)中。其中,区块链系统中的各共识节点间通过网络进行通信。共识节点102接收由客户端发送的交易数据,生成包含交易数据的摘要信息和交易属性
信息的交易块。然后共识节点102将交易块广播至区块链系统中的其他共识节点104,指示其他共识节点104对交易块进行验证。接收其他共识节点104反馈的交易块确认信息,生成包含交易块确认信息的仲裁证书。最后,共识节点102将仲裁证书广播至其他共识节点104,并接收来自其他共识节点104在本轮次的交易有效性证明过程所生成的仲裁证书,直至接收到的仲裁证书的数目到达预设数目时,确定区块链系统中本轮次交易有效性证明结束,触发进入下一轮次交易块的生成过程。
70.其中,区块链系统中的共识节点可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑等,也可以是独立的服务器或者是由多个服务器组成的服务器集群来实现,本技术实施例不做限定。
71.在一个实施例中,如图2所示,提供了一种区块链交易池实现方法,以该方法应用于区块链系统中的任一共识节点为例进行说明,包括以下步骤:
72.步骤202,接收交易数据,生成包含交易数据的摘要信息和交易属性信息的交易块。
73.具体地,区块链系统中包含多个共识节点,每一共识节点都可以进行交易数据的有效性证明和验证。因此,在区块链系统中,任意一个共识节点,均可以基于本地交易池中的交易数据,发起交易有效性证明提案。
74.在实施中,区块链系统中的每一共识节点接收各自客户端发送的交易数据,然后,各共识节点之间通过网络通信传输交易数据实现各共识节点的交易池中交易数据的初始同步。例如,每一共识节点在接收到客户端发送的交易数据后,将交易数据存储至本地交易池中,并以广播的方式将交易数据发送至其他共识节点,以完成交易数据的初始同步。
75.继而,基于初始同步后的交易数据,区块链系统中的任意一个共识节点根据本地交易池中的交易数据,提起交易有效性证明提案,即生成包含本地交易池中的交易数据的摘要信息和交易属性信息的交易块。其中,如图3所示,交易块的数据结构中包含交易属性信息,该交易属性信息可以但不限于包括:交易块创建者签名s,当前交易轮次数r,交易块的交易列表和上一轮的仲裁证书列表。为了进一步减少带宽,交易块的交易列表中仅包含交易哈希摘要(简称为交易摘要)。图3中即为共识节点a、b、c、d分别在第r

1、r和第r 1轮创建的交易块,非恶意的共识节点在每轮的交易有效性证明提案中均只会创建一个交易块。
76.可选的,每个共识节点不局限于单个计算机的资源,可以启用多个工作节点接收来自客户端的交易数据,因此,每个共识节点又可以划分为多个工作节点,在一个共识节点启用的多个工作节点中包含工作主节点和其他工作节点,基于此,在共识节点的多个工作节点接收交易数据时,交易数据可以被分离为元数据和交易值数据,共识节点中的工作主节点负责接收其他工作节点提交的元数据块,并将该元数据块打包成交易元数据块广播给区块链中的其他共识节点,其他共识节点其中的多个工作节点中的工作主节点负责接收该交易元数据块,进行交易元数据块的同步。
77.当其他共识节点的工作主节点缺失相关的交易数据(元数据和交易值数据)时,该共识节点中的工作主节点指示自身其他工作节点通过同步的交易元数据块从交易块创建者的工作节点中拉取完整交易数据。
78.采用本方法,通过负责均衡机制保证交易数据在每一共识节点的工作节点中均衡分布,进一步降低每一共识节点其内部工作主节点的带宽以及内存的消耗。
79.步骤204,将交易块广播至区块链系统中的其他共识节点,指示其他共识节点对交易块进行验证。
80.在实施中,创建交易块的共识节点(为了便于描述,可以称为共识节点a)将交易块广播至区块链系统中的其他共识节点,指示其他共识节点对交易块进行交易验证,以完成基于交易池协议的交易块有效性证明。
81.步骤206,接收其他共识节点反馈的交易块确认信息,生成包含交易块确认信息的仲裁证书。
82.其中,交易块确认信息可以但不限于为其他共识节点的签名消息。
83.在实施中,区块链系统中的其他共识节点对共识节点a发送的交易块进行验证,验证通过后会给共识节点a反馈交易块确认信息,当共识节点a接收到目标数目个交易块确认信息之后,共识节点a生成包含交易块确认信息的仲裁证书(也称为quorum cert,qc证书)。
84.步骤208,将仲裁证书广播至其他共识节点,并接收来自其他共识节点在本轮次的交易有效性证明过程所生成的仲裁证书,直至接收到的仲裁证书的数目到达预设数目时,确定区块链系统中本轮次交易有效性证明结束,触发进入下一轮次交易块的生成过程。
85.在实施中,共识节点a将仲裁证书广播至其他共识节点,以使全网区块链对仲裁证书指向的交易块的有效性证明结果进行全局有效性证明。同时,由于区块链系统中任一共识节点都可以发起交易块有效性证明提案,因此,在同一交易有效性证明轮次下,全网区块链系统中除共识节点a之外的其他共识节点也发起了交易块有效性证明提案,进而也生成了对应的仲裁证书,并进行全网广播。故共识节点a接收来自其他共识节点在本轮次的仲裁证书,直至接收到的仲裁证书的数目到达预设数目(quorum,法定人数)时,表明全网区块链系统中大部分共识节点完成本轮交易有效性证明,共识节点a确定自身本轮交易有效性证明结束,触发进入下一轮次交易块的生成过程。
86.上述区块链交易池实现方法中,区块链系统中的任一共识节点都可以创建交易块并发起交易有效性证明提案,在提案后通过生成包含其他共识节点签名信息的仲裁证书的方式实现交易数据的有效性证明,降低区块链系统中节点带宽和内存消耗的压力,提高交易共识效率。
87.在一个实施例中,如图4所示,步骤202中共识节点生成交易块的具体处理过程包括如下步骤:
88.步骤402,接收从客户端发送的交易数据,将交易数据按批次存储至本地交易池中。
89.在实施中,共识节点a在本地维护当前交易轮次r下的交易属性信息,其中,当前交易轮次r的计数原则为自然数的累加(例如,0、1、2、3

),交易轮次数自初始交易轮次数0开始,每开展一轮新的交易数据有效性证明,交易轮次数进行一次累加。同时,共识节点a接收从客户端发送的本轮次交易数据,并将该交易数据按批次存储至本地交易池中。
90.可选的,共识节点a将存储至本地交易池中的本轮次交易数据通过网络发送至其他共识节点,并存储至其他共识节点对应的交易池中,实现交易数据的初始同步,后续进行交易块有效性证明过程中,若交易数据缺失,进行交易数据的二次同步。
91.步骤404,读取预先存储的当前交易轮次的交易属性信息以及本地交易池中交易数据的交易摘要,生成包含交易摘要和交易属性信息的交易块。
92.在实施中,共识节点a读取在本地交易池中维护的当前交易轮次的交易属性信息以及本地交易池中交易数据的交易摘要(摘要哈希值),生成包含交易摘要(摘要哈希值)和交易属性信息的交易块。其中,交易属性信息用于标识交易块,交易摘要用于生成交易块中对应的交易列表。
93.其中,为了减少带宽,交易列表中仅存储有交易摘要的哈希值,可选的,也可以通过merkle tree计算根哈希的方式来代替交易哈希列表,以此来降低主工作节点提交新的交易块的大小。每个共识节点可以启用多个工作节点来提高交易数据吞吐量,然后,以批次的形式生成多批交易的根哈希,并组合成交易块。
94.在一个实施例中,如图5所示,步骤206的具体处理过程包括:
95.步骤502,接收交易确认信息。
96.其中,每一交易确认信息为其他共识节点在交易块验证通过后反馈的签名消息。
97.在实施中,共识节点a接收来自其他共识节点对于该交易块的交易确认信息。
98.步骤504,当接收到的交易确认信息的数目满足预设数目阈值时,生成包含预设数目的交易确认信息的仲裁证书。
99.在实施中,当接收到的交易确认信息的数目满足预设数目阈值(quorum,法定人数)时,表示区块链系统中的绝大部分(法定人数)共识节点验证通过该交易块,进而,将接收到的预设数目阈值个交易确认信息生成当前轮次r的仲裁证书。
100.在一个实施例中,预设数目阈值由区块链系统中包括的共识节点总数目、恶意节点数目根据预设的属性关系确定出的。
101.其中,恶意节点为共识节点中具有恶意攻击行为的节点。
102.在实施中,上述实施例中提到的预设数目阈值(quorum)个交易确认信息,预设数目个仲裁证书,其中的预设数目(quorum)的计算公式如下所示:
[0103][0104]
其中,n表示节点总数目,f表示恶意节点数目,n≥3f 1,因此,quorum≥2f 1。
[0105]
在一个实施例中,如图6所示,该方法还包括:
[0106]
步骤602,接收由其他交易块创建节点发送的待验证的交易块。
[0107]
其中,其他交易块创建节点为区块链系统中创建交易块的其他共识节点。
[0108]
在实施中,共识节点a接收由其他交易块创建节点发送的待验证的交易块,以对该交易块进行验证。具体的,由于区块链系统中任一共识节点均可以发起交易块有效性证明提案,因此,在一轮交易有效性证明过程中,共识节点a创建交易块发起交易块有效性证明的同时,区块链系统中的其他共识节点也创建交易块,发起交易块有效性证明。因此,共识节点a不仅可以充当交易块的创建者,还充当交易块的验证者。
[0109]
步骤604,根据预设的有效性检验规则,确定交易块的有效性。
[0110]
在实施中,共识节点a根据预设的有效性检验规则,确定交易块的有效性。其中,该有效性检验规则基于交易属性信息建立,用于判别交易块的有效性,以在交易块有效的情况下进行后续交易块内容的验证。
[0111]
步骤606,若交易块有效,读取交易块中交易摘要列表包含的交易信息,在本地交易池中获取交易信息对应的交易数据,并进行交易数据的验证。
[0112]
在实施中,若验证交易块有效,则共识节点a读取交易块中交易摘要列表中包含的交易信息,在本地交易池中获取交易信息对应的交易原始数据(即初始同步后存储在本地交易池中的交易数据),然后对交易数据进行验证。
[0113]
步骤608当交易数据验证通过时,向其他交易块创建节点反馈交易确认信息。
[0114]
其中,交易确认信息为签名消息。
[0115]
在实施中,当交易数据验证通过时,共识节点a向其他交易块创建节点反馈交易确认信息,该交易确认信息表示对该交易块所对应的交易数据验证通过。
[0116]
在一个实施例中,如图7所示,步骤604中基于有效性检验规则,进行交易块有效性验证的具体处理过程包括:
[0117]
步骤702,读取交易块中的交易属性信息,判别交易属性信息中交易轮次数与当前所处交易轮次的一致性。
[0118]
在实施中,共识节点a读取交易块中的交易属性信息,判别交易属性信息中包含的交易轮次数与当前所处交易轮次的一致性。例如,该交易块的交易属性信息中包含的交易轮次数为r,当前全网区块链系统中所处的交易轮次也为r,则表示该交易块中的交易轮次数正确。否则,则判定当前交易块无效。
[0119]
步骤704,识别交易属性信息中是否携带有其他交易块创建节点的签名信息以及上一轮次仲裁证书。
[0120]
在实施中,由于交易块的创建过程中,需要交易块创建节点进行签名认证并且需要将上一轮交易的仲裁证书累加到新的交易块中,保证交易块中各轮交易的仲裁证书的引用关系,因此,当前作为验证者的共识节点a可以识别该交易块的交易属性信息中是否携带有其他共识节点(作为交易块创建节点)的签名信息以及上一轮次仲裁证书。
[0121]
步骤706,判别交易块是否为当前所处交易轮次的第一个交易块。
[0122]
在实施中,由于区块链系统中的非恶意节点在一轮交易有效性证明过程中只创建一个交易块,因此,当前作为验证者的共识节点a可以判别交易块是否为当前所处交易轮次的第一个交易块,以此判别交易块的有效性。
[0123]
可选的,由于非恶意节点在一轮交易有效性证明过程中只创建一个交易块,因此,该条交易条件对应的交易块有效性检验规则也可以制定为在预设时间内有且只有一个交易块,以此验证当前交易块的有效性。
[0124]
步骤708,若交易轮次数与当前所处交易轮次一致,交易属性信息中携带有其他交易块创建节点的签名信息以及上一轮次仲裁证书,并且交易块是当前所处交易轮次的第一个交易块,则确定交易块有效。
[0125]
在实施中,经过上面的有效性检验规则进行检验,具体为若交易轮次数与当前区块链系统所处交易轮次一致,交易块的交易属性信息中携带有该交易块创建者的签名信息以及包含上一轮次交易有效性证明产生的仲裁证书,并且该交易块也是其交易块创建节点当前所处交易轮次的第一个交易块,则确定该交易块有效。
[0126]
在一个实施例中,如图8所示,在步骤606中的在本地交易池中获取交易信息对应的交易数据之前,该方法还包括:
[0127]
步骤802,根据交易信息,在本地交易池中识别交易信息对应的交易数据。
[0128]
在实施中,共识节点a的交易池中除了存储有自身客户端发送的交易数据之外,还
存储有在初始同步过程中,其他共识节点广播发送的交易数据。因此,当作为交易验证者的共识节点a需要对接收到的交易块进行验证时,共识节点a根据交易块中的交易信息,在本地交易池中查找识别交易信息对应的交易数据。
[0129]
若共识节点a在本地交易池中识别到对应的交易数据,表明在交易数据初始同步过程中,共识节点a与交易块创建节点间完成交易数据同步,则共识节点a基于本地交易池中的交易数据进行验证。
[0130]
步骤804,若在本地交易池中未识别到交易信息对应的交易数据,则将交易数据确定为缺失交易数据。
[0131]
在实施中,若在本地交易池中未识别到交易信息对应的交易数据,表明在交易数据的初始同步过程中,未同步该交易数据,则共识节点a将该交易信息对应的交易数据确定为缺失交易数据。
[0132]
步骤806,向其他交易块创建节点或其他验证节点发送缺失交易数据请求,以从其他交易块创建节点或其他验证节点的交易池中获取缺失交易数据。
[0133]
其中,其他验证节点为已经对交易块验证通过的共识节点。
[0134]
在实施中,在区块链系统中,由于任一共识节点(也即交易块创建节点)均可以广播其创建的交易块,发起交易块有效性证明,因此,在一个共识节点发起自身创建的交易块的交易块有效性证明提案,同时其他共识节点也发起自身创建的交易块的有效性证明提案,进而,各共识节点之间又互相充当交易块的验证者,验证接收到的来自其他共识节点(即其他交易块创建节点)的交易块,当共识节点a验证来自其他交易块创建节点的交易块时,由于共识节点a的交易池中缺失该交易块中交易信息对应的交易数据,因此,共识节点a可以向该交易块的创建者发送缺失交易数据请求,获取交易原始数据,也可以向区块链系统中的已经验证通过该交易块的验证节点(区块链系统中作为验证者角色的其他共识节点)发送缺失交易数据请求,在其交易池中拉取该缺失交易数据。
[0135]
在一个实施例中,如图9所示,交易池协议在每一轮会对quorum(法定人数)个共识节点提交的交易块进行有效性证明,从而生成完整的有向无环图(dag,directed acyclic graph)结构,共识协议为了保证交易的一致性排列,需要对有向无环图的唯一路径进行共识,故首先根据预设的算法确定共识协议主节点,当共识节点(共识节点a)被确定为区块链系统中的共识协议主节点时,该方法还包括:
[0136]
步骤902,获取目标仲裁证书。
[0137]
其中,目标仲裁证书为本地存储的交易轮次数最高的仲裁证书。
[0138]
在实施中,共识协议主节点(共识节点a)在本地交易池中查询并获取目标仲裁证书。该目标仲裁证书应为当前交易轮次的证书,因此,目标仲裁证书所处的当前交易轮次应为全部仲裁证书中交易轮次数最高的,故可以以证书中的交易轮次数作为选取目标仲裁证书的筛选条件。
[0139]
步骤904,将目标仲裁证书广播至其他共识节点,指示其他共识节点对目标仲裁证书进行验证。
[0140]
在实施中,共识协议主节点基于该目标仲裁证书发起有效性证明提案,即将目标仲裁证书广播至其他共识节点,指示其他共识节点对该目标仲裁证书进行验证,以使其他共识节点获知该目标仲裁证书指向的交易块的有效性证明结果。
[0141]
步骤906,若接收到预设数目个其他共识节点反馈的仲裁证书确认信息,则将目标仲裁证书对应的全部交易块中的交易列表生成交易区块,并将交易区块提交至区块链系统。
[0142]
在实施中,若接收到预设数目(quorum)个其他共识节点反馈的该目标仲裁证书的仲裁证书确认信息,共识协议主节点基于目标仲裁证书中的引用关系,识别该目标仲裁证书的引用路径上的全部交易块(全部交易块包括交易块和历史交易块),并将目标仲裁证书对应的全部交易块中的交易列表生成交易区块,将交易区块提交至区块链系统。
[0143]
可选的,除了通过仲裁证书进行全网交易有效性证明之外,还可以采用安全共享的随机数(替代仲裁证书)来达成有效性证明,以此来保证共识协议在异步网络下仍能保持活性(即每一交易轮次更新一次随机数)。当前交易轮次中的各共识节点可以通过共享密钥来进行签名,并将其包含到当前轮次自身创建的交易块中,当共识节点从当前轮的交易块中收集quorum个签名后,将其聚合产生确定性的阈值签名,由此可以计算出安全可共享的随机数,并通过该随机数来确定提交的交易区块。
[0144]
在一个实施例中,如图10所示,步骤906中的将仲裁证书对应的全部交易块中的交易列表生成交易区块,并将交易区块提交至区块链系统的具体处理过程包括:
[0145]
步骤1002,获取目标仲裁证书中包含的交易引用关系,识别引用关系中交易块以及交易块对应的历史有效性证明过程中的历史交易块。
[0146]
在实施中,共识协议主节点获取目标仲裁证书中包含的交易引用关系(也称为引用路径),识别引用关系中交易块以及该交易块对应的前述历史有效性证明过程中的历史交易块。具体的,如图11所示,若当前为r 1轮交易轮次,则基于该r 1轮次的仲裁证书(目标仲裁证书qc
r 1,a
),获取该仲裁证书对应的引用路径,该引用路径上包含当前r 1轮仲裁证书指向的交易块(b
r 1,a
),也包含第r轮、第r

1轮

交易证书指向的历史交易块(b
r,a
、b
r,b
、b
r,d
、b
r

1,a
、b
r

1,b

)。
[0147]
步骤1004,根据交易块以及历史交易块包含的交易列表中的交易信息,进行去重排序处理,得到唯一排序标准的交易总列表,并将交易总列表作为交易区块提交至区块链系统。
[0148]
在实施中,共识协议主节点根据交易块以及历史交易块对应的交易摘要信息,进行去重排序处理,即删除掉各交易列表间重复的交易信息,按照交易信息的预设顺序进行排列,得到唯一排序标注的交易总列表,并将该交易总列表作为本轮次交易区块提交至区块链系统。
[0149]
应该理解的是,虽然图2、图4至10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图4至10中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0150]
在一个实施例中,如图12所示,提供了一种区块链交易池实现装置1200,包括:第一接收模块1210、广播模块1220、第二接收模块1230和生成模块1240,其中:
[0151]
第一接收模块1210,用于接收交易数据,生成包含交易数据的摘要信息和交易属性信息的交易块;
[0152]
广播模块1220,用于将交易块广播至区块链系统中的其他共识节点,指示其他共识节点对交易块进行验证;
[0153]
第二接收模块1230,用于接收其他共识节点反馈的交易确认信息,生成包含交易块确认信息的仲裁证书;
[0154]
生成模块1240,用于将仲裁证书广播至其他共识节点,并接收来自其他共识节点在本轮次的交易有效性证明过程所生成的仲裁证书,直至接收到的仲裁证书的数目到达预设数目时,确定区块链系统中本轮次交易有效性证明结束,触发进入下一轮次交易块的生成过程。
[0155]
采用本装置1200,区块链系统中的任一共识节点都可以创建交易块并发起交易有效性证明提案,在提案后通过生成包含其他共识节点签名信息的仲裁证书的方式实现交易数据的有效性证明,降低区块链系统中节点带宽和内存消耗的压力,提高交易共识效率。
[0156]
在其中一个实施例中,第一接收模块1210具体用于接收从客户端发送的交易数据,将交易数据按批次存储至本地交易池中;
[0157]
读取预先存储的当前交易轮次的交易属性信息以及本地交易池中交易数据的交易摘要,生成包含交易摘要和交易属性信息的交易块。
[0158]
在其中一个实施例中,第二接收模块1230具体用于接收交易确认信息,每一交易确认信息为其他共识节点在交易块验证通过后反馈的签名消息;
[0159]
当接收到的交易确认信息的数目满足预设数目阈值时,生成包含预设数目的交易确认信息的仲裁证书。
[0160]
在其中一个实施例中,预设数目阈值由区块链系统中包括的共识节点总数目、恶意节点数目根据预设的属性关系确定出的;恶意节点为共识节点中具有恶意攻击行为的节点。
[0161]
在其中一个实施例中,该装置1200还包括:
[0162]
接收模块,用于接收由其他交易块创建节点发送的待验证的交易块;其中,其他交易块创建节点为区块链系统中创建交易块的其他共识节点;
[0163]
确定模块,用于根据预设的有效性检验规则,确定交易块的有效性;
[0164]
验证模块,用于若交易块有效,读取交易块中交易摘要列表包含的交易信息,在本地交易池中获取交易信息对应的交易数据,并进行交易数据的验证;
[0165]
反馈模块,用于当交易数据验证通过时,向其他交易块创建节点反馈交易确认信息,交易确认信息为签名消息。
[0166]
在其中一个实施例中,确定模块具体用于读取交易块中的交易属性信息,判别交易属性信息中交易轮次数与当前所处交易轮次的一致性;
[0167]
识别交易属性信息中是否携带有其他交易块创建节点的签名信息以及上一轮次仲裁证书;
[0168]
判别交易块是否为当前所处交易轮次的第一个交易块;
[0169]
若交易轮次数与当前所处交易轮次一致,交易属性信息中携带有其他交易块创建节点的签名信息以及上一轮次仲裁证书,并且交易块是当前所处交易轮次的第一个交易
块,则确定交易块有效。
[0170]
在其中一个实施例中,该装置1200还包括:
[0171]
识别模块,用于根据交易信息,在本地交易池中识别交易信息对应的交易数据;
[0172]
确定模块,用于若在本地交易池中未识别到交易信息对应的交易数据,则将交易数据确定为缺失交易数据;
[0173]
发送模块,用于向其他交易块创建节点或其他验证节点发送缺失交易数据请求,以从其他交易块创建节点或其他验证节点的交易池中获取缺失交易数据。其中,其他验证节点为已经对交易块验证通过的共识节点。
[0174]
在其中一个实施例中,该装置1200还包括:
[0175]
获取模块,用于获取目标仲裁证书,目标仲裁证书为本地存储的交易轮次数最高的仲裁证书;
[0176]
广播模块,用于将目标仲裁证书广播至其他共识节点,指示其他共识节点对目标仲裁证书进行验证;
[0177]
生成提交模块,用于若接收到预设数目个其他共识节点反馈的仲裁证书确认信息,则将目标仲裁证书对应的全部交易块中的交易列表生成交易区块,并将交易区块提交至区块链系统。
[0178]
在其中一个实施例中,生成提交模块具体用于获取仲裁证书中包含的交易引用关系,识别引用关系中交易块以及交易块对应的历史有效性证明过程中的历史交易块;
[0179]
根据交易块以及历史交易块包含的交易列表中的交易信息,进行去重排序处理,得到唯一排序标准的交易总列表,并将交易总列表作为交易区块提交至区块链系统。
[0180]
关于交易数据有效性证明装置的具体限定可以参见上文中对于交易数据有效性证明方法的限定,在此不再赘述。上述交易数据有效性证明装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0181]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图13所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、运营商网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种交易数据有效性证明方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0182]
本领域技术人员可以理解,图13中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0183]
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储
有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
[0184]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
[0185]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read

only memory,rom)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。
[0186]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0187]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
再多了解一些

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

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

相关文献