CN110378694B

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

(19)中华人民共和国国家知识产权局

(12)发明专利
(10)授权公告号 CN 110378694 B
(45)授权公告日 2021.01.12
(21)申请号 201910673727 .9 (74)专利代理机构 广州华进联合专利商标代理
有限公司 44224
(22)申请日 2018 .05 .21
代理人 董慧
(65)同一申请的已公布的文献号
(51)Int .Cl .
申请公布号 CN 110378694 A
G06Q 20/38 (2012 .01)
(43)申请公布日 2019 .10 .25 G06Q 40/04 (2012 .01)
(62)分案原申请数据 (56)对比文件
201810487046 .9 2018 .05 .21 CN 107145768 A ,2017 .09 .08
(73)专利权人 腾讯科技(深圳)有限公司 CN 107317842 A ,2017 .11 .03
地址 518000 广东省深圳市南山区高新区 CN 107944034 A ,2018 .04 .20
科技中一路腾讯大厦35层 CN 106878071 A ,2017 .06 .20
CN 106686087 A ,2017 .05 .17
(72)发明人 郭锐 李茂材 王宗友 屠海涛
US 2018089683 A1 ,2018 .03 .29
孔利 周开班 杨常青 王楠
丁勇 时一防 审查员 张伯

权利要求书3页 说明书15页 附图7页

(54)发明名称
区块链数据处理方法、装置、计算机设备和
存储介质
(57)摘要
本申请涉及一种区块链数据处理方法、装
置、 计算机设备和存储介质,包括:获取区块链的
当前链高度和历史确认链高度; 当当前链高度大
于所述历史确认链高度时, 根据区块链中各个节
点的区块信息得到当前链高度的有效性验证结
果; 当有效性验证结果为当前链高度无效时, 减
小当前链高度得到更新后的当前链高度作为当
前链高度,当当前链高度大于历史确认链高度
时, 返回根据区块链中各个节点的区块信息得到
当前链高度的有效性验证结果的步骤; 当当前链
高度等于历史确认链高度时, 根据区块链的初始
链高度和历史确认链高度得到链高度差异信息;
CN 110378694 B

根据链高度差异信息与预设的链高度差异范围
确定区块链的工作状态, 提高了区块链的工作状
态的判断准确度。
CN 110378694 B 权 利 要 求 书 1/3 页

1 .一种区块链数据处理方法, 包括:
获取区块链的当前链高度, 将初始链高度作为所述当前链高度, 所述初始链高度是根
据区块链中各个节点对应的节点不可逆块确定的, 所述节点不可逆块是指节点已经确认的
区块;
获取所述区块链的历史确认链高度, 所述历史确认链高度是整个区块链的不可逆块对
应的链高度, 所述整个区块链的不可逆块是指在整个区块链中被确认的不可更改的区块数
据对应的区块;
当所述当前链高度大于所述历史确认链高度时, 根据所述区块链中各个节点的区块信
息得到所述当前链高度的有效性验证结果;
当所述有效性验证结果为所述当前链高度无效时, 减小所述当前链高度得到更新后的
当前链高度;
将更新后的当前链高度作为当前链高度, 当所述当前链高度大于所述历史确认链高度
时,返回所述根据所述区块链中各个节点的区块信息得到所述当前链高度的有效性验证结
果的步骤;
当所述当前链高度等于所述历史确认链高度时, 根据所述区块链的初始链高度和所述
历史确认链高度得到链高度差异信息;
根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工作状态。
2 .根据权利要求1所述的方法,其特征在于, 所述获取区块链的当前链高度包括:
获取所述区块链中各个节点的节点信息, 所述节点信息包括区块信息;
根据各个所述节点的区块信息确定对应的节点不可逆块;
根据各个所述节点对应的节点不可逆块确定所述区块链对应的初始链高度, 将所述初
始链高度作为所述当前链高度。
3 .根据权利要求1所述的方法, 其特征在于,所述根据各个所述节点的区块信息得到所
述当前链高度的有效性验证结果之后, 还包括:
当所述有效性验证结果为所述当前链高度有效时, 将所述当前链高度作为当前确认链
高度, 所述区块链的工作状态为正常状态。
4 .根据权利要求2所述的方法, 其特征在于,所述根据各个所述节点的区块信息确定对
应的节点不可逆块, 包括:
根据各个所述节点的区块信息确定各个所述节点对应的最新已确认区块, 得到各个所
述节点对应的节点不可逆块; 或
根据各个所述节点的区块信息确定各个所述节点对应的高度最高已确认区块, 根据所
述高度最高已确认区块得到各个所述节点对应的节点不可逆块; 或
根据各个所述节点的区块信息确定当前周期对应的出块节点数目;
根据所述出块节点数目计算对应的出块节点比例, 当所述出块节点比例满足预设条件
时,将所述当前周期之前的周期对应的区块作为所述节点对应的节点不可逆块。
5 .根据权利要求1所述的方法, 其特征在于,所述根据所述区块链中各个节点的区块信
息得到所述当前链高度的有效性验证结果, 包括:
根据各个所述节点的区块信息得到与所述当前链高度的高度相同的目标区块;
当所述目标区块中具有相同区块哈希值的区块占所述目标区块的比例大于预设比例

2
CN 110378694 B 权 利 要 求 书 2/3 页

时,所述当前链高度有效, 否则所述当前链高度无效。
6 .根据权利要求1所述的方法, 其特征在于, 所述方法还包括:
获取查询区块信息, 所述查询区块信息包括查询哈希值或查询区块高度;
从所述区块链各个节点对应的区块中获取与所述查询区块信息匹配的区块组成候选
区块;
获取链不可逆块, 根据所述链不可逆块确定所述候选区块的区块确认状态。
7 .根据权利要求6所述的方法, 其特征在于, 所述方法还包括:
当查询区块信息包括查询哈希值时, 从所述区块链各个节点中的区块中获取与所述查
询哈希值相同哈希值的区块, 组成所述候选区块;
根据所述候选区块的区块头部信息按照预设规则进行排序, 按照排序规则和链不可逆
块逐一确定候选区块中各个区块的确认状态, 将确认状态为已确认的区块进行展示。
8 .根据权利要求6所述的方法, 其特征在于, 所述查询区块信息为区块交易信息, 所述
查询哈希值为所述区块交易信息对应的交易哈希值。
9 .根据权利要求1所述的方法, 其特征在于, 所述根据所述链高度差异信息与预设的链
高度差异范围确定所述区块链的工作状态包括:
当所述链高度差异信息未超出预设的链高度差异范围时, 所述区块链的工作状态为正
常;
当所述链高度差异信息超出预设的链高度差异范围时 , 所述区块链的工作状态为异
常。
10 .一种区块链数据处理装置, 其特征在于, 所述装置包括:
链高度确定模块, 用于获取区块链的当前链高度, 将初始链高度作为所述当前链高度,
所述初始链高度是根据区块链中各个节点对应的节点不可逆块确定的, 所述节点不可逆块
是指节点已经确认的区块;
历史链高度获取模块,用于获取所述区块链的历史确认链高度, 所述历史确认链高度
是整个区块链的不可逆块对应的链高度, 所述整个区块链的不可逆块是指在整个区块链中
被确认的不可更改的区块数据对应的区块;
链高度验证模块,用于当所述当前链高度大于所述历史确认链高度时, 根据所述区块
链中各个节点的区块信息得到所述当前链高度的有效性验证结果;
链工作状态确定模块,用于当所述有效性验证结果为所述当前链高度无效时, 减小所
述当前链高度得到更新后的当前链高度, 将更新后的当前链高度作为当前链高度, 当所述
当前链高度大于所述历史确认链高度时, 返回所述链高度验证模块; 当所述当前链高度等
于所述历史确认链高度时, 根据所述区块链的初始链高度和所述历史确认链高度得到链高
度差异信息, 根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工作状
态。
11 .根据权利要求10所述的装置, 其特征在于, 所述链高度确定模块还用于获取区块链
中各个节点的节点信息, 所述节点信息包括区块信息, 根据各个所述节点的区块信息确定
对应的节点不可逆块, 根据各个所述节点对应的节点不可逆块确定所述区块链对应的初始
链高度, 将所述初始链高度作为当前链高度。
12 .根据权利要求10所述的装置, 其特征在于, 所述链工作状态确定模块还用于当所述

3
CN 110378694 B 权 利 要 求 书 3/3 页

有效性验证结果为所述当前链高度有效时, 将所述当前链高度作为当前确认链高度,所述
区块链的工作状态为正常状态。
13 .根据权利要求11所述的装置, 其特征在于,所述链高度确定模块还用于根据各个所
述节点的区块信息确定各个所述节点对应的最新已确认区块, 得到各个所述节点对应的节
点不可逆块; 或
用于根据各个所述节点的区块信息确定各个所述节点对应的高度最高已确认区块, 根
据所述高度最高已确认区块得到各个所述节点对应的节点不可逆块; 或
用于根据各个所述节点的区块信息确定当前周期对应的出块节点数目, 根据所述出块
节点数目计算对应的出块节点比例, 当所述出块节点比例满足预设条件时,将所述当前周
期之前的对应的区块作为所述节点对应的节点不可逆块。
14 .一种计算机可读存储介质, 存储有计算机程序,所述计算机程序被处理器执行时,
使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
15 .一种计算机设备, 包括存储器和处理器, 所述存储器存储有计算机程序,所述计算
机程序被所述处理器执行时, 使得所述处理器执行如权利要求1至9中任一项所述方法的步
骤。

4
CN 110378694 B 说 明 书 1/15 页

区块链数据处理方法、装置、计算机设备和存储介质

[0001]
本申请是于2018年05月21日提交中国专利局,
申请号为201810487046 .9,
发明名
称为“区块链数据处理方法、 装置、 计算机设备和存储介质”的分案申请, 其全部内容通过引
用结合在本申请中。

技术领域
[0002] 本申请涉及计算机技术领域,
特别是涉及一种区块链数据处理方法、
装置、
计算机
设备和存储介质。

背景技术
[0003] 随着计算机技术的发展, 区块链数据处理技术不断发展。 区块链技术(Blockchain
technology,BT),也被称之为分布式账本技术, 是一种互联网数据库技术, 其特点是去中心
化、 公开透明, 让每个人均可参与数据库记录。区块链目前主要包括公有链(Public Block
chain) 、私有链(Private Block chain) 、联盟链(Consortium Block chain) 、许可链
(Permissioned Block chain)、
混合链(Hybrid Block chain)。
[0004] 传统的区块链工作状态判断方法主要是以区块链的节点为单元确定整个区块链
的工作状态, 区块链的工作状态的判断准确度较低。

发明内容
[0005] 基于此,有必要针对上述技术问题,提供一种通过获取区块链中各个节点的区块
信息对当前链高度进行验证, 根据验证结果更新当前链高度, 根据更新后的当前链高度、

史已确认链高度和初始链高度确定整个区块链的工作状态, 提高了区块链的工作状态的判
断准确度的区块链数据处理方法、 装置、计算机设备和存储介质。
[0006] 一种区块链数据处理方法,包括:
[0007] 获取区块链的当前链高度;
[0008] 获取所述区块链的历史确认链高度;
[0009] 当所述当前链高度大于所述历史确认链高度时, 根据所述区块链中各个节点的区
块信息得到所述当前链高度的有效性验证结果;
[0010] 当所述有效性验证结果为所述当前链高度无效时, 减小所述当前链高度得到更新
后的当前链高度;
[0011] 将更新后的当前链高度作为当前链高度, 当所述当前链高度大于所述历史确认链
高度时, 返回所述根据所述区块链中各个节点的区块信息得到所述当前链高度的有效性验
证结果的步骤;
[0012] 当所述当前链高度等于所述历史确认链高度时, 根据所述区块链的初始链高度和
所述历史确认链高度得到链高度差异信息;
[0013] 根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工作状态。
[0014] 一种区块链数据处理装置,包括:

5
CN 110378694 B 说 明 书 2/15 页

[0015] 链高度确定模块,用于获取区块链的当前链高度;
[0016] 历史链高度获取模块,用于获取所述区块链的历史确认链高度;
[0017] 链高度验证模块,用于当所述当前链高度大于所述历史确认链高度时, 根据所述
区块链中各个节点的区块信息得到所述当前链高度的有效性验证结果;
[0018] 链工作状态确定模块,用于当所述有效性验证结果为所述当前链高度无效时, 减
小所述当前链高度得到更新后的当前链高度, 将更新后的当前链高度作为当前链高度,当
所述当前链高度大于所述历史确认链高度时, 返回所述链高度验证模块;当所述当前链高
度等于所述历史确认链高度时, 根据所述区块链的初始链高度和所述历史确认链高度得到
链高度差异信息, 根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工
作状态。
[0019] 一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的
计算机程序, 所述处理器执行所述计算机程序时实现以下步骤:
[0020] 获取区块链的当前链高度;
[0021] 获取所述区块链的历史确认链高度;
[0022] 当所述当前链高度大于所述历史确认链高度时, 根据所述区块链中各个节点的区
块信息得到所述当前链高度的有效性验证结果;
[0023] 当所述有效性验证结果为所述当前链高度无效时, 减小所述当前链高度得到更新
后的当前链高度;
[0024] 将更新后的当前链高度作为当前链高度, 当所述当前链高度大于所述历史确认链
高度时, 返回所述根据所述区块链中各个节点的区块信息得到所述当前链高度的有效性验
证结果的步骤;
[0025] 当所述当前链高度等于所述历史确认链高度时, 根据所述区块链的初始链高度和
所述历史确认链高度得到链高度差异信息;
[0026] 根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工作状态。
[0027] 一种计算机可读存储介质,其上存储有计算机程序, 所述计算机程序被处理器执
行时实现以下步骤:
[0028] 获取区块链的当前链高度;
[0029] 获取所述区块链的历史确认链高度;
[0030] 当所述当前链高度大于所述历史确认链高度时, 根据所述区块链中各个节点的区
块信息得到所述当前链高度的有效性验证结果;
[0031] 当所述有效性验证结果为所述当前链高度无效时, 减小所述当前链高度得到更新
后的当前链高度;
[0032] 将更新后的当前链高度作为当前链高度, 当所述当前链高度大于所述历史确认链
高度时, 返回所述根据所述区块链中各个节点的区块信息得到所述当前链高度的有效性验
证结果的步骤;
[0033] 当所述当前链高度等于所述历史确认链高度时, 根据所述区块链的初始链高度和
所述历史确认链高度得到链高度差异信息;
[0034] 根据所述链高度差异信息与预设的链高度差异范围确定所述区块链的工作状态。
[0035] 上述区块链数据处理方法、装置、计算机设备和存储介质,获取区块链当前链高度

6
CN 110378694 B 说 明 书 3/15 页

和历史确认链高度,当当前链高度大于历史确认链高度时,根据区块链中各个节点的区块
信息得到当前链高度的有效性验证结果,当有效性验证结果为当前链高度无效时, 减小当
前链高度得到更新后的当前链高度,根据更新后的当前链高度、历史确认链高度、
初始链高
度确定链高度差异信息,根据链高度差异信息确定区块链的工作状态。通过获取区块链中
各个节点的区块信息对当前链高度进行验证,根据验证结果更新当前链高度,根据更新后
的当前链高度、历史已确认链高度和初始链高度确定链高度差异信息,根据链高度差异信
息确定整个区块链的工作状态,提高了区块链的工作状态的判断准确度。

附图说明
[0036] 图1为一个实施例中区块链数据处理方法的应用环境图;
[0037] 图2为一个实施例中区块链数据处理方法的流程示意图;
[0038] 图3为一个实施例中展示区块信息的示意图;
[0039] 图4为一个实施例中当前链高度验证步骤的流程示意图;
[0040] 图5为一个实施例中确定区块链工作状态步骤的流程示意图;
[0041] 图6为一个实施例中节点不可逆块确定步骤的流程示意图;
[0042] 图7为一个实施例中当前链高度区块哈希值验证步骤的流程示意图;
[0043] 图8为一个实施例中区块信息查询的流程示意图;
[0044] 图9为一个具体实施例中区块链数据处理方法的流程示意图;
[0045] 图10为一个实施例中区块链数据处理装置的结构框图;
[0046] 图11为一个实施例中节点不可逆获取模块的结构框图;
[0047] 图12为一个实施例中链高度验证模块的结构框图;
[0048] 图13为另一个实施例中区块链数据处理装置的结构框图;
[0049] 图14为一个实施例中计算机设备的结构框图。

具体实施方式
[0050] 为了使本申请的目的、 技术方案及优点更加清楚明白, 以下结合附图及实施例, 对
本申请进行进一步详细说明。应当理解, 此处所描述的具体实施例仅仅用以解释本申请, 并
不用于限定本申请。
[0051] 图1为一个实施例中区块链数据处理方法的应用环境图。 参照图1,该区块链数据
处理方法应用于区块链数据处理系统。该区块链数据处理系统包括区块链内部的终端110、
服务器120、 终端130、 服务器140和区块链外部的终端150或服务器160中的至少一种。终端
110、 服务器120、
终端130、服务器140、
终端150和服务器160通过网络链接。 获取区块链中各
个节点的节点信息可以是区块链内部的终端110、 服务器120、
终端130、服务器140,也可以
是区块链外部的终端150或服务器160。为了方便说明以服务器120为例, 服务器120获取区
块链中各个节点的节点信息, 节点信息包括区块信息, 根据各个节点的区块信息确定对应
的节点不可逆块, 根据各个节点对应的节点不可逆块确定区块链对应的初始链高度, 将初
始链高度作为当前链高度, 获取区块链的历史确认链高度, 当当前链高度大于历史确认链
高度时, 根据各个节点的区块信息得到当前链高度的有效性验证结果, 根据有效性验证结
果更新当前链高度, 根据更新后的当前链高度、 历史确认链高度、 初始链高度确定区块链的

7
CN 110378694 B 说 明 书 4/15 页

工作状态。
[0052] 上述获取节点信息、 节点不可逆块、更新链高度和确定区块链的工作状态均可在
终端110、 终端130、 服务器140、 终端150或服务器160中进行。终端110具体可以是台式终端
或移动终端, 移动终端具体可以手机、 平板电脑、 笔记本电脑等中的至少一种。服务器120可
以用独立的服务器或者是多个服务器组成的服务器集群来实现。
[0053] 如图2所示, 在一个实施例中, 提供了一种区块链数据处理方法。本实施例主要以
该方法应用于上述图1中的终端110(或服务器120或终端150或服务器160)来举例说明。参
照图2, 该区块链数据处理方法具体包括如下步骤:
[0054] 步骤S202, 获取区块链中各个节点的节点信息, 节点信息包括区块信息。
[0055] 其中 , 区块链目前主要包括公有链 (Public Block chain) 、私有链 (Private
Block chain)、
联盟链(Consortium Block chain)、
许可链(Permissioned Block chain)、
混合链(Hybrid Block chain),区块链中的节点是指用于存储和验证区块链中产生的数据
的终端或服务器, 区块链中的各个节点都保存有同一份数据, 新接入的节点, 会慢慢更新,
直到和所有的节点数据都一致。节点信息包括保存在节点中的信息, 如区块信息、 终端或服
务器等地址等信息, 区块信息包括区块头和区块体, 区块头信息可以自定义, 不同的应用场
景包含不同的 信息 ,如区块头包括上一区块的哈希值 (Pre hash) 、当前区块的哈希值
(Hash)以及时间戳(Time Stamp)。区块体中存储着当前区块的详细数据, 该数据与区块链
的应用场景相关, 不同的应用场景保存的数据和产生的数据类型不一致, 如当应用场景为
支付和交易金额时, 区块体中存储的数据包括交易记录等, 当应用场景为能源管理时, 区块
体中存储的数据包括能源的类型和对应的存储数量等。
[0056] 具体地, 获取区块链中各个节点的节点信息可以是区块链中的任意一个节点或是
区块链以外的节点, 在一个实施例中, 将获取节点信息的节点作为查询节点。查询节点启动
节点信息查询程序后, 当查询节点为区块链中的节点时, 向查询节点以外的其他节点发送
查询请求, 并接收各个节点返回的节点信息, 当查询节点不是区块链中的节点时, 向区块链
中的所有节点发送查询请求, 并接收各个节点返回的节点信息。
[0057] 在一个实施例中, 获取查询程序与区块链中各个节点的网络连接, 若查询程序与
区块链中各个节点设置有心跳包, 当查询程序与区块链中各个节点的心跳包维持状态为维
持时, 表示查询程序与区块链中各个节点的网络连接正常连接, 当查询程序与区块链中各
个节点的心跳包维持状态为未维持时, 可以通过网络测试命令对网络连接状态进行测试,
若测试成功表示网络正常, 节点程序运行异常, 当测试失败, 表示网络连接状态为异常。若
查询程序与区块链中各个节点未设置有心跳包, 通过发送查询请求, 接收到节点返回的查
询结果, 表示与该节点的网络连接正常, 未接收到节点返回的查询结果的, 可以通过网络测
试命令对网络连接状态进行测试, 如可以通过ping命令测试节点网络是否连通。通过测试
节点的网络连接状态确定节点的异常数目, 当节点异常数目占比超出预设异常节点数目比
例时, 表示区块链的工作状态为异常。
[0058] 在一个实施例中, 当查询节点为服务器时, 通过网络将节点信息发送至终端, 在终
端上展示区块信息, 当查询节点终端时, 直接在终端上展示区块信息, 区块的头部信息包括
但不限于区块高度、 区块哈希、 区块创建时间和区块交易个数等。具体展示信息和展示方式
可根据需求进行配置, 如表1所示, 为展示的区块信息。

8
CN 110378694 B 说 明 书 5/15 页

[0059] 表1区块信息

[0060]

[0061] 在一个实施例中, 获取配置信息, 根据配置信息获取对应的节点区块, 将各个节点


的区块信息展示在终端上。查询程序定时向区块链中的节点发送请求, 根据请求获取新的
区块信息, 根据区块信息中的头部信息确定区块的连接顺序, 按照连接顺序连接对应的区
块。当区块出现分叉时, 画出分叉, 当区块未出现分叉时, 按照区块出现顺序直接连接。 交易
会在整个区块链中广播, 区块链中的每个节点都会收到这些交易, 各个节点从所有交易中
选择部分交易数据生成对应的区块。区块链中出现分叉是因为存在网络延时等现实因素,
使得区块链中的多个节点在一段时间内可能产生多个高度相同, 但是交易内容或者交易顺
序不一样的区块, 多个已生成区块的节点将已生成区块同时广播致其他节点, 其他节点最
终会收到多个高度相同, 内容不同的区块, 从而形成分叉。如图3所示, 在终端展示区块分叉
图, 图3中标号101表示区块, 当区块存在分叉时 , 画出分叉, 如图中blockA1和blockA2是
block A的两个分叉。 区块链中因为区块在不同时间到达不同节点, 导致节点存在不同的区
块链视角。
[0062] 步骤S204, 根据各个节点的区块信息确定对应的节点不可逆块。
[0063] 具体地, 节点不可逆块是指节点已经确认的区块, 区块链采用不同的共识机制时,
节点不可逆块的确定方式不一样, 常见的共识机制包括工作证明(Proofof Work, POW)股权
证明(Proof of Stake,POS)、
委任权益证明(Delegated Proof of Stake DPOS)或实用拜
占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)等。
已确认区块是指区块中
的信息已经被验证过, 且验证通过的区块为已确认区块。如区块链的应用场景为交易时, 当
其中一个节点产生一笔新的交易产生时, 会被广播到区块链中的其他参与节点, 各个节点
将若干新的交易数据放入区块中, 每个节点会对若干新的交易数据对应的验证数据收集到
区块中, 通过区块对上述验证数据进行验证, 将最快得到的验证结果广播至其他节点, 其他
节点对验证结果中的交易是否有效进行验证, 确认交易成功, 且具有有效标识信息后, 接收
该区块, 该区块为已确认区块。
[0064] 步骤S206, 根据各个节点对应的节点不可逆块确定区块链对应的初始链高度, 将
初始链高度作为当前链高度。

9
CN 110378694 B 说 明 书 6/15 页

[0065] 具体地, 各个节点对应的节点不可逆块中包含了节点高度信息, 通过对节点不可


逆块的高度信息进行统计, 得到对应的统计结果, 根据统计结果确定整个区块链的链高度,
将该链高度作为初始链高度和当前链高度。
[0066] 在一个实施例中, 可以对节点不可逆块的高度信息的按照预设排序规则对高度信
息进行排序, 得到对应的排序结果, 按照高度筛选规则选取其中一个节点不可逆块对应的
高度信息作为初始链高度。如按照高度值从大到小对高度信息进行排序, 高度信息数目为
n,将排在第(1/2*n+1)位或(2/3*n+1)位高度信息作为初始链高度。
[0067] 步骤S208,获取区块链的历史确认链高度。
[0068] 具体地, 历史确认链高度是整个区块链的不可逆块对应的链高度, 整个区块链的
不可逆块是指在整个区块链中被确认的不可更改的区块数据对应的区块。该历史确认链高
度是根据历史区块对应的区块信息确定的。
[0069] 步骤S210,当当前链高度大于历史确认链高度时, 根据各个节点的区块信息得到
当前链高度的有效性验证结果。
[0070] 具体地, 对当前链高度和历史确认链高度进行比较, 当当前链高度大于历史确认
链高度时, 获取各个节点的中与当前链高度相同高度的区块对应的区块信息, 根据自定义
的验证规则对各个节点的区块信息进行验证, 得到对应的有效性验证结果, 有效性验证结
果包括有效和无效两种结果, 有效表示验证通过, 无效表示验证不通过。
[0071] 步骤S212,根据有效性验证结果更新当前链高度。
[0072] 具体地, 根据有效性验证结果, 确定当前链高度, 当有效性验证结果为有效时,不
修改当前链高度, 当有效性验证结果为无效时, 更新当前链高度, 得到更新后的当前链高
度, 当前链高度的更新规则可以自定义, 如可以将当前链高度的高度减一的链高度作为新
的当前链高度。。
[0073] 步骤S214,根据更新后的当前链高度、 历史确认链高度、初始链高度确定区块链的
工作状态。
[0074] 具体地, 对更新后的当前链高度的区块信息进行验证, 直到当前链高度对应的区
块信息的验证结果为通过时, 对当前链高度与历史确认链高度进行判断, 得到对应的判断
结果, 当判断结果为当前链高度与历史确认链高度相同时, 计算初始链高度和历史确认链
高度的高度差, 根据高度差确定区块链的工作状态, 其中当区块链的工作状态包括正常工
作和异常两种工作状态, 当工作状态为异常时, 可以设置提示信息, 如提示用于暂停交易
等, 当判断结果为当前链高度大于历史确认链高度时, 确定区块链的工作状态为正常。
[0075] 上述区块链数据处理方法, 通过获取区块链中各个节点的节点信息, 节点信息包
括区块信息, 根据各个节点的区块信息确定对应的节点不可逆块, 根据各个节点对应的节
点不可逆块确定区块链对应的初始链高度, 将初始链高度作为当前链高度, 获取区块链的
历史确认链高度, 当当前链高度大于历史确认链高度时, 根据各个节点的区块信息得到当
前链高度的有效性验证结果, 根据有效性验证结果更新当前链高度, 根据更新后的当前链
高度、 历史确认链高度、 初始链高度确定区块链的工作状态。通过获取区块链中各个节点的
区块信息, 分析各个节点的区块信息得到各个节点对应的不可逆区块, 通过分析节点不可
逆块确定整个区块链的初始链高度, 将初始链高度作为当前链高度, 对当前链高度对应的
区块信息进行验证, 当验证不通过时, 更新当前链高度, 根据更新后的当前链高度、历史确

10
CN 110378694 B 说 明 书 7/15 页

认链高度和当前链高度确定整个区块链的工作状态, 提高了区块链的工作状态的判断准确
度。
[0076] 在一个实施例中, 如图4所示,根据各个节点的区块信息得到当前链高度的有效性
验证结果之后, 还包括:
[0077] 步骤S302,当有效性验证结果为当前链高度有效时, 将当前链高度作为当前确认
链高度, 区块链的工作状态为正常状态。
[0078] 具体地, 有效性验证结果为当前链高度有效, 表示当前链高度对应的区块信息满
足预设区块信息的验证条件, 区块链的工作状态为正常状态, 且将当前链高度作为当前确
认链高度。
[0079] 在一个实施例中, 满足预设区块信息的验证条件为哈希值验证, 对区块信息中区
块头部信息中包含的哈希值进行验证, 当当前链高度对应的区块的哈希值的区块数目满足
预设数目时, 验证通过。如区块链中包含的总节点数目为100, 得到当前链高度对应的区块
的哈希值一致的区块数目度80, 即对应的节点数目为80, 预设数目为75时,由于80>75,
验证
通过。
[0080] 步骤S304,当有效性验证结果为当前链高度无效时, 进入步骤S212。
[0081] 具体地, 有效性验证结果为当前链高度无效, 表示当前链高度对应的区块信息不
满足预设区块信息的验证条件, 不满足验证条件时, 更新当前链高度, 对更新后的当前高度
对应的区块信息进行验证, 直到当前链高度对应的区块信息验证通过。通过对整个区块链
各个节点中当前链高度对应的区块的哈希值进行验证, 确定当前链高度是否有效, 各个区
块对应的哈希值是唯一的, 通过哈希值来判断链高度的有效性更为准确, 且相对于验证整
个区块的信息, 哈希值验证更为简便。
[0082] 在一个实施例中, 如图5所示,
步骤S214包括:
[0083] 步骤S2142,将更新后的当前链高度作为当前链高度, 当当前链高度大于历史确认
链高度时, 进入步骤S210。
[0084] 具体地, 将更新后的当前链高度作为当前链高度, 对当前链高度和历史确认链高
度进行比较, 当当前链高度大于历史确认链高度时, 进入步骤S210,
即对各个节点对应的当
前链高度的区块信息进行验证, 直到当前链高度的区块信息的验证结果为验证通过。
[0085] 步骤S2144,当当前链高度等于历史确认链高度时, 根据初始链高度和历史确认链
高度得到链高度差异信息。
[0086] 具体地, 当当前链高度等于历史确认链高度时, 当前链高度的区块信息已通过验
证, 则计算初始链高度和历史确认链高度得到链高度差异信息, 其中高度差异信息可以直
接采用两者的高度差, 也可以是对两者的高度差进行自定义处理。
[0087] 步骤S2146,根据链高度差异信息与预设的链高度差异范围确定区块链的工作状
态。
[0088] 具体地, 预设的链高度差异范围是预先自定义配置的数据范围, 该数据范围可以
根据需求或经验进行配置。当链高度差异信息未超出预设的链高度差异范围时, 表示区块
链的工作状态为正常, 当链高度差异信息超出预设的链高度差异范围时, 表示区块链的工
作状态为异常。
[0089] 在一个实施例中, 如图6所示,
步骤S202包括:

11
CN 110378694 B 说 明 书 8/15 页

[0090] 步骤S2022,
根据各个节点的区块信息确定各个节点对应的最新已确认区块, 得到
各个节点对应的节点不可逆块。
[0091] 具体地, 根据各个节点的区块信息可以确定各个节点对应的最新已确认区块, 并
将最新已确认区块作为不可逆块, 其中最新已确认区块为当前时刻区块链中已经达成共识
的区块信息, 各个节点对的区块信息已经验证通过, 即被该节点承认的区块数据。如bft-
raft、 pbft都是将节点中最新已确认区块和之前的全部区块作为该节点的节点不可逆块。
[0092] 步骤S2024, 根据各个节点的区块信息确定各个节点对应的高度最高已确认区块,
根据高度最高已确认区块得到各个节点对应的节点不可逆块。
[0093] 具体地, 根据各个节点的区块信息中的高度信息, 确定各个节点对应的高度最高
已确认区块, 根据自定义的预设确认规则和高度最高已确认区块确定各个节点对应的节点
不可逆块, 一般情况下高度最高的已确认区块对应的区块链的记录更为可靠。
[0094] 在一个实施例中, 自定义的预设确认规则为将与高度最高已确认区块的高度差等
于预设阈值的已确认区块作为节点不可逆块, 当共识机制为POW机制,
将高度最高已确认区
块的高度差为6的已确认区块和高度差为6的已确认区块之前的区块作为节点不可逆块。
[0095] 步骤S2026, 根据各个节点的区块信息确定当前周期对应的出块节点数目。
[0096] 具体地, 当前周期指正在进行区块信息确认的周期, 根据各个节点的已保存的区
块信息, 确认整个区块链中已经完成区块信息确认的节点数目, 将该节点数目作为出块节
点数目。
[0097] 步骤S2028, 根据出块节点数目计算对应的出块节点比例, 当出块节点比例满足预
设条件时, 将当前周期之前的周期对应的区块作为节点对应的节点不可逆块。
[0098] 具体地, 根据出块节点数目和总节点数目计算出块节点比例, 当出块节点比例大
于预先设置的比例时, 将当前周期之前对应的区块作为节点对应的节点不可逆块。如当共
识机制DPOS机制时, 若节点数目为n, DPOS以n为周期,
各个代表轮流出块, 若最新周期中,
2/
3*n+1个代表出块, 则将最新周期之前的区块作为节点不可逆块。
[0099] 在一个实施例中, 如图7所示, 根据各个节点的区块信息得到当前链高度的有效性
验证结果, 包括:
[0100] 步骤S2062, 根据各个节点的区块信息得到与当前链高度的高度相同的目标区块。
[0101] 步骤S2064, 当目标区块中具有相同区块哈希值的区块占目标区块的比例大于预
设比例时, 当前链高度有效, 否则当前链高度无效。
[0102] 具体地, 目标区块是指各个节点的区块信息中的高度与当前链高度相同的区块,
如当前链高度为80, 则从各个节点中选取区块高度为80的区块作为目标区块。获取目标区
块的区块哈希值, 根据预设规则对目标区块中的区块哈希值进行验证, 统计具有相同区块
哈希的区块数目, 计算目标区块中具有相同区块哈希值的区块占目标区块的比例, 当该比
例大于预先设置的比例时, 表示在当前链高度大多数节点对应的区块哈希值一致, 表示大
部分节点都确认该区块数据, 因此当前链高度是有效的, 当该比例小于或等于预先设置的
比例时, 表示大部分节点在当前链高度对应的区块信息不同, 表示当前链高度对应的区块
不适合作为整个区块链的不可逆块。 由于区块哈希值是唯一标识数据的标签, 故根据区块
哈希值的一致性, 来判断链高度的有效性可以提高数据处理效率。
[0103] 在一个实施例中, 如图8所示, 区块链数据处理方法还包括:

12
CN 110378694 B 说 明 书 9/15 页

[0104] 步骤S402,
获取查询区块信息, 查询区块信息包括查询哈希值或查询区块高度。
[0105] 步骤S404,从区块链各个节点对应的区块中获取与查询区块信息匹配的区块组成
候选区块。
[0106] 步骤S406,获取链不可逆块,根据所述链不可逆块确定所述候选区块的区块确认
状态。
[0107] 具体地, 查询区块信息是用户或机构配置的查询条件信息, 其中查询条件信息包
括查询哈希值或查询区块高度等。 终端或服务器根据用户配置信息从区块链各个节点对应
的区块中获取与查询条件信息匹配的区块, 组成候选区块,获取区块链对应的链不可逆块,
链不可逆块是与已确认的链高度对应的区块。获取链不可逆块对应的区块高度和哈希值,
对链不可逆块对应的区块高度对候选区块中的各个区块对应的区块高度进行验证, 对链不
可逆块对应的哈希值对候选区块中各个区块对应的哈希值进行验证, 当候选区块中当前区
块哈希值和高度都验证通过时, 表示当前区块的区块确认状态为已确认。
[0108] 在一个实施例中, 当查询条件为查询区块高度时, 从区块链各个节点中的区块中
与查询区块高度相同高度的区块, 组成候选区块, 对候选区块的区块哈希进行验证,判断该
候选区块中包含的区块类型数目, 根据链不可逆块确定候选区块中各个区块的确认状态,
将确认状态为已确认的区块和对应的区块类型进行展示。
[0109] 在一个实施例中, 查询区块信息为区块交易信息, 查询哈希值为区块交易信息对
应的交易哈希值。
[0110] 具体地, 区块交易信息为用户或机构配置的查询条件, 终端或服务器在获取到该
查询条件时, 从区块链各个节点对应的区块中获取与查询条件信息匹配的区块, 组成候选
区块, 获取区块链对应的链不可逆块, 链不可逆块是与已确认的链高度对应的区块。 获取链
不可逆块对应的区块高度和哈希值, 对链不可逆块对应的区块高度对候选区块中的各个区
块对应的区块高度进行验证, 对链不可逆块对应的哈希值对候选区块中各个区块对应的哈
希值进行验证, 当候选区块中当前区块哈希值和高度都验证通过时, 表示当前区块的交易
确认状态为已确认。
[0111] 在一个实施例中, 当查询条件为查询查询哈希时, 从区块链各个节点中的区块中
与查询哈希值相同哈希值的区块, 组成候选区块, 根据候选区块的区块头部信息按照预设
规则进行排序, 按照排序规则和链不可逆块逐一对确定候选区块中各个区块的确认状态,
将确认状态为已确认的区块进行展示。
[0112] 在一个实施例中, 查询条件为哈希值时, 根据区块头部信息的信息完整度进行排
序, 将区块头部信息最全的区块排在前面, 先根据链不可逆块确定区块头部信息最全的区
块对应的区块确认状态, 当区块头部信息最全的区块对应的区块确认状态为已确认时, 将
区块头部信息最全的区块对应的区块展示在终端上, 当区块头部信息最全的区块对应的区
块确认状态为未确认时, 获取下一个区块,并对下一区块的区块确认状态进行确认, 直到其
中一个区块被确认并展示, 或返回并未查询到此区块。
[0113] 在一个具体的实施例中, 如图9所示,区块链数据处理方法包括:
[0114] 步骤S502,
获取区块链各个节点的工作状态, 工作状态包括正常和异常。
[0115] 具体地, 区块链各个节点的工作状态可以根据查询程序是否接收到节点反馈的查
询数据确定, 可以接收表示节点的工作状态为正常, 不能接收到节点反馈的查询数据表示

13
CN 110378694 B 说 明 书 10/15 页

节点工作状态的异常。
[0116] 步骤S504,统计工作状态为异常的节点数目, 得到异常节点数目。
[0117] 步骤S506,判断异常节点数目占比是否大于预设异常数目比例, 当异常节点数目
占比大于预设异常数目比例时进入步骤S508A, 反之进入步骤S508B。
[0118] 步骤S508A,当异常节点数目占比大于预设异常数目比例时, 区块链的工作状态为
异常。预设异常数目比例为预先设置的比例, 如可以设置预设异常比例为30%, 则异常节点
数目的占比大于30%时, 说明整个区块链的异常节点数目超过了预设范围, 表示区块链的
工作状态为异常, 可以提示用户或机构减少交易。
[0119] 步骤S508B,获取最新已确认的区块头部信息和最新高度信息。最新已确认的区块
头部信息是指各个节点中最新确认区块的区块头部信息, 最新高度信息是指各个节点中已
生成区块的区块高度。
[0120] 步骤S510a,根据各个节点的区块信息确定各个节点对应的最新已确认区块, 得到
各个节点对应的节点不可逆块。
[0121] 步骤S510b,根据各个节点的区块信息确定各个节点对应的高度最高已确认区块,
根据高度最高已确认区块得到各个节点对应的节点不可逆块。
[0122] 步骤S510c,根据各个节点的区块信息确定当前周期对应的出块节点数目, 根据出
块节点数目计算对应的出块节点比例, 当出块节点比例满足预设条件时, 将当前周期之前
的周期对应的区块作为节点对应的节点不可逆块。
[0123] 步骤S512,根据各个节点对应的节点不可逆块确定区块链对应的初始链高度, 将
初始链高度作为当前链高度。
[0124] 步骤S514,获取区块链的历史确认链高度。
[0125] 步骤S516,当当前链高度大于历史确认链高度时, 根据各个节点的区块信息得到
当前链高度的有效性验证结果。
[0126] 步骤S518,当有效性验证结果为当前链高度有效时, 将当前链高度作为当前确认
链高度, 区块链的工作状态为正常状态。
[0127] 步骤S520,当有效性验证结果为当前链高度无效时, 更新当前链高度。
[0128] 步骤S522,将更新后的当前链高度作为当前链高度, 当当前链高度大于历史确认
链高度时, 返回步骤S516。
[0129] 步骤S524,当当前链高度等于历史确认链高度时, 根据初始链高度和历史确认链
高度得到链高度差异信息。
[0130] 步骤S526,根据链高度差异信息与预设的链高度差异范围确定区块链的工作状
态。
[0131] 图2、
4-9为一个实施例中区块链数据处理方法的流程示意图。应该理解的是, 虽然
图2、4-9的流程图中的各个步骤按照箭头的指示依次显示, 但是这些步骤并不是必然按照
箭头指示的顺序依次执行。 除非本文中有明确的说明, 这些步骤的执行并没有严格的顺序
限制, 这些步骤可以以其它的顺序执行。而且, 图2、4-9中的至少一部分步骤可以包括多个
子步骤或者多个阶段, 这些子步骤或者阶段并不必然是在同一时刻执行完成, 而是可以在
不同的时刻执行, 这些子步骤或者阶段的执行顺序也不必然是依次进行, 而是可以与其它
步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

14
CN 110378694 B 说 明 书 11/15 页

[0132] 在一个实施例中, 如图10所示, 提供了一种区块链数据处理装置, 包括节点信息获


取模块202、节点不可逆块获取模块204、链高度确定模块206、历史链高度获取模块208、链
高度验证模块210、 链高度更新模块212和链工作状态确定模块214。
[0133] 节点信息获取模块202, 用于获取区块链中各个节点的节点信息, 节点信息包括区
块信息。
[0134] 节点不可逆块获取模块204, 用于根据各个节点的区块信息确定对应的节点不可
逆块。
[0135] 链高度确定模块206, 用于根据各个节点对应的节点不可逆块确定区块链对应的
初始链高度, 将初始链高度作为当前链高度。
[0136] 历史链高度获取模块208, 用于获取区块链的历史确认链高度。
[0137] 链高度验证模块210,用于当当前链高度大于历史确认链高度时, 根据各个节点的
区块信息得到当前链高度的有效性验证结果。
[0138] 链高度更新模块212,用于根据有效性验证结果更新当前链高度。
[0139] 链工作状态确定模块214, 用于根据更新后的当前链高度、历史确认链高度、初始
链高度确定区块链的工作状态。
[0140] 在一个实施例中, 区块链数据处理装置还包括:
[0141] 链工作状态确定模块214还用于当有效性验证结果为当前链高度有效时, 将当前
链高度作为当前确认链高度, 区块链的工作状态为正常状态。当有效性验证结果为当前链
高度无效时, 进入链高度更新模块212。
[0142] 在一个实施例中, 如图所示, 链工作状态确定模块214包括:
[0143] 链高度更新单元2142, 用于将更新后的当前链高度作为当前链高度, 当当前链高
度大于历史确认链高度时, 进入链高度验证模块210。
[0144] 链高度差异计算单元2144, 用于当当前链高度等于历史确认链高度时, 根据初始
链高度和历史确认链高度得到链高度差异信息。
[0145] 工作状态确定单元2146, 用于根据链高度差异信息与预设的链高度差异范围确定
区块链的工作状态。
[0146] 在一个实施例中, 如图11所示, 节点不可逆块获取模块204包括:
[0147] 第一获取单元2022,
用于根据各个节点的区块信息确定各个节点对应的最新已确
认区块, 得到各个节点对应的节点不可逆块。
[0148] 第二获取单元2024,
根据各个节点的区块信息确定各个节点对应的高度最高已确
认区块, 根据高度最高已确认区块得到各个节点对应的节点不可逆块。 或
[0149] 第三获取单元2026,
用于根据各个节点的区块信息确定当前周期对应的出块节点
数目, 根据出块节点数目计算对应的出块节点比例, 当出块节点比例满足预设条件时, 将当
前周期之前的周期对应的区块作为节点对应的节点不可逆块。
[0150] 在一个实施例中, 如图12所示, 链高度验证模块210,
包括:
[0151] 目标区块获取单元2102, 用于根据各个节点的区块信息得到与当前链高度的高度
相同的目标区块。
[0152] 链高度验证单元2104,用于当目标区块中具有相同区块哈希值的区块占目标区块
的比例大于预设比例时, 当前链高度有效, 否则当前链高度无效。

15
CN 110378694 B 说 明 书 12/15 页

[0153] 在一个实施例中, 如图13所示,区块链数据处理装置, 还包括:


[0154] 查询数据获取模块302, 用于获取查询区块信息, 查询区块信息查询包括哈希值或
查询区块高度。
[0155] 候选区块确定模块304, 用于从区块链各个节点对应的区块中获取与查询区块信
息匹配的区块组成候选区块;
[0156] 区块确认状态确定模块306, 用于获取链不可逆块, 根据链不可逆块确定候选区块
的区块确认状态。
[0157] 在一个实施例中, 查询数据获取模块302中的查询区块信息为区块交易信息, 查询
哈希值为区块交易信息对应的交易哈希值。
[0158] 图14示出了一个实施例中计算机设备的内部结构图。 该计算机设备具体可以是图
1中的终端110(或服务器120)。如图14所示, 该计算机设备包括该计算机设备包括通过系统
总线连接的处理器、 存储器、网络接口、 输入装置和显示屏。其中, 存储器包括非易失性存储
介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统, 还可存储有计算机
程序, 该计算机程序被处理器执行时, 可使得处理器实现区块链数据处理方法。该内存储器
中也可储存有计算机程序, 该计算机程序被处理器执行时, 可使得处理器执行区块链数据
处理方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏, 计算机设备的输
入装置可以是显示屏上覆盖的触摸层, 也可以是计算机设备外壳上设置的按键、轨迹球或
触控板, 还可以是外接的键盘、 触控板或鼠标等。
[0159] 本领域技术人员可以理解, 图14中示出的结构, 仅仅是与本申请方案相关的部分
结构的框图, 并不构成对本申请方案所应用于其上的计算机设备的限定, 具体的计算机设
备可以包括比图中所示更多或更少的部件, 或者组合某些部件, 或者具有不同的部件布置。
[0160] 在一个实施例中, 本申请提供的区块链数据处理装置可以实现为一种计算机程序
的形式, 计算机程序可在如图14所示的计算机设备上运行。计算机设备的存储器中可存储
组成该区块链数据处理装置的各个程序模块, 比如,图9所示的节点信息获取模块202、
节点
不可逆块获取模块204、链高度确定模块206、历史链高度获取模块208、链高度验证模块
210、 链高度更新模块212和链工作状态确定模块214。各个程序模块构成的计算机程序使得
处理器执行本说明书中描述的本申请各个实施例的区块链数据处理方法中的步骤。
[0161] 例如, 图14所示的计算机设备可以通过如图9所示的区块链数据处理装置中的节
点信息获取模块202执行获取区块链中各个节点的节点信息, 节点信息包括区块信息。计算
机设备可通过节点不可逆块获取模块204执行根据各个节点的区块信息确定对应的节点不
可逆块。计算机设备可通过链高度确定模块206执行根据各个节点对应的节点不可逆块确
定区块链对应的初始链高度, 将初始链高度作为当前链高度。计算机设备可通过历史链高
度获取模块208执行获取区块链的历史确认链高度。计算机设备可通过链高度验证模块210
执行当当前链高度大于历史确认链高度时, 根据各个节点的区块信息得到当前链高度的有
效性验证结果。计算机设备可通过链高度更新模块212执行根据有效性验证结果更新当前
链高度。计算机设备可通过链工作状态确定模块214执行根据更新后的当前链高度、 历史确
认链高度、 初始链高度确定区块链的工作状态。
[0162] 一种计算机设备, 包括存储器、 处理器及存储在存储器上并可在处理器上运行的
计算机程序, 所述处理器执行所述计算机程序时实现以下步骤: 获取区块链中各个节点的

16
CN 110378694 B 说 明 书 13/15 页

节点信息, 节点信息包括区块信息, 根据各个节点的区块信息确定对应的节点不可逆块, 根


据各个节点对应的节点不可逆块确定区块链对应的初始链高度, 将初始链高度作为当前链
高度, 获取区块链的历史确认链高度, 当当前链高度大于历史确认链高度时, 根据各个节点
的区块信息得到当前链高度的有效性验证结果, 根据有效性验证结果更新当前链高度, 根
据更新后的当前链高度、 历史确认链高度、初始链高度确定区块链的工作状态。
[0163] 在一个实施例中, 根据各个节点的区块信息得到当前链高度的有效性验证结果之
后, 计算机程序被处理器执行时还实现以下步骤: 当有效性验证结果为当前链高度有效时,
将当前链高度作为当前确认链高度, 区块链的工作状态为正常状态, 当有效性验证结果为
当前链高度无效时, 进入根据有效性验证结果更新当前链高度的步骤。
[0164] 在一个实施例中, 根据有效性验证结果更新当前链高度, 包括:当有效性验证结果
为当前链高度无效时, 减小当前链高度得到更新后的当前链高度, 根据更新后的当前链高
度、 历史确认链高度、 初始链高度确定区块链的工作状态包括: 将更新后的当前链高度作为
当前链高度, 当当前链高度大于历史确认链高度时, 进入根据各个节点的区块信息得到当
前链高度的有效性验证结果, 当当前链高度等于历史确认链高度时, 根据初始链高度和历
史确认链高度得到链高度差异信息, 根据链高度差异信息与预设的链高度差异范围确定区
块链的工作状态。
[0165] 在一个实施例中, 根据各个节点的区块信息确定对应的节点不可逆块, 包括:根据
各个节点的区块信息确定各个节点对应的最新已确认区块, 得到各个节点对应的节点不可
逆块, 或根据各个节点的区块信息确定各个节点对应的高度最高已确认区块, 根据高度最
高已确认区块得到各个节点对应的节点不可逆块, 或根据各个节点的区块信息确定当前周
期对应的出块节点数目, 根据出块节点数目计算对应的出块节点比例, 当出块节点比例满
足预设条件时, 将当前周期之前的周期对应的区块作为节点对应的节点不可逆块。
[0166] 在一个实施例中, 根据各个节点的区块信息得到当前链高度的有效性验证结果,
包括: 根据各个节点的区块信息得到与当前链高度的高度相同的目标区块, 当目标区块中
具有相同区块哈希值的区块占目标区块的比例大于预设比例时, 当前链高度有效, 否则当
前链高度无效。
[0167] 在一个实施例中, 计算机程序被处理器执行时还实现以下步骤: 获取查询区块信
息, 查询区块信息查询包括哈希值或查询区块高度, 从区块链各个节点对应的区块中获取
与查询区块信息匹配的区块组成候选区块, 获取链不可逆块, 根据链不可逆块确定候选区
块的区块确认状态。
[0168] 在一个实施例中, 查询区块信息为区块交易信息, 查询哈希值为区块交易信息对
应的交易哈希值。
[0169] 一种计算机可读存储介质, 其上存储有计算机程序, 所述计算机程序被处理器执
行时实现以下步骤: 获取区块链中各个节点的节点信息, 节点信息包括区块信息, 根据各个
节点的区块信息确定对应的节点不可逆块, 根据各个节点对应的节点不可逆块确定区块链
对应的初始链高度, 将初始链高度作为当前链高度, 获取区块链的历史确认链高度, 当当前
链高度大于历史确认链高度时, 根据各个节点的区块信息得到当前链高度的有效性验证结
果, 根据有效性验证结果更新当前链高度, 根据更新后的当前链高度、历史确认链高度、初
始链高度确定区块链的工作状态。

17
CN 110378694 B 说 明 书 14/15 页

[0170] 在一个实施例中, 根据各个节点的区块信息得到当前链高度的有效性验证结果之


后, 计算机程序被处理器执行时还实现以下步骤: 当有效性验证结果为当前链高度有效时,
将当前链高度作为当前确认链高度, 区块链的工作状态为正常状态, 当有效性验证结果为
当前链高度无效时, 进入根据有效性验证结果更新当前链高度的步骤。
[0171] 在一个实施例中, 根据有效性验证结果更新当前链高度, 包括: 当有效性验证结果
为当前链高度无效时, 减小当前链高度得到更新后的当前链高度, 根据更新后的当前链高
度、 历史确认链高度、 初始链高度确定区块链的工作状态包括: 将更新后的当前链高度作为
当前链高度, 当当前链高度大于历史确认链高度时, 进入根据各个节点的区块信息得到当
前链高度的有效性验证结果, 当当前链高度等于历史确认链高度时, 根据初始链高度和历
史确认链高度得到链高度差异信息, 根据链高度差异信息与预设的链高度差异范围确定区
块链的工作状态。
[0172] 在一个实施例中, 根据各个节点的区块信息确定对应的节点不可逆块, 包括:
根据
各个节点的区块信息确定各个节点对应的最新已确认区块, 得到各个节点对应的节点不可
逆块, 或根据各个节点的区块信息确定各个节点对应的高度最高已确认区块, 根据高度最
高已确认区块得到各个节点对应的节点不可逆块, 或根据各个节点的区块信息确定当前周
期对应的出块节点数目, 根据出块节点数目计算对应的出块节点比例, 当出块节点比例满
足预设条件时, 将当前周期之前的周期对应的区块作为节点对应的节点不可逆块。
[0173] 在一个实施例中, 根据各个节点的区块信息得到当前链高度的有效性验证结果,
包括: 根据各个节点的区块信息得到与当前链高度的高度相同的目标区块, 当目标区块中
具有相同区块哈希值的区块占目标区块的比例大于预设比例时, 当前链高度有效, 否则当
前链高度无效。
[0174] 在一个实施例中, 计算机程序被处理器执行时还实现以下步骤: 获取查询区块信
息, 查询区块信息查询包括哈希值或查询区块高度, 从区块链各个节点对应的区块中获取
与查询区块信息匹配的区块组成候选区块, 获取链不可逆块, 根据链不可逆块确定候选区
块的区块确认状态。
[0175] 在一个实施例中, 查询区块信息为区块交易信息, 查询哈希值为区块交易信息对
应的交易哈希值。
[0176] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以
通过计算机程序来指令相关的硬件来完成, 所述的程序可存储于一非易失性计算机可读取
存储介质中, 该程序在执行时, 可包括如上述各方法的实施例的流程。其中, 本申请所提供
的各实施例中所使用的对存储器、 存储、 数据库或其它介质的任何引用, 均可包括非易失性
和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
[0177] 以上实施例的各技术特征可以进行任意的组合, 为使描述简洁, 未对上述实施例
中的各个技术特征所有可能的组合都进行描述, 然而,只要这些技术特征的组合不存在矛

18
CN 110378694 B 说 明 书 15/15 页

盾, 都应当认为是本说明书记载的范围。
[0178] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并
不能因此而理解为对本申请专利范围的限制。应当指出的是, 对于本领域的普通技术人员
来说, 在不脱离本申请构思的前提下,
还可以做出若干变形和改进,这些都属于本申请的保
护范围。 因此,
本申请专利的保护范围应以所附权利要求为准。

19
CN 110378694 B 说 明 书 附 图 1/7 页

图1

图2

20
CN 110378694 B 说 明 书 附 图 2/7 页

图3

图4

图5

21
CN 110378694 B 说 明 书 附 图 3/7 页

图6

图7

图8

22
CN 110378694 B 说 明 书 附 图 4/7 页

图9

23
CN 110378694 B 说 明 书 附 图 5/7 页

图10

图11

24
CN 110378694 B 说 明 书 附 图 6/7 页

图12

图13

25
CN 110378694 B 说 明 书 附 图 7/7 页

图14

26

You might also like