区块链交易池数据处理方法、服务器与流程

文档序号:32127922发布日期:2022-11-09 08:47阅读:42来源:国知局
区块链交易池数据处理方法、服务器与流程

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.第三方面,本技术实施例提供了一种服务器,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一项区块链交易池数据处理方法的步骤。
56.第四方面,本技术实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,上述计算机程序被处理器执行时实现上述任一项区块链交易池数据处理方法的步骤。
57.第五方面,本技术实施例提供了一种计算机程序产品,当计算机程序产品在服务器上运行时,使得服务器执行上述任一项区块链交易池数据处理方法。
58.本技术实施例与相关技术相比存在的有益效果是:每个节点在接收到交易数据时,只对来自用户端的交易数据进行广播,不对来自其他节点的交易数据进行广播,可以极大地减少被广播的数据量,可以有效防止广播风暴。
59.可以理解的是,上述第二方面至第五方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
60.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
61.图1是本技术一实施例提供的区块链交易池数据处理方法的流程示意图;
62.图2是本技术一实施例提供的对交易池中交易数据进行管理的流程示意图;
63.图3是本技术另一实施例提供的对交易池中交易数据进行管理的流程示意图;
64.图4是本技术一实施例提供的区块链交易池数据处理装置的结构示意图;
65.图5是本技术一实施例提供的服务器的结构示意图。
具体实施方式
66.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本技术实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本技术。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本技术的描述。
67.应当理解,当在本技术说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
68.还应当理解,在本技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
69.如在本技术说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0070]
另外,在本技术说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0071]
在本技术说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0072]
为了说明本技术的技术方案,下面通过以下实施例来进行说明。
[0073]
继续参阅图1,本技术实施例提供一种区块链交易池数据处理方法,包括:
[0074]
步骤101,在目标节点接收到目标交易数据时,确定目标交易数据的来源。
[0075]
其中,来源包括:与目标节点通信连接的用户端、目标节点对应的目标区块链上的其它节点。上述用户端可以实现成终端也可以实现成服务器。上述用户端可以有一个也可以有多个。实际应用中,上述用户端通常有多个。
[0076]
其中,上述目标节点可以是目标区块链上的任一节点。上述目标区块链可以是各种区块链。实践中,上述目标区块链通常是中继链。
[0077]
上述目标交易数据通常是目标节点在当前时刻接收到的交易数据。
[0078]
在本实施例中,上述区块链交易池数据处理方法的执行主体通常为上述目标区块链,具体可以为上述目标区块链上的各个节点,如,可以是上述目标节点。实际应用中,每个节点可以实现成终端也可以实现成服务器。
[0079]
实践中,目标节点可以通过网络接收到上述目标交易数据。目标节点在接收到上述目标交易数据时,可以通过判断接收到目标交易数据的数据接口,来确定上述目标交易数据的来源。实际应用中,若接收到上述目标交易数据的数据接口为api接口(application programming interface,应用程序编程接口),则目标节点可以确定目标交易数据的来源为用户端。若接收到上述目标交易数据的数据接口为节点同步接口,则目标节点可以确定
目标交易数据的来源为目标区块链上的其它节点。其中,目标区块链上的各节点可以具有api接口和节点同步接口,api接口用于与用户端进行数据交互,以及节点同步接口用于与同一区块链上的其它节点进行数据交互。
[0080]
需要指出的是,在目标交易数据携带有用于指示数据来源的来源信息的情况下,目标节点可以直接采用目标交易数据所携带的来源信息,确定目标交易数据的来源。
[0081]
实践中,在确定目标交易数据的来源之后,目标节点可以给目标交易数据生成来源标签。作为一个示例,若目标交易数据的来源为用户端,则可以给该目标交易数据生成对应取值为“true”的来源标签。若目标交易数据的来源为其它节点,则可以给该目标交易数据生成对应取值为“false”的来源标签。这样,后续可以对交易池中的、不同来源的交易数据进行准确处理,有助于进一步提高对交易池数据的处理效率。
[0082]
步骤102,在目标交易数据的来源为用户端,将目标交易数据存入交易池,以及向其它节点广播目标交易数据。
[0083]
这里,在目标交易数据来自用户端的情况下,目标节点可以将该目标交易数据存入该目标节点的交易池中。
[0084]
另外,在将来自用户端的上述目标交易数据存入交易池之后,上述目标节点可以及时将该目标交易数据,向同一区块链上的其它节点广播。这样,同一区块链上的其它节点可以在接收到被广播的该目标交易数据后,执行相应的同步数据处理。
[0085]
在各个实施例的可选的实现方式中,上述将目标交易数据存入交易池,包括:在交易池中不存在目标交易数据的情况下,将目标交易数据存入交易池。
[0086]
这里,目标节点在将该目标交易数据存入该目标节点的交易池之前,可以先分析该交易池中,是否已经存在该目标交易数据。若不存在,则目标节点可以将该目标交易数据存入交易池,若存在,则可以将该目标交易数据舍弃。
[0087]
需要指出的是,针对相同的交易数据只存入一次,可以避免重复存储造成的资源浪费和潜在的双花问题,从而保障对交易池中的数据进行高效有序处理,从而有助于提高对交易池数据的处理效率。
[0088]
步骤103,在预设打包上链条件被触发的情况下,对交易池中的至少部分交易数据进行打包及上链存储。
[0089]
其中,上述预设打包上链条件通常是预先设定的用于触发对交易池中的交易数据进行打包上链的条件。
[0090]
实践中,上述预设打包上链条件可以包括但不限于以下至少一项:目标节点为目标区块链的主节点、交易池中当前适合上链存储的交易数据的量大于预设数目等。其中,上述预设数目通常是预先设定的数值,比如,可以为10。
[0091]
这里,在满足上述预设打包上链条件的情况下,目标节点可以将交易池中的部分或者是全部交易数据打包成区块,以及将打包得到的区块进行上链存储。
[0092]
本实施例提供的方法,每个节点在接收到交易数据时,只对来自用户端的交易数据进行广播,不对来自其他节点的交易数据进行广播,可以极大地减少被广播的数据量,可以有效防止广播风暴。
[0093]
在本实施例的一些可选的实现方式中,上述区块链交易池数据处理方法,还可以包括如下步骤:在目标交易数据的来源为其它节点,将目标交易数据存入交易池。
[0094]
这里,在上述目标交易数据来自其它节点的情况下,上述目标节点可以将来自其它节点的上述目标交易数据存入交易池。在将来自其它节点的上述目标交易数据存入交易池之后,上述目标节点无需对该目标交易数据进行广播,可以避免广播风暴。实践中,上述目标节点通常先分析交易池中是否已经存在该目标交易数据。若不存在,则目标节点可以将该目标交易数据存入交易池,若存在,则可以将该目标交易数据舍弃。这样,可以避免重复存储造成的资源浪费和潜在的双花问题。
[0095]
在本实施例的一些可选的实现方式中,区块链上各节点的交易池中,可以同时包括用于缓存来自用户端的交易数据的本地列表和用于缓存需要存入交易池的各交易数据的全局列表。
[0096]
此时,目标节点可以通过如下方式,实现将目标交易数据存入交易池:在目标交易数据的来源为用户端时,将目标交易数据存入交易池中的本地列表和全局列表,以及在目标交易数据的来源为其它节点时,将目标交易数据存入交易池中的全局列表。
[0097]
这里,上述目标节点可以根据目标交易数据的来源,将目标交易数据区分存入交易池中。具体地,若目标交易数据的来源为用户端,则将目标交易数据存入交易池的本地列表和全局列表,若目标交易数据的来源为其它节点,则将目标交易数据存入交易池的全局列表。
[0098]
需要指出的是,在某个交易数据的来源为用户端时,若目标节点接收到该交易数据,则目标节点为整个目标区块链上最早接收到该交易数据的节点,为了保障该交易数据被及时上链存储,目标节点需要及时将该交易数据通知到其它节点。
[0099]
这里,目标节点将对应来源为用户端的目标交易数据另外存入本地列表,可以方便对来着用户端的交易数据进行及时有效管理。本地列表主要负责及时将来自用户端的交易数据通知到其它节点,全局列表则主要负责将交易池中的各个来源的交易数据进行及时上链,本地列表与全局列表并行,有助于进一步提高对交易池数据的处理效率。
[0100]
在本实施例的一些可选的实现方式中,在将目标交易数据存入交易池之后,上述区块链交易池数据处理方法,还可以包括如下步骤:基于目标交易数据的来源,生成目标交易数据的时间参数。
[0101]
其中,时间参数包括以下至少一项:用于指示交易数据被存入交易池的时间的第一时间参数、用于指示交易数据被发起广播的时间的第二时间参数。
[0102]
实践中,在目标交易数据的来源为用户端时,目标节点可以给该目标交易数据生成第一时间参数和第二时间参数。在目标交易数据的来源为其它节点时,目标节点可以仅给该目标交易数据生成第一时间参数。
[0103]
给存入交易池中的目标交易数据生成时间参数,可以方便及时对目标交易数据进行处理,有助于提高对交易池数据的处理效率。另外,由于目标节点无需对来源为其它节点的目标交易数据进行广播,仅给来源为其它节点的目标交易数据生成第一时间参数即可,可以节约存储空间。
[0104]
在本实施例的一些可选的实现方式中,在交易池中的各交易数据对应有第一时间参数和/或第二时间参数的情况下,上述区块链交易池数据处理方法还可以包括如下步骤201-步骤202。
[0105]
图2为本技术实施例提供的对交易池中交易数据进行管理的流程示意图。
[0106]
步骤201,在本地列表中存在待重传数据时,将待重传数据向其它节点广播,以及更新待重传数据的第二时间参数。
[0107]
其中,待重传数据为对应第二时间参数指示的时间与当前时间之间的间隔大于预设重传时长的交易数据。上述预设重传时长通常是预先设定的时长数值。比如,可以为3分钟。
[0108]
这里,目标节点可以及时查看本地列表中是否存在待重传数据,若存在,则及时将该待重传数据向其它节点广播。在将该待重传数据向其它节点广播时,目标节点可以基于本次广播的时间,对该待重传数据的第二时间参数进行更新。比如,若本次广播的时间为2022年06月24日14点20分30秒,则该待重传数据的更新后的第二时间参数可以为20220624142030。
[0109]
在本地列表中的交易数据被广播时,及时更新被广播的该交易数据的第二时间参数,可以实现及时有效地对该交易数据进行下一次广播。
[0110]
实际应用中,某个交易数据从进入交易池到上链通常只需要很短的时间,比如,3秒,在交易池中的本地列表中,若存在某个留存时间较长的交易数据,极大的可能是该交易数据没有被及时广播到负责发起上链的主节点上。目标节点将待重传数据向其它节点重新广播,可以避免由于某次广播过程中数据丢失所造成的无法对交易数据进行及时打包上链的情况,有助于保障交易数据被及时上链存储。
[0111]
步骤202,在全局列表和/或本地列表中存在待删除数据时,删除待删除数据。
[0112]
其中,待删除数据为对应第一时间参数指示的时间与当前时间之间的间隔大于预设删除时长的交易数据。其中,上述预设删除时长通常是预先设定的时长数值。比如,可以为30分钟。实践中,预设重传时长,通常小于预设删除时长。
[0113]
这里,目标节点可以及时查看全局列表或者本地列表中是否存在待删除数据,若存在,则及时将该待删除数据删除,以实现将可能存在问题的或者无效的交易数据及时删除,避免可能存在问题的或者无效的交易数据长期占用交易池的存储资源。
[0114]
本实施例中,本地列表主要负责及时将来自用户端的交易数据通知到其它节点,全局列表则主要负责将交易池中的各个来源的交易数据进行及时上链,及时对本地列表中留存较久的交易数据进行重新广播,以及及时对本地列表和全局列表中的留存太久的交易数据进行删除,可以在保障交易数据被及时上链存储的同时,及时清除可能存在问题的或者无效的交易数据,有助于进一步提高对交易池数据的处理效率。
[0115]
在本实施例的一些可选的实现方式中,区块链的每个节点的交易池中还可以包括用于缓存适合上链存储的交易数据的就绪队列和用于缓存不适合上链存储的交易数据的未就绪队列。上述适合上链存储的交易数据,通常是指满足预设入列条件的交易数据。
[0116]
此时,在将目标交易数据存入交易池之后,上述区块链交易池数据处理方法还可以包括如下步骤301-步骤302。
[0117]
图3为本技术实施例提供的对交易池中的交易数据进行管理的流程示意图。
[0118]
步骤301,在目标交易数据满足预设入列条件时,将全局队列中的目标交易数据存入就绪队列。
[0119]
其中,上述预设入列条件通常是预先设定的用于触发将全局队列中的交易数据转存至就绪队列的条件。
[0120]
实践中,上述预设入列条件通常为对应同一账户的各交易数据的数据标识顺序递增。
[0121]
上述数据标识通常为交易数据的交易随机数(nonce)。实际应用中,交易数据的nonce可以指示对应的账户和交易数据的顺序。比如,某个交易数据的nonce可以为a1,用于指示a账户的第1个交易数据。
[0122]
举例来说,若目标交易数据的nonce为a9,指示a账户的第9个交易数据,若当前记录的a账户在最近一次存入就绪队列的交易数据的nonce为a7,说明a账户的交易数据的数据标识没有顺序递增,中间断掉了第8个交易数据,此时,目标节点不将该目标交易数据存入就绪队列。
[0123]
这里,目标节点可以分析目标交易数据是否满足上述预设入列条件,若满足,则可以将该目标交易数据存入就绪队列中。
[0124]
实践中,在目标交易数据不满足预设入列条件时,目标节点通常先将该目标交易数据存入未就绪队列。
[0125]
举例来说,若目标交易数据的nonce为a9,指示a账户的第9个交易数据,若当前记录的a账户在最近一次存入就绪队列的交易数据的nonce为a7,说明a账户的交易数据的数据标识没有顺序递增,中间断掉了第8个交易数据,此时,目标节点不将该目标交易数据存入就绪队列,而是将该目标交易数据存入未就绪队列进行等待。
[0126]
步骤302,在检测到未就绪队列中存在与目标交易数据属于同一账户的同账户数据,且同账户数据满足预设入列条件时,将同账户数据存入就绪队列。
[0127]
其中,同账户数据为与目标交易数据属于同一账户的交易数据。
[0128]
这里,目标节点在将目标交易数据存入就绪队列之后,可以继续检测未就绪队列中是否存在与该目标交易数据属于同一账户的同账户数据。若存在,则目标节点可以将未就绪队列中的满足预设入列条件的同账户数据存入就绪队列。
[0129]
举例来说,若目标交易数据的nonce为a8,指示a账户的第8个交易数据,若当前记录的a账户在最近一次存入就绪队列的交易数据的nonce为a7,说明a账户的交易数据的数据标识可以顺序递增,此时,目标节点可以将该目标交易数据存入就绪队列。另外,目标节点将该目标交易数据存入就绪队列之后,若检测到未就绪队列中还存在与该目标交易数据属于同一账户的同账户数据,且该同账户数据的nonce为a9,由于当前记录的a账户在最近一次存入就绪队列的交易数据的nonce为a8,说明a账户的交易数据的数据标识顺序可以递增,此时,目标节点可以将该目标交易数据的同账户数据存入就绪队列。
[0130]
需要指出的是,在跨链交易场景中,一笔跨链交易通常包含两个参与方,分别为来源链和目的链,为了确保来源链和目的链的状态一致性,目的链的交易执行顺序需要严格遵循来源链账户交易生成的顺序。中继链作为来源链与目的链之间的枢纽,由于来源链上生成的各交易数据通常难以保证按序到达中继链,若中继链不对所接收的各交易数据进行排序,容易导致乱序的各交易数据到达目的链,这样,目的链的交易执行顺序很可能无法严格遵循来源链账户交易生成的顺序,导致交易容易出现故障。因此,对交易池中的各交易数据以对应同一账户的各交易数据的数据标识顺序递增的方式进行排序,可以保障上链存储后,针对同一账户的各交易数据顺序递增,也即是按照生成顺序排列,可以保障同一账户的各交易数据按序执行,从而保障整个区块链系统的安全可靠性。
[0131]
作为示例,若存入区块链中的各个区块所包括的交易数据的量为10个,则某个区块中的各交易数据的nonce可以为:a1-b1-a2-a3-b2-a4-b3-b4-b5-b6。其中,针对a账户而言,各交易数据的nonce是顺序递增的,以及对于b账户而言,各个交易数据的nonce也是顺序递增的。
[0132]
在本实施例的一些可选的实现方式中,在交易池还包括就绪队列的情况下,上述步骤103中,在预设打包上链条件被触发的情况下,对交易池中的至少部分交易数据进行打包及上链存储,可以包括如下步骤一和步骤二。
[0133]
步骤一,在预设打包上链条件被触发的情况下,从交易池的就绪队列中提取预设数目个交易数据,将所提取的交易数据打包成区块。
[0134]
其中,预设打包上链条件可以包括但不限于以下至少一项:目标节点为目标区块链的主节点,就绪队列中存在预设数目个交易数据。上述主节点通常是具有发起上链权限的及节点。
[0135]
其中,上述预设数目通常是预先设定的数目。比如,可以为10个,也可以为20个。
[0136]
这里,在目标节点为主节点的情况下,目标节点可以从交易池的就绪队列中提取预设数目个交易数据,以及将所提取的交易数据打包成区块。
[0137]
步骤二,向目标区块链上的其它节点发起上链请求,以及在各个其它节点共识通过上链请求的情况下,将区块上链存储至目标区块链的各节点。
[0138]
这里,目标节点将所提取的交易数据打包成区块之后,可以向其它节点发起上链请求,这样,各个其它节点可以参与共识,若各个其它节点共识通过,则可以将该区块上链存储至各个节点。
[0139]
需要指出的是,目标节点可以每打包生成一个区块就发起一次上链请求,以实现将该区块上链存储。实践中,目标节点通常是在生成多个区块后发起一次上链请求,以实现将多个区块上链存储。
[0140]
在一些可选的实现方式中,上述步骤一中,在从交易池的就绪队列中提取预设数目个交易数据之后,还可以包括:将由预设数目个交易数据组成的交易集合以键值对的形式存入已打包队列。其中,键值对的键为交易集合的哈希值,以及键值对的值为交易集合。上述已打包队列用于缓存已打包的交易数据。
[0141]
这里,目标节点从就绪队列中提取出预设数目个交易数据时,可以将该预设数目个交易数据组成的交易集合以键值对的形式存入已打包队列。其中,上述键值对的键可以为交易集合的哈希值,以及上述键值对的值可以为交易集合。
[0142]
在目标节点是在生成多个区块后发起一次上链请求,以实现将多个区块上链存储的情况下,已打包队列中以键值对形式存储的各交易集合可以便于实现各节点之间的区块同步。
[0143]
相应地,上述步骤二中,在将区块上链存储至目标区块链的各节点之前,还可以包括:接收落后节点发送的区块请求。其中,落后节点为对应区块高度小于主节点的区块高度的节点,区块请求包括区块标识和区块标识指示的区块对应的交易集合的哈希值。将各哈希值分别对应的交易集合向落后节点发送。
[0144]
这里,目标节点可以接收落后节点发送的区块请求。其中,落后节点为对应区块高度小于主节点的区块高度的节点。区块请求包括区块标识和区块标识指示的区块中的交易
集合的哈希值。然后,将各哈希值分别对应的交易集合向落后节点发送。
[0145]
这里,目标节点向目标区块链上的其它节点发起上链请求时,由于各节点的区块高度可能不一致,落后节点可以向主节点请求缺失的区块数据,从而实现每个节点上链保存的数据一致。
[0146]
举例来说,若主节点发起上链时,主节点的区块高度为20,某个落后节点的区块高度为11。此时,落后节点可以向主节点发起同步区块高度为11-20的区块请求,该区块请求可以携带各区块标识及各区块对应的交易集合的哈希值。主节点可以接收到该区块请求,然后从已打包队列中读取对应的交易集合,以及以点对点的方式,将区块11-20分别对应的交易集合发送给落后节点。
[0147]
在本实施例的一些可选的实现方式中,在对交易池中的至少部分交易数据进行打包及上链存储之后,区块链交易池数据处理方法还可以包括:
[0148]
将目标节点的交易池中的已打包上链的交易数据删除,以及将目标区块链上其它节点的交易池中的相应交易数据删除。
[0149]
举例来说,在对交易池中交易数据a进行上链存储之后,目标节点可以将自己交易池中的交易数据a删除,以及可以通知其它节点将其它节点的交易池中的a删除。及时将已上链存储的交易数据从各个节点的交易池中删除,可以及时释放交易池的存储空间,提高空间利用率。
[0150]
实践中,在交易池包括全局队列、本地队列、就绪队列、未就绪队列、已打包队列中的一个或多个时,删除交易池中的某个交易数据,通常是指删除交易池中各队列中的该交易数据。
[0151]
对应于上文实施例一的区块链交易池数据处理方法,图4示出了本技术实施例提供的区块链交易池数据处理装置400的结构框图,为了便于说明,仅示出了与本技术实施例相关的部分。
[0152]
参照图4,该装置包括:
[0153]
数据接收单元401,用于在目标节点接收到目标交易数据时,确定目标交易数据的来源,其中,来源包括:与目标节点通信连接的用户端、目标节点对应的目标区块链上的其它节点;
[0154]
第一存入单元402,用于在目标交易数据的来源为用户端,将目标交易数据存入交易池,以及向其它节点广播目标交易数据;
[0155]
数据打包单元403,用于在预设打包上链条件被触发的情况下,对交易池中的至少部分交易数据进行打包及上链存储。
[0156]
在一些实施例中,装置还包括第二存入单元,用于在目标交易数据的来源为其它节点,将目标交易数据存入交易池。
[0157]
在一些实施例中,第一存入单元402和/或第二存入单元中,将目标交易数据存入交易池,包括:在交易池中不存在目标交易数据的情况下,将目标交易数据存入交易池。
[0158]
在一些实施例中,交易池中包括用于缓存来自用户端的交易数据的本地列表和用于缓存需要存入交易池的各交易数据的全局列表,以及第一存入单元402和/或第二存入单元中,将目标交易数据存入交易池,包括:
[0159]
在目标交易数据的来源为用户端时,将目标交易数据存入交易池中的本地列表和
全局列表,以及在目标交易数据的来源为其它节点时,将目标交易数据存入交易池中的全局列表。
[0160]
在一些实施例中,装置还包括参数生成单元。参数生成单元,用于基于目标交易数据的来源,生成目标交易数据的时间参数;
[0161]
其中,时间参数包括以下至少一项:用于指示交易数据被存入交易池的时间的第一时间参数、用于指示交易数据被发起广播的时间的第二时间参数。
[0162]
在一些实施例中,在交易池中的各交易数据对应有第一时间参数和/或第二时间参数的情况下,装置还包括超时重传单元和过期删除单元。
[0163]
超时重传单元,用于在本地列表中存在待重传数据时,将待重传数据向其它节点广播,以及更新待重传数据的第二时间参数,其中,待重传数据为对应第二时间参数指示的时间与当前时间之间的间隔大于预设重传时长的交易数据;
[0164]
过期删除单元,用于在全局列表和/或本地列表中存在待删除数据时,删除待删除数据,其中,待删除数据为对应第一时间参数指示的时间与当前时间之间的间隔大于预设删除时长的交易数据。
[0165]
在一些实施例中,交易池还包括用于缓存适合上链存储的交易数据的就绪队列和用于缓存不适合上链存储的交易数据的未就绪队列时,装置还包括第三存入单元和第四存入单元。
[0166]
第三存入单元,用于在目标交易数据满足预设入列条件时,将全局队列中的目标交易数据存入就绪队列;
[0167]
第四存入单元,用于在检测到未就绪队列中存在与目标交易数据属于同一账户的同账户数据,且同账户数据满足预设入列条件时,将同账户数据存入就绪队列;
[0168]
其中,同账户数据为与目标交易数据属于同一账户的交易数据,预设入列条件为对应同一账户的各交易数据的数据标识顺序递增。
[0169]
在一些实施例中,数据打包单元包括数据打包模块和上链存储模块。
[0170]
数据打包模块,用于在预设打包上链条件被触发的情况下,从交易池的就绪队列中提取预设数目个交易数据,将所提取的交易数据打包成区块;
[0171]
上链存储模块,用于向目标区块链上的其它节点发起上链请求,以及在各个其它节点共识通过上链请求的情况下,将区块上链存储至目标区块链的各节点;
[0172]
其中,预设打包上链条件包括以下至少一项:目标节点为目标区块链的主节点,就绪队列中存在预设数目个交易数据。
[0173]
在一些实施例中,数据打包模块中,在从交易池的就绪队列中提取预设数目个交易数据之后,还包括:将由预设数目个交易数据组成的交易集合以键值对的形式存入已打包队列,其中,键值对的键为交易集合的哈希值,以及键值对的值为交易集合;
[0174]
上链存储模块中,在将区块上链存储至目标区块链的各节点之前,还包括:接收落后节点发送的区块请求,其中,落后节点为对应区块高度小于主节点的区块高度的节点,区块请求包括区块标识和区块标识指示的区块对应的交易集合的哈希值;将各哈希值分别对应的交易集合向落后节点发送。
[0175]
在一些实施例中,装置还包括数据删除单元,用于将目标节点的交易池中的已打包上链的交易数据删除,以及将目标区块链上其它节点的交易池中的相应交易数据删除。
[0176]
本实施例提供的装置,每个节点在接收到交易数据时,只对来自用户端的交易数据进行广播,不对来自其他节点的交易数据进行广播,可以极大地减少被广播的数据量,可以有效防止广播风暴。
[0177]
需要说明的是,上述装置/单元之间的信息交互、执行过程等内容,由于与本技术方法实施例一基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
[0178]
图5为本技术一实施例提供的服务器500的结构示意图。如图5所示,该实施例的服务器500包括:至少一个处理器501(图5中仅示出一个处理器)、存储器502以及存储在存储器502中并可在至少一个处理器501上运行的计算机程序503,例如区块链交易池数据处理程序。处理器501执行计算机程序503时实现上述任意各个方法实施例中的步骤。处理器501执行计算机程序503时实现上述各个区块链交易池数据处理方法的实施例中的步骤。处理器501执行计算机程序503时实现上述各装置实施例中各模块/单元的功能,例如图4所示数据接收单元401至数据打包单元403的功能。
[0179]
示例性的,计算机程序503可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器502中,并由处理器501执行,以完成本技术。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序503在服务器500中的执行过程。例如,计算机程序503可以被分割成数据接收单元,第一存入单元,数据打包单元,各单元具体功能在上述实施例中已有描述,此处不再赘述。
[0180]
服务器500可以是服务器、台式电脑、平板电脑、云端服务器和移动终端等计算设备。服务器500可包括,但不仅限于,处理器501,存储器502。本领域技术人员可以理解,图5仅仅是服务器500的示例,并不构成对服务器500的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如服务器还可以包括输入输出设备、网络接入设备、总线等。
[0181]
所称处理器501可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0182]
存储器502可以是服务器500的内部存储单元,例如服务器500的硬盘或内存。存储器502也可以是服务器500的外部存储设备,例如服务器500上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,存储器502还可以既包括服务器500的内部存储单元也包括外部存储设备。存储器502用于存储计算机程序以及服务器所需的其他程序和数据。存储器502还可以用于暂时地存储已经输出或者将要输出的数据。
[0183]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是
各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本技术的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0184]
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0185]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0186]
在本技术所提供的实施例中,应该理解到,所揭露的装置/服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置/服务器实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0187]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0188]
另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0189]
集成的模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0190]
以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1