区块链数据的分次获取方法和装置
文献发布时间:2023-06-19 11:26:00
技术领域
本说明书涉及数据处理技术领域,尤其涉及一种区块链数据的分次获取方法和装置。
背景技术
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
发明内容
有鉴于此,本说明书一个或多个实施例提供了一种区块链数据的分次获取方法,应用于包括多个节点设备和客户端的区块链网络,所述区块链的分布式数据库存储有待所述客户端分次获取的目标数据;所述方法包括:
第一节点设备接收所述客户端发送的数据请求,所述数据请求包括数据位置标识,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的位置;
基于所述数据位置标识,为所述客户端获取所述部分目标数据;
基于所述部分目标数据,为所述客户端生成新的数据位置标识,以作为所述客户端向所述多个节点设备中的任一节点设备继续获取所述目标数据的数据位置标识;
向所述客户端发送所述部分目标数据和所述新的数据位置标识。
在又一示出的实施方式中,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的起始位置;所述数据请求还包括所述部分目标数据的容量;
所述基于所述数据位置标识,为所述客户端生成所述部分目标数据,包括:
基于所述数据位置标识和所述部分目标数据的容量,为所述客户端生成所述部分目标数据。
在又一示出的实施方式中,所述目标数据为列表数据;所述部分目标数据的容量包括所述部分目标数据的列表条目数、或部分目标数据占用空间数量。
在又一示出的实施方式中,所述数据位置标识是基于所述部分目标数据所包括的最后一条列表数据生成的唯一性标识。
在又一示出的实施方式中,所述列表数据包括在所述区块链的分布式数据库存证的交易哈希值。
在又一示出的实施方式中,所述区块链为联盟链,所述节点设备为联盟成员节点设备,所述客户端为与联盟成员节点设备连接的用户客户端。
相应地,本说明书还提供了一种区块链数据的分次获取装置,应用于包括多个节点设备和客户端的区块链网络,所述区块链的分布式数据库存储有待所述客户端分次获取的目标数据;所述装置应用于节点设备端,包括:
接收单元,用于接收所述客户端发送的数据请求,所述数据请求包括数据位置标识,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的位置;
获取单元,用于基于所述数据位置标识,为所述客户端获取所述部分目标数据;
生成单元,用于基于所述部分目标数据,为所述客户端生成新的数据位置标识,以作为所述客户端向所述多个节点设备中的任一节点设备继续获取所述目标数据的数据位置标识;
发送单元,用于向所述客户端发送所述部分目标数据和所述新的数据位置标识。
在又一示出的实施方式中,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的起始位置;所述数据请求还包括所述部分目标数据的容量;
所述生成单元进一步用于:
基于所述数据位置标识和所述部分目标数据的容量,为所述客户端生成所述部分目标数据。
在又一示出的实施方式中,所述目标数据为列表型数据;所述部分目标数据的容量包括所述部分目标数据的列表条目数、或部分目标数据占用空间数量。
在又一示出的实施方式中,所述数据位置标识是基于所述部分目标数据所包括的最后一条列表数据生成的唯一性标识。
在又一示出的实施方式中,所述列表数据包括在所述区块链的分布式数据库存证的交易哈希值。
在又一示出的实施方式中,所述区块链为联盟链,所述节点设备为联盟成员节点设备,所述客户端为与联盟成员节点设备连接的用户客户端。
相应地,本说明书一个或多个实施例还提出了一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由所述处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述第一节点设备所执行的区块链数据的多次获取方法。
相应地,本说明书一个或多个实施例还提出了计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一节点设备所执行的区块链数据的多次获取方法。
由以上技术方案可见,本说明书提供的区块链数据的多次获取方法和装置、计算机设备及计算机可读存储介质,客户端可以依据自身的需求或限制,灵活地向区块链的节点设备请求获取部分目标数据;基于具备唯一性属性的数据位置标识的设置,不易出现所获得的部分目标数据重复或遗漏等现象。
附图说明
图1为本说明书所提供的一实施例所示的区块链数据的多次获取方法的流程示意图;
图2为本说明书所提供的一实施例提供的应用于节点设备端的区块链数据的多次获取装置的示意图;
图3为运行本说明书所提供的区块链数据的多次获取装置实施例的一种硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
用户客户端在向数据库请求目标数据时,常因请求的数据量过大、或客户端的页面显示限制,需分批次地请求以获得目标数据,以在客户端分页地显示目标数据。传统的分页式数据请求方案,通常强烈地依赖数据库的分页属性,而且每个分页的数据记录数目通常是固定的;如果数据库动态地有新纪录产生,请求所得的分页数据可能出现重复或缺失。而且当分页数据请求方案对应的分页数据集合的边界刚好处在数据库同一个时刻产生的多条数据中时,基于固定数据记录数目模式的分页数据请求所得的数据就可能遗漏数据记录;如果数据库动态更新,该时刻的多条数据在后来被更新入数据库,之前采用以时间为参数的分页请求数据所得的数据也可能会遗漏数据记录。
为解决以上提出的问题,本说明书的一个或多个实施例提供了一种区块链数据的分次获取方法,应用于包括多个节点设备和客户端的区块链网络,所述多个节点设备存储有待所述客户端分次获取的目标数据。
为本说明书实施方式提供进一步的背景,分布式账本系统(DLS)也可以称为共识网络(例如,由点对点节点组成)和区块链网络,使参与实体能够安全地、不可篡改地进行交易和存储数据。尽管术语“区块链”一词通常与比特币加密货币网络相关联,但是本文所使用的区块链在不涉及任何特殊用例的情况下,通常指代DLS。如上所述,区块链网络可以被提供为公有区块链网络、私有区块链网络或联盟区块链网络。
在公有区块链网络中,共识过程由共识网络的节点控制。例如,数百、数千、甚至数百万个实体可以协同运作公有区块链网络,每个实体操作公共区块链网络中的至少一个节点。因此,公共区块链网络可以被认为是针对参与实体的公有网络。在一些示例中,大多数实体(节点)必须对每个区块签名从而使得该区块有效,并被添加到区块链网络的区块链(分布式账本)中。示例性公有区块链网络包括作为点对点支付网络的比特币网络。比特币网络利用称为区块链的分布式账本。然而,如上所述,术语“区块链”通常用于指代分布式账本,而不特别指代比特币网络。
通常,公有区块链网络支持公开交易。公开交易在公有区块链网络内的所有节点间共享,并存储在全局区块链中。全局区块链是跨所有节点复制的区块链。也就是说,所有节点相对于全局区块链处于完全共识状态。为了达成共识(例如,同意向区块链添加区块),在公有区块链网络内实施共识协议。示例性共识协议包括但不限于在比特币网络中实施的工作量证明(POW)机制。
通常,为特定实体提供私有区块链网络,该特定实体集中控制读写许可。该特定实体控制哪些节点能够参与区块链网络。因此,私有区块链网络通常被称为许可网络,其限制允许谁参与网络,以及它们的参与级别(例如,仅在某些交易中)。可以使用各种类型的访问控制机制(例如,现有参与者投票添加新实体,监管机构可以控制准入)。
通常,联盟区块链网络在参与实体之间是私有的。在联盟区块链网络中,共识过程由被授权的节点组控制,一个或多个节点由相应的实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构,保险公司)组成的联盟可以操作联盟区块链网络,每个实体操作联盟区块链网络中的至少一个节点。因此,联盟区块链网络可以被认为是关于参与实体的私有网络。在一些示例中,每个实体(节点)必须对每个区块进行签名,从而使得该区块有效并且被添加到区块链中。在一些示例中,至少实体(节点)的子集(例如,至少7个实体)必须对每个区块签名,从而使区块有效并且被添加到区块链中。
本文参考联盟区块链网络进一步详细描述了本说明书的实施方式,该联盟区块链网络在参与实体中是部分公有的。然而,可以预期,本说明书的实施方式可以在任何适当类型的区块链网络中实现。
本说明书一个或多个实施例所述的节点(或节点设备)是指可通过遵循相应节点协议、运行节点协议程序的安装来加入该区块链,作为该区块链的节点。本领域的技术人员通常将具有区块链分布式数据库的数据全备份的节点设备称为全节点,将具有区块链分布式数据库的部分备份数据(如仅有区块头的数据)的节点设备称为轻节点等。在本说明书的一个或多个实施例中,并不限定上述节点设备的节点类型。
所述区块链网络还包括客户端。用户实体通过在终端运行客户端安装程序加入到上述区块链网络中来,上述客户端安装程序可以为区块链节点设备的安装程序,相应地,该客户端也作为上述区块链的节点设备,在备份区块链的分布式数据库副本时向其邻近的节点发起数据获取请求;上述客户端安装程序也可以是与联盟区块链链中的一联盟成员节点设备连接的、被控制访问的区块链用户客户端程序,相应地,该客户端由于不具备直接访问区块链的分布式数据库的权限,而一般不被作为上述区块链的节点,需要向与其连接的一个或多个联盟成员节点进行具有权限获知的数据请求。本说明书并不限定上述客户端是否为上述区块链的节点设备。如上所述,上述客户端无论作为区块链节点设备还是联盟成员节点的用户端设备,可向区块链中的一个或多个节点设备获取存储于区块链的分布式数据库中的目标数据。
上述一个或多个实施例并不限制所述的目标数据在区块链的分布式数据库的具体位置,可以作为交易(transaction)的内容记录被存储于区块链的区块(block)中,也可以作为状态数据被存储于区块链的“状态数据库”中,等等。
在本说明书中一个或多个实施例中所描述的交易(transaction),是指通过区块链的节点设备创建,并需要最终发布至区块链的区块(block)中的一笔数据。其中,区块链中的交易,存在狭义的交易以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的比特币区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户实体通过节点向区块链发布的一笔具有业务意图的业务数据,如本实施例所述的包括目标数据的交易。
除了以交易的形式被存储于区块中,区块链分布式数据库中一些数据还可以被保存在区块链的“状态数据库”中,例如存储于节点设备本地维护的三颗Merkle PatriciaTrie中,包括state树,transaction树,及receipt树,等等。
如图1所示,本实施例所提供的区块链数据的分次获取方法包括:
步骤102,第一节点设备接收所述客户端发送的数据请求,所述数据请求包括数据位置标识,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的位置。
本实施方式所述的第一节点设备,可以为上述区块链网络所包括的多个节点设备中的任意一个。本实施例所述的数据位置标识,作为标识本次待获取的部分目标数据在目标数据中的位置的唯一性表达,可使得区块链的节点设备在区块链分布式数据库中唯一确定地寻址到本次待获取的部分目标数据的位置。关于上述数据位置标识的具体表现形式,可依据目标数据的属性或目标数据所属的业务场景而具体设置,例如用以标识上述部分目标数据在目标数据中的起始位置、或结束位置、或其他位置等。
步骤104,基于所述数据位置标识,为所述客户端获取所述部分目标数据。
区块链的节点设备可根据该数据位置标识,及系统协议规定的(预设的)部分目标数据的容量大小、或其他关于上述部分目标数据的参数(如时间参数、数据属性参数等)、或上述客户端所能接收的数据容量限制等因素,在区块链的分布式数据库内查询获取到相应的部分目标数据。
在一种示出的实施方式中,上述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的起始位置;相应地,上述数据请求还可包括所述部分目标数据的容量。则上述基于所述数据位置标识,为所述客户端生成所述部分目标数据,包括:基于所述数据位置标识和所述部分目标数据的容量,从上述数据位置标识开始(可以包括或不包括上述数据位置标识所在的数据),为所述客户端生成符合所述容量的部分目标数据。
上述部分目标数据的容量可以包括部分目标数据所占用的空间大小,如1M,2M,等;当所述目标数据为列表数据时,还可包括部分目标数据的条目数等数量,如1-10条,11-15条,等。由此可见,相比于传统数据库中的数据分页获取方案,本实施例所提供的数据分次获取方法,可以根据具体的业务需求,灵活设置每次获取的目标数据数量。
步骤106,基于所述部分目标数据,为所述客户端生成新的数据位置标识,以作为所述客户端向所述多个节点设备中的任一节点设备继续获取所述目标数据的数据位置标识。
上述第一节点设备在为上述客户端获取到所请求的部分目标数据后,应为上述客户端更新其数据位置标识,以方便该客户端向上述多个节点设备中的任一节点设备继续获取目标数据时使用。
以下,以一业务场景为例,简述上述数据位置标识的生成方式。构建于区块链上的用户社区,通常可承载多种业务模式,如租房、租车、交友等等;由此产生的用户业务积分可作为奖励用户参与社区业务的一种表征。在该实施方式中,上述客户端可作为与联盟区块链的联盟成员节点设备连接的服务器端或用户端设备,参与到构建在联盟链上的业务活动中。由于用户数量巨大,客户端在向节点设备获取用户积分列表时通常需要分次获取以分页在客户端显示。
用户积分列表中所包括的用户积分记录通常可包括以下参数:用户ID、积分值(或积分变动值)、积分发放时间、与积分变更相关的用户行为在区块链上存证的交易哈希值、等等。由于哈希算法的单向唯一性属性,上述与积分变更相关的用户行为在区块链上存证的交易哈希值在区块链的分布式数据库中通常为唯一性的标识,因此与该哈希值连接的任何字符串(或该哈希值本身)均可作为用以标定用户积分记录位置的数据位置标识,应用在上述实施方式中。
当节点设备为客户端获取了本次待获取的部分用户积分记录后,节点设备可将本次待获取的部分用户积分记录中最终一条记录的如下字符串:
“用户ID+‘^’+积分值(或积分变动值)‘^’+积分发放时间‘^’+与积分变更相关的用户行为在区块链上存证的哈希值”
生成为新的数据位置标识,以作为上述客户端向所述多个节点设备中的任一节点设备继续获取所述用户积分记录的数据位置标识。本领域技术人员可知,上述数据位置标识可以依据已获取部分数据的最后一条用户积分记录的属性生成,也可以依据已获取部分数据的下一条用户积分记录的属性生成,还可以依据系统协议预设的任意一条用户积分记录的属性生成,在此不受限制。
步骤108,向所述客户端发送所述部分目标数据和所述新的数据位置标识。
基于上述一个或多个实施例所述的区块链数据的分次获取方法,客户端可以依据自身的需求或限制,灵活地向区块链的节点设备请求获取部分目标数据;基于具有唯一性属性的数据位置标识的设置,不易出现所获得的部分目标数据重复或遗漏等现象;而且对于可能向多个节点请求数据备份的客户端而言,由于数据位置标识在区块链的分布式数据库中的唯一性属性,无论该客户端在对目标数据的备份中向几个节点设备发起数据请求,基于区块链的共识机制,均可获得准确、完整的目标数据;相比于传统数据库中的数据多次获取方法,提高了待获取目标数据的命中概率。
与上述流程实现对应,本说明书的实施例还提供了区块链数据的多次获取装置20。装置20可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图3所示的CPU、内存以及存储器之外,上述装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
如图2所示,本说明书还提供了一种区块链数据的分次获取装置20,应用于包括多个节点设备和客户端的区块链网络,所述区块链的分布式数据库存储有待所述客户端分次获取的目标数据;所述装置应用于节点设备端,所述装置20包括:
接收单元202,用于接收所述客户端发送的数据请求,所述数据请求包括数据位置标识,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的位置;
获取单元204,用于基于所述数据位置标识,为所述客户端获取所述部分目标数据;
生成单元206,用于基于所述部分目标数据,为所述客户端生成新的数据位置标识,以作为所述客户端向所述多个节点设备中的任一节点设备继续获取所述目标数据的数据位置标识;
发送单元208,用于向所述客户端发送所述部分目标数据和所述新的数据位置标识。
在又一示出的实施方式中,所述数据位置标识用以标识本次待获取的部分目标数据在所述目标数据中的起始位置;所述数据请求还包括所述部分目标数据的容量;
所述生成单元206进一步用于:
基于所述数据位置标识和所述部分目标数据的容量,为所述客户端生成所述部分目标数据。
在又一示出的实施方式中,所述目标数据为列表型数据;所述部分目标数据的容量包括所述部分目标数据的列表条目数、或部分目标数据占用空间数量。
在又一示出的实施方式中,所述数据位置标识是基于所述部分目标数据所包括的最后一条列表数据生成的唯一性标识。
在又一示出的实施方式中,所述列表数据包括在所述区块链的分布式数据库存证的交易哈希值。
在又一示出的实施方式中,所述区块链为联盟链,所述节点设备为联盟成员节点设备,所述客户端为与联盟成员节点设备连接的用户客户端。
上述装置20中各个单元的功能和作用的实现过程具体详见上述第一方节点设备所执行的区块链数据的多次获取方法中对应步骤的实现过程,相关之处参见方法实施例的部分说明即可,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部单元或模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的装置、单元、模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机设备,如图3所示,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中上述第一方节点设备所执行的区块链数据的多次获取方法的各个步骤。对上述第一节点设备所执行的区块链数据的多次获取方法的各个步骤的详细描述请参见之前的内容,不再重复。
与上述方法实施例相对应,本说明书的实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中第一节点设备所执行的区块链数据的多次获取方法的各个步骤。对上述第一节点设备所执行的区块链数据的多次获取方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
- 区块链数据的分次获取方法和装置
- 区块链数据的分次获取方法和装置