会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 区块头 / 区块头信息同步方法、装置、电子设备及存储介质

区块头信息同步方法、装置、电子设备及存储介质

申请号 CN202210459035.6 申请日 2022-04-27 公开(公告)号 CN117014451A 公开(公告)日 2023-11-07
申请人 腾讯科技(深圳)有限公司; 发明人 刘克猛;
摘要 本公开关于一种区块头信息同步方法、装置、电子设备及存储介质,该方法包括在接收到目标区块链的第一区块头信息的情况下,获取目标区块链对应的当前区块高度信息,当前区块高度信息表征目标区块链已同步的区块头信息的高度上限;目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;基于当前区块高度信息,对第一区块头信息进行验证,得到第一验证结果;在第一验证结果为有效的情况下,对第一区块头信息进行同步处理。利用本公开实施例可以实现多个区块链的区块头信息同步,为多个区块链对应的业务操作有效性验证提供服务,具有通用性和高扩展性。
权利要求

1.一种区块头信息同步方法,其特征在于,所述方法包括:在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息,所述当前区块高度信息表征所述目标区块链已同步的区块头信息的高度上限;所述目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;

基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果;

在所述第一验证结果为有效的情况下,对所述第一区块头信息进行同步处理。

2.根据权利要求1所述的方法,其特征在于,所述基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果,包括:对所述当前区块高度信息和所述第一区块头信息中区块高度信息进行比对处理,得到比对结果;

在所述比对结果指示所述区块高度信息大于所述当前区块高度信息的情况下,对所述第一区块头信息进行有效性验证,得到所述第一验证结果。

3.根据权利要求2所述的方法,其特征在于,所述对所述第一区块头信息进行有效性验证,得到所述第一验证结果,包括:获取所述第一区块头信息对应的关联区块的区块头信息,所述关联区块为所述目标区块链中与所述第一区块头信息对应的目标区块的相邻且高度比所述目标区块低的区块;

基于所述关联区块的区块头信息,对所述第一区块头信息对应的标记信息进行验证,得到所述第一验证结果。

4.根据权利要求2所述的方法,其特征在于,所述在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息之前,还包括:从第一共识节点获取目标区块链的第一区块头信息,所述第一共识节点为所述目标区块链的多个共识节点中的任一共识节点;

所述在所述比对结果指示所述区块高度信息大于所述当前区块高度信息的情况下,对所述第一区块头信息进行有效性验证,得到所述第一验证结果之后,还包括:在所述第一验证结果为无效的情况下,从第二共识节点获取所述区块高度信息对应的第二区块头信息,所述第二共识节点为所述多个共识节点中除所述第一共识节点外的任一共识节点;

对所述第二区块头信息进行有效性验证,得到所述第一验证结果。

5.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取目标区块链的目标高度上限信息,所述目标高度上限信息表征所述目标区块链已生成区块的高度上限;

获取所述目标区块链对应的本地高度信息,所述本地高度信息为基于目标区块链对应的请求高度上限信息和对应的当前区块高度信息确定的;

基于所述目标高度上限信息和所述本地高度信息,确定所述目标区块链对应的当前请求高度信息;

获取所述当前请求高度信息对应的第三区块头信息;

对所述第三区块头信息进行有效性验证,得到第二验证结果;

在所述第二验证结果为有效的情况下,对所述第三区块头信息进行同步处理。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:获取所述目标区块链对应的已知高度上限信息;

所述获取所述目标区块链对应的本地高度信息,包括:在所述目标高度上限信息大于所述已知高度上限信息的情况下,获取所述本地高度信息。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:在所述目标高度上限信息小于等于所述已知高度上限信息的情况下,丢弃所述目标高度上限信息。

8.一种区块头信息同步装置,其特征在于,所述装置包括:高度信息获取模块,用于在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息,所述当前区块高度信息表征所述目标区块链已同步的区块头信息的高度上限;所述目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;

验证模块,用于基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果;

信息同步模块,用于在所述第一验证结果为有效的情况下,对所述第一区块头信息进行同步处理。

9.一种电子设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述可执行指令以实现权利要求1至7中任意一项所述的区块头信息同步方法。

10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至7中任意一项所述的区块头信息同步方法。

11.一种计算机程序产品,包括计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1至7中任一项所述的区块头信息同步方法。

说明书全文

区块头信息同步方法、装置、电子设备及存储介质

技术领域

[0001] 本公开涉及区块链技术领域,尤其涉及一种区块头信息同步方法、装置、电子设备及存储介质。

背景技术

[0002] 如今,大部分的区块链平台都有自己的验证节点,但是验证节点与底层链强耦合在一起,可以认为是一种不具备投票能力且只同步区块头数据的一种简化的“同步节点”。比如在以太坊中,轻节点作为验证节点,完全与以太坊底层链绑定,只能同步以太坊单一区块链的区块头数据,并对外提供业务操作(例如,可以是扣除虚拟资源的操作)的有效性证明的功能,无法成为其他区块链的验证节点。可见,现有的区块头信息同步过程中,无法同步其他区块链的数据,即现有同步方法的通用性和扩展性较差。

发明内容

[0003] 有鉴于上述存在的技术问题,本公开提出了一种区块头信息同步方法、装置、电子设备及存储介质。
[0004] 根据本公开实施例的一方面,提供一种区块头信息同步方法,包括:
[0005] 在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息,所述当前区块高度信息表征所述目标区块链已同步的区块头信息的高度上限;所述目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;
[0006] 基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果;
[0007] 在所述第一验证结果为有效的情况下,对所述第一区块头信息进行同步处理。
[0008] 根据本公开实施例的另一方面,提供一种区块头信息同步装置,包括:
[0009] 高度信息获取模块,用于在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息,所述当前区块高度信息表征所述目标区块链已同步的区块头信息的高度上限;所述目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;
[0010] 验证模块,用于基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果;
[0011] 信息同步模块,用于在所述第一验证结果为有效的情况下,对所述第一区块头信息进行同步处理。
[0012] 根据本公开实施例的另一方面,提供一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现上述区块头信息同步方法。
[0013] 根据本公开实施例的另一方面,提供一种计算机可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行上述区块头信息同步方法。
[0014] 根据本公开实施例的另一方面,提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述区块头信息同步方法。
[0015] 本公开的实施例提供的技术方案至少带来以下有益效果:
[0016] 通过订阅多个区块链的区块头信息,可以将多个区块链联系起来以同步多种类型的区块链的区块头信息,打通了不同区块链中的网络屏障;在接收到多个区块链中的目标区块链的第一区块头信息的情况下获取目标区块链对应的当前区块高度信息,基于当前区块高度信息,对第一区块头信息进行验证,在第一验证结果为有效的情况下,对第一区块头信息进行同步处理,可以实现多个区块链的区块头信息同步,为多个区块链对应的业务操作有效性验证提供服务,具有通用性和高扩展性;另外,通过当前区块高度信息对第一区块头信息进行验证,可以提高区块头信息同步的准确性。
[0017] 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

[0018] 此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
[0019] 图1是根据一示例性实施例示出的一种分布式系统应用于区块链系统的一个可选的结构示意图;
[0020] 图2是根据一示例性实施例示出的一种区块结构的一个可选的示意图;
[0021] 图3是根据一示例性实施例示出的一种区块头信息同步系统的结构示意图;
[0022] 图4是根据一示例性实施例示出的一种区块头信息同步方法的流程图;
[0023] 图5是根据一示例性实施例提供的一种基于当前区块高度信息,对第一区块头信息进行验证,得到第一验证结果的流程图;
[0024] 图6是根据一示例性实施例示出的一种在比对结果指示区块高度信息大于当前区块高度信息的情况下,对第一区块头信息进行有效性验证,得到第一验证结果的流程图;
[0025] 图7是根据一示例性实施例示出的一种在比对结果指示区块高度信息大于当前区块高度信息的情况下,对第一区块头信息进行有效性验证,得到第一验证结果之后的流程图;
[0026] 图8是根据一示例性实施例示出的另一种区块头信息同步方法的流程图;
[0027] 图9是根据一示例性实施例示出的一种获取目标区块链对应的本地高度信息的流程图。
[0028] 图10是根据一示例性实施例示出的一种区块头信息同步及业务操作有效性验证的示意图。
[0029] 图11是根据一示例性实施例示出的一种区块头信息同步装置的结构框图。
[0030] 图12是根据一示例性实施例示出的一种用于区块头信息同步的电子设备的框图。
[0031] 图13是根据一示例性实施例示出的一种用于区块头信息同步的电子设备的框图。

具体实施方式

[0032] 为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
[0033] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
[0034] 本发明实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
[0035] 以分布式系统为区块链系统为例,参见图1,图1是本发明实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
[0036] 参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
[0037] 1)路由,节点具有的基本功能,用于支持节点之间的通信。
[0038] 节点除具有路由功能外,还可以具有以下功能:
[0039] 2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
[0040] 例如,应用实现的业务包括:
[0041] 2.1)钱包,用于提供进行电子货币的业务操作的功能,包括发起业务操作(即,将当前业务操作的业务操作记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认业务操作有效的响应,将业务操作的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
[0042] 2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
[0043] 2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的业务操作,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于业务操作的合约,还可以执行对接收的信息进行处理的合约。
[0044] 3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
[0045] 参见图2,图2是本发明实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储业务操作记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
[0046] 参见图3,图3是本发明实施例提供的一种区块头信息同步系统的结构示意图。如图3所示,区块头信息同步系统可以包括验证节点和多个区块链。其中,验证节点与每个区块链之间通讯连接。上述验证节点可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。每个区块链可以包括多个共识节点,每个共识节点可以生成新的区块,验证节点可以通过SDK(Software Development Kit,软件开发工具包)与共识节点之间交互以实现验证节点与该共识节点所属区块链之间的交互。
[0047] 图4是根据一示例性实施例示出的一种区块头信息同步方法的流程图,该区块头信息同步方法可以应用于上述验证节点,如图4所示,该区块头信息同步方法包括以下步骤。
[0048] 在步骤S401中,在接收到目标区块链的第一区块头信息的情况下,获取目标区块链对应的当前区块高度信息。
[0049] 本说明书实施例中,目标区块链可以是指本地订阅的区块头信息所属的多个区块链中的任一区块链。其中,上述多个区块链可以是相同类型的区块链,也可以是不同类型的区块链。
[0050] 本说明书实施例中,目标区块链的第一区块头信息可以是指目标区块链当前向验证节点上报的区块头信息。第一区块头信息可以包括区块高度信息;区块高度信息可以表征该区块在目标区块链中的位置。
[0051] 本说明书实施例中,目标区块链对应的当前区块高度信息可以表征目标区块链当前已同步的区块头信息的高度上限。
[0052] 在一个具体的实施例中,每个区块链对应的SDK是由每个区块链各自提供的。在验证节点启动前,对于每个区块链,可以预先基于该区块链签发的用户证书等相关信息对其相应的SDK进行配置。验证节点在启动时,可以通过多个配置后的SDK订阅多个区块链最新的区块头信息。具体地,每个区块链可以具有通用接口,通用接口可以用于提供区块同步和区块拉取服务,可选的,通用接口还可以提供业务操作和业务操作默克尔树根路径拉取服务。目标区块链对应的SDK可以通过目标区块链的通用接口实现验证节点和目标区块链之间的交互。
[0053] 在步骤S402中,基于当前区块高度信息,对第一区块头信息进行验证,得到第一验证结果。
[0054] 本说明书实施例中,第一验证结果可以包括有效或无效。
[0055] 在一个具体的实施例中,如图5所示,上述步骤S402可以包括:
[0056] S501.对当前区块高度信息和第一区块头信息中区块高度信息进行比对处理,得到比对结果。
[0057] 在一个具体的实施例中,比对结果可以包括当前区块高度信息大于第一区块头信息中区块高度信息,或当前区块高度信息小于等于区块高度信息。
[0058] S502.在比对结果指示区块高度信息大于当前区块高度信息的情况下,对第一区块头信息进行有效性验证,得到第一验证结果。
[0059] 在一个具体的实施例中,在比对结果指示区块高度信息小于等于当前区块高度信息的情况下,可以确定该第一区块头信息为已同步的区块头信息,可以将该第一区块头信息丢弃。
[0060] 在一个具体的实施例中,如图6所示,上述步骤S502可以包括:
[0061] S601.获取第一区块头信息对应的关联区块的区块头信息。
[0062] 在说明书实施例中,关联区块可以是指目标区块链中与第一区块头信息对应的目标区块的相邻且高度比目标区块低的区块。
[0063] 在一个具体的实施例中,验证节点还可以包括存储组件,存储组件可以用于存储同步的区块头信息。在本实施例中,可以从存储组件中读取关联区块的区块头信息。具体地,可以基于第一区块头信息中区块高度信息确定第一区块头信息对应的目标区块的高度,基于目标区块的高度可以确定关联区块的区块高度,并根据关联区块的区块高度可以从存储组件中读取关联区块的区块头信息。
[0064] S602.基于关联区块的区块头信息,对第一区块头信息对应的标记信息进行验证,得到第一验证结果。
[0065] 在说明书实施例中,标记信息可以包括上一区块的哈希值和时间戳。其中,时间戳可以表征第一区块头信息对应的区块创建的时间。在实际应用中,第一区块头信息对应的标记信息中上一区块的哈希值可以是对上一区块的区块头信息中的关键字段进行哈希处理得到的,其中,关键字段可以包括上一区块的高度字段、时间戳字段、业务操作默克尔树根字段和提案者签名字段等。
[0066] 在一个具体的实施例中,可以通过对第一区块头信息对应的标记信息中上一区块的哈希值和第一区块头信息对应的关联区块的本体的哈希值进行比对,以进行第一区块头信息对应的标记信息的验证;其中,第一区块头信息对应的关联区块的本体的哈希值可以通过对关联区块的区块头信息中关键字段进行哈希处理得到。示例性地,如图2所示,假设第一区块头信息对应的区块是区块3,则关联区块为区块2,可以通过对区块2的区块头信息中关键字段进行哈希计算得到区块2对应的本区块哈希值,并对区块2对应的本区块哈希值与区块3的区块头信息中的前一区块哈希值进行比对。若比对不一致,可以确定第一验证结果为无效;在哈希值比对一致的情况下,可以对第一区块头信息对应的时间戳与关联区块的时间戳进行比对,在第一区块头信息对应的时间戳晚于关联区块的时间戳的情况下,可以确定第一验证结果为有效,若第一区块头信息对应的时间戳不晚于关联区块的时间戳,则可以确定第一验证结果为无效。在其他的实施例中,也可以是先对第一区块头信息对应的时间戳进行比对,再对第一区块头信息对应的上一区块的哈希值进行比对,本公开不作限定。
[0067] 在上述实施例中,通过在比对结果指示区块高度信息大于当前区块高度信息的情况下,对第一区块头信息进行有效性验证,可以避免对不符合高度要求的区块头进行有效性验证带来的计算,减少不必要的计算量。
[0068] 在步骤S403中,在第一验证结果为有效的情况下,对第一区块头信息进行同步处理。
[0069] 在一个具体的实施例中,在第一验证结果为有效的情况下,可以通过将第一区块头信息存储至验证节点的存储组件中,以完成第一区块头信息的同步。
[0070] 在一个具体的实施例中,验证节点可以包括区块头管理器,区块头管理器可以包括区块头缓存通道和区块头验证组件。其中,区块头缓存通道可以用于缓存等待有效性验证的区块头信息;区块头验证组件可以用于从区块头缓存通道中读取区块头信息进行有效性验证。具体地,在比对结果指示区块高度信息小于等于当前区块高度信息的情况下,可以将该区块高度信息对应的第一区块头信息放入区块头缓存通道中;区块头验证组件可以按照区块头信息存入区块头缓存通道的顺序依次从区块头缓存通道中读取区块头信息,对该区块头信息进行有效性验证,在第一验证结果为有效的情况下,可以将该区块头信息存入存储组件,以完成该区块头信息的同步。
[0071] 在上述实施例中,通过区块头缓存通道缓存等待有效性验证的区块头信息,并通过区块头验证组件从区块头缓存通道中读取区块头信息进行有效性验证,可以使区块头信息的有效性验证的过程与其他处理过程并行运行,进而可以提高区块头信息的同步效率。
[0072] 在一个具体的实施例中,验证节点可以包括业务操作验证器。业务操作验证器用于在接收到待验证的业务操作的相关信息后,根据上述相关信息的业务操作所在区块高度信息从存储组件中获取该业务操作对应的区块头信息中的业务操作默克尔树根,根据业务操作所在区块高度信息通过SDK获取该业务操作的默克尔路径和业务操作所调用的合约信息,根据该业务操作的相关信息中业务操作哈希和该业务操作的默克尔路径计算出该业务操作的默克尔树根,与上述区块头信息中的业务操作默克尔树根进行比对,根据比对结果判断出该业务操作是否存在于该区块中以及比对用户发送的该业务操作的相关信息中的合约信息中是否与通过SDK获取的业务操作所调用的合约信息是否一致,得到该业务操作的有效性验证结果,并将该有效性验证结果返回给用户。
[0073] 在上述实施例中,通过订阅多个区块链的区块头信息,可以将多个区块链联系起来以同步多种类型的区块链的区块头信息,打通了不同区块链中的网络屏障;在接收到多个区块链中的目标区块链的第一区块头信息的情况下获取目标区块链对应的当前区块高度信息,基于当前区块高度信息,对第一区块头信息进行验证,在第一验证结果为有效的情况下,对第一区块头信息进行同步处理,可以实现多个区块链的区块头信息同步,为多个区块链对应的业务操作有效性验证提供服务,具有通用性和高扩展性;另外,通过当前区块高度信息对第一区块头信息进行验证,可以提高区块头信息同步的准确性。
[0074] 可以理解的是,由于验证节点不再与底层区块链耦合在一起,验证节点具有独立性,因此可以以验证节点为纽带将多个底层区块链平台联系起来,构建区块链联盟生态;在实际的部署过程中,一个验证节点可以同步多种类型的区块链区块头信息,可以打通不同区块链中的网络屏障,统一对外提供业务操作有效性证明的服务,具有通用性和可扩展性。
[0075] 在一个具体的实施方式中,如图7所示,上述步骤S502之后,还可以包括:
[0076] S701.在第一验证结果为无效的情况下,从第二共识节点获取区块高度信息对应的第二区块头信息。
[0077] 在说明书实施例中,第二共识节点可以是多个共识节点中除第一共识节点外的任一共识节点。如图3所示,每个区块链可以包括多个共识节点,验证节点通过多个区块链各自对应的SDK与相应的区块链交互。第一共识节点可以是目标区块链的多个共识节点中的任一共识节点。在一个具体的实施例中,可以通过SDK从第一共识节点获取得到第一区块头信息。
[0078] 在一个具体的实施例中,验证节点可以包括请求管理器,请求管理器可以包括高度缓存通道和区块头请求组件。其中,高度缓存通道可以用于缓存待重新请求的区块高度信息;区块头请求组件可以用于根据高度缓存通道中的区块高度信息进行相应区块头信息的请求。具体地,在对第一区块头信息进行有效性验证,得到第一区块头信息的第一验证结果为无效的情况下,可以将该第一区块头信息中的区块高度信息放入至请求管理器中的高度缓存通道;区块头请求组件可以按照区块高度信息存入高度缓存通道的顺序依次从高度缓存通道中读取区块高度信息,并基于该区块高度信息请求相应的区块头信息。
[0079] 在上述实施例中,通过高度缓存通道缓存第一验证结果为无效的区块高度信息,并通过区块头请求组件根据高度缓存通道中的区块高度信息请求相应的区块头信息,可以使区块头信息的重新请求的过程与其他处理过程并行运行,进而可以提高区块头信息的同步效率。
[0080] S702.对第二区块头信息进行有效性验证,得到第一验证结果。
[0081] 在一个具体的实施例中,对第二区块头信息进行有效性验证的过程可以参照上述步骤S601‑S602,在此不再赘述。
[0082] 在本实施例中,在第一验证结果为无效的情况下,通过共识节点的更新,从第二共识节点获取区块高度信息对应的第二区块头信息,可以避免由于第一共识节点宕机或者发生错误导致同步信息错误或同步中断,提高区块头信息同步过程的可靠性。
[0083] 在一个具体的实施方式中,如图8所示,上述方法还包括:
[0084] S801.获取目标区块链的目标高度上限信息。
[0085] 在一个具体的实施例中,目标高度上限信息可以表征目标区块链已生成区块的高度上限,目标高度上限信息可以是目标区块链实际已生成区块的最大高度信息。具体地,每间隔预设时间可以通过SDK向多个区块链轮询各自的目标高度上限信息,相应的,验证节点可以定时收到多个区块链各自的目标高度上限信息。
[0086] S802.获取目标区块链对应的本地高度信息。
[0087] 其中,本地高度信息可以是基于目标区块链对应的请求高度上限信息和对应的当前区块高度信息确定的。本地高度信息可以表征验证节点当前已收到或已请求的区块头信息的区块高度上限。请求高度上限信息可以表征当前已请求的区块头信息中的区块高度上限。
[0088] 在一个具体的实施例中,可以将请求高度上限信息和当前区块高度信息中较大的一个作为本地高度信息。
[0089] 在一个具体的实施方式中,如图9所示,上述方法还可以包括:
[0090] S901.获取目标区块链对应的已知高度上限信息。
[0091] 在一个具体的实施例中,已知高度上限信息可以是指由验证节点所感知的目标区块链的区块高度上限。具体地,在验证节点启动时,已知高度上限信息的初始值可以是0;在共识节点未出现宕机等情况时,共识节点生成新区块时可以及时将新生成区块的第一区块头信息通过SDK发送给验证节点,在接收到新生成区块的第一区块头信息后,可以将第一区块头信息中区块高度信息作为已知高度上限信息,以实现已知高度上限信息的更新,可以使目标区块链的已知高度上限信息与目标区块链的目标高度上限信息一致。在共识节点出现宕机等情况时,无法及时将新生成区块的区块头信息通过SDK发送给验证节点,已知高度上限信息无法及时更新,可能出现已知高度上限信息与目标区块链的目标高度上限信息不一致的情况。
[0092] 上述步骤S802还可以包括:
[0093] S902.在目标高度上限信息大于已知高度上限信息的情况下,获取本地高度信息。
[0094] S903.在目标高度上限信息小于等于已知高度上限信息的情况下,丢弃目标高度上限信息。
[0095] 在上述实施例中,通过目标高度上限信息与已知高度上限信息比对,在目标高度上限信息小于等于已知高度上限信息的情况下,丢弃目标高度上限信息,可以减少正常情况下对本地高度信息确定过程的运算量。
[0096] S803.基于目标高度上限信息和本地高度信息,确定目标区块链对应的当前请求高度信息。
[0097] 在一个具体的实施例中,当前请求高度信息可以表征验证节点当前待请求区块头信息的区块高度。其中,当前请求高度信息可以是一个区块的区块高度信息,也可以是多个区块的区块高度范围。具体地,在目标高度上限信息大于本地高度信息的情况下,可以将本地高度信息和目标高度上限信息之间的值作为目标区块链对应的当前请求高度信息。示例性地,在本地高度信息为50且目标高度上限信息为60的情况下,则当前请求高度信息为[51,60];在本地高度信息为50且目标高度上限信息为51的情况下,则当前请求高度信息为51;在本地高度信息为50且目标高度上限信息为50的情况下,丢弃该目标高度上限信息。
[0098] S804.获取当前请求高度信息对应的第三区块头信息。
[0099] 在一个具体的实施例中,第三区块头信息中的区块高度与当前请求高度信息相一致。在当前请求高度信息为区块高度范围的情况下,第三区块头信息可以包括多个区块的区块头信息。具体地,可以通过目标区块链对应的SDK向第一共识节点请求当前请求高度信息对应的第三区块头信息,目标区块链的第一共识节点在接收到当前请求高度信息对应的第三区块头信息的请求后,向验证节点发送第三区块头信息。
[0100] 在一个具体的实施例中,可以将上述当前请求高度信息放入上述请求管理器中的高度缓存通道,通过区块头请求组件按照高度缓存通道中区块高度信息的存入顺序从高度缓存通道中读取区块高度信息,并基于该区块高度信息请求相应的区块头信息。
[0101] 在上述实施例中,通过区块头请求组件根据高度缓存通道中的区块高度信息请求相应的区块头信息,可以使区块头信息的重新请求过程与其他处理过程并行运行,进而可以提高区块头信息的同步效率。
[0102] S805.对第三区块头信息进行有效性验证,得到第二验证结果。
[0103] 在一个具体的实施例中,第二验证结果可以包括有效和无效。具体地,对第三区块头信息进行有效性验证得到第二验证结果的过程可以参照上述步骤S601‑S602。
[0104] S806.在第二验证结果为有效的情况下,对第三区块头信息进行同步处理。
[0105] 在一个具体的实施例中,对第三区块头信息进行同步处理的过程可以参照上述步骤S403。
[0106] 在上述实施例中,可以在共识节点出现宕机等问题中断新生成区块的区块头信息推送的情况下,通过定时获取目标区块链对应的目标高度上限信息,基于目标高度上限信息和本地高度信息确定目标区块链对应的当前请求高度信息,获取当前请求高度信息对应的第三区块头信息,对第二验证结果为有效的第三区块头信息进行同步处理,可以避免由于共识节点的问题导致对区块头信息同步一致性的影响,保证区块头信息的及时同步,提高同步可靠性。另外,通过目标高度上限信息和本地高度信息确定目标区块链对应的当前请求高度信息,可以避免由于共识节点重新恢复正常后重新发送的区块头信息与请求的区块头信息重复导致验证节点重复同步,提高区块头信息同步的准确性。
[0107] 图10是根据一示例性实施例示出的一种区块头信息同步及业务操作有效性验证的示意图。如图10所示,验证节点可以包括状态管理器、请求管理器、区块头管理器、业务操作验证器和存储组件。其中,状态管理器可以用于向多个区块链订阅最新的区块头信息以及维护多个区块链各自对应的当前区块高度信息、已知高度上限信息和请求高度上限信息。请求管理器可以用于缓存当前请求高度信息并根据当前请求高度信息向对应的区块链请求相应的区块头信息。区块头管理器可以用于缓存多个区块头信息以及对区块头信息进行有效性验证。存储组件可以用于存储多个经过有效性验证后的区块头信息。业务操作验证器可以用于基于用户的业务操作验证请求对相关业务操作信息进行业务操作有效性验证。
[0108] 具体地,区块头信息同步及业务操作有效性验证过程如下:
[0109] 验证节点启动时,验证节点中状态管理器可以通过多个区块链各自对应的SDK向多个区块链分别订阅最新的区块头信息。当目标区块链的共识节点产生区块后,可以通过目标区块链对应的SDK将该区块的区块头信息发送给验证节点,此时验证节点可以接收到目标区块链最新产生的区块的区块头信息,即第一区块头信息。验证节点的状态管理器还可以用于维护三个信息,分别为:多个区块链各自对应的当前区块高度信息、已知高度上限信息和请求高度上限信息。在第一区块头信息中的区块高度信息大于当前区块高度信息的情况下,可以将第一区块头信息放入至区块头管理器中的区块头缓存通道中,等待后续的有效性验证;若区块高度信息小于等于当前区块高度信息的情况下,则将第一区块头信息丢弃。
[0110] 在部分情况下,目标区块链可能没有及时将最新的区块头信息推送给验证节点,可以通过目标区块链对应的SDK定时轮询目标区块链,获取目标区块链的目标高度上限信息。若目标高度上限信息大于目标区块链对应的本地高度信息,则可以基于该目标高度上限信息和本地高度信息,确定目标区块链对应的当前请求高度信息,并将当前请求高度信息放入至请求管理器中的高度请求缓存通道中;另外,在目标高度上限信息大于已知高度上限信息的情况下,可以基于目标高度上限信息对已知高度上限信息进行更新。请求管理器中的区块请求组件可以通过SDK拉取当前请求高度信息相对应的第三区块头信息,并可以将第三区块头信息放入至区块头缓存通道中。在请求完成后,状态管理器可以基于上述当前请求高度信息更新请求高度上限信息;具体地,可以是将当前请求高度信息的最大值作为更新后的请求高度上限信息。
[0111] 区块头管理器中的区块头验证组件可以从区块头缓存通道中取出区块头信息并进行有效性验证。具体地,区块头验证组件可以是基于当前区块高度信息从区块头缓存通道中取出比当前区块高度信息大1个单位高度的区块头信息。区块头缓存通道可以用于缓存多个待验证的区块头信息。在经过区块头验证组件验证区块有效后,可以将该第一区块头信息存储至存储组件中,并在存储完成后,状态管理器可以对当前区块高度信息进行更新;若区块头验证组件验证区块无效后,可以将该第一区块头信息的区块高度信息放入请求管理器中的高度缓存通道,后续请求管理器可以通过第二共识节点重新请求该区块高度信息的区块头信息,直至验证通过存入存储组件中。
[0112] 当用户需要进行业务操作有效性验证时,用户可以通过RPC(Remote Procedure Call,远程过程调用)将该业务操作的相关信息发送到业务操作验证器,以进行业务操作的有效性验证。其中,RPC可以通过调用方和服务方之间的约定,基于TCP(Transmission Control Protocol,传输控制协议)长连接进行数据交互达成。业务操作的相关信息可以包括业务操作标识、业务操作所在区块高度信息、业务操作哈希以及所调用的合约信息。
[0113] 业务操作验证器在接收到该业务操作的相关信息后,可以根据相关信息的业务操作所在区块高度信息从存储组件中获取该业务操作对应的区块头信息中的业务操作默克尔树根。业务操作验证器还可以根据业务操作所在区块高度信息通过SDK获取该业务操作的默克尔路径和业务操作所调用的合约信息。业务操作验证器可以根据该业务操作的相关信息中业务操作哈希和该业务操作的默克尔路径计算出该业务操作的默克尔树根,并与上述区块头信息中的业务操作默克尔树根进行比对,可以根据比对结果判断出该业务操作是否存在于该区块中。然后,再比对用户发送的该业务操作的相关信息中的合约信息中是否与通过SDK获取的业务操作所调用的合约信息是否一致,从而可以判断该业务操作的有效性。业务操作验证器在验证完成后可以通过RPC将验证结果返回给用户。
[0114] 图11是根据一示例性实施例示出的一种区块头信息同步装置的结构框图。参照图11,该装置包括:
[0115] 高度信息获取模块1110,用于在接收到目标区块链的第一区块头信息的情况下,获取所述目标区块链对应的当前区块高度信息,所述当前区块高度信息表征所述目标区块链已同步的区块头信息的高度上限;所述目标区块链为本地订阅的区块头信息所属的多个区块链中的任一区块链;
[0116] 验证模块1120,用于基于所述当前区块高度信息,对所述第一区块头信息进行验证,得到第一验证结果;
[0117] 信息同步模块1130,用于在所述第一验证结果为有效的情况下,对所述第一区块头信息进行同步处理。
[0118] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0119] 图12是根据一示例性实施例示出的一种用于区块头信息同步的电子设备的框图,该电子设备可以是服务器,其内部结构图可以如图12所示。该电子设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种区块头信息同步方法。
[0120] 图13是根据一示例性实施例示出的一种用于区块头信息同步的电子设备的框图,该电子设备可以是终端,其内部结构图可以如图13所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种区块头信息同步方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
[0121] 本领域技术人员可以理解,图12或图13中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0122] 在示例性实施例中,还提供了一种电子设备,包括:处理器;用于存储该处理器可执行指令的存储器;其中,该处理器被配置为执行该指令,以实现如本公开实施例中的区块头信息同步方法。
[0123] 在示例性实施例中,还提供了一种计算机可读存储介质,当该存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行本公开实施例中的区块头信息同步方法。
[0124] 在示例性实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本公开实施例中的区块头信息同步方法。
[0125] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0126] 本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0127] 应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。