CN117235084A - 数据更新方法、装置、设备及存储介质 - Google Patents
数据更新方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117235084A CN117235084A CN202311048472.XA CN202311048472A CN117235084A CN 117235084 A CN117235084 A CN 117235084A CN 202311048472 A CN202311048472 A CN 202311048472A CN 117235084 A CN117235084 A CN 117235084A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- blockchain
- preset
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 81
- 230000006870 function Effects 0.000 description 29
- 238000013459 approach Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000008569 process Effects 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请关于一种数据更新方法、装置、设备及存储介质,涉及计算机技术领域,以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。该数据更新方法,包括:获取当前周期对应的区块链数据;区块链数据包括区块链中处于当前区块范围内的各个区块的数据;当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围;当前周期的长度小于区块链对应的出块时长;当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区;当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据更新方法、装置、设备及存储介质。
背景技术
对于金融领域和寄递领域等领域中部署的区块链系统而言,通常需要支持对区块链上数据的链下查询服务,以满足业务需求。链下查询服务在要求数据具备一致性的同时,要求较高实时性。
目前,一般是采用T+1的方式将区块链上的数据同步至数据库中,再基于数据库支持链下查询。这种方式虽然可以实现数据的一致性,但同步数据的延迟较高,难以支持对于数据的实时查询。
发明内容
本申请提供一种数据更新方法、装置、设备及存储介质,以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。本申请的技术方案如下:
根据本申请实施例的第一方面,提供一种数据更新方法,包括:获取当前周期对应的区块链数据;区块链数据包括区块链中处于当前区块范围内的各个区块的数据;当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围;目标高度和当前高度之间的差值大于或等于预设数值;预设数值用于表征区块链中区块被确认生效时所对应的后续区块的数量值;当前周期的长度小于区块链对应的出块时长;当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区;当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
在一种可选的实现方式中,该数据更新方法,还包括:响应于请求节点发送的携带有待查询字段的数据查询请求,确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据;当确定预设缓存区或预设数据库中存在与待查询字段对应的数据时,向请求节点发送与待查询字段对应的数据;当确定预设缓存区且预设数据库内不存在与待查询字段对应的数据时,向请求节点发送用于表示查询失败的提示信息。
在一种可选的实现方式中,确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据的方法,具体包括:在预设缓存区内匹配与待查询字段对应的数据,并当在预设缓存区内匹配成功时,确定预设缓存区中存在与待查询字段对应的数据;或者,当在预设缓存区内匹配失败时,在预设数据库内匹配与待查询字段对应的数据;当在预设数据库内匹配成功时,确定预设数据库中存在与待查询字段对应的数据;当在预设数据库内匹配失败时,确定预设缓存区且预设数据库内不存在与待查询字段对应的数据。
在一种可选的实现方式中,区块的数据包括区块哈希值;确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据的方法,具体包括:确定预设缓存区内存储的区块链的高度与当前高度是否一致,并当区块链的高度与当前高度不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据;或者,当区块链的高度与当前高度一致时,确定预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值是否一致,并当预设缓存区内存储的任意一个区块的区块哈希值与任意一个区块在当前周期的区块哈希值不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
在一种可选的实现方式中,确定预设数据库内不存在与目标高度对应的区块的数据的方法,具体包括:当确定预设缓存区内与目标高度对应的区块的存储状态为未更新状态时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内不存在与目标高度对应的区块哈希值时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内存储的区块链的高度与目标高度不相同时,确定预设数据库内不存在与目标高度对应的区块的数据。
在一种可选的实现方式中,获取当前周期对应的区块链数据之后,该数据更新方法,还包括:当预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在一致性时,保持预设缓存区内存储的区块链数据,并等待下一个周期。
在一种可选的实现方式中,区块的数据还包括区块头数据和交易数据;获取当前周期对应的区块链数据的方法,具体包括:调用当前区块哈希获取服务获取区块链中与当前高度对应的当前区块的哈希值;基于当前区块的哈希值调用区块获取服务获取当前区块的区块头数据;解析当前区块的区块头数据得到当前高度和当前区块对应的交易哈希值,并根据当前高度确定当前区块范围;基于当前区块范围调用区块哈希获取服务获取当前区块范围内其他区块的哈希值,并基于其他区块的哈希值调用区块获取服务获取其他区块的区块头数据;基于当前区块对应的交易哈希值和其他区块对应的交易哈希值,调用交易数据获取服务获取当前区块对应的交易数据和其他区块对应的交易数据。
根据本申请实施例的第二方面,提供一种数据更新装置,包括:获取单元和更新单元;
获取单元,被配置为执行获取当前周期对应的区块链数据;区块链数据包括区块链中处于当前区块范围内的各个区块的数据;当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围;目标高度和当前高度之间的差值大于或等于预设数值;预设数值用于表征区块链中区块被确认生效时所对应的后续区块的数量值;当前周期的长度小于区块链对应的出块时长;
更新单元,被配置为执行当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区;
更新单元,还被配置为执行当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
在一种可选的实现方式中,该数据更新装置,还包括:确定单元和发送单元;
确定单元,被配置为执行响应于请求节点发送的携带有待查询字段的数据查询请求,确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据;
发送单元,被配置为执行当确定预设缓存区或预设数据库中存在与待查询字段对应的数据时,向请求节点发送与待查询字段对应的数据;
发送单元,还被配置为执行当确定预设缓存区且预设数据库内不存在与待查询字段对应的数据时,向请求节点发送用于表示查询失败的提示信息。
在一种可选的实现方式中,确定单元,具体被配置为执行:在预设缓存区内匹配与待查询字段对应的数据,并当在预设缓存区内匹配成功时,确定预设缓存区中存在与待查询字段对应的数据;或者,当在预设缓存区内匹配失败时,在预设数据库内匹配与待查询字段对应的数据;当在预设数据库内匹配成功时,确定预设数据库中存在与待查询字段对应的数据;当在预设数据库内匹配失败时,确定预设缓存区且预设数据库内不存在与待查询字段对应的数据。
在一种可选的实现方式中,区块的数据包括区块哈希值;更新单元,具体被配置为执行:确定预设缓存区内存储的区块链的高度与当前高度是否一致,并当区块链的高度与当前高度不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据;或者,当区块链的高度与当前高度一致时,确定预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值是否一致,并当预设缓存区内存储的任意一个区块的区块哈希值与任意一个区块在当前周期的区块哈希值不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
在一种可选的实现方式中,更新单元,具体被配置为执行:当确定预设缓存区内与目标高度对应的区块的存储状态为未更新状态时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内不存在与目标高度对应的区块哈希值时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内存储的区块链的高度与目标高度不相同时,确定预设数据库内不存在与目标高度对应的区块的数据。
在一种可选的实现方式中,更新单元,还被配置为执行当预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在一致性时,保持预设缓存区内存储的区块链数据,并等待下一个周期。
在一种可选的实现方式中,区块的数据还包括区块头数据和交易数据;获取单元,具体被配置为执行:调用当前区块哈希获取服务获取区块链中与当前高度对应的当前区块的哈希值;基于当前区块的哈希值调用区块获取服务获取当前区块的区块头数据;解析当前区块的区块头数据得到当前高度和当前区块对应的交易哈希值,并根据当前高度确定当前区块范围;基于当前区块范围调用区块哈希获取服务获取当前区块范围内其他区块的哈希值,并基于其他区块的哈希值调用区块获取服务获取其他区块的区块头数据;基于当前区块对应的交易哈希值和其他区块对应的交易哈希值,调用交易数据获取服务获取当前区块对应的交易数据和其他区块对应的交易数据。
根据本申请实施例的第三方面,提供一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为执行指令,以实现如第一方面中任一可选的数据更新方法。
根据本申请实施例的第四方面,提供一种计算机可读存储介质,计算机可读存储介质上存储有指令,当计算机可读存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如第一方面中任一可选的数据更新方法。
根据本申请实施例的第五方面,提供一种计算机程序产品,包括计算机程序,计算机程序被电子设备执行时实现第一方面中任一可选的数据更新方法。
本申请的实施例提供的第一方面的技术方案至少带来以下有益效果:可以获取当前周期对应的包括区块链中处于当前区块范围内的各个区块的数据的区块链数据,且可以当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区,以进一步当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
由于当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围,且目标高度和当前高度之间的差值大于或等于预设数值,即大于或等于区块链中区块被确认生效时所对应的后续区块的数量值。并且,当前周期的长度小于区块链对应的出块时长。因此,本申请可以及时地获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据。
基于此,本申请可以及时地确定预设缓存区内存储的数据与区块链上的数据是否存在一致性,并在不存在一致性时将获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据更新在预设缓存区内。相比于T+1的数据同步方式,本申请可以缩短同步的时间间隔,在提高预设缓存区内的数据与区块链上的数据的一致性的同时,提升预设缓存区内数据的实时性。
并且,在及时地获取到新生成区块的基础上,本申请可以及时地确认可以生效的区块,即目标高度对应的区块,以及时地将目标高度对应的区块更新在预设数据库内,避免预设缓存区内该目标高度对应的区块的数据被删除导致的数据不一致的问题,从而提升数据的一致性。因此,本申请可以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。
需要说明的是,第二方面至第五方面中的任一种实现方式所带来的技术效果可参见第一方面中对应实现方式所带来的技术效果,此处不再赘述。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理,并不构成对本申请的不当限定。
图1是本申请实施例示出的一种实施架构的示意图;
图2是本申请实施例示出的一种数据更新方法的流程图;
图3是本申请实施例示出的又一种数据更新方法的流程图;
图4是本申请实施例示出的一种数据查询流程的示意图;
图5是本申请实施例示出的一种数据更新流程的示意图;
图6是本申请实施例示出的一种数据更新装置的框图;
图7是本申请实施例示出的一种电子设备的框图。
具体实施方式
为了使本领域普通人员更好地理解本申请的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
为了便于理解本申请,现对本申请涉及到的相关要素进行描述。
区块链技术
区块链是一种维护区块的链式结构,可以理解为是把加密数据(即区块)按照生成时间的先后顺序进行叠加生成的永久和不可逆向修改的数据记录。该数据记录具备持续增长、可共享等特点。
区块链技术,也被称为分布式账本技术,是一种由若干台计算设备共同参与“记账”(即记录交易数据),共同维护一份完整的分布式数据库的新兴技术。
由于区块链技术具有去中心化(即没有中心节点)、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。例如,金融领域、寄递领域和医疗领域等。
区块链系统可包括多个区块链节点。区块链节点为具有通信功能以及存储功能的设备,如存储有区块链的设备。每一个区块链节点既可接收数据,也可生成数据。不同的区块链节点之间通过维护一个共同的区块链来保持通信。
本申请实施例中的区块链节点可以理解为处理单元。在一种实现方式中,区块链节点可以为服务器或终端设备等物理设备。在另一种实现方式中,区块链节点可以为虚拟计算机。虚拟计算机为所有类型的虚拟化设备中软件虚拟出来的运行环境的统称,该概念包括虚拟机、容器。在其他实现方式中,区块链节点还可以为进程(process)或者线程(thread)。
区块(block)
在区块链技术中,交易数据以电子记录的形式被永久储存下来,存放这些电子记录的文件我们称之为“区块”。
区块是按时间顺序一个个先后生成的,每一个区块记录有它在被创建期间发生的所有交易,所有区块汇总起来形成一个链式的记录合集。由于不同区块链系统中,区块链节点的吞吐率不同,因此,在不同区块链系统中,区块的大小可能也不同。
可以看出,区块中记录有该区块生成时间段内的交易数据,因此,区块的主体实际上是交易数据的合集。每一种区块链的结构设计可能不完全相同,但区块通常包括区块头(header)和区块体(body)两部分。
其中,区块头主要用于记录当前区块的特征值,可以包括当前区块的标识(如区块的编号)、当前区块中区块体的哈希值、时间戳(用于表示该区块的生成时间)、交易数量(transaction count)和随机数(nonce)等数据中的至少一种数据,此外,区块头还可以包括前一区块的哈希值(具体为前一区块中区块头的哈希值)。
区块头包括有多个特征值,在确定该区块的哈希值时,需要将该区块头中的各个特征值按照顺序连接在一起,以组成一个字符串,再对这个字符串计算哈希值。由于不同区块的区块头所包括的特征值的数值通常不同,因此,每一区块唯一对应一个哈希值。
基于每一区块唯一对应一个哈希值,且每个区块的区块头均包括有前一区块的哈希值,这样,多个区块即可形成区块链。
区块体可以包括多个交易数据。对于每一交易数据而言,区块体可以包括输入区块链地址、输出区块链地址和数字代币数量等数据。区块体的哈希值可以是与多个交易数据一一对应的多个哈希值,即基于每一交易数据均记录一个哈希值。或者,区块体的哈希值也可以是与多个交易数据的一个哈希值,即基于多个交易数据均记录一个哈希值。
示例性的,表1示出了区块的一种结构形式。当然,区块的结构不仅仅局限于表1所示,且各个结构的取值也不仅仅局限于表1所示。
表1
远程过程调用
远程过程调用(remote procedure call,RPC)是一种进程间的通信方式,可以支持一个应用程序调用网络上的另一个应用程序中的方法,也可以理解为一个应用程序向另一个应用程序请求服务。这两个应用程序可以处于同一个物理设备中,也可以处于不同的物理设备中。本申请实施例中,主要涉及一个区块链节点内部不同应用程序之间的调用。
缓存区
缓存区可以是内存空间中固定容量的存储空间,可以理解为一个内存或一个分段的传输区,用来缓存输入或输出的数据。相比于数据库,缓存区可以提供更快速度的数据查询服务。
数据库
数据库可以理解为存储数据的仓库,可以用于保存一系列有组织的数据。这些有组织的数据存储在数据库后,通常不会发生变化。相比于缓存区,数据库可以提供稳定性更高的长时间存储服务。
以下对本申请涉及的应用场景、实施环境进行简单介绍。
对于金融类和寄递类等业务中部署的区块链系统而言,通常需要支持对区块链上数据的链下查询服务,以满足业务需求。查询时一般需要查询区块头数据和交易数据。并且,链下查询服务在要求数据具备一致性的同时,要求较高实时性。一些场景下,区块查询的实时性要求可以在1秒或者1分钟以内。
目前,一般是采用T+1的方式将区块链上的数据同步至数据库中,再基于数据库支持链下查询。这种方式虽然可以实现数据的一致性,但同步数据的延迟较高,难以支持对于数据的实时查询。
针对上述问题,本申请提供了一种数据更新方法,可以获取当前周期对应的包括区块链中处于当前区块范围内的各个区块的数据的区块链数据,且可以当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区,以进一步当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
由于当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围,且目标高度和当前高度之间的差值大于或等于预设数值,即大于或等于区块链中区块被确认生效时所对应的后续区块的数量值。并且,当前周期的长度小于区块链对应的出块时长。因此,本申请可以及时地获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据。
基于此,本申请可以及时地确定预设缓存区内存储的数据与区块链上的数据是否存在一致性,并在不存在一致性时将获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据更新在预设缓存区内。相比于T+1的数据同步方式,本申请可以缩短同步的时间间隔,在提高预设缓存区内的数据与区块链上的数据的一致性的同时,提升预设缓存区内数据的实时性。
并且,在及时地获取到新生成区块的基础上,本申请可以及时地确认可以生效的区块,即目标高度对应的区块,以及时地将目标高度对应的区块更新在预设数据库内,避免预设缓存区内该目标高度对应的区块的数据被删除导致的数据不一致的问题,从而提升数据的一致性。因此,本申请可以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。
图1为本申请的实施架构图。如图1所示,本申请实施例提供的数据更新系统100,可以包括多个区块链节点101和请求节点102。请求节点102可以和任意一个区块链节点101之间通信连接。多个区块链节点101可以组成区块链系统,且不同的区块链节点101之间可以通信连接。
在实际应用中,请求节点102的数量可以是一个或多个。
为了便于理解,本申请以一个区块链节点101和一个请求节点102之间通信连接为例进行说明。
可选的,图1中的区块链节点101和请求节点102可以是集成于同一个设备内的功能模块,也可以是两个相互独立设置的设备。本申请实施例对此不作限制。
容易理解的是,当区块链节点101和请求节点102是集成于同一个设备内的功能模块时,区块链节点101和请求节点102之间的通信方式为设备内部模块之间的通信。这种情况下,二者之间的通信流程与“区块链节点101和请求节点102相互独立设置的情况下,二者之间的通信流程”相同。
为了便于理解,本申请主要以区块链节点101和请求节点102相互独立设置为例进行说明。
可选地,在区块链节点101和请求节点102相互独立设置的情况下,请求节点102可以是多个区块链节点101组成的区块链系统以外的独立设备。或者,请求节点102也可以是一个区块链节点,可以与多个区块链节点101共同组成区块链系统。
一种可能的方式中,图1中的多个区块链节点101可以构成区块链网络,可以用于为医疗机构和银行机构等提供数据存储和数据查询等服务。该区块链网络可以视为一个点对点(peer to peer,P2P)的网络。
一种可能的方式中,多个区块链节点101可以存储有相同的区块链。该区块链中,可以包括有多个区块的数据。例如,该区块链可以包括如图1所示的初始块0、区块1、区块2和区块3等多个区块。
可选地,该区块链可以是私有链,也可以是联盟链,还可以是公有链。私有链是指访问权限控制较为严格的区块链。联盟链也可以称为共同体区块链,是指其共识过程受到预选节点控制的区块链。在联盟链中,只针对存储有该联盟链的节点开放全部或部分功能,联盟链中的各个节点可以基于需要定制读写权限、查询权限等。公有链是指世界上任何个体或者团体都可以发送交易,以及参与共识过程的区块链。
一种可能的方式中,区块链节点101可以配置有特定内存空间、预设缓存区和预设数据库。特定内存空间可以用于存储区块链。预设缓存区可以用于存储从区块链中获取到的未被确认生效的区块的数据,以及部分被确认生效的区块的数据。预设数据库可以用于存储被确认生效的区块的数据。
一种可能的方式中,特定内存空间和/或预设缓存区和/或预设数据库可以是区块链节点101内部的内存空间,也可以是设置于区块链节点101外部、且与区块链节点101进行连接的其他设备上的内存空间。本申请实施例对此不作限定。
一种可能的方式中,区块链节点101可以配置有当前区块哈希获取服务、区块哈希获取服务、区块获取服务、交易数据获取服务和交易数据解码服务等。例如,当前区块哈希获取服务可以是具备当前区块哈希获取功能的RPC接口。区块哈希获取服务可以是具备区块哈希获取功能的RPC接口。区块获取服务可以是具备区块获取功能的RPC接口。交易数据获取服务可以是具备交易数据获取功能的RPC接口。交易数据解码服务可以是具备交易数据解码功能的RPC接口。
具备当前区块哈希获取功能的RPC接口也可以称为getbestblockhash,被调用时可以返回本地区块链上在当前时刻最后一个区块的哈希值,即当前区块的哈希值。
具备区块哈希获取功能的RPC接口也可以称为getblockhash,被调用时可以返回指定区块号或者区块高度对应的区块的哈希值。
具备区块获取功能的RPC接口也可以称为getblock,被调用时可以返回指定区块哈希值对应的区块头数据。
具备交易数据获取功能的RPC接口也可以称为getrawtransaction,被调用时可以返回指定交易哈希值对应的原始交易字段或解码后的JSON对象(JavaScript objectnotation)。
具备交易数据解码功能的RPC接口也可以称为decoderawtransaction,被调用时可以将指定的原始交易字段解码为JSON对象。
可选地,图1中的区块链节点101可以是终端,也可以是服务器,还可以是其他支持区块链维护等功能的设备。图1中仅为区块链节点101的设备形态的一种示例,并不对其构成限定。
一种可能的方式中,图1中的请求节点102可以配置有数据统计处理、数据融合处理和数据并行处理等功能,用于提供数据处理服务。具体地,请求节点102可以基于区块号、区块哈希值、交易哈希值和区块链地址等标识信息,向区块链节点101发送数据查询请求,以获取到对应的区块链数据,从而基于配置的功能对获取到的区块链数据进行处理。
可选地,图1中的请求节点102可以是终端,也可以是服务器,还可以是其他用于提供数据处理服务的设备。图1中仅为请求节点102的设备形态的一种示例,并不对其构成限定。
可选地,区块链节点101和请求节点102是终端时,该终端可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本,以及个人数字助理(personal digital assistant,PDA)等设备。并且,该终端还可以与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互。本申请对终端的具体形态不作特殊限制。
区块链节点101和请求节点102是服务器时,该服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本申请对服务器的具体实现方式也不作限制。
结合图1,本申请实施例提供了一种基于固定周期调用RPC接口进行数据更新的区块链实时查询方法,可以分为两个部分。第一部分是关于在预设缓存区和预设数据库中建立和维护区块链数据的方法。第二部分是关于根据给定的区块号、区块哈希值和交易哈希值等查询区块链数据的方法。
为了便于理解,以下结合附图对本申请提供的数据更新方法进行具体介绍。
图2是根据一示例性实施例示出的一种数据更新方法的流程图,该数据更新方法应用于图1中的区块链节点101。如图2所示,该数据更新方法包括:S201-S203。
S201、区块链节点获取当前周期对应的区块链数据。
其中,区块链数据可以包括区块链中处于当前区块范围内的各个区块的数据。区块的数据可以包括区块哈希值、区块头数据和区块体数据。区块体数据可以包括多个交易的交易数据。当前区块范围可以用于表征目标高度至区块链在当前周期的当前高度的区块范围。当前区块范围可以包括目标高度和区块链在当前周期的当前高度。目标高度和当前高度之间的差值可以大于或等于预设数值。预设数值可以用于表征区块链中区块被确认生效时所对应的后续区块的数量值。
需要说明的是,为了支持对于链上全量数据的链下查询,可以考虑将区块链上的全量数据同步至链下存储。然而,区块链上未被确认生效的区块中的数据可能会发生变化,导致链下数据和链上数据存在不一致的问题。具体地,区块链可以对应有一个确认交易的流程。该流程一般是交易所属区块对应的后续区块的数量值大于或等于特定数值(即预设数值)时,交易数据便被确认生效,交易所属区块也被确认生效。而后续区块的数量值小于预设数值的区块未被确认生效。这些未被确认生效的区块可能会被删除,或者包括的交易数据可能会发生变化。
基于此,本申请考虑周期性地从区块链中获取最新生成的数量大于或等于预设数值的多个区块,且轮询周期(例如当前周期)的长度可以小于区块链对应的出块时长。这种情况下,可以保证及时地获取到全部未被确认生效的区块具体地,区块链对应的出块时长可以用于表征区块链中生成一个区块的平均时长。在轮询周期的长度小于区块链对应的出块时长时,可以实时地了解到区块链中是否生成了新的区块,从而可以实时地同步新的区块的数据,在提升链上数据和链下数据一致性的同时,支持对于区块链数据的实时查询。
应理解,区块链中每生成一个区块,便可以有一个区块被确认生效。基于获取到的最新生成的多个区块,还可以确认是否存在新的被确认生效的区块,从而可以作为永久保存的数据存入预设数据库。进一步地,为了及时地确认区块链中是否生成新区块,区块链对应的出块时长与轮询周期的长度之间的比值可以是整数,从而进一步提升查询数据的实时性。
示例性的,一个区块链对应的出块时长可以是10分钟。即该一个区块链可以每隔10分钟生成一个区块。轮询周期的长度可以为1分钟。即每隔1分钟便轮询一次区块链是否生成了新的区块。该轮询周期的长度小于该一个区块链对应的出块时长,且该一个区块链对应的出块时长与轮询周期的长度之间的比值是整数10。这种情况下,轮询过程可以和区块链出块过程匹配,以支持在区块链中新生成一个区块,实时地获取到该新生成的区块。
一种可能的方式中,区块链节点可以预先配置有一个守护程序。该一个守护程序可以周期性地轮询区块链,即每隔一个固定时间间隔查询区块链上的数据。
一种可能的方式中,区块链节点可以预先配置有固定时间间隔,并在确定当前时刻与上一次触发获取区块链数据的时刻之间的间隔为固定时间间隔时,确定进入当前周期,并获取区块链数据。区块链节点获取区块链数据时,可以直接获取区块链上的全量数据,并在获取到区块链上的全量数据后,确定区块链的当前高度,并将区块链的当前高度减去预设数值得到目标高度,以从区块链的全量数据内读取到当前区块范围内各个区块的数据。
应理解,在区块链的高度小于预设数值时,区块链上的全量数据即当前周期的区块链数据。
一种可能的方式中,区块链的高度,可以是处于该高度的区块对应的区块号,也可以称为区块标识。例如,区块链的高度为10001时,处于该高度的区块对应的区块号可以是10001。
一种可能的实施例中,区块链节点也可以通过调用相关的服务获取当前周期对应的区块链数据。如图3所示,这种方式实现时,具体可以包括:S2011-S2015。
S2011、区块链节点调用当前区块哈希获取服务获取区块链中与当前高度对应的当前区块的哈希值。
可选地,当前区块哈希获取服务可以是具备当前区块哈希获取功能的RPC接口。具备当前区块哈希获取功能的RPC接口也可以称为getbestblockhash,被调用时可以返回本地区块链上在当前时刻最后一个区块的哈希值,即当前区块的哈希值。
S2012、区块链节点基于当前区块的哈希值调用区块获取服务获取当前区块的区块头数据。
可选地,区块获取服务可以是具备区块获取功能的RPC接口。具备区块获取功能的RPC接口也可以称为getblock,被调用时可以返回指定区块哈希值对应的区块头数据。
S2013、区块链节点解析当前区块的区块头数据得到当前高度和当前区块对应的交易哈希值,并根据当前高度确定当前区块范围。
一种可以实现的方式中,区块链节点根据当前高度确定当前区块范围时,可以将当前高度减去预设数值得到目标高度,并将目标高度至当前高度确定为当前区块范围。
S2014、区块链节点基于当前区块范围调用区块哈希获取服务获取当前区块范围内其他区块的哈希值,并基于其他区块的哈希值调用区块获取服务获取其他区块的区块头数据。
可选地,区块哈希获取服务可以是具备区块哈希获取功能的RPC接口。具备区块哈希获取功能的RPC接口也可以称为getblockhash,被调用时可以返回指定区块号或者区块高度对应的区块的哈希值。
S2015、区块链节点基于当前区块对应的交易哈希值和其他区块对应的交易哈希值,调用交易数据获取服务获取当前区块对应的交易数据和其他区块对应的交易数据。
可选地,交易数据获取服务可以是具备交易数据获取功能的RPC接口。具备交易数据获取功能的RPC接口也可以称为getrawtransaction,被调用时可以返回指定交易哈希值对应的原始交易字段或解码后的JSON对象(JavaScript object notation)。
一种可能的方式中,区块链节点调用交易数据获取服务获取到的数据为原始交易字段时,还可以进一步调用交易数据解码服务对原始交易字段进行解码,得到具体的交易数据。
可选地,交易数据解码服务可以是具备交易数据解码功能的RPC接口。具备交易数据解码功能的RPC接口也可以称为decoderawtransaction,被调用时可以将指定的原始交易字段解码为JSON对象。
S202、区块链节点当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区。
一种可能的方式中,区块链节点内可以预先配置有预设缓存区。预设缓存区可以用于缓存区块链节点从区块链上获取的数据,且预设缓存区内存储的被确认生效的区块可以同步至预设数据库。区块链节点可以按照键值对的形式将数据存储在预设缓存区内。即预设缓存区内可以存储有与区块号对应的区块哈希值、与区块号对应的区块头数据、与区块号对应的交易哈希值、与区块哈希值对应的区块头数据和与交易哈希值对应的交易数据等。
一种可能的方式中,区块链节点获取当前周期对应的区块链数据后,可以读取预设缓存区内存储的区块链数据,并将当前周期对应的区块链数据和预设缓存区内存储的区块链数据进行比较,以确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据是否存在一致性。
若区块链节点确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据,则可以表明区块链上的交易数据发生了变化。这种情况下,为了保证数据的一致性,区块链节点可以将各个区块的数据更新在预设缓存区。具体而言,若一个区块的数据未存储在预设缓存区内,则区块链节点可以在预设缓存区内建立该一个区块的数据。若一个区块的数据已存储在预设缓存区内,则区块链节点可以将预设缓存区内该一个区块数据替换为当前周期获取到的数据。
若区块链节点确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在一致性,则可以表明区块链上的交易数据未发生变化。这种情况下,区块链节点可以保持预设缓存区内存储的区块链数据不变,并等待下一个周期。
一种可能的实施例中,区块链节点将当前周期对应的区块链数据和预设缓存区内存储的区块链数据进行比较时,可以是将当前周期对应的区块链数据中包括的各个区块的区块哈希值,与预设缓存区内存储的各个区块的哈希值进行比较。
另一种可能的实施例中,区块链节点也可以根据区块链的高度和各个区块的区块哈希值,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据,具体可以包括:S2021-S2022。
S2021、区块链节点确定预设缓存区内存储的区块链的高度与当前高度是否一致,并当区块链的高度与当前高度不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
一种可能的方式中,区块链节点可以将预设缓存区内存储的各个区块中,生成时间与当前时刻最接近的区块对应的区块号,确定为预设缓存区内存储的区块链的高度,并将区块链的当前高度与预设缓存区内存储的区块链的高度进行比较。若两者不一致,则可以表明区块链生成了新的区块。这种情况下,区块链节点可以确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
需要说明的是,由于两个数值进行比较得到结果的速度较快,因此,区块链节点可以高效地确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据,从而提高数据更新的效率。
S2022、区块链节点当区块链的高度与当前高度一致时,确定预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值是否一致,并当预设缓存区内存储的任意一个区块的区块哈希值与任意一个区块在当前周期的区块哈希值不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
一种可能的方式中,若区块链的当前高度与预设缓存区内存储的区块链的高度一致。虽然可以表明区块链未生成新的区块,但无法确定是否存在区块被替代的情况,或者是否一个或多个区块内的数据是否发生了变化。这种情况下,区块链可以再确定预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值是否一致。
若预设缓存区内存储的任意一个区块的区块哈希值与任意一个区块在当前周期的区块哈希值不一致,则可以表明未被确认生效的区块中可能存在区块被替代的情况,和/或一个或多个区块内的数据发生了变化。这种情况下,区块链节点可以确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
若预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值一致,则可以表明不存在区块被替代的情况,且各区块内的数据未发生变化。这种情况下,区块链节点可以确定预设缓存区内存储的数据与当前周期对应的区块链数据存在一致性。
应理解,区块哈希值是基于区块头数据生成的。而区块头数据在包括区块的区块号、生成时间戳等相关信息外,还包括基于交易数据生成的交易哈希值。因此,区块头数据中的任一项发生变化,均会导致区块哈希值发生变化。即在区块哈希值发生变化时,可以表明区块头数据发生了变化。
S203、区块链节点当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
一种可能的方式中,区块链节点可以配置有预设数据库。相比于预设缓存区,预设数据库可以永久的存储数据,提升数据的一致性。基于此,区块链节点可以将被确认生效的区块的数据,作为永久保存的数据同步至预设数据库,避免预设缓存区内该目标高度对应的区块的数据被删除导致的数据不一致的问题,以提升数据的一致性,从而更稳定地支持对于区块链数据的查询。
一种可能的方式中,预设数据库可以是关系型数据库,用于存储一个或多个关键字词和交易数据的映射关系等。关键字词可以是区块号、区块哈希值、交易哈希值和区块链地址等。
一种可能的方式中,在目标高度和区块链的当前高度之间的差值等于预设数值的情况下,可以表明目标高度的区块对应的后续区块的数量等于预设数值,则区块链节点可以确认目标高度的区块生效。这种情况下,区块链节点可以确定预设数据库中是否存在与目标高度对应的区块的数据。
若预设数据库内不存在与目标高度对应的区块的数据,则区块链节点可以将目标高度对应的区块的数据更新在预设数据库内,即在预设数据库内建立目标高度对应的区块的数据。
若预设数据库中存在与目标高度对应的区块的数据,则区块链节点可以等待下一周期。
一种可能的方式中,在目标高度和区块链的当前高度之间的差值大于预设数值的情况下,区块链节点还可以确定当前高度和预设数值之间的差值,得到第一高度,并确定目标高度至第一高度的区块范围内的各个区块生效。这种情况下,区块链节点可以确定预设数据库中是否存在目标高度至第一高度的区块范围内的各个区块的数据。
若预设数据库内不存在目标高度至第一高度的区块范围内的一个或多个区块的数据,则区块链节点可以将该一个或多个区块的数据更新在预设数据库内,即在预设数据库内建立该一个或多个区块的数据。
若预设数据库中存在目标高度至第一高度的区块范围内的各个区块的数据,则区块链节点可以等待下一周期。
可选地,在区块链节点确定预设数据库中是否存在与目标高度对应的区块的数据时,可以通过包括但不限于以下两种方式实现。应理解,区块链节点确定预设数据库中是否存在目标高度至第一高度的区块范围内的各个区块的数据时,也可以通过与包括但不限于以下两种方式类似的方式实现,在此不再赘述。
一种可能的方式中,区块链节点可以在预设缓存区内维护每个区块的状态标识。状态标识可以用于表征区块的存储状态为未更新状态,或者为更新状态。未更新状态即未更新至预设数据库。更新状态即已更新至预设数据库。基于此,区块链节点可以在预设缓存区内读取目标高度对应的区块的状态标识。
若目标高度对应的区块的状态标识用于表征区块的存储状态为未更新状态,则区块链节点可以确定预设数据库内不存在与目标高度对应的区块的数据。
若目标高度对应的区块的状态标识用于表征区块的存储状态为更新状态,则区块链节点可以确定预设数据库中存在与目标高度对应的区块的数据。
一种可能的方式中,区块链节点可以将目标高度对应区块的区块哈希值在预设数据库中进行匹配。
若在预设数据库中匹配到目标高度对应区块的区块哈希值,则可以表明预设数据库中存在与目标高度对应的区块哈希值。这种情况下,区块链节点可以确定预设数据库中存在与目标高度对应的区块的数据。
若在预设数据库中未匹配到目标高度对应区块的区块哈希值,则可以表明预设数据库内不存在与目标高度对应的区块哈希值。这种情况下,区块链节点可以确定预设数据库内不存在与目标高度对应的区块的数据。
一种可能的方式中,区块链节点可以确定预设数据库内存储的区块链的高度与目标高度是否相同。
若预设数据库内存储的区块链的高度与目标高度相同,则可以表明预设数据库中存在与目标高度对应的区块哈希值。这种情况下,区块链节点可以确定预设数据库中存在与目标高度对应的区块的数据。
若预设数据库内存储的区块链的高度与目标高度不相同,则可以表明预设数据库内不存在与目标高度对应的区块哈希值。这种情况下,区块链节点可以确定预设数据库内不存在与目标高度对应的区块的数据。
基于上述S201-S203中的方法可知,由于当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围,且目标高度和当前高度之间的差值大于或等于预设数值,即大于或等于区块链中区块被确认生效时所对应的后续区块的数量值。并且,当前周期的长度小于区块链对应的出块时长。因此,本申请可以及时地获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据。
基于此,本申请可以及时地确定预设缓存区内存储的数据与区块链上的数据是否存在一致性,并在不存在一致性时将获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据更新在预设缓存区内。相比于T+1的数据同步方式,本申请可以缩短同步的时间间隔,在提高预设缓存区内的数据与区块链上的数据的一致性的同时,提升预设缓存区内数据的实时性。
并且,在及时地获取到新生成区块的基础上,本申请可以及时地确认可以生效的区块,即目标高度对应的区块,以及时地将目标高度对应的区块更新在预设数据库内,避免预设缓存区内该目标高度对应的区块的数据被删除导致的数据不一致的问题,从而提升数据的一致性。因此,本申请可以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。
一种实施例中,在查询区块链中的数据时,本申请实施例提供的数据更新方法,还包括:S301-S303。
S301、区块链节点响应于请求节点发送的携带有待查询字段的数据查询请求,确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据。
可选地,待查询字段可以是区块号、区块哈希值、交易哈希值和区块链地址等。区块链地址可以是由多个字母和/或数字组成的字符串,用于支持区块链上的数字代币交易。
一种可以实现的方式中,结合图1,请求节点可以向区块链节点发送携带有待查询字段的数据查询请求。相应的,区块链节点可以接收到请求节点发送的数据查询请求,并解析数据查询请求得到待查询字段。并且,响应于该数据查询请求,区块链节点可以确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据。
一种可能的实施例中,区块链节点可以采用并行处理的方式,同时确定预设缓存区中是否存在与待查询字段对应的数据,以及预设数据库中是否存在与待查询字段对应的数据。
一种可能的实施例中,考虑到预设缓存区内可以存储有未被确认的区块的数据,以及部分被确认的区块的数据。若待查询字段对应的数据位于预设缓存区内存储的部分被确认的区块的数据,则相比于从预设数据库中读取待查询字段对应的数据而言,从预设缓存区内读取数据的速度更快。因此,为了提高数据查询效率,区块链节点也可以采用串行处理的方式,先确定预设缓存区中是否存在与待查询字段对应的数据,再确定预设数据库中是否存在与待查询字段对应的数据。该实施例实现时,具体可以包括:S3011-S3013。
S3011、区块链节点在预设缓存区内匹配与待查询字段对应的数据,并当在预设缓存区内匹配成功时,确定预设缓存区中存在与待查询字段对应的数据。
S3012、区块链节点当在预设缓存区内匹配失败时,在预设数据库内匹配与待查询字段对应的数据,并当在预设数据库内匹配成功时,确定预设数据库中存在与待查询字段对应的数据。
S3013、区块链节点当在预设数据库内匹配失败时,确定预设缓存区且预设数据库内不存在与待查询字段对应的数据。
S302、区块链节点当确定预设缓存区或预设数据库中存在与待查询字段对应的数据时,向请求节点发送与待查询字段对应的数据。
一种可以实现的方式中,区块链节点可以在确定预设缓存区或预设数据库中存在与待查询字段对应的数据时,从预设缓存区或预设数据库中读取待查询字段对应的数据,并向请求节点发送与待查询字段对应的数据。相应的,请求节点可以接收到来自于区块链节点的待查询字段对应的数据。
S303、区块链节点当确定预设缓存区且预设数据库内不存在与待查询字段对应的数据时,向请求节点发送用于表示查询失败的提示信息。
一种可以实现的方式中,区块链节点可以在确定预设缓存区或预设数据库内不存在与待查询字段对应的数据时,向请求节点发送用于表示查询失败的提示信息。相应的,请求节点可以接收到来自于区块链节点的提示信息,并确认查询失败。
一种实施例中,结合S301-S303中的描述,如图4所示,为本申请实施例提供的一种数据查询流程的示意图。区块链节点接收到来自于请求节点的数据查询请求后,可以在预设缓存区内匹配与待查询字段对应的数据,并当在预设缓存区内匹配成功时,向请求节点发送与待查询字段对应的数据。或者,区块链节点可以当在预设缓存区内匹配失败时,在预设数据库内匹配与待查询字段对应的数据。区块链节点可以当在预设数据库内匹配成功时,向请求节点发送与待查询字段对应的数据。或者,区块链节点可以当在预设数据库内匹配失败时,向请求节点发送用于表示查询失败的提示信息,并结束查询请求。
一种实施例中,如图5所示,为本申请实施例提供的一种数据更新流程的示意图。区块链节点可以进行系统初始化,启动运行区块链维护服务。工作人员可以在区块链节点内设置周期的长度,即更新数据的固定时间间隔t,以及设置预设数值N,即该区块链中区块被确认时对应的后续区块的数量值。应理解,在当前高度和目标高度之间的差值等于预设数值N的情况下,当前区块范围包括N+1个区块。例如,在当前高度为100、目标高度为95和预设数值N为5的情况下,高度95-100范围也可以表示为[95,100],包括分别与95、96、97、98、99和100对应的共6个区块。
每间隔一个固定时间间隔t,区块链节点可以调用RPC接口查询当前周期对应的区块链数据。当前周期对应的区块链数据可以包括当前区块范围内各个区块的区块头数据和交易数据。
区块链节点可以确定区块链高度是否增加,以及区块的数据是否变化。若最新生成的N个区块的数据未发生变化,则保持预设缓存区内的数据不变。若存在新的区块高度和/或一个或多个区块的数据发生了变化,则更新预设缓存区。对N+1个区块进行编号,即对当前区块范围内的各个区块进行编号,将最新生成的区块编号为0,并依次向最先生成的区块延伸,将最先生成的区块编号为N。编号为N的区块即当前高度减去预设数值得到的高度对应的区块。区块链节点可以确定预设数据库内是否存在第N个区块的数据。若第N个区块未被写入预设数据库,则将第N个区块的数据更新至预设数据库。区块链节点可以等待下一个周期,重复确定是否间隔固定时间间隔t,直至接收到退出指令。
本申请实施例中,由于当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围,且目标高度和当前高度之间的差值大于或等于预设数值,即大于或等于区块链中区块被确认生效时所对应的后续区块的数量值。并且,当前周期的长度小于区块链对应的出块时长。因此,本申请可以及时地获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据。
基于此,区块链节点可以及时地确定预设缓存区内存储的数据与区块链上的数据是否存在一致性,并在不存在一致性时将获取到区块链中全部的未被确认的区块的数据,以及新生成的区块的数据更新在预设缓存区内。相比于T+1的数据同步方式,本申请可以缩短同步的时间间隔,在提高预设缓存区内的数据与区块链上的数据的一致性的同时,提升预设缓存区内数据的实时性。
并且,在及时地获取到新生成区块的基础上,区块链节点可以及时地确认可以生效的区块,即目标高度对应的区块,以及时地将目标高度对应的区块更新在预设数据库内,避免预设缓存区内该目标高度对应的区块的数据被删除导致的数据不一致的问题,从而提升数据的一致性。因此,本申请可以至少用于提高数据的一致性并提升数据的实时性,从而支持对于区块链上全量数据的实时查询。
上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,电子设备包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法,示例性的对电子设备进行功能模块的划分,例如,电子设备可以包括对应各个功能划分的各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
例如,本申请实施例还提供一种数据更新装置。
图6是根据一示例性实施例示出的一种数据更新装置的框图。参照图6,该数据更新装置可以包括:包括:获取单元401和更新单元402;
获取单元401,被配置为执行获取当前周期对应的区块链数据;区块链数据包括区块链中处于当前区块范围内的各个区块的数据;当前区块范围用于表征目标高度至区块链在当前周期的当前高度的区块范围;目标高度和当前高度之间的差值大于或等于预设数值;预设数值用于表征区块链中区块被确认生效时所对应的后续区块的数量值;当前周期的长度小于区块链对应的出块时长;
更新单元402,被配置为执行当确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据时,将各个区块的数据更新在预设缓存区;
更新单元402,还被配置为执行当确定预设数据库内不存在与目标高度对应的区块的数据时,将目标高度对应的区块的数据更新在预设数据库。
在一种可选的实现方式中,该数据更新装置,还包括:确定单元403和发送单元404;
确定单元403,被配置为执行响应于请求节点发送的携带有待查询字段的数据查询请求,确定预设缓存区和预设数据库中是否存在与待查询字段对应的数据;
发送单元404,被配置为执行当确定预设缓存区或预设数据库中存在与待查询字段对应的数据时,向请求节点发送与待查询字段对应的数据;
发送单元404,还被配置为执行当确定预设缓存区且预设数据库内不存在与待查询字段对应的数据时,向请求节点发送用于表示查询失败的提示信息。
在一种可选的实现方式中,确定单元403,具体被配置为执行:在预设缓存区内匹配与待查询字段对应的数据,并当在预设缓存区内匹配成功时,确定预设缓存区中存在与待查询字段对应的数据;或者,当在预设缓存区内匹配失败时,在预设数据库内匹配与待查询字段对应的数据;当在预设数据库内匹配成功时,确定预设数据库中存在与待查询字段对应的数据;当在预设数据库内匹配失败时,确定预设缓存区且预设数据库内不存在与待查询字段对应的数据。
在一种可选的实现方式中,区块的数据包括区块哈希值;更新单元402,具体被配置为执行:确定预设缓存区内存储的区块链的高度与当前高度是否一致,并当区块链的高度与当前高度不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据;或者,当区块链的高度与当前高度一致时,确定预设缓存区内存储的各个区块的区块哈希值与当前周期对应的各个区块的区块哈希值是否一致,并当预设缓存区内存储的任意一个区块的区块哈希值与任意一个区块在当前周期的区块哈希值不一致时,确定预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在不一致的数据。
在一种可选的实现方式中,更新单元402,具体被配置为执行:当确定预设缓存区内与目标高度对应的区块的存储状态为未更新状态时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内不存在与目标高度对应的区块哈希值时,确定预设数据库内不存在与目标高度对应的区块的数据;或者,当确定预设数据库内存储的区块链的高度与目标高度不相同时,确定预设数据库内不存在与目标高度对应的区块的数据。
在一种可选的实现方式中,更新单元402,还被配置为执行当预设缓存区内存储的区块链数据与当前周期对应的区块链数据存在一致性时,保持预设缓存区内存储的区块链数据,并等待下一个周期。
在一种可选的实现方式中,区块的数据还包括区块头数据和交易数据;获取单元401,具体被配置为执行:调用当前区块哈希获取服务获取区块链中与当前高度对应的当前区块的哈希值;基于当前区块的哈希值调用区块获取服务获取当前区块的区块头数据;解析当前区块的区块头数据得到当前高度和当前区块对应的交易哈希值,并根据当前高度确定当前区块范围;基于当前区块范围调用区块哈希获取服务获取当前区块范围内其他区块的哈希值,并基于其他区块的哈希值调用区块获取服务获取其他区块的区块头数据;基于当前区块对应的交易哈希值和其他区块对应的交易哈希值,调用交易数据获取服务获取当前区块对应的交易数据和其他区块对应的交易数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种电子设备的框图。
如图7所示,电子设备200包括但不限于:处理器210和存储器220。
其中,上述的存储器220,用于存储上述处理器210的可执行指令。可以理解的是,上述处理器210被配置为执行指令,以实现上述实施例中的数据更新方法。
需要说明的是,本领域技术人员可以理解,图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图7所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
处理器210是电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器220内的软件程序和/或模块,以及调用存储在存储器220内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。处理器210可包括一个或多个处理单元;可选的,处理器210可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器210中。
存储器220可用于存储软件程序以及各种数据。存储器220可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能模块所需的应用程序)等。此外,存储器220可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令的存储器220,上述指令可由电子设备200的处理器210执行以实现上述实施例中的数据更新方法。
可选地,计算机可读存储介质可以是非临时性计算机可读存储介质,例如,该非临时性计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存储存储器(Random Access Memory,RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在示例性实施例中,本申请实施例还提供了一种包括一条或多条指令的计算机程序产品,该一条或多条指令可以由电子设备200的处理器210执行以完成上述实施例中的数据更新方法。
需要说明的是,上述计算机可读存储介质中的指令或计算机程序产品中的一条或多条指令被电子设备200的处理器210执行时实现上述数据更新方法实施例的各个过程,且能达到与上述数据更新方法相同的技术效果,为避免重复,这里不再赘述。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全分类部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全分类部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对通用技术做出贡献的部分或者该技术方案的全分类部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全分类部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种数据更新方法,其特征在于,包括:
获取当前周期对应的区块链数据;所述区块链数据包括区块链中处于当前区块范围内的各个区块的数据;所述当前区块范围用于表征目标高度至所述区块链在所述当前周期的当前高度的区块范围;所述目标高度和所述当前高度之间的差值大于或等于预设数值;所述预设数值用于表征所述区块链中区块被确认生效时所对应的后续区块的数量值;所述当前周期的长度小于所述区块链对应的出块时长;
当确定预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在不一致的数据时,将所述各个区块的数据更新在所述预设缓存区;
当确定预设数据库内不存在与所述目标高度对应的区块的数据时,将所述目标高度对应的区块的数据更新在所述预设数据库。
2.根据权利要求1所述的数据更新方法,其特征在于,还包括:
响应于请求节点发送的携带有待查询字段的数据查询请求,确定所述预设缓存区和所述预设数据库中是否存在与所述待查询字段对应的数据;
当确定所述预设缓存区或所述预设数据库中存在与所述待查询字段对应的数据时,向所述请求节点发送与所述待查询字段对应的数据;
当确定所述预设缓存区且所述预设数据库内不存在与所述待查询字段对应的数据时,向所述请求节点发送用于表示查询失败的提示信息。
3.根据权利要求2所述的数据更新方法,其特征在于,所述确定所述预设缓存区和所述预设数据库中是否存在与所述待查询字段对应的数据,包括:
在所述预设缓存区内匹配与所述待查询字段对应的数据,并当在所述预设缓存区内匹配成功时,确定所述预设缓存区中存在与所述待查询字段对应的数据;
或者,当在所述预设缓存区内匹配失败时,在所述预设数据库内匹配与所述待查询字段对应的数据;当在所述预设数据库内匹配成功时,确定所述预设数据库中存在与所述待查询字段对应的数据;当在所述预设数据库内匹配失败时,确定所述预设缓存区且所述预设数据库内不存在与所述待查询字段对应的数据。
4.根据权利要求1所述的数据更新方法,其特征在于,所述区块的数据包括区块哈希值;所述确定预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在不一致的数据,包括:
确定所述预设缓存区内存储的区块链的高度与所述当前高度是否一致,并当所述区块链的高度与所述当前高度不一致时,确定所述预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在不一致的数据;
或者,当所述区块链的高度与所述当前高度一致时,确定所述预设缓存区内存储的各个区块的区块哈希值与所述当前周期对应的各个区块的区块哈希值是否一致,并当所述预设缓存区内存储的任意一个区块的区块哈希值与所述任意一个区块在所述当前周期的区块哈希值不一致时,确定所述预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在不一致的数据。
5.根据权利要求1所述的数据更新方法,其特征在于,所述确定预设数据库内不存在与所述目标高度对应的区块的数据,包括:
当确定所述预设缓存区内与所述目标高度对应的区块的存储状态为未更新状态时,确定所述预设数据库内不存在与所述目标高度对应的区块的数据;
或者,当确定所述预设数据库内不存在与所述目标高度对应的区块哈希值时,确定所述预设数据库内不存在与所述目标高度对应的区块的数据;
或者,当确定所述预设数据库内存储的区块链的高度与所述目标高度不相同时,确定所述预设数据库内不存在与所述目标高度对应的区块的数据。
6.根据权利要求1所述的数据更新方法,其特征在于,所述获取当前周期对应的区块链数据之后,还包括:
当所述预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在一致性时,保持所述预设缓存区内存储的区块链数据,并等待下一个周期。
7.根据权利要求1-6任一项所述的数据更新方法,其特征在于,所述区块的数据还包括区块头数据和交易数据;所述获取当前周期对应的区块链数据,包括:
调用当前区块哈希获取服务获取所述区块链中与所述当前高度对应的当前区块的哈希值;
基于所述当前区块的哈希值调用区块获取服务获取所述当前区块的区块头数据;
解析所述当前区块的区块头数据得到所述当前高度和所述当前区块对应的交易哈希值,并根据所述当前高度确定所述当前区块范围;
基于所述当前区块范围调用区块哈希获取服务获取所述当前区块范围内其他区块的哈希值,并基于所述其他区块的哈希值调用所述区块获取服务获取所述其他区块的区块头数据;
基于所述当前区块对应的交易哈希值和所述其他区块对应的交易哈希值,调用交易数据获取服务获取所述当前区块对应的交易数据和所述其他区块对应的交易数据。
8.一种数据更新装置,其特征在于,包括:获取单元和更新单元;
所述获取单元,被配置为执行获取当前周期对应的区块链数据;所述区块链数据包括区块链中处于当前区块范围内的各个区块的数据;所述当前区块范围用于表征目标高度至所述区块链在所述当前周期的当前高度的区块范围;所述目标高度和所述当前高度之间的差值大于或等于预设数值;所述预设数值用于表征所述区块链中区块被确认生效时所对应的后续区块的数量值;所述当前周期的长度小于所述区块链对应的出块时长;
所述更新单元,被配置为执行当确定预设缓存区内存储的区块链数据与所述当前周期对应的区块链数据存在不一致的数据时,将所述各个区块的数据更新在所述预设缓存区;
所述更新单元,还被配置为执行当确定预设数据库内不存在与所述目标高度对应的区块的数据时,将所述目标高度对应的区块的数据更新在所述预设数据库。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1-7中任一项所述的数据更新方法。
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有指令,其特征在于,
当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1-7中任一项所述的数据更新方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311048472.XA CN117235084A (zh) | 2023-08-18 | 2023-08-18 | 数据更新方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311048472.XA CN117235084A (zh) | 2023-08-18 | 2023-08-18 | 数据更新方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117235084A true CN117235084A (zh) | 2023-12-15 |
Family
ID=89090179
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311048472.XA Pending CN117235084A (zh) | 2023-08-18 | 2023-08-18 | 数据更新方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117235084A (zh) |
-
2023
- 2023-08-18 CN CN202311048472.XA patent/CN117235084A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11521176B2 (en) | Service flow system and service data processing method and apparatus | |
US10901974B2 (en) | Hybrid cloud chain management of centralized and decentralized data | |
US11823178B2 (en) | Optimization of high volume transaction performance on a blockchain | |
Han et al. | Evaluating blockchains for IoT | |
US20200177373A1 (en) | System and method for storing contract data structures on permissioned distributed ledgers | |
WO2018076760A1 (zh) | 基于区块链的交易事务处理方法、系统、电子装置及存储介质 | |
US20190149600A1 (en) | Partitioning of a blockchain ledger | |
US11120024B2 (en) | Dual-stack architecture that integrates relational database with blockchain | |
US20240267201A1 (en) | Blockchain platform service | |
US9020949B2 (en) | Method and system for centralized issue tracking | |
US12079130B2 (en) | Method and apparatus for processing data based on block chain, device and readable storage medium | |
US20190362361A1 (en) | Autocommit transaction management in a blockchain network | |
CN107016027A (zh) | 实现业务信息快速搜索的方法和装置 | |
US20200021602A1 (en) | Trace-based transaction validation and commitment | |
WO2023011022A1 (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
US12079202B2 (en) | Parallel stream processing of change data capture | |
CN110633306B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
US11568397B2 (en) | Providing a financial/clinical data interchange | |
CN115186304B (zh) | 一种基于区块链的交易数据校验方法和系统 | |
US20180321706A1 (en) | Timestamp Alignment Across a Plurality Of Computing Devices | |
US11044104B2 (en) | Data certification as a service powered by permissioned blockchain network | |
US10530859B1 (en) | Blockchain functionalities in data storage system | |
WO2022142436A1 (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
US20230306128A1 (en) | Systems and methods for using secure, encrypted communications across distributed computer networks to provide variable resiliency when indexing blockchain states for performing blockchain operations in decentralized applications using cryptography-based digital repositories | |
CN110705935B (zh) | 一种物流单据的处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |