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

一种数据获取方法、装置、设备及存储介质与流程

2022-12-03 01:38:55 来源:中国专利 TAG:


1.本公开涉及互联网技术领域,尤其涉及一种数据获取方法、装置、设备及存储介质。


背景技术:

2.区块链(block chain)是一种全民参与记账的方式,具有去中心化和去信任的特点。客户端可以通过任一区块链节点进行交易,交易数据以电子记录的形式存储在区块链中的区块。
3.通常区块链中的交易模式为未花费的交易输出(unspent transaction output,utxo)模式,即将一个交易事件的交易数据中的输出数据存储在区块中,作为后一交易事件的交易数据中的输入数据。因此,需要查询某个交易事件的交易数据时,需要多次调用接口从区块中分别获取输入数据和输出数据,整个过程耗时较长,导致区块链的数据获取的效率较低,影响用户体验。


技术实现要素:

4.本公开提供一种数据获取方法、装置、设备及存储介质,用于解决通用技术中数据获取效率低的问题。
5.本公开实施例的技术方案如下:
6.根据本公开实施例的第一方面,提供一种数据获取方法,包括:创建目标数据库;目标数据库用于存储区块链中多个交易事件的交易标识对应的交易数据;交易数据包括输入数据和输出数据;接收第一请求消息;第一请求消息用于请求获取目标交易事件的目标交易数据;第一请求消息包括:目标交易事件的目标交易标识;响应于第一请求消息,以目标交易标识为索引,从目标数据库中获取目标交易数据;发送目标交易数据。
7.可选的,目标数据库包括:多个交易事件的交易标识和多个交易事件的交易数据一一对应的第一对应关系;数据获取方法,还包括:获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;第一交易事件为多个交易事件中的任意一个事件;第一区块为区块链中用于存储第一交易事件的输出数据的区块;根据第一交易事件的对应的前一交易事件的交易标识,确定存储第一交易事件的输入数据的第二区块;将第二区块中存储的第二交易事件的输出数据,确定为第一交易事件的输入数据;第二交易事件为第一交易事件的前一交易事件;将第一交易事件的输入数据和第一交易事件的输出数据确定为第一交易事件的交易数据;将第一交易事件的交易标识和第一交易事件的交易数据的对应关系确定为第一交易事件的第一对应关系。
8.可选的,获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识的方法,包括:调用目标接口,获取第一区块的区块数据;第一区块的区块数据包括:第一交易事件的交易标识、第一交易
事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;目标接口包括远程过程调用rpc接口。
9.可选的,目标数据库还包括:多个区块的区块标识和多个区块的区块数据一一对应的第二对应关系;多个区块包括第一区块;第一区块的区块数据还包括:第一区块的区块标识;数据获取方法,还包括:创建第一区块的区块标识与第一区块的区块数据的第二对应关系。
10.可选的,调用目标接口,获取第一区块的区块数据,包括:调用目标接口,获取第一区块的区块标识;读取第二对应关系,获取第一区块的区块标识对应的第一区块的区块数据。
11.可选的,数据获取方法,还包括:接收第二请求消息;第二请求消息用于请求获取目标区块的目标区块数据;第二请求消息包括:目标区块的目标区块标识;响应于第二请求消息,以目标区块标识为索引,从目标数据库中获取目标区块数据;发送目标区块数据。
12.可选的,目标数据库以目标格式存储对应关系;目标格式包括字符分隔值csv格式。
13.根据本公开实施例的第二方面,提供一种数据获取装置,包括:通信单元和处理单元;处理单元,用于创建目标数据库;目标数据库用于存储区块链中多个交易事件的交易标识对应的交易数据;交易数据包括输入数据和输出数据;通信单元,用于接收第一请求消息;第一请求消息用于请求获取目标交易事件的目标交易数据;第一请求消息包括:目标交易事件的目标交易标识;处理单元,还用于响应于第一请求消息,以目标交易标识为索引,从目标数据库中获取目标交易数据;通信单元,还用于发送目标交易数据。
14.可选的,目标数据库包括:多个交易事件的交易标识和多个交易事件的交易数据一一对应的第一对应关系;处理单元,还用于:获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;第一交易事件为多个交易事件中的任意一个事件;第一区块为区块链中用于存储第一交易事件的输出数据的区块;根据第一交易事件的对应的前一交易事件的交易标识,确定存储第一交易事件的输入数据的第二区块;将第二区块中存储的第二交易事件的输出数据,确定为第一交易事件的输入数据;第二交易事件为第一交易事件的前一交易事件;将第一交易事件的输入数据和第一交易事件的输出数据确定为第一交易事件的交易数据;将第一交易事件的交易标识和第一交易事件的交易数据的对应关系确定为第一交易事件的第一对应关系。
15.可选的,处理单元,具体用于:调用目标接口,获取第一区块的区块数据;第一区块的区块数据包括:第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;目标接口包括远程过程调用rpc接口。
16.可选的,目标数据库还包括:多个区块的区块标识和多个区块的区块数据一一对应的第二对应关系;多个区块包括第一区块;第一区块的区块数据还包括:第一区块的区块标识;处理单元,还用于:创建第一区块的区块标识与第一区块的区块数据的第二对应关系。
17.可选的,处理单元,具体用于:调用目标接口,获取第一区块的区块标识;读取第二对应关系,获取第一区块的区块标识对应的第一区块的区块数据。
18.可选的,处理单元,还用于:接收第二请求消息;第二请求消息用于请求获取目标区块的目标区块数据;第二请求消息包括:目标区块的目标区块标识;响应于第二请求消息,以目标区块标识为索引,从目标数据库中获取目标区块数据;发送目标区块数据。
19.可选的,目标数据库以目标格式存储对应关系;目标格式包括字符分隔值csv格式。
20.根据本公开实施例的第三方面,提供一种数据获取装置,可以包括:处理器和用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现上述第一方面中任一种可选的数据获取方法。
21.根据本公开实施例的第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由数据获取装置的处理器执行时,使得数据获取装置能够执行上述第一方面中任一种可选的数据获取方法。
22.本技术提供的技术方案至少带来以下有益效果:
23.基于上述任一方面,本技术中,区块链节点接收到第一请求消息之后,可以响应于第一请求消息,以目标交易标识为索引,从预先创建的目标数据库中获取目标交易数据。后续,区块链节点可以发送目标交易数据。这样一来,由于数据库中存储的交易数据包括输入数据和输出数据,区块链节点只需访问目标数据库,解决了通用技术中,需要多次调用接口从区块获取输入数据和输出数据导致的数据获取效率低的问题。
附图说明
24.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
25.图1为本公开实施例提供的一种数据获取系统示意图;
26.图2示出了本公开实施例提供的一种区块链节点的结构示例图;
27.图3示出了本公开实施例提供的一种数据获取方法的流程示意图一;
28.图4示出了本公开实施例提供的一种数据获取方法的流程示意图二;
29.图5示出了本公开实施例提供的一种确定交易数据的示意图;
30.图6示出了本公开实施例提供的一种数据获取方法的流程示意图三;
31.图7示出了本公开实施例提供的一种数据获取方法的流程示意图四;
32.图8示出了本公开实施例提供的一种目标数据库的示意图一;
33.图9示出了本公开实施例提供的一种数据获取方法的流程示意图五;
34.图10示出了本公开实施例提供的一种数据获取方法的流程示意图六;
35.图11示出了本公开实施例提供的一种目标数据库的示意图二;
36.图12示出了本公开实施例提供的一种数据获取装置的结构示意图一;
37.图13示出了本公开实施例提供的一种数据获取装置的结构示意图二。
具体实施方式
38.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
39.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
40.还应当理解的是,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其他特征、整体、步骤、操作、元素和/或组件的存在或添加。
41.为了便于理解本技术,现对本技术涉及到的相关要素进行描述。
42.区块链技术
43.区块链技术,也被称为分布式账本技术,是一种由若干台计算设备共同参与“记账”(即记录交易数据),共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化(即没有中心节点)、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
44.区块链系统可包括多个区块链节点。区块链节点为具有通信功能以及存储功能的设备,如存储有区块链的设备。为了便于描述,本技术采用节点表示区块链节点。也就是说,本技术涉及到的节点均可用于表示区块链节点。
45.每一个节点既可接收信息,也可生成信息。不同的节点之间通过维护一个共同的区块链来保持通信。具体的,在区块链系统中,任一节点可以根据客户端发送的与交易相关的数据生成新的区块,并以广播的形式通知其他节点,其他节点可以对这个区块进行验证。当区块链系统中的所有节点达成共识后,新的区块就可以被添加到区块链中。
46.本技术中的节点可以理解为处理单元。在一种实现方式中,节点可以为物理设备,例如服务器或终端设备。在另一种实现方式中,节点可以为虚拟计算机;虚拟计算机为所有类型的虚拟化设备中软件虚拟出来的运行环境的统称,该概念包括虚拟机、容器。在其他实现方式中,节点可以为进程(process)或者线程(thread);线程是操作系统能够进行运算调度的最小单位,线程被包含在进程之中,是进程中的实际运作单位;进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。
47.区块(block)
48.在区块链技术中,交易数据以电子记录的形式被永久储存下来,存放这些电子记录的文件我们称之为“区块”。
49.区块是按时间顺序一个个先后生成的,每一个区块记录有它在被创建期间发生的所有交易,所有区块汇总起来形成一个链式的记录合集。由于不同区块链系统中,节点的吞吐率不同,因此,在不同区块链系统中,区块的大小可能也不同。
50.可以看出,区块中记录有该区块生成时间段内的交易数据,因此,区块的主体实际上是交易数据的合集。每一种区块链的结构设计可能不完全相同,但区块通常包括区块头(header)和区块体(body)两部分。
51.其中,区块头主要用于记录当前区块的特征值,可以包括当前区块的标识(如区块的编号)、当前区块中区块体的哈希值、时间戳(用于表示该区块的生成时间)、交易数量(transaction count)和随机数(nonce)等信息中的至少一种信息,此外,区块头还可以包
括前一区块的哈希值(具体为前一区块中区块头的哈希值)。
52.区块头包括有多个特征值,在确定该区块的哈希值时,需要将该区块头中的各个特征值按照顺序连接在一起,以组成一个字符串,再对这个字符串计算哈希值。由于不同区块的区块头所包括的特征值的数值通常不同,因此,每一区块均唯一对应一个哈希值。
53.基于每一区块均唯一对应一个哈希值,且每个区块的区块头均包括有前一区块的哈希值,这样,多个区块即可形成区块链。
54.区块体可以包括多个交易数据。对于每一交易数据而言,区块体还包括客户端的证书(用于说明交易的发起端)、背书节点的证书以及背书节点针对该交易的签名等信息。可选的,对于每一笔交易而言,区块体还可以包括排序节点(或称为共识节点)对该笔交易的签名。这里的签名均用于表示与该签名对应的设备对交易的鉴权,证书均用于表示身份。
55.上述签名和证书等数据均用于对交易数据的验证,这些数据通常占用区块体中70%的存储空间。
56.示例性的,表1示出了区块的一种结构形式。当然,区块的结构不仅仅局限于表1所示,且各个结构的取值也不仅仅局限于表1所示。
57.表1
[0058][0059]
交易(transaction)
[0060]
本技术涉及到的交易,是指用户通过任一节点创建,并发布数据至区块链的分布式数据库中的过程。
[0061]
该交易存在狭义的交易以及广义的交易之分。
[0062]
狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。
[0063]
广义的交易是指用户向区块链发布一笔任意的数据:例如,运营方可以基于实际的业务需求搭建一个联盟链,依托于联盟链部署一些在线业务(比如,租房业务、车辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求;又如,该交易还可以是用户向区块链发送数据(如账户余额等),以使得更改用户的账户状态。
[0064]
因此,只要是用户向区块链的分布式数据库发布任意数据,均可属于本技术所述的“交易”。
[0065]
客户端(client)
[0066]
用户可以通过区块链系统中的客户端实现创建链码,发起交易等功能。客户端可以部署在任意的电子设备上,通过区块链系统相应的软件开发工具包(software development kit,sdk)实现。该电子设备通过与区块链网络中的节点进行通信,从而实现客户端相应的功能。
[0067]
本公开所涉及的数据可以为经用户授权或者经过各方充分授权的数据。
[0068]
如背景技术中所描述,当一个交易事件的交易数据存储在不同的区块中时,区块链节点需要调用多个接口分别获取多个区块中的交易数据,整个过程需要进行多次接口调用,耗时较长,导致区块链的数据获取效率较低,影响用户体验。
[0069]
基于此,本公开实施例提供一种数据获取方法,区块链节点接收到第一请求消息之后,可以响应于第一请求消息,以目标交易标识为索引,从预先创建的目标数据库中获取目标交易数据。后续,区块链节点可以发送目标交易数据。这样一来,由于数据库中存储的交易数据包括输入数据和输出数据,区块链节点只需访问目标数据库,解决了通用技术中,需要多次调用接口从区块获取输入数据和输出数据导致的数据获取效率低的问题。
[0070]
以下结合附图对本公开实施例提供的数据获取方法进行示例性说明:
[0071]
图1为本公开实施例提供的一种数据获取系统示意图,如图1所示,该数据获取系统中可以包括:客户端110和区块链120中的多个区块链节点(包括区块链节点121)。客户端110可以通过区块链节点121访问区块链120。
[0072]
其中,区块链节点121可以是多个区块链节点中的任意一个区块链节点。
[0073]
区块链120中包括多个区块,每个区块存储的区块数据包括一个时间段内发生的交易事件的交易数据。
[0074]
可选的,区块链120中的交易模式可以为utxo模式,即只记录未花费的输出。此时,区块数据包括:交易事件的交易标识、交易事件的交易数据中的输出数据,以及对应的前一交易事件的交易标识。
[0075]
示例性的,表2示出了一种区块数据的存储格式。当然,区块数据的存储格式不仅仅局限于表2所示,且各个结构的取值也不仅仅局限于表2所示。
[0076]
表2
[0077][0078]
一些实施例中,客户端110可以实现创建链码,发起交易等功能。客户端110可以部署在任意的电子设备上,通过区块链系统相应的软件开发工具包实现。该电子设备通过与区块链节点121进行通信,从而实现客户端110相应的功能。本技术对客户端110的具体实现方式不作限制。
[0079]
一些实施例中,区块链120中的多个区块链节点为具有通信功能以及存储功能的设备,可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本技术对区块链120中的多个区块链节点的具体实现方式也不作限制。
[0080]
需要说明的是,上述客户端110和区块链120中的多个区块链节点均可以称为电子设备。
[0081]
图2为本公开实施例提供的一种区块链节点121的结构示意图,如图2所示,区块链节点121可以包括:区块数据库210、交易数据库220。
[0082]
其中,区块数据库210用于存储区块链120中的多个区块的区块中的交易数据。
[0083]
一些实施例中,区块数据库210可以为键值(key-value,kv)数据库。此时区块数据库210中存储区块标识和区块数据的对应关系。
[0084]
交易数据库220用于存储区块链120中的多个交易的交易数据。
[0085]
一些实施例中,交易数据库220可以为kv数据库。此时交易数据库220中存储交易标识和交易数据的对应关系。
[0086]
可选的,当交易数据库220为kv数据库时,键为一个交易事件的交易标识,值为该交易事件的交易数据。
[0087]
可选的,交易标识可以包括:交易事件的交易哈希值、交易事件的交易号、交易事件的交易索引值等交易事件的唯一标识。
[0088]
可选的,交易数据可以包括:目标交易事件的输入数据,例如输入地址和输入金额,还可以包括目标交易事件的输出数据,例如输出地址和输出金额。
[0089]
示例性的,表3示出了一种交易数据库的存储格式。当然,交易数据库的存储格式不仅仅局限于表3所示,且各个结构的取值也不仅仅局限于表3所示。
[0090]
表3
[0091][0092]
本公开实施例提供的数据获取方法可以应用于前述图1所示的应用场景中的区块链节点121。如图3所示,该数据获取方法可以包括:
[0093]
s301、区块链节点创建目标数据库。
[0094]
其中,目标数据库用于存储区块链中多个交易事件的交易标识对应的交易数据。
[0095]
可选的,目标数据库以目标格式存储数据。
[0096]
可选的,目标格式可以为csv格式。
[0097]
可选的,目标数据库可以包括:多个交易事件的交易标识和多个交易事件的交易数据一一对应的第一对应关系,以及多个区块的区块标识和多个区块的区块数据一一对应的第二对应关系。其中,多个区块的区块数据可以多个交易事件的交易数据。
[0098]
可选的,结合图2,目标数据库可以包括:区块数据库210和交易数据库220中的至少一个。
[0099]
可选的,交易数据可以包括:交易事件的输入(input)数据,例如输入地址(address)和输入金额(amount),还可以包括交易事件的输出(output)数据,例如输出地址
和输出金额。
[0100]
可选的,交易标识可以包括:交易事件的交易哈希值(transaction hash,tx hash)、交易事件的交易号、交易事件的交易索引值(transaction index,tx index)等交易事件的唯一标识。
[0101]
s302、区块链节点接收第一请求消息。
[0102]
其中,第一请求消息用于请求获取目标交易事件的目标交易数据。第一请求消息包括:目标交易事件的目标交易标识。
[0103]
在一种可以实现的方式中,区块链节点接收第一请求消息的方法可以包括:客户端向区块链节点发送第一请求消息。
[0104]
具体的,当区块链上的交易事件完成时,区块链上生成存储本次交易事件的交易数据的区块,此时,客户端可以接收到区块链节点发送的回执消息。其中,回执消息包括本次交易事件的交易标识。后续,当持有客户端的用户需要查询区块链中的目标交易事件的目标交易数据时,基于区块链可以实现数据同步,客户端可以向任意一个区块链节点发送第一请求消息。
[0105]
s303、区块链节点响应于第一请求消息,以目标交易标识为索引,从目标数据库中获取目标交易数据。
[0106]
具体的,由于目标数据库中存储有多个交易事件的交易标识对应的交易数据,区块链节点接收到请求消息之后,以目标交易标识为索引,从目标数据库中获取目标交易数据。
[0107]
s304、区块链节点发送目标交易数据。
[0108]
上述实施例提供的技术方案至少带来以下有益效果:由s301-s304可知,区块链节点接收到第一请求消息之后,可以响应于第一请求消息,以目标交易标识为索引,从预先创建的目标数据库中获取目标交易数据。后续,区块链节点可以发送目标交易数据。这样一来,由于数据库中存储的交易数据包括输入数据和输出数据,区块链节点只需访问目标数据库,解决了通用技术中,需要多次调用接口从区块获取输入数据和输出数据导致的数据获取效率低的问题。
[0109]
在一种可选的实施例中,在图3示出的方法实施例的基础上,结合图3,如图4所示,该数据获取方法还包括:
[0110]
s401、区块链节点获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识。
[0111]
其中,第一交易事件为多个交易事件中的任意一个事件。第一区块为区块链中用于存储第一交易事件的输出数据的区块。
[0112]
可选的,第一交易事件还可以为区块链中最新发生的交易事件。
[0113]
具体的,由于utxo模式中,当前交易事件的输入数据即为前一交易事件的输出数据,所以,区块中可以存储当前交易事件的交易标识、当前交易事件的输出数据和前一交易事件的交易标识。此时,区块链节点可以遍历区块链上的多个区块中存储的数据,获取第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识。
[0114]
可选的,前一交易事件的交易标识可以包括:花费哈希值(spent hash)和花费索
引值(spent index)。
[0115]
s402、区块链节点根据第一交易事件的对应的前一交易事件的交易标识,确定存储第一交易事件的输入数据的第二区块。
[0116]
具体的,区块链节点获取到第一交易事件的对应的前一交易事件的交易标识之后,可以遍历多个区块存储的数据,当存在区块存储的当前交易事件的交易标识与第一交易事件的对应的前一交易事件的交易标识相同时,表示区块存储的当前交易事件为第一交易事件的对应的前一交易事件,此时,可以将该区块确定为存储第一交易事件的输入数据的第二区块。
[0117]
s403、区块链节点将第二区块中存储的第二交易事件的输出数据,确定为第一交易事件的输入数据。
[0118]
其中,第二交易事件为第一交易事件的前一交易事件。
[0119]
具体的,由于utxo模式中,当前交易事件的输入数据即为前一交易事件的输出数据,所以,第二交易事件为第一交易事件的前一交易事件时,区块链节点可以将第二区块中存储的第二交易事件的输出数据,确定为第一交易事件的输入数据。
[0120]
s404、区块链节点将第一交易事件的输入数据和第一交易事件的输出数据确定为第一交易事件的交易数据。
[0121]
s405、区块链节点将第一交易事件的交易标识和第一交易事件的交易数据的对应关系确定为第一交易事件的第一对应关系。
[0122]
示例性的,如图5所示,区块链节点可以从区块存储的数据中,获取到交易事件b的交易哈希值为“y”,交易事件b包括:交易序列号为“0”的输入、交易序列号为“1”的输入和交易序列号为“2”的输入,以及交易序列号为“0”的输出、交易序列号为“1”和交易序列号为“2”的输出。其中,交易序列号为“1”的输入包括:交易事件b对应的前一交易事件a的交易标识(花费哈希值为“x”和花费索引值为“0”)。
[0123]
区块链节点遍历多个区块存储的数据,获取到交易哈希值为“x”的交易事件a包括:交易序列号为“0”的输入、交易序列号为“1”的输入和交易序列号为“2”的输入,以及交易序列号为“0”的输出、交易序列号为“1”和交易序列号为“2”的输出。其中,与花费索引值“0”相同的交易序列号“0”对应的输出的输出数据包括:地址和金额。
[0124]
区块链节点可以将地址和金额,以及交易事件b中交易序列号为“1”的输入的输入数据确定为交易事件b的交易数据,并存储交易哈希值“y”与交易事件b的交易数据的对应关系。
[0125]
上述实施例提供的技术方案至少带来以下有益效果:由s401-s405可知,区块链节点可以根据每个区块中存储的每个交易事件的数据,确定每个交易事件的交易标识与交易数据的第一对应关系。后续,当客户端查询存储在不同区块中的交易数据时,区块链节点可以直接读取第一对应关系获取交易数据,无需访问多个区块存储的数据。
[0126]
在一种可选的实施例中,区块链节点获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识的方法,在图5示出的方法实施例的基础上,本实施例提供一种可能实现方式。结合图4,如图6所示,s401中,区块链节点获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识的方法包括:
[0127]
s601、区块链节点调用目标接口,获取第一区块的区块数据。
[0128]
其中,第一区块的区块数据(block info)包括:第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识。
[0129]
可选的,目标接口可以包括远程过程调用(remote procedure call,rpc)接口。
[0130]
可选的,第一区块的区块数据还包括:第一区块对应的区块标识(block id)。
[0131]
可选的,第一区块的区块数据可以包括区块头数据和区块体数据。区块头数据包括区块标识。区块体数据包括第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识。
[0132]
在一种可以实现的方式中,区块链节点调用目标接口,获取第一区块的区块数据的方法可以包括:区块链节点调用目标接口,遍历区块链中的多个区块,获取多个区块中每个区块的区块数据。
[0133]
上述实施例提供的技术方案至少带来以下有益效果:由s601可知,区块链节点可以调用目标接口,获取第一区块的区块数据,以使得后续可以根据第一区块的区块数据确定第一交易事件的交易数据和交易标识。
[0134]
在一种可选的实施例中,在图6示出的方法实施例的基础上,本实施例提供一种可能实现方式。如图7所示,数据获取方法,还包括:
[0135]
s701、区块链节点创建第一区块的区块标识与第一区块的区块数据的第二对应关系。
[0136]
目标数据库包括:多个区块的区块标识和多个区块的区块数据一一对应的第二对应关系。其中,多个区块包括所述第一区块。
[0137]
可选的,结合图2,目标数据库包括区块数据库210,当区块数据库210为kv数据库时,键为一个区块的区块标识,值为该区块的区块数据。
[0138]
可选的,区块标识可以包括:区块的哈希值、区块号等区块的唯一标识。
[0139]
上述实施例提供的技术方案至少带来以下有益效果:由s701可知,区块链节点可以创建第一区块的区块标识与第一区块的区块数据的第二对应关系。后续,当需要查询区块数据时,区块链节点可以直接读取目标数据库获取区块数据,无需接口获取区块上存储的区块数据。
[0140]
如图7所示,s601中,区块链节点调用目标接口,获取第一区块的区块数据的方法,包括:
[0141]
s702、区块链节点调用目标接口,获取第一区块的区块标识。
[0142]
在一种可以实现的方式中,区块链节点调用目标接口,获取第一区块的区块标识的方法可以包括:区块链节点调用目标接口,遍历区块链中的多个区块,获取多个区块中每个区块的区块标识。
[0143]
s703、区块链节点读取第二对应关系,获取第一区块的区块标识对应的第一区块的区块数据。
[0144]
在一种可以实现的方式中,结合图2,当目标数据库包括区块数据库210时,区块链节点可以从区块数据库210中访问第二对应关系。
[0145]
示例性的,如图8所示,目标数据库中存储的第二对应关系可以包括:区块标识0对应的区块存储的区块数据0、区块标识1对应的区块存储的区块数据1、
……
区块标识n对应
s1007。
[0165]
当目标数据库中包括区块链中所有交易事件的交易数据时,执行s1008。
[0166]
s1008、区块链节点以目标格式存储目标数据库中的交易数据。
[0167]
如图11所示,区块链节点创建的目标数据库还包括:交易标识0对应的交易事件的交易数据0、交易标识1对应的交易事件的交易数据1、
……
交易标识m对应的交易事件的交易数据m。
[0168]
可以理解的,在实际实施时,本公开实施例所述的数据获取装置可以包含有用于实现前述对应数据获取方法的一个或多个硬件结构和/或软件模块,这些执行硬件结构和/或软件模块可以构成一个电子设备。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的算法步骤,本公开能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本公开的范围。
[0169]
基于这样的理解,本公开实施例还对应提供一种数据获取装置。图12示出了本公开实施例提供的数据获取装置的结构示意图一。如图12所示,该数据获取装置包括:通信单元1201和处理单元1202。
[0170]
通信单元1201,用于接收请求消息。
[0171]
处理单元1202,用于响应于请求消息,以目标交易标识为索引,从目标数据库中获取目标交易数据。
[0172]
通信单元1201,还用于发送目标交易数据。
[0173]
可选的,处理单元1202,还用于:获取第一区块中存储的第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;第一交易事件为多个交易事件中的任意一个事件;第一区块为区块链中用于存储第一交易事件的输出数据的区块;根据第一交易事件的对应的前一交易事件的交易标识,确定存储第一交易事件的输入数据的第二区块;将第二区块中存储的第二交易事件的输出数据,确定为第一交易事件的输入数据;第二交易事件为第一交易事件的前一交易事件;将第一交易事件的输入数据和第一交易事件的输出数据确定为第一交易事件的交易数据;将第一交易事件的交易标识和第一交易事件的交易数据的对应关系确定为第一交易事件的第一对应关系。
[0174]
可选的,处理单元1202,具体用于:调用目标接口,获取第一区块的区块数据;第一区块的区块数据包括:第一交易事件的交易标识、第一交易事件的输出数据、以及第一交易事件的对应的前一交易事件的交易标识;目标接口包括远程过程调用rpc接口。
[0175]
可选的,处理单元1202,还用于:创建第一区块的区块标识与第一区块的区块数据的第二对应关系。
[0176]
如上所述,本公开实施例可以根据上述方法示例对区块链节点进行功能模块的划分。其中,上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。另外,还需要说明的是,本公开实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
[0177]
关于上述实施例中的数据获取装置,其中各个模块执行操作的具体方式、以及具备的有益效果,均已经在前述方法实施例中进行了详细描述,此处不再赘述。
[0178]
本公开实施例还提供一种数据获取装置。图13示出了本公开实施例提供的数据获取装置的结构示意图二。该数据获取装置可以包括至少一个处理器221,通信总线222,存储器223以及至少一个通信接口224。
[0179]
处理器221可以是一个处理器(central processing units,cpu),微处理单元,asic,或一个或多个用于控制本公开方案程序执行的集成电路。结合图13,处理器221用于执行处理单元1102执行的操作。
[0180]
通信总线222可包括一通路,在上述组件之间传送信息。
[0181]
通信接口224,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如电子设备、以太网,无线接入网(radio access network,ran),无线局域网(wireless local area networks,wlan)等。结合图13,通信接口224用于执行通信单元1101执行的操作。
[0182]
存储器223可以是只读存储器(read-only memory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理单元相连接。存储器也可以和处理单元集成在一起。
[0183]
其中,存储器223用于存储执行本公开方案的应用程序代码,并由处理器221来控制执行。处理器221用于执行存储器223中存储的应用程序代码,从而实现本公开方法中的功能。
[0184]
在具体实现中,作为一种实施例,处理器221可以包括一个或多个cpu,例如图13中的处理器0和处理器1。
[0185]
在具体实现中,作为一种实施例,数据获取装置可以包括多个处理器,例如图13中的处理器221和处理器225。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
[0186]
在具体实现中,作为一种实施例,数据获取装置还可以包括输入设备226和输出设备227。输入设备226和输出设备227通信,可以以多种方式接受用户的输入。例如,输入设备226可以是鼠标、键盘、触摸屏设备或传感设备等。输出设备227和处理器221通信,可以以多种方式来显示信息。例如,输出设备227可以是液晶显示器(liquid crystal display,lcd),发光二级管(light emitting diode,led)显示设备等。
[0187]
本领域技术人员可以理解,图13中示出的结构并不构成对数据获取装置的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
[0188]
本公开还提供了一种包括指令的计算机可读存储介质,所述计算机可读存储介质
上存储有指令,当所述计算机可读存储介质中的指令由数据获取装置的处理器执行时,使得数据获取装置能够执行上述所示实施例提供的数据获取方法。例如,计算机可读存储介质可以为包括指令的存储器223,上述指令可由数据获取装置的处理器221执行以完成上述方法。
[0189]
可选的,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是rom、ram、cd-rom、磁带、软盘和光数据存储设备等。
[0190]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0191]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

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

相关文献