CN117056131B - 基于区块链网络的数据处理方法及相关设备 - Google Patents

基于区块链网络的数据处理方法及相关设备 Download PDF

Info

Publication number
CN117056131B
CN117056131B CN202311311533.7A CN202311311533A CN117056131B CN 117056131 B CN117056131 B CN 117056131B CN 202311311533 A CN202311311533 A CN 202311311533A CN 117056131 B CN117056131 B CN 117056131B
Authority
CN
China
Prior art keywords
block
transaction data
network
blockchain
source
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.)
Active
Application number
CN202311311533.7A
Other languages
English (en)
Other versions
CN117056131A (zh
Inventor
廖志勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311311533.7A priority Critical patent/CN117056131B/zh
Publication of CN117056131A publication Critical patent/CN117056131A/zh
Application granted granted Critical
Publication of CN117056131B publication Critical patent/CN117056131B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange

Abstract

本申请实施例提供了一种基于区块链网络的数据处理方法及相关设备,其中,区块链网络包括共识网络和业务网络,共识网络中包含多个共识节点,业务网络中包含多个业务节点;该方法包括:当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据;从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据;基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。通过本申请实施例能够完整且有效地恢复出正常的区块链,使得基于区块链的业务能够正常地执行。

Description

基于区块链网络的数据处理方法及相关设备
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链网络的数据处理方法、一种基于区块链网络的数据处理装置、一种计算机设备、一种计算机可读存储介质以及一种计算机程序产品。
背景技术
随着区块链技术的发展,区块链在金融、供应链管理、娱乐、医疗等各个领域都发挥着十分重要的作用,基于区块链去中心化、不可篡改等特点,数据能够被更加安全地存储。但是,在一些场景下区块链可能存在异常,从而影响区块链的业务,比如,在私有链场景下,如果一个中心(可理解为一个机构)放弃维护共识网络中的共识节点,那么区块链会发生丢失从而导致基于区块链的业务无法正常进行。在此情况下,如何对区块链数据进行恢复是必要的。
发明内容
本申请实施例提供一种基于区块链网络的数据处理方法及相关设备,可以完整且有效地恢复出正常的区块链,使得基于区块链的业务能够正常地执行。
本申请实施例一方面提供了一种基于区块链网络的数据处理方法,区块链网络包括共识网络和业务网络,共识网络中包含多个共识节点,业务网络中包含多个业务节点;该方法包括:
当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据;
从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据;
基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。
本申请实施例一方面提供了一种基于区块链网络的数据处理装置,区块链网络包括共识网络和业务网络,共识网络中包含多个共识节点,业务网络中包含多个业务节点;该装置包括:
获取单元,用于当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据;
获取单元,还用于从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据;
处理单元,用于基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。
本申请实施例一方面提供一种计算机设备,该计算机设备包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现如上述基于区块链网络的数据处理方法。
相应的,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器加载并执行如上述基于区块链网络的数据处理方法。
相应的,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,该计算机程序或计算机指令被处理器执行时实现上述基于区块链网络的数据处理方法。
在本申请实施例中在检测到区块链网络中的源区块链存在异常时,可获取针对该源区块链的区块同步数据,还可从业务网络中的各个业务节点中获取各自记录的源区块链上的交易数据;可见,在源区块链存在异常的情况下,能够完整地获取到与源区块链有关的数据(包括区块同步数据和交易数据),进而可基于针对源区块链的区块同步数据和各个业务节点所记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。这样,能够基于源区块链上较为关键的数据,能够准确、完整地恢复出与正常的源区块链相同的目标区块链,通过目标区块链可还原出源区块链中应有的区块数据,从而保障原本基于源区块链的业务,能够基于目标区块链被正常执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请一个示例性实施例提供的一种数据共享系统的示意图;
图1b是本申请一个示例性实施例提供的一种区块链构成的示意图;
图1c是本申请一个示例性实施例提供的一种新区块产生的过程示意图;
图1d是本申请一个示例性实施例提供的一种基于区块链网络的数据处理系统的架构图;
图1e是本申请一个示例性实施例提供的一种区块链网络的示意图;
图2是本申请一个示例性实施例提供的一种基于区块链网络的数据处理方法的流程示意图;
图3是本申请一个示例性实施例提供的一种基于关联关系恢复区块链数据的示意图;
图4a是本申请一个示例性实施例提供的一种默克尔树的示意图;
图4b是本申请一个示例性实施例提供的一种区块与默克尔树、默克尔根之间的关系示意图;
图5a是本申请一个示例性实施例提供的一种默克尔子树的示意图;
图5b是本申请一个示例性实施例提供的另一种默克尔子树的示意图;
图5c是本申请一个示例性实施例提供的一种合并默克尔子树的示意图;
图6a是本申请一个示例性实施例提供的一种交易验证的流程示意图;
图6b是本申请一个示例性实施例提供的另一种交易验证的流程示意图;
图6c是本申请一个示例性实施例提供的一种交易发送的流程示意图;
图7是本申请一个示例性实施例提供的一种基于区块链网络的数据处理装置的结构示意图;
图8是本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提出了一种基于区块链网络的数据处理方案,该方案涉及基于区块链网络的数据处理系统、方法及相关设备,该方案中区块链网络包括业务网络和共识网络,业务网络中包括多个业务节点,这些业务节点可以是不同参与方的节点,主要负责向共识网络中的共识节点发送交易数据;共识网络中包括多个共识节点,主要负责根据交易数据执行交易并对交易数据进行共识上链处理。该基于区块链网络的数据处理方法包括:在检测到区块链网络中的源区块链存在异常时,获取针对该源区块链的区块同步数据,还可获取各个业务节点分别记录的源区块链上的交易数据;由于业务网络中各个业务节点转发过的交易数据可在共识上链后被存储至原区块链上,因此,获取到的业务网络中所有业务节点记录的源区块链上的交易数据,是源区块链上完整的交易数据。进而基于获取到的区块同步数据和获取到的交易数据进行区块链恢复,能够较为准确、完整地还原出正常的源区块链,即得到目标区块链。
本申请基于区块链网络的数据处理方法可以由第一业务节点(即业务网络中的任一业务节点来执行)或者是由可信的第三方提供的设备执行。如果由可信的第三方提供的设备执行本申请提供的数据处理方法,那么可从各个业务网络中的各个业务节点中获取到源区块链上的完整的交易数据,如果由第一业务节点执行,那么除了获取第一业务节点本地记录的源区块链上的交易数据,还需从其他业务节点中获取所记录的源区块链上的交易数据。这样,能够得到源区块链上完整的交易数据,以保证区块链恢复的有效性和完整性。
上述提及的区块链网络具有分布式的特点,区块链网络中的数据不依赖于中央服务器,而是分布式地存储在各个节点之中,这使得区块链网络更加健壮,因为没有单个破解或故障的节点会对整个网络产生严重影响。区块链网络还具有去中心化的特点,这使得区块链网络中每个节点在网络中都有相同的地位,节点之间直接进行通信和数据交换,而无需经过中央服务器。
区块链网络涉及一种数据共享系统,参见图1a所示的数据共享系统,数据共享系统100是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点101,多个节点101可以是指数据共享系统中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,下表中仅以IP地址为例进行说明:
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1b,区块链由多个区块组成,创始块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图1c,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
基于上述描述,①区块链还可理解成是一种去中心化的分布式账本,由多方维护且数据不可篡改。区块链,就是一个又一个区块(block)组成的链条。每一个区块中保存了一定的信息,它们按照各自产生的时间顺序连接成链条。这个链条被保存在所有的服务器中,只要整个系统中有一台服务器可以工作,整条区块链就是安全的。②区块包括两个部分:区块头(header)和区块体(body),其中,区块体包含验证区块创建过程中的交易数据。该交易数据(或简称为交易)是指带有一定格式的交易信息,交易是由外部发起的,并带有指定的调用信息。根据是否执行智能合约,交易可包括普通交易和合约交易,合约交易进一步地又可包括合约部署交易和合约调用交易,对于每一笔合法的交易,其交易执行结果都可封装存储在区块链上。而区块的主要作用便是封装交易数据。区块头可连接到前一区块并为区块链提供完整性,区块头中除了存储上述提及的时间戳、难度值、父区块的区块头特征值(如散列值,也称为hash值或哈希值)等,还可存储默克尔(Merkle)根,该默克尔根可代表区块体中存储的所有交易数据,并可为本申请实施例中涉及的区块链恢复、交易验证等具体过程提供参考依据。
下面将结合附图,对本申请一个示例性实施例提供的基于区块链网络的数据处理系统的架构进行介绍。请参见图1d,图1d是本申请一个示例性实施例提供的一种基于区块链网络的数据处理系统的架构图。如图1d所示,该系统包括区块链网络中的各个节点以及数据处理设备。该数据处理设备是由可信的第三方提供的一个具备数据处理能力的计算机设备,可以是终端设备或服务器。
先对本申请实施例提及的区块链网络的结构进行详细介绍,如图1e所示,区块链网络包括共识网络和业务网络,业务网络包括至少一个业务节点,业务网络中的每个业务节点负责向共识网络转发交易数据而不参与共识,业务节点还可从共识网络中同步针对源区块链的区块同步数据,例如通过身份认证的方式定时地从共识网络中同步区块头。此外,业务节点又可称为轻节点或者SPV节点(或SPV),一个业务节点对应一个参与方,不同业务节点所涉及的参与方可能不同,任意参与方的节点均可接入业务网络并作为一个业务节点与共识网络进行交互。共识网络包括多个共识节点,共识网络中的每个共识节点负责接收轻节点转发的交易数据,将交易数据进行打包出块并共识上链。这些共识节点由一个中心维护,共识节点之间互相信任,可采用共识算法(如Raft共识算法)来保证数据一致性。由于共识网络中共识节点的数量包括至少两个,各个共识节点所形成的共识网络也可简称为共识节点集群。相对于共识网络来说,业务网络中的各个业务节点可理解成是一种外围轻节点,不参与共识,负责接收交易数据并转发到共识网络,并可从共识网络同步源区块链的区块同步数据(如区块头)。业务节点本地还可记录自身转发过的交易数据,从而基于本地记录的交易数据不仅可检测源区块链是否发生异常,还可还原出正常的源区块链。
业务网络和共识网络处于不同的网络环境下,在一种实现方式中,业务网络处于公有网络中,而共识网络处于私有网络中。业务节点部署在处于公网的业务网络中,而运行区块链共识协议的共识节点部署在私有的共识网络中,二者通过路由边界进行交互,共识网络中各个共识节点共识上链所涉及的源区块链属于私有链。在共识处理的过程中,可采用效率较高、又能保证数据一致性、安全性的共识算法(例如Raft算法、Poxos算法)。由于共识网络处于相对安全的私有云中,其互相访问本就有共识机制保证安全,不需要额外加入身份管理和网络控制,而业务节点处于公有网络中,可能会被其他不确定的网络终端访问,业务节点接入共识网络中的行为可通过某些机制被严格控制。由于各个业务节点处于公有网络中,可参与见证,基于上述区块链网络可形成私有链共识、公开多方见证的半联盟链,这样能够在共识效率方面以及安全性方面取得一定的均衡,这是因为业务网络中的业务节点能够对共识网络起到监督作用,还能够对共识网络中源区块链上有关的区块数据起到备份作用,以在源区块链出现异常的情况下,基于业务节点中记录的数据及时准确地恢复出正常的源区块链。
下面以数据处理设备为例,对本申请的数据处理方法所涉及的流程进行示例性地说明,具体包括如下内容:当检测到区块链网络中的源区块链存在异常时,数据处理设备可获取针对源区块链的区块同步数据,该区块同步数据是指源区块链上支持向共识网络的共识节点之外的节点所同步的数据,例如支持向业务节点同步的区块头。在一种实现方式中,可从共识网络中获取针对源区块链的区块同步数据,在另一种实现方式中,可从业务网络中的任一业务节点中获取针对源区块链的区块同步数据。数据处理设备还可获取各个业务节点本地记录的源区块链上的交易数据;至此,数据处理设备获取到区块链恢复所需的完整的交易数据和区块同步数据。进而基于获取到的交易数据和区块同步数据能够较为准确地进行区块链数据恢复,得到目标区块链。通过目标区块链可还原出源区块链中正常的区块数据,从而在源区块链数据出现丢失或损坏等异常情况下,基于目标区块链同样能够正常地执行业务。
进一步地,在得到目标区块链之后,数据处理设备还可确定出新的共识网络,在一种可实现的方式中,可通过投票对象(如各个业务节点)对中心的选举来确定出一个新的共识网络,进而可将区块链网络中原有的共识网络替换为该新的共识网络,具体的,数据处理设备以及业务网络中的各个业务节点可断开与原有的共识网络之间的通信连接,并建立与新的共识网络之间的通信连接,从而可将目标区块链同步给新的共识网络,业务节点也能够将接收到的交易数据转发给该新的共识网络,以在新的共识网络中将待共识上链的交易数据存储至目标区块链。
上述提及各种节点可以是终端设备或者服务器中的一种或多种。其中,终端设备包括但不限于:智能手机、平板电脑、智能可穿戴设备、智能语音交互设备、智能家电、个人电脑、车载终端、智能摄像头等设备,本申请对此不作限制。对于终端设备的数量,本申请不做限制。该服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。对于服务器的数量,本申请不做限制。
本申请实施例提供的数据处理系统,能够在源区块链数据出现异常时,基于各个业务节点所记录的源区块链上的完整的交易数据,以及针对源区块链的区块同步数据来进行区块链数据恢复,基于完整的交易数据和区块同步数据,能够使得恢复出的目标区块链是完整且有效的,而该目标区块链能够提供一个良好的数据环境,从而能够在基于源区块链的业务转移到目标区块链上后,保障业务的正常执行。
接下来对本申请实施例提供的基于区块链网络的数据处理方法进行介绍。
请参见图2,是本申请一个示例性实施例提供的一种基于区块链网络的数据处理方法的流程示意图。其中,区块链网络包括共识网络和业务网络,共识网络中包含多个共识节点,共识节点负责将交易数据封装在区块中执行共识上链处理,此处共识上链处理涉及的区块链为源区块链。业务网络中包含多个业务节点;每个业务节点负责接收客户端发送的交易数据并将交易数据转发至共识网络中,并可在本地记录自身转发过的交易数据,还可从共识网络中同步针对源区块链的区块同步数据(例如区块头),但业务节点并不参与共识。本申请中基于区块链网络的数据处理方法可以由计算机设备(如图1d中的任一业务节点或者数据处理设备)来执行,该基于区块链网络的数据处理方法可以包括以下S201-S203。
S201,当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据。
本申请实施例中,源区块链是指共识网络中的共识节点执行共识上链处理所涉及的区块链。由于共识网络中共识节点的设备故障或者由于源区块链本身存储的数据被篡改等原因可能导致源区块链存在异常,示例性地,由于共识网络中的各个共识节点无法处理交易数据,而导致源区块链无法更新,从而可确定源区块链存在异常。在检测区块链网络中的源区块链是否存在异常时,计算机设备可以从共识网络中的共识节点是否能够正常地处理交易数据(物理方面),业务网络中的业务节点是否能够获取到正常的反馈数据(业务方面)等方面来进行检测。
进一步地,在检测出源区块链存在异常的情况下,计算机设备可直接从共识网络中获取针对源区块链的区块同步数据,或者从业务网络的任一业务节点中获取该区块同步数据。针对后一种方式,这是由于业务网络中的业务节点会定期地从共识网络中同步针对源区块链的区块同步数据,从而业务节点本地存储有针对源区块链的区块同步数据,这便于业务节点在需恢复区块链时,可直接采用各个业务节点记录的交易数据和所同步的区块同步数据来进行数据恢复。
在一种实施方式中,区块同步数据包括源区块链上的区块的区块头;计算机设备在获取针对源区块链的区块同步数据时,具体可执行如下步骤(1.1)-步骤(1.4)。
步骤(1.1)获取针对源区块链进行历史同步的区块头。
在具体实现中,历史同步是指在当前时刻之前的时刻对源区块链上的区块头进行的区块同步处理,当前时刻是指获取历史同步的区块头的时刻,当前时刻之前的一次或多次区块同步处理均可视为历史同步。计算机设备在当前时刻之前可定期地从共识网络中同步源区块链上的各个区块各自的区块头,并将同步到的区块头存储到本地,进而便于从本地获取针对源区块链进行历史同步的区块头;若计算机设备为第一业务节点,那么第一业务节点可监测源区块链的高度,并在监测到源区块链的高度大于本地的区块头对应的最大高度时,从共识网络中同步源区块链上的区块头;或者,第一业务节点可在发送交易的过程中从共识网络同步区块头,或者在交易验证过程中同步区块头。例如,共识节点可向第一业务节点返回所发送的交易上链的区块的区块头,这样,在第一业务节点向共识节点转发交易并在交易成功上链之后,共识节点可主动地将区块头公开给第一业务节点。
由于业务网络中的业务节点也会同步源区块链的区块头,若计算机设备为可信的第三方提供的数据处理设备,该计算机设备可从业务网络的业务节点中获取业务节点针对源区块链进行历史同步的区块头。历史同步的区块头的数量大于零,计算机设备可获取到针对源区块链进行历史同步的至少一个区块头。
步骤(1.2)确定历史同步的所有区块头中对应的最大区块高度。
历史同步的至少一个区块头中,每个区块头均对应有区块高度,计算机设备可将所有区块高度进行比较,从而确定出最大区块高度。示例性地,历史同步的所有区块头包括区块1的区块头、区块2的区块头以及区块3的区块头,各自的区块高度分别对应为1、2以及3,从而可从中确定出最大区块高度为3。
进一步地,由于源区块链的高度可基于新的区块在源区块链上的增加而更新,从而源区块链的高度和所确定的最大区块高度可能存在差异。因此,确定出的最大区块高度可用于与源区块链的高度进行比较,从而确定是否需再次针对源区块链进行区块同步处理,以获取源区块链上的所有区块的区块头。其中,源区块链的高度是指源区块链上的最新区块的区块高度,该最新区块是源区块链上区块高度最大的区块。基于最大区块高度和源区块链的高度之间的大小关系,可执行下述步骤(1.3)或者步骤(1.4)。
步骤(1.3)若最大区块高度等于源区块链的高度,则将历史同步的区块头确定为针对源区块链的区块同步数据。
具体地,如果最大区块高度等于源区块链的高度,说明历史同步的区块头已经覆盖了源区块链中所有区块的区块头,从而计算机设备无需针对源区块链进行区块同步处理,而是可直接将历史同步的区块头确定为针对源区块链的区块同步数据。
步骤(1.4)若最大区块高度小于源区块链的高度,则针对源区块链重新进行区块同步处理,直至获得源区块链上最新区块的区块头,并在区块同步处理完成后将历史同步的区块头和重新进行区块同步处理获得的区块头共同确定为针对源区块链的区块同步数据。
具体地,如果最大区块高度小于源区块链的高度,说明历史同步的区块头还未完全覆盖源区块链中所有区块的区块头,从而计算机设备可针对源区块链重新进行区块同步处理,并在获取到源区块链上最新区块的区块头之后,可确定区块同步处理完成,重新进行区块同步处理获取的区块头包括:源区块链上区块高度大于通过上述步骤(1.2)所确定的最大区块高度的各个区块的区块头。示例性地,通过步骤(1.2)所确定的最大区块高度为3,而源区块链的高度为6,那么重新进行区块同步处理可获取到区块高度为4的区块的区块头a、区块高度为5的区块的区块头b以及区块高度为5的区块的区块头c。历史同步的区块头和重新进行区块同步处理获得的区块头可完全地覆盖源区块链中所有区块的区块头,从而计算机设备可将历史同步的区块头以及重新进行区块同步处理获取到的区块头,确定为针对源区块链的区块同步数据,以便辅助区块链进行数据恢复。
可以理解的是,如果历史同步的区块头的数量为零,那么最大区块高度为空,说明计算机设备还未执行针对源区块链进行区块同步处理,从而计算机设备可直接针对源区块链进行区块同步处理,经过区块同步处理可获取到源区块链上的所有区块的区块头,并可将获取到的所有区块头确定为区块同步数据。通过上述方式所得到的区块同步数据包括所同步的源区块链上的所有区块的区块头,这样,也相当于对源区块链上所有区块的区块头进行了备份,以便为区块链恢复做好数据准备。
上述步骤(1.1)-步骤(1.4),通过历史同步的所有区块头对应的最大区块高度和源区块链的高度之间的比较,可简单且高效地确定计算机设备是否对源区块链中所有区块的区块头进行了完整地同步,从而在缺少源区块链的部分区块的区块头时,可通过重新进行针对该源区块链的区块同步处理来获取到缺失的区块头,以使得区块同步数据更加完整,有利于后续区块链数据恢复的准确性和完整性。
S202,从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据。
由于业务网络和共识网络在交互过程中,业务网络中的业务节点可接收客户端发送的交易数据,并将该交易数据转发给共识网络,并记录该交易数据的副本,即完全相同的交易数据。因此,对于源区块链上的所有交易数据,在业务网络中的相应业务节点中均记录有相应的交易数据的副本。计算机设备可从业务网络的各个业务节点中获取每个业务节点记录的源区块链上的交易数据。
如果计算机设备为业务网络中的第一业务节点(即多个业务节点中的任一业务节点),那么第一业务节点可从本地存储空间中获取所记录的源区块链上的交易数据,并可从第二业务节点(即多个业务节点中除第一业务节点之外的业务节点)处获取第二业务节点所记录的源区块链上的交易数据,从而基于获取到的所有交易数据,完整地还原出源区块链上的交易数据。如果计算机设备是可信的第三方提供的数据处理设备,那么该数据处理设备可直接从业务网络的各个业务节点中获取各自记录的源区块链上的交易数据。在一种可实现的方式中,在存在区块链恢复需求时,业务网络中的各个业务节点可自动地将各自所记录的源区块链上的交易数据以及所同步的源区块链上的所有区块的区块头,发送给数据处理设备,从而数据处理设备可获取这些与源区块链有关的数据来进行区块链恢复。
S203,基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。
在具体实现中,计算机设备进行区块链恢复处理的大致逻辑可以是:基于区块链同步数据和交易数据先恢复出源区块链上的各个正常的区块,进而连接各个区块而形成目标区块链;其中,区块同步数据包括针对源区块链上的所有区块的区块头,各个业务节点分别记录的源区块链上的交易数据能够还原出源区块链上的所有交易数据,获取到的所有交易数据均可被归至各个区块中,基于各个区块头存储的连接指示信息,能够将各个区块连接起来形成目标区块链。其中,任一区块头的连接指示信息用于指示该任一区块头所属区块应连接的区块,该连接指示信息例如是:前置区块的哈希值或者当前区块的区块高度。通过目标区块链可还原出源区块链中正常的区块,从而在源区块链数据出现丢失或损坏等异常情况下,基于目标区块链同样能够正常地执行业务。
上述方式中,在检测到源区块链存在异常的情况下,通过针对源区块链有关的数据可进行区块链恢复而得到目标区块链,如果源区块链存在的异常是数据损坏,比如交易数据被篡改等,该目标区块链可理解为对源区块链在被检测到存在异常时的修复,通过修复能够还原出正常的源区块链。如果源区块链存在的异常是整条区块链的数据丢失,那么该目标区块链可理解为对源区块链中应有的数据的还原,通过数据恢复能够还原出一条与丢失的源区块链相同的目标区块链。
在一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联。具体地,源区块链上的交易数据可通过基于该交易数据计算的哈希值,封装于源区块链上的区块的区块体中。这样,同一区块的区块体中所封装的交易数据和区块头之间均存在关联关系,即所封装的交易数据所在区块体和区块头属于同一区块。基于此,在一种实施方式中,计算机设备在执行上述S203时,具体可执行如下步骤(2.1)-步骤(2.3)。
步骤(2.1)、根据区块头与交易数据之间的关联关系,在各个业务节点分别记录的源区块链上的交易数据中分别查找区块同步数据中的各区块头所关联的交易数据。
在具体实现中,区块同步数据中包括源区块链上的各个区块的区块头,基于区块头与交易数据之间的关联关系,从各个业务节点分别记录的源区块链上的交易数据中,查找到与每个区块头存在关联的至少一个交易数据。示例性地,各个业务节点分别记录的源区块链上的交易数据包括交易TXa、交易TXb、交易TXc、交易TXd以及交易TXe,而同步到的区块头包括区块头a、区块头b以及区块头c,通过上述方式,可确定与区块头a存在关联的交易数据包括交易TXa和交易TXb,与区块头b存在关联的交易数据包括交易TXe,与区块头c存在关联的交易数据包括交易TXc和交易TXd。这样,针对区块同步数据中的各区块头,计算机设备均能够从各个业务节点各自记录的源区块链上的交易数据中确定与之关联的交易数据。
步骤(2.2)、基于区块同步数据中的各区块头及查找到的相应交易数据,恢复出源区块链上的各个区块。
计算机设备可基于每个区块头与区块头关联的交易数据恢复出源区块链上的各个区块。一个区块头和查找到的与该区块头关联的至少一个交易数据可恢复出源区块链上的一个区块,恢复出的区块的数量和区块同步数据中区块头的数量相同。
步骤(2.3)、将恢复出的各个区块进行连接,形成目标区块链。
在具体实现中,计算机设备可按照各个区块头中的连接指示信息(如区块高度或者前置区块的哈希值),将恢复出的各个区块依次连接,具体地,可以基于各个区块所记录的前一区块哈希与前置区块连接,或者基于各个区块头中记录的区块高度直接进行连接,从而形成目标区块链。为便于理解上述步骤(2.1)-步骤(2.3)所示的区块链数据恢复的流程,下面结合附图和示例进行说明,如图3所示的基于关联关系恢复区块链数据的示意图,其中,业务节点SPVa中存储有A、B、C以及D四个交易,且所同步的区块头中区块头dd和A以及B交易关联存储,区块头ff和C以及D交易关联存储,SPVb中存储有D、F以及G三个交易,且同步的区块头中区块头ff和D交易关联存储,区块头dd和F以及G交易关联存储,那么根据区块头与交易数据之间的关联关系,可以区块头为单位,将与同一区块头关联的交易取并集,便可得到各个区块的交易,从而可将各个区块连接形成目标区块链。这个过程不用关注一个区块的默克尔树来进行还原,而是通过简单的关联关系,可更迅速、快捷地还原出正常的源区块链,进而提高区块链恢复的整体效率。
上述步骤(2.1)-步骤(2.3)所示的基于关联关系进行区块链恢复的过程,其实质是恢复出源区块链的各个区块,以及每个区块中包括哪些交易数据的过程。而由于区块同步数据中包括源区块链的所有区块的区块头,计算机设备便能够得知源区块链中的各个区块之间的连接顺序,那么剩下的工作即是确定每个区块包括哪些交易数据,但源区块链上的交易数据中分散在业务网络的各个业务节点,本申请通过区块头和交易数据之间的关联关系能够整合每个区块应包括的交易数据。具体能够以每个区块头为单位,从所有业务节点记录的源区块链上的交易数据中查找出对应关联的交易数据,从而实现将分散在各个业务节点的交易数据归到各个区块中,恢复出源区块链上的区块,之后连接各个区块来实现正常的源区块链的恢复。此方式下仅关注交易数据是否属于相应区块,而无需关注交易数据在区块体中如何存储,能够较为高效地恢复出正常的源区块链,提高处理效率。
在另一种实施方式中,源区块链的任一区块对应一棵默克尔树,默克尔树是根据源区块链上的任一区块中的交易数据生成的。其中,默克尔(Merkle)树可以是一种二叉树,由一个根节点、一组中间节点和一组叶节点组成。如图4a所示的默克尔树中,最下面的叶节点包含存储的交易数据或其哈希值,每个中间节点是它的两个孩子节点存储的哈希值,根节点也是由它的两个子节点存储的哈希值组成。默克尔树还可以推广到多叉树的情形。在默克尔树中,从叶子节点到默克尔根节点的路径,称之为默克尔路径,例如N0—>N4—>Root即为一条默克尔路径。默克尔树的特点是:底层数据的任何变动,都会传递到其父亲节点,一直到树根。因此,当两个默克尔树根相同时,则意味着所代表的交易数据必然相同。如果一个数据被修改,则会影响到默克尔根。如图4a所示,如果交易数据D1被修改,会影响到N1,N4和Root。因此,沿着Root—>N4—>N1,可以快速定位到发生改变的交易数据D1。默克尔树可被记录在区块体中,而默克尔树的根可被记录在区块头中,区块与默克尔树、默克尔根之间的关系示意图可如图4b所示。
基于任一区块对应的默克尔树以及交易数据与区块头之间的关联关系,计算机设备在执行上述S203时,具体可执行如下步骤(3.1)-步骤(3.5)。
步骤(3.1)、根据区块头与交易数据之间的关联关系,以及各个业务节点分别记录的源区块链上的交易数据,确定属于同一区块中的交易数据在各个业务节点中的分布情况。
在具体实现中,由于业务网络中的每个业务节点均可向共识网络发送交易数据并记录在本地,从而与源区块链上的同一区块的交易数据相同的交易数据可能被分散地记录在业务网络中的至少一个业务节点中。计算机设备可先根据区块头与交易数据之间的关联关系,从各个业务节点记录的源区块链上的交易数据中查找出与区块同步数据中每个区块头所关联的交易数据,进而基于每个区块头对应查找出的交易数据与各个业务节点记录的交易数据,来确定出属于同一区块的交易数据在各个业务节点中的分布情况。
示例性地,区块头包括区块a的区块头、区块b的区块头以及区块c的区块头,业务节点SPV1记录了源区块链上的区块a的所有交易数据、区块b的部分交易数据,业务节点SPV2记录了源区块链上的区块c的所有交易数据、区块b的部分交易数据。计算机设备可先确定出各个区块头关联的交易数据,从而基于各个业务节点记录的交易数据,可确定区块a的交易数据被集中记录在业务节点SPV1,区块c的交易数据被集中记录在业务节点SPV2中,而区块b的交易数据被分散地记录在业务节点SPV1和业务节点SPV2中。
由此,属于同一区块中的交易数据在各个业务节点中的分布情况可用于指示属于同一区块的交易数据被分散记录所涉及的业务节点。同一区块的交易数据可能被记录在业务网络中的一个业务节点中(即属于同一区块的交易数据分布在一个业务节点中),也可能被分散地记录在业务网络的多个业务节点中(即属于同一区块的交易数据分布在多个业务节点中),示例性地,属于同一区块的交易数据包括交易TXa、交易TXb、交易TXc、交易TXd以及交易TXe,且分布情况为:交易TXa和交易TXb被记录在业务节点SPV1中,交易TXc、交易TXd以及交易TXe被记录在业务节点SPV2中。
步骤(3.2)、基于分布情况,构建同一区块在各个业务节点中的默克尔子树。
按照上述方式得到源区块链上每个区块中的交易数据在业务网络的各个业务节点中的分布情况之后,计算机设备能够基于每个区块对应的分布情况构建各个业务节点对应的默克尔子树。在具体构建过程中,计算机和设备可获取各个交易对应的默克尔路径,以及默克尔路径上节点的兄弟节点(即左右子节点),从而基于默克尔路径和兄弟节点构建出默克尔子树。
如果同一区块的交易数据被记录在一个业务节点中,那么所构建的默克尔子树是一棵完整的默克尔树;示例性地,如图5a所示的默克尔子树,其是一棵完整的默克尔树,包括区块block1中的所有交易数据对应的叶子顶点,且区块block1中的所有交易数据被记录在业务节点SPVa中。如果同一区块的交易数据被分散地记录在多个业务节点中,那么同一区块对应有多棵默克尔子树,这些默克尔子树是不完整的默克尔树,此处的不完整体现在默克尔子树中仅包括部分交易数据的叶子节点,即交易数据对应的叶子节点不完整。示例性地,如图5b所示的默克尔子树,其所涉及的交易数据分布在不同的业务节点中,包括记录于业务节点SPVa中的部分交易数据,以及记录于业务节点SPVb中的部分交易数据。可理解的是,对于每个业务节点而言,如果所记录的交易数据涉及多个区块,那么一个业务节点分别对应有多棵默克尔子树,且每棵默克尔子树与一个区块对应,一个区块对应的默克尔子树可能是完整的默克尔树或者非完整的默克尔树。
步骤(3.3)、对同一区块的各棵默克尔子树进行合并,得到源区块链上各个区块分别对应的默克尔树。
构建出同一区块在各个业务节点中的默克尔子树包括一棵或多棵。以任一区块为例,若基于分布情况构建出的某个区块对应的默克尔子树仅包括一棵,说明该区块中所有交易数据被集中记录在一个业务节点中,进而可直接将该默克尔子树确定为该区块对应的默克尔树。若基于分布情况构建出的某个区块对应的默克尔子树包括多棵,那么该区块中所有交易数据被分散到各个业务节点中记录,从而默克尔子树是不完整的,可将该区块对应的多棵默克尔树进行合并,从而还原出源区块链上区块对应的完整的默克尔树。示例性地,如图5c所示的合并默克尔子树的示意图,其中,某个区块block1的交易数据分布在轻节点SPV1、轻节点SPV2以及轻节点SPV3中,且对应的默克尔子树也存在三棵,通过合并可还原出区块block1的完整的默克尔树。可理解的是,按照上述方式可得到源区块链上每个区块对应的默克尔树,以便恢复出区块。
步骤(3.4)、基于各个区块分别对应的默克尔树和各个区块分别对应的区块头,恢复出源区块链上的各个区块。
计算机设备可将各个区块分别对应的默克尔树作为相应区块体中的数据,基于每个区块分别对应的默克尔树可确定出每个区块对应的默克尔根。针对任一区块而言,如果确定出的默克尔根与某个区块头中记录的默克尔根相同,那么可基于该默克尔树(可代表一个区块中的所有交易数据)和区块头恢复出源区块链上的一个区块。按照上述方式可将每个区块对应的默克尔根和区块头中记录的默克尔根匹配,进而可确定出与每个区块头有关的默克尔树,并基于每个区块与相应的默克尔树来恢复出源区块链上的各个区块。
步骤(3.5)、将恢复出的各个区块进行连接,形成目标区块链。
在具体实现中,计算机设备可按照各个区块头中的连接指示信息(如区块高度或者前置区块的哈希值),将恢复出的各个区块依次连接,从而形成目标区块链。
上述步骤(3.1)-步骤(3.5)所示的区块链数据恢复的方式,可基于不完整的默克尔树来恢复,通过将同一区块的默克尔子树合并,能够得到每个区块对应的完整的默克尔树,进而根据各个区块对应的完整的默克尔树能够还原出源区块链上的交易数据。此方式下各个交易数据是以默克尔树的形式封装在区块中的,并能够对源区块链上的数据进行更为完整地还原。
在一个实施例中,共识网络中的各个共识节点均归属于第一中心,共识网络由第一中心维护,本申请中的中心可理解为维护共识网络的机构或者组织。中心维护共识网络例如是:共识网络中共识节点出现故障时,可先采用新的共识节点加入该共识网络中来替换出故障的共识节点。在第一中心放弃维护共识网络的情况下,可采用上述实施例中介绍的内容来进行区块链数据恢复得到目标区块链,之后计算机设备还可执行如下(1)-(3)所示的内容。
(1)获取针对至少一个候选中心的投票结果,投票结果用于指示各个投票对象所选择的候选中心。其中,各个投票对象可以为业务网络中的各个业务节点,或者是能够操作客户端发起交易的各个对象;不同的候选中心可理解为具备维护共识网络的能力的组织或机构,且不同的候选中心可维护不同的共识网络,各个共识网络的共识处理能力允许存在一定差异。投票对象在投票各个候选中心时,具体可基于各个中心维护的共识网络的共识处理能力来进行投票。投票对象所选择的候选中心可以不同,任一业务节点可对各个候选中心投赞成票或者反对票,或者仅对需选取一个候选中心进行投票,从而可确定出该业务节点所选择的候选中心。示例性地,投票对象为业务网络中的各个业务节点,至少一个候选中心包括候选中心cent1、候选中心cent2以及候选中心cent3,业务节点SPV1仅投票候选中心cent1,从而确定该业务节点选择的候选中心为候选中心cent1,业务节点SPV2仅投票候选中心cent3,从而确定该业务节点选择的候选中心为候选中心cent3。
(2)根据投票结果从至少一个候选中心中确定第二中心。
具体地,针对每个候选中心而言,计算机设备可统计出选择每个候选的投票对象的数量,进而可将投票对象的数量最多的候选中心确定为第二中心。示例性地,沿用上述示例中的至少一个候选中心,投票对象为业务节点,基于投票结果确定业务节点SPV1、业务节点SPV3以及业务节点SPV4均是选择候选中心cent1,而业务节点SPV2选择候选中心cent3,候选中心cent2则没有被任何业务节点选择,从而可将候选中心cent1确定为第二中心。该第二中心维护有至少一个共识节点,第二中心维护的各个共识节点形成为新的共识网络。
(3)采用新的共识网络替换区块链网络中的原共识网络,并将目标区块链同步给新的共识网络中的各共识节点。
计算机设备可将区块链网络中原有的共识网络替换为新的共识网络,由此,计算机设备以及业务网络中的业务节点均可断开与原有的共识网络的通信连接,并建立与新的共识网络之间的通信连接,进而业务网络中的各个业务节点可将交易数据发送给该新的共识网络进行处理,包括执行交易数据以及对交易数据进行共识上链处理等。为保证区块链的业务被正常地执行,计算机设备也可将目标区块链数据同步给新的共识网络中的各共识节点,以使新的共识网络中的共识节点接收到新的交易数据并对其进行共识上链处理后,可更新目标区块链。
在上述(1)-(3)所示的内容中,基于投票选取新的中心可将原有的中心替换掉,从而实现对区块链网络中原共识网络的替换,通过业务网络中各个业务节点与新的共识网络建立通路,以及计算机设备向新的共识网络同步目标区块链,该新的共识网络可基于当前恢复出的正常的区块链,以及业务网络中各个业务节点转发的交易数据,对当前恢复出的区块链进行数据更新,保障基于区块链的业务能够正常进行。
本申请提供的基于区块链网络的数据处理方法,是一种涉及区块链恢复的方案,在区块链网络中的源区块链无法使用的情况下,基于与共识网络交互的业务网络中的各个业务节点中记录的与源区块链有关的历史数据,能够将区块链进行完整、准确地恢复,这相当于对正常的源区块链(如私有链)进行了备份,并可在一些紧急情况下使用,如共识网络中超过半数的共识节点宕机或者中心放弃维护等场景下,便可通过业务节点记录的历史数据来复原,从而保障基于区块链的业务能够正常进行。
下面对检测源区块链是否存在异常的方式进行详细地介绍。
在一种实施方式中,业务网络中的各个业务节点用于分别向共识网络发送交易数据,触发共识网络中的共识节点基于接收到的交易数据执行交易获得交易执行结果,并由共识网络中的共识节点将交易执行结果反馈给各个业务节点。其中,业务节点所发送的交易数据是业务节点接收到的客户端所发送的交易数据,因此,本申请中业务节点发送的交易数据也可理解成是转发客户端的交易数据,该客户端是一种能够发起交易的应用程序,例如钱包即是一种客户端,可进行转账等交易,该客户端可安装于业务网络中的各个业务节点上或者安装在独立于业务节点的其他设备中,支持与业务节点交互。
以业务网络中的任一业务节点(如业务节点A)和共识网络中的任一共识节点(如共识节点B)为例,业务网络和共识网络之间的交互逻辑大致是:业务网络中的业务节点A将接收到的交易数据发送给共识网络中的共识节点B,而共识网络中接收到该交易数据的共识节点B可执行该交易数据从而得到交易执行结果,或者可将该交易数据缓存,从而在交易数据被打包至区块后由其他共识节点执行该交易数据,最终共识网络可将交易执行结果返回给业务网络中的业务节点A。基于此,源区块链存在异常包括以下①-⑥至少一种情况。
①业务网络中的业务节点向共识网络发送交易数据的发送失败率超过预设失败率阈值。此处的发送失败率是指在预设时间段内向共识网络所发送的所有交易数据中发送失败的交易数据的比例,示例性地,业务节点A在1秒内向共识网络发送了10个交易数据,其中,3个交易数据发送成功,7个交易数据发送失败,则发送失败率为70%。预设失败率阈值可以是一个在交易数据发送方面衡量源区块链是否存在异常的阈值,例如50%。而上述70%大于预设失败率阈值50%,可确定源区块链存在异常。这是由于共识网络可能无法处理交易数据,交易数据发送至共识网络并不能被共识节点接收从而导致业务节点发送交易数据失败,而源区块链也无法被正常地存储应被上链的交易数据而存在异常。计算机设备可统计业务网络中每个业务节点对应的发送失败率,也可统计整个业务网络对应的发送失败率。当统计整个业务网络对应的发送失败率时,可统计各个业务节点在预设时间段内向共识网络发送的交易数据的第一总量,并统计各个业务节点在预设时间段内向共识网络发送的交易数据中发送失败的交易数据的第二总量,进而将第一总量和第二总量之间的比值作为发送失败率,并与预设失败率阈值进行比较来确定源区块链是否存在异常。
②业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的数量比小于预设比值。基于上述业务网络与共识网络之间的交互,业务节点针对已发送的交易数据(如交易A),一般可接收到共识网络中共识节点所反馈的该交易数据(如交易A)的交易执行结果,但由于共识网络中共识节点可能在接收到交易数据后出现故障或者其他原因而无法执行该交易数据,由此,共识网络可能无法向业务网络反馈该交易数据的交易执行结果。基于此,针对业务节点向共识网络已发送的所有交易数据,所接收到的交易执行结果的数量与已发送的交易数据的数量之间的比值为数量比,该数量比是一个小于或等于1的数值。示例性地,业务节点A针对已发送的10个交易数据,业务节点仅接收到的5个交易数据的交易执行结果,从而可确定数量比为1/2。预设比值是一个在交易执行结果正常反馈方面衡量源区块链是否存在异常的临界值,如2/3,上述1/2小于该预设比值2/3,那么可确定源区块链存在异常。计算机设备可统计业务网络中每个业务节点对应的数量比,也可统计整个业务网络对应的数量比,当统计整个业务网络对应的数量比时,可统计整个业务网络已发送的交易数据的第一总数量,以及已接收到的交易执行结果的第二总数量,从而基于第一总数量和第二总数量的比值确定出数量比。
③共识网络中出现故障的共识节点的数量占比大于预设占比值。共识网络中超过相应数量的共识节点出现故障会导致无法完成对交易数据的共识上链处理,进而导致源区块链上的数据无法被正常地更新。此处出现故障可能是设备宕机、设备运行所需的存储空间不足、CPU(Central Processing Unit,中央处理器)损坏等导致。共识网络中所有共识节点中,正常运行的共识节点的数量与出现故障的共识节点的数量之间的比值为数量占比,示例性地,共识网络中包括20个共识节点,而出现故障的共识节点为15个共识节点,那么数量占比为3/4。预设占比值是一个在保证交易数据能够被正常地进行共识上链处理的临界值,例如2/3,那么上述示例的数量占比3/4大于预设占比值2/3,可确定源区块链存在异常。
④业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的正确率低于预设正确率阈值。具体地,业务网络的业务节点中存储有所发送的交易数据的预期执行结果,该预期执行结果包括第一交易数据被正确执行得到的预期结果。业务节点针对接收到的共识节点反馈的交易执行结果,可基于该预期执行结果被验证是否符合预期,从而确定交易数据未被正确执行。基于此,计算机设备可统计针对已发送交易数据所接收到的所有交易执行结果中,符合预期的交易执行结果的数量占比,并将该数量占比确定为正确率。示例性地,针对已发送的10个交易数据所接收到的10个交易执行结果中,符合预期的交易执行结果包括5个,从而可确定交易执行结果的正确率为50%。预设正确率阈值是一个从交易数据被正确执行的数量占比方面衡量源区块链是否存在异常的临界值,例如:若预设正确率阈值为90%,那么上述示例的正确率50%低于该预设正确率阈值90%,从而可确定区块链存在异常。计算机设备还可统计整个业务网络针对已发送交易数据所接收到的交易执行结果的正确率,具体可统计整个业务网络已接收到的交易执行结果的第一数量和其中符合预期的交易执行结果的第二数量,将第一数量和第二数量的比值确定为整个业务网络对应的正确率。
⑤业务网络中的业务节点所记录的交易数据在源区块链上被篡改的数量大于预设篡改数量阈值。业务网络中一个业务节点可记录一个或多个交易数据,这些交易数据可以理解为是业务节点发送给共识网络的交易数据的副本,其中,包括被共识上链至源区块链上的交易数据的副本。由于已被交易上链的交易数据可能被篡改,使得源区块链上的交易数据与业务节点中记录的交易数据存在不同,而业务节点基于所记录的交易数据和区块同步数据,具备发现源区块链上的交易数据是否被篡改的能力。因此,可基于交易数据在源区块链上被篡改的数量来确定源区块链是否存在异常。举例来说,如果业务节点所记录的10个交易数据在源区块链上对应交易数据被篡改的数量为8个,而预设篡改数量阈值为0个,那么可确定源区块链存在异常。
⑥源区块链上被标记为异常的区块数据大于预设数量阈值。
在具体实现中,如果共识节点修改了源区块链上的区块数据并被发现,该区块数据可被标记为异常的区块数据。而在源区块链上被标记为异常的区块数据大于预设数量阈值时,可确定源区块链存在异常。
在一个实施例中,本申请实施例提供的数据处理方法由第一业务节点执行,第一业务节点为业务网络中的任一业务节点。上述提及的计算机设备即此处的第一业务节点。计算机设备可对交易进行验证,以便基于验证得到的结果确定源区块链是否存在异常。交易验证所涉及的具体内容包括步骤1-步骤3。
步骤1、接收客户端发送的交易验证请求。
如果对象想要验证一笔交易的有效性,即存在对源区块链上的某个交易数据的验证需求,可通过客户端发起交易验证,从而客户端可向业务网络中的业务节点发送交易验证请求。业务节点接收到的该交易验证请求用于请求对源区块链上的目标交易数据进行验证,目标交易数据被记录至业务网络中转发过目标交易数据的业务节点中。业务网络中接收到该交易验证请求的第一业务节点可能转发该目标交易数据,也可能未转发过该目标交易数据。若该目标交易数据被第一业务节点发送给共识网络,那么该目标交易数据被记录在该第一业务节点中;若该目标交易数据未被第一业务节点发送给共识网络,那么该目标交易数据被记录到其他业务节点中,例如转发过该目标交易数据的第二业务节点。步骤2、向共识网络转发交易验证请求,以使共识网络中的共识节点获取并返回目标交易数据的验证信息。
具体地,为了能够验证该目标交易数据是否确实在源区块链上,第一业务节可将交易验证请求转发给共识网络,进而使得共识网络中接收到该交易验证请求的共识节点获取到验证目标交易数据所需的信息(即验证信息),并返回给第一业务节点。在一种可实现的方式中,共识网络中接收到该交易验证请求的共识节点可先基于目标交易数据进行哈希计算得到该目标交易数据的哈希值,进而根据该哈希值确定该目标交易所处的区块,并获取该区块的区块高度以及目标交易数据的默克尔路径,并将这些数据作为验证信息返回给第一业务节点。
步骤3、根据目标交易数据的验证信息对目标交易数据进行验证。
由于第一业务节点中同步有源区块链上区块的区块头,在具体实现中,第一业务节点可根据目标交易数据的验证信息和第一业务节点所记录的与该目标交易数据关联的区块头中的信息,来验证目标交易数据是否确实在源区块链上。具体的,若验证得到目标交易数据在源区块链上未被篡改,那么可确定目标交易数据确实在源区块链上,若验证得到目标交易数据在区块链上已被篡改,那么可确定源区块链上并不存在该目标交易数据。
可理解的是,对于需验证的每个交易数据,均可采用上述步骤1-步骤3所示的内容完成交易验证,具体可基于客户端发起的交易验证请求来触发第一业务节点验证目标交易数据,此方式下对目标交易数据的验证是一种由对象发起的被动交易验证,通过验证对象指定的交易数据能够满足对象对相应交易数据的验证需求。基于对各个交易数据的验证结果,还可进一步检测到源区块链是否存在异常,进而对通过区块链恢复来还原正常的源区块链。
在一个可实现的方式中,第一业务节点可从共识网络中同步源区块链上的区块的区块头,从而第一业务节点中同步有源区块链上的至少一个区块的区块头,且每个区块头包括区块高度。验证信息包括目标交易数据所属区块的区块高度以及目标交易数据对应的默克尔路径。第一业务节点在根据目标交易数据的验证信息对目标交易数据进行验证时,具体可按照如下逻辑进行验证,具体包括如下步骤3-1至步骤3-4。
步骤3-1、根据验证信息中的区块高度和第一业务节点中所同步的各个区块头包括的区块高度,从至少一个区块的区块头中确定出参考区块头。
具体地,第一业务节点可根据验证信息中的区块高度,从至少一个区块的区块头中查找出区块高度与该验证信息中的区块高度相同的区块头,并将其确定为参考区块头。在具体查找过程中,第一业务节点可比对验证信息中的区块高度与第一业务节点中所同步的各个区块头包括的区块高度,若某个区块头的区块高度等于验证信息中的区块高度,那么可将该区块头确定为参考区块头。基于此,该参考区块头的区块高度与验证信息中的区块高度相同。并且,在源区块链上,该参考区块头所属的区块中封装有目标交易数据。
需说明的是,如果第一业务节点中还未同步到源区块链上与验证信息中的区块高度相同区块高度的区块头,可能无法确定出与验证信息中的区块高度相同的区块高度对应的参考区块头,那么可等到第一业务节点中同步到与该验证信息中的区块高度相同的区块高度对应的区块头时,基于上述方式确定出与验证信息中的区块高度相同的区块高度对应的参考区块头。
步骤3-2、根据验证信息中的默克尔路径确定默克尔根,并比较所确定的默克尔根和参考区块头中的默克尔根。
在具体实现中,验证信息中该目标交易数据对应的默克尔路径中各个节点存储有哈希值,第一业务节点可获取默克尔路径中的各个节点的兄弟节点中记录的哈希值;基于哈希算法可计算出目标交易数据的哈希值,并基于目标交易数据的哈希值和处于同一层的兄弟节点的哈希值进行哈希计算,得到中间节点的哈希值,进而基于中间节点的哈希值与处于同一层的兄弟节点的哈希值进行哈希计算,得到上一层节点的哈希值,以此类推,可计算出一个最终的哈希值来代表目标交易数据所在区块中的所有交易数据,该哈希值即为默克尔根,示例性地,如上图4a中的默克尔树。需验证的目标交易数据为图4a中的交易D0,图4a中交易D0对应的叶子节点的兄弟节点中记录哈希值N1以及连接的中间节点的兄弟节点的哈希值N5。使用哈希算法可计算出交易D0的哈希值N0,将哈希值N0与N1拼接后使用哈希可算出中间节点的哈希值N4,再将N4与N5拼接使用哈希算出一个默克尔根,进而可与区块头中的默克尔根进行比较。
由于一旦目标交易数据在源区块链上被篡改,会影响源区块链上默克尔树中各个节点存储的哈希值,进而影响最终计算出的默克尔根;而被同步在第一业务节点中的区块头中包括的是正确的默克尔根,因此,第一业务节点可确定出的默克尔根与参考区块头中的默克尔根进行比较,从而基于比较得到的结果来确定目标交易数据在区块链上是否被篡改,具体包括如下步骤3-3和步骤3-4所示的两种情况。
步骤3-3、若所确定的默克尔根和参考区块头中的默克尔根相等,则确定目标交易数据在源区块链上未被篡改。
步骤3-4、若所确定的默克尔根和参考区块头中的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
具体地,如果所确定的默克尔根和参考区块头中的默克尔根相等,说明验证信息中默克尔路径中涉及的节点中记录的哈希值是正确的,目标交易数据在源区块链上未被篡改。如果所确定的默克尔根和参考区块头中的默克尔根不相等,说明验证信息中的默克尔路径中涉及的节点中记录的哈希值对应的交易数据存在被篡改的可能而导致无法计算出正确的默克尔根,从而可确定目标交易数据在源区块链上已被篡改。
可理解的是,本申请实施例中所有步骤所携带的序号并不构成对执行顺序的限制,如上述步骤3-3和步骤3-4可能只执行其中一种而非顺序执行。
上述步骤3-1至步骤3-4所示的验证目标交易数据的过程,可基于目标交易数据所属区块的区块高度和目标交易数据对应的默克尔路径来验证目标交易数据是否被篡改,具体可查找出与目标交易数据关联的参考区块头,并基于该参考区块头中的默克尔根,和基于默克尔路径计算得到的默克尔根之间的比较,较为准确地确定出目标交易数据是否被篡改,进而可确定所验证的目标交易数据是否确实在源区块链上,从而更为准确地检测出源区块链是否存在异常。
基于上述交易验证的介绍,对于交易验证所涉及的具体流程可如下图6a所示。参见图6a,在对象请求验证某个交易(如交易A)时,通过步骤1客户端可向某个业务节点(如第一业务节点)发送交易验证请求,该第一业务节点可通过步骤2向共识节点集群中的共识节点转发交易验证请求,进而共识节点通过步骤3.1可获取交易对应的区块高度和默克尔路径,并通过步骤3.2返回获取到的区块高度和默克尔路径,然后第一业务节点通过步骤4.1根据获取到的区块高度和默克尔路径验证交易是否被篡改,并通过步骤4.2返回交易验证结果,该交易验证结果用于指示所验证的交易是否确实在源区块链上(对应交易是否被篡改)。
在另一种实施例中,除了上述步骤1-步骤3所介绍的交易数据被动验证的流程,业务网络中的业务节点还在同步区块头的过程中来主动地验证所同步的区块中的交易数据,从而主动地发现源区块链上被篡改的交易数据。源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联。以第一业务节点执行为例,具体包括以下步骤S1-步骤S4。
步骤S1、从共识网络中同步源区块链上未被同步的区块头;未被同步的区块头的区块高度大于第一业务节点中存储的历史同步的区块头中对应的最大区块高度。
具体地,第一业务节点可定期地从共识网络中同步源区块链上的区块的区块头,如果源区块链基于新的区块的上链存在更新,那么第一业务节点可从共识网络中同步该源区块链上尚未被同步到第一业务节点中的区块头。示例性地,第一业务节点中存储的历史同步的区块头中对应的最大区块高度为3,而源区块链的高度为6,那么源区块链上区块高度为4、5以及6的各个区块的区块头均未被同步至第一业务节点中。
步骤S2、若第一业务节点中记录有与未被同步的区块头之间存在关联关系的目标交易数据,则获取目标交易数据的默克尔路径,并根据目标交易数据的默克尔路径确定默克尔根。
在具体实现中,如果第一业务节点中记录有与未被同步的区块头之间存在关联关系的目标交易数据,那么说明第一业务节点记录的目标交易数据被上链至源区块链。为保证源区块链上交易数据的安全,第一业务节点可在同步针对源区块链的区块头的过程中,对所同步的区块头关联的交易数据进行验证,从而能够及时地发现交易数据是否被篡改。因此,第一业务节点可从共识网络中获取目标交易数据的默克尔路径,从而根据目标交易数据的默克尔路径确定出默克尔根,对于确定默克尔根的具体过程可参见上述交易被动验证过程中涉及的内容,本申请在此不做赘述。
若第一业务节点中的目标交易数据包括待同步的各个区块头中每个区块头所关联的交易数据,那么针对任一个未被同步的区块头,如果第一业务节点中记录有与该未被同步的区块头存在关联关系的多个交易数据,那么多个交易数据中的每个交易数据均可被视为目标交易数据,进而在第一业务节点将未被同步的区块头同步到第一业务节点中之后,针对每个交易数据,均可基于相应的默克尔路径确定出的默克尔根,从而可基于每个交易数据对应的默克尔根和所同步的区块头(与交易数据存在关联关系)中的默克尔根,验证每个交易数据在区块链上是否被篡改。具体可执行如下步骤S3或者步骤S4:步骤S3、若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根相等,则确定目标交易数据在源区块链上未被篡改。步骤S4、若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
示例性地,目标交易数据包括交易TXA,所同步的区块头为区块头aa,且该区块头aa与交易TXA存在关联关系,从而可比较区块头aa中记录的默克尔根,与基于交易TXA的默克尔路径确定出的默克尔路径是否相等,如果相同,那么可确定交易TXA在源区块链上未被篡改,否则,确定交易TXA在源区块链上已被篡改。
需说明的是,对于业务网络中每个业务节点而言,在同步到一个区块头之后,若业务节点本地记录有与该区块头存在关联关系的交易数据,那么均可按照上述方式对该交易数据进行验证,从而保证源区块链上的交易数据的安全性,并在出现篡改时及时地进行安全处理。
在一种可实现的方式中,如果第一业务节点同步到比本地存储的区块头对应的最大区块高度大1的区块头,那么第一业务节点在将该区块头同步到本地之后,还可根据区块头的前一区块头的哈希以及该区块头的一些信息,计算出一个哈希值来校验所同步的区块头的哈希是否正确。
为便于理解上述步骤S1-步骤S4所示的内容,下面结合图6b进行示例性地说明。举例来说,第一业务节点监测到共识网络中源区块链的高度h2大于本地记录的历史同步的区块头对应的最大区块高度h1,且两者相差1,第一业务节点可同步到区块高度h2(例如100)的区块头x,且本地有源区块链上区块高度100的区块中的交易TXa的副本,那么第一业务节点可获取交易TXa的默克尔路径进而确定默克尔根,再与同步的区块头x(区块高度为h2)中的默克尔根进行比较,如果两者相等,那么可确定交易TXa在源区块链上未被篡改,否则,确定交易TXa在源区块链上被篡改。进一步地,还可根据历史同步的最大区块高度h1对应的区块头中的哈希,校验区块头x的哈希是否正确。
上述步骤S1-S4中第一业务节点通过在定期从共识网络中同步区块头的过程中,可主动地对本地的交易数据进行验证,从而确定交易数据是否被篡改,以便基于被篡改的交易数据监测源区块链是否存在异常,并及时地通过区块链恢复备份出正常的源区块链。
由于业务网络中的业务节点同步了源区块链上的各个区块的区块头,而每个业务节点的本地也存储了自己所转发的交易数据,共识节点一旦修改源区块链上区块中的交易数据、或交易执行结果不符合业务节点的预期,都可以被业务节点发现,即业务节点基于所同步的区块头(其中包括默克尔根)和本地记录的交易数据,具备发现共识节点中的数据被篡改的能力。
在一种可行的实现方式中,无论是被动验证目标交易数据,还是主动地验证目标交易数据,均可以执行如下内容:若验证出目标交易数据在源区块链上被篡改,则对目标交易数据进行安全处理;在具体实现中,在目标交易数据在源区块链上被篡改的情况下,为了减小对源区块链的影响,可先对目标交易数据进行安全处理,进而解决源区块链上的交易数据被篡改的问题。可选地,安全处理包括以下①-③任一种:①重新向共识网络发送目标交易数据以更新源区块链上被篡改的目标交易数据。由于第一业务节点中记录的目标交易数据是未被篡改的,因此,第一业务节点可向共识网络重新发送该目标交易数据,进而在目标交易数据被共识上链之后,将源区块链上被篡改的目标交易数据替换掉。②请求删除源区块链上被篡改的目标交易数据。具体地,第一业务节点可向共识网络发送删除请求,该删除请求用于请求删除源区块链上被篡改的目标交易数据,进而共识网络中的共识节点可删除源区块链上被篡改的目标交易数据,进一步地,在该目标交易数据被删除中之后,第一业务节点也可重新发送目标交易数据给共识网络,以将未被篡改的目标交易数据重新上链至该源区块链上。③对目标交易数据所属区块进行异常标记。具体地,第一业务节点可向共识网络发送标记信息,从而基于标记信息来标记目标交易数据所属的区块为异常区块。通过异常标记能够标记出源区块链上的异常区块,如果源区块链上异常区块的数量超过一定数量,可确定源区块链存在异常,进而可按照如图2所示实施例介绍的流程来重新恢复出一条正常的源区块链。
在一个实施例中,本申请实施例提供的数据处理方法由第一业务节点执行,第一业务节点为业务网络中的任一业务节点。上述提及的计算机设备即此处的第一业务节点。计算机设备还可发送交易数据并验证交易执行结果的正确性,以基于交易执行结果的正确率确定源区块链是否存在异常。交易执行结果的验证所涉及的具体内容包括以下步骤S11-步骤S14。
步骤S11、基于客户端发送携带第一交易数据的交易请求,并基于交易请求将第一交易数据发送至共识网络,以使共识网络中的共识节点基于第一交易数据执行交易并返回交易执行结果。
第一业务节点可接收客户端发送的针对第一交易数据的交易请求,该交易请求中包括第一交易数据,且该第一交易数据是客户端基于相应的信息生成的,示例性地,客户端可将交易参照的规则、交易的发起者、交易接收者以及交易的调用信息等信息封装为第一交易数据,从而向第一业务节点发送携带该第一交易数据的交易请求。第一业务节点可在本地校验该第一交易数据的交易签名、交易格式等基本信息,然后可在本地保留该第一交易数据的一个副本,并可将第一交易数据发送给共识网络,以使共识网络中的共识节点基于第一交易数据执行交易并向第一业务节点返回该第一交易数据对应的交易执行结果。
步骤S12、根据第一交易数据的预期执行结果对交易执行结果进行验证。
第一业务节点中包括第一交易数据的预期执行结果,该预期执行结果包括第一交易数据被正确执行得到的预期结果,并可用于验证共识网络所返回的交易执行结果是否是正确的,因此,第一业务节点可基于该预期执行结果对交易执行结果进行验证。具体可包括以下步骤S13和步骤S14的两种情况。
步骤S13、若验证得到交易执行结果符合预期,则确定交易执行结果正确。
步骤S14、若验证得到交易执行结果不符合预期,则确定交易执行结果错误。
如果第一交易数据的交易执行结果和第一交易数据的预期执行结果是匹配的,此处的匹配可以是指两者完全相同,那么可确定验证得到交易执行结果符合预期,从而可确定第一交易数据被正确执行,交易执行结果是正确的。反之,如果第一交易数据的交易执行结果和第一交易数据的预期执行结果是不匹配的,此处的不匹配可以是指存在至少一个数据不同,那么可确定验证得到交易执行结果并不符合预期,从而可确定第一交易数据未被正确执行,交易执行结果是错误的。在交易执行结果错误的情况下,第一业务节点可请求重新执行该第一交易数据。
上述步骤S11-步骤14的交易发送,能够基于第一业务节点本地保存的交易预期结果来验证交易执行结果是否符合预期,进而确定交易执行结果的正确与否,这样对于每个交易数据的交易执行结果均能够判断是否正确执行交易,从而有利于交易执行结果的正确率的有效确定。
基于此,业务网络与共识网络交互所涉及的交易发送的流程,可结合图6c进行示例性地说明。如图6c所示,当对象通过客户端请求发送交易时,客户端通过步骤1可向第一业务节点发送某个交易数据(如交易TXa)的交易请求,第一业务节点在本地校验交易签名、交易格式等基本信息,然后在第一业务节点本地保留交易TXa的一个副本,并通过步骤2将交易TXa转发给共识网络中的一个共识节点(如共识节点X1);共识节点X1接收到该交易TXa之后,通过步骤3执行共识算法流程(如Raft共识算法),共识算法流程大致包括:将交易打包出块形成区块、提案区块并广播、投票区块、预提交区块以及提交区块到区块链。在共识网络中的各个共识节点完成共识并成功执行交易TXa后,通过步骤4向第一业务节点返回交易TXa的执行结果(简称交易执行结果)。由于第一业务节点具有客户端的交易信息,对应有交易预期结果,那么第一业务节点可以通过步骤5根据该交易预期结果验证该交易执行结果是否符合预期,若不符合预期时,可确定交易是异常的,反之,可确定交易是正常的。比如:交易TXa为转账交易,第一业务节点能够获取交易的金额,以及转账双方钱包中的金额,交易执行结果可指示转账是否成功及双方交易后的金额变化。如果转账成功而一方钱包的金额变化不符合所交易的数值,那么确定交易不符合预期。进而第一业务节点通过步骤6向客户端返回交易执行结果,该交易执行结果可用于指示交易是否被正确执行。对于业务网络中的每个轻节点,均可以按照上述流程来发送交易,并且各个轻节点发送交易的流程中是相互独立的。
本申请实施例提供的基于区块链网络进行数据处理的方法,可用于在私有链共识、公开多方见证的半联盟链的场景。当区块链发生损坏或丢失时,可以通过参与多方见证的各个业务节点(SPV)来提供历史数据,并基于同步的区块头的内容来对区块链进行准确、完整地复原。其中,业务节点负责接收客户端发送的交易数据并将交易数据转发到共识节点,并从共识节点同步区块头,业务节点本地仅记录自身转发的交易数据,这样,业务节点中记录有部分交易数据,而各个业务节点将交易发送给共识节点进行共识后,交易执行结果可被返回,交易和该交易的执行结果还可被存储至区块链(即上链)。业务节点还可通过从共识节点获取交易的默克尔路径、区块头中的默克尔根来验证一笔交易的真实性。此时由于业务节点同步了区块头,每个SPV本地存储了自己转发过的交易数据,中心的共识节点一旦修改区块数据、或交易执行结果不符合SPV预期,都可以被SPV发现,这作为一种监督机制可制约中心节点的作恶行为,另外,即使中心节点放弃维护,所有SPV也可以将各自历史数据进行组合,还原整条链的数据,确保基于区块链的业务能够正常执行。
请参见图7,图7是本申请一个示例性实施例提供的一种基于区块链网络的数据处理装置的结构示意图。上述基于区块链网络的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链网络的数据处理装置为一个应用软件;该基于区块链网络的数据处理装置可以用于执行本申请实施例提供的方法中的相应步骤。其中,区块链网络包括共识网络和业务网络,共识网络中包含多个共识节点,业务网络中包含多个业务节点;如图7所示,该基于区块链网络的数据处理装置可以包括:获取单元701、处理单元702以及收发单元703。
获取单元701,用于当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据;
获取单元701,还用于从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据;
处理单元702,用于基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。
在一个实施例中,区块同步数据包括源区块链上的区块的区块头;获取单元701在获取针对源区块链的区块同步数据时,具体用于:
获取针对源区块链进行历史同步的区块头;
确定历史同步的所有区块头中对应的最大区块高度;
若最大区块高度等于源区块链的高度,则将历史同步的区块头确定为针对源区块链的区块同步数据;
若最大区块高度小于源区块链的高度,则针对源区块链重新进行区块同步处理,直至获得源区块链上最新区块的区块头,并在区块同步处理完成后将历史同步的区块头和重新进行区块同步处理获得的区块头共同确定为针对源区块链的区块同步数据。
在一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;
处理单元702在基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链时,具体用于:
根据区块头与交易数据之间的关联关系,在各个业务节点分别记录的源区块链上的交易数据中分别查找区块同步数据中的各区块头所关联的交易数据;
基于区块同步数据中的各区块头及查找到的相应交易数据,恢复出源区块链上的各个区块;
将恢复出的各个区块进行连接,形成目标区块链。
在另一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;源区块链的任一区块对应一棵默克尔树,默克尔树是根据源区块链上的任一区块中的交易数据生成的;
处理单元702在基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链时,具体用于:
根据区块头与交易数据之间的关联关系,以及各个业务节点分别记录的源区块链上的交易数据,确定属于同一区块中的交易数据在各个业务节点中的分布情况;
基于分布情况,构建同一区块在各个业务节点中的默克尔子树;
对同一区块的各棵默克尔子树进行合并,得到源区块链上各个区块分别对应的默克尔树;
基于各个区块分别对应的默克尔树和各个区块分别对应的区块头,恢复出源区块链上的各个区块;
将恢复出的各个区块进行连接,形成目标区块链。
在一个实施例中,业务网络中的各个业务节点用于分别向共识网络发送交易数据,触发共识网络中的共识节点基于接收到的交易数据执行交易获得交易执行结果,并由共识网络中的共识节点将交易执行结果反馈给各个业务节点;
源区块链存在异常时,包括以下一种或多种:
业务网络中的业务节点向共识网络发送交易数据的发送失败率超过预设失败率阈值;
业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的数量比小于预设比值;
共识网络中出现故障的共识节点的数量占比大于预设占比值;
业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的正确率低于预设正确率阈值;
业务网络中的业务节点所记录的交易数据在源区块链上被篡改的数量大于预设篡改数量阈值;
源区块链上被标记为异常的区块数据大于预设数量阈值。
在一个实施例中,运行上述基于区块链网络的数据处理装置的计算机设备为第一业务节点,该第一业务节点为业务网络中的任一业务节点;
收发单元703,还用于接收客户端发送的交易验证请求,交易验证请求用于请求对源区块链上的目标交易数据进行验证;目标交易数据被记录至业务网络中转发过目标交易数据的业务节点中;
收发单元703,还用于向共识网络转发交易验证请求,以使共识网络中的共识节点获取并返回目标交易数据的验证信息;
处理单元702,还用于根据目标交易数据的验证信息对目标交易数据进行验证。
在一个实施例中,第一业务节点中同步有源区块链上的至少一个区块的区块头,且每个区块头包括区块高度;验证信息包括目标交易数据所属区块的区块高度以及目标交易数据对应的默克尔路径;
处理单元702,在根据目标交易数据的验证信息对目标交易数据进行验证时,具体用于:
根据验证信息中的区块高度和第一业务节点中所同步的各个区块头包括的区块高度,从至少一个区块的区块头中确定出参考区块头;参考区块头的区块高度与验证信息中的区块高度相同;
根据验证信息中的默克尔路径确定默克尔根,并比较所确定的默克尔根和参考区块头中的默克尔根;
若所确定的默克尔根和参考区块头中的默克尔根相等,则确定目标交易数据在源区块链上未被篡改;
若所确定的默克尔根和参考区块头中的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
在一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;运行上述基于区块链网络的数据处理装置的计算机设备为第一业务节点,该第一业务节点为业务网络中的任一业务节点;
获取单元701,还用于从共识网络中同步源区块链上未被同步的区块头;未被同步的区块头的区块高度大于第一业务节点中存储的历史同步的区块头中对应的最大区块高度;
获取单元701,还用于若第一业务节点中记录有与未被同步的区块头之间存在关联关系的目标交易数据,则获取目标交易数据的默克尔路径,并根据目标交易数据的默克尔路径确定默克尔根;
处理单元702,用于若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根相等,则确定目标交易数据在源区块链上未被篡改;若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
在一个实施例中,处理单元702,还用于:若验证出目标交易数据在源区块链上被篡改,则对目标交易数据进行安全处理;
其中,安全处理包括以下任一种:重新向共识网络发送目标交易数据以更新源区块链上被篡改的目标交易数据;请求删除源区块链上被篡改的目标交易数据;对目标交易数据所属区块进行异常标记。
在一个实施例中,基于区块链网络的数据处理装置运行在第一业务节点中,该第一业务节点为业务网络中的任一业务节点;
收发单元703,用于基于客户端发送携带第一交易数据的交易请求,将第一交易数据发送至共识网络,以使共识网络中的共识节点基于第一交易数据执行交易并返回交易执行结果;
处理单元702,用于根据第一交易数据的预期执行结果对交易执行结果进行验证;预期执行结果包括第一交易数据被正确执行得到的预期结果;
处理单元702,还用于:若验证得到交易执行结果符合预期,则确定交易执行结果正确;若验证得到交易执行结果不符合预期,则确定交易执行结果错误。
在一个实施例中,共识网络中的各个共识节点均归属于第一中心,共识网络由第一中心维护;
获取单元701,用于获取针对至少一个候选中心的投票结果,投票结果用于指示各个投票对象所选择的候选中心;
处理单元702,用于根据投票结果从至少一个候选中心中确定第二中心,第二中心维护有至少一个共识节点,第二中心维护的各个共识节点形成为新的共识网络;
处理单元702,还用于采用新的共识网络替换区块链网络中的原共识网络,并将目标区块链同步给新的共识网络中的各共识节点。
本申请实施例在检测到区块链网络中的源区块链存在异常时,可获取针对该源区块链的区块同步数据,还可从业务网络中的各个业务节点中获取各自记录的源区块链上的交易数据;可见,在源区块链存在异常的情况下,能够完整地获取到与源区块链有关的数据(包括区块同步数据和交易数据),进而可基于针对源区块链的区块同步数据和各个业务节点所记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。这样,能够基于源区块链上较为关键的数据,能够准确、完整地恢复出与正常的源区块链相同的目标区块链,通过目标区块链可还原出源区块链中应有的区块数据,从而保障原本基于源区块链的业务,能够基于目标区块链被正常执行。
接下来对本申请实施例提供的计算机设备进行相关阐述。
请参见图8,图8是本申请实施例提供的一种计算机设备(即上述的第一共识节点)的结构示意图。该计算机设备可以包含独立设备(例如服务器、节点、终端等等中的一个或者多个),也可以包含独立设备内部的部件(例如芯片、软件模块或者硬件模块等)。该计算机设备可以包括至少一个处理器801和通信接口802,进一步可选地,计算机设备还可以包括至少一个存储器803和总线804。其中,处理器801、通信接口802和存储器803通过总线804相连。
其中,处理器801是进行算术运算和/或逻辑运算的模块,具体可以是中央处理器(central processing unit,CPU)、图片处理器(graphics processing unit,GPU)、微处理器(microprocessor unit,MPU)、专用集成电路(Application SpecificIntegratedCircuit,ASIC)、现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)、复杂可编程逻辑器件(Complex programmable logic device,CPLD)、协处理器(协助中央处理器完成相应处理和应用)、微控制单元(Microcontroller Unit,MCU)等处理模块中的一种或者多种的组合。
通信接口802可以用于为至少一个处理器提供信息输入或者输出。和/或,通信接口802可以用于接收外部发送的数据和/或向外部发送数据,可以为包括诸如以太网电缆等的有线链路接口,也可以是无线链路(Wi-Fi、蓝牙、通用无线传输、车载短距通信技术以及其他短距无线通信技术等)接口。通信接口802可以作为网络接口。
存储器803用于提供存储空间,存储空间中可以存储操作系统和计算机程序等数据。存储器803可以是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read onlymemory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM)等等中的一种或者多种的组合。
在一种可能的实施方式中,该计算机设备中的处理器801用于调用至少一个存储器803中存储的计算机程序,用于执行以下操作:当检测到区块链网络中的源区块链存在异常时,获取针对源区块链的区块同步数据;从业务网络中的各个业务节点中获取各个业务节点分别记录的源区块链上的交易数据;基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。
在一个实施例中,区块同步数据包括源区块链上的区块的区块头;处理器801在获取针对源区块链的区块同步数据时,具体执行如下操作:
获取针对源区块链进行历史同步的区块头;
确定历史同步的所有区块头中对应的最大区块高度;
若最大区块高度等于源区块链的高度,则将历史同步的区块头确定为针对源区块链的区块同步数据;
若最大区块高度小于源区块链的高度,则针对源区块链重新进行区块同步处理,直至获得源区块链上最新区块的区块头,并在区块同步处理完成后将历史同步的区块头和重新进行区块同步处理获得的区块头共同确定为针对源区块链的区块同步数据。
在一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;
处理器801在基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链时,具体执行如下操作:
根据区块头与交易数据之间的关联关系,在各个业务节点分别记录的源区块链上的交易数据中分别查找区块同步数据中的各区块头所关联的交易数据;
基于区块同步数据中的各区块头及查找到的相应交易数据,恢复出源区块链上的各个区块;
将恢复出的各个区块进行连接,形成目标区块链。
在另一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;源区块链的任一区块对应一棵默克尔树,默克尔树是根据源区块链上的任一区块中的交易数据生成的;
处理器801在基于区块同步数据及各个业务节点分别记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链时,具体执行如下操作:
根据区块头与交易数据之间的关联关系,以及各个业务节点分别记录的源区块链上的交易数据,确定属于同一区块中的交易数据在各个业务节点中的分布情况;
基于分布情况,构建同一区块在各个业务节点中的默克尔子树;
对同一区块的各棵默克尔子树进行合并,得到源区块链上各个区块分别对应的默克尔树;
基于各个区块分别对应的默克尔树和各个区块分别对应的区块头,恢复出源区块链上的各个区块;
将恢复出的各个区块进行连接,形成目标区块链。
在一个实施例中,业务网络中的各个业务节点用于分别向共识网络发送交易数据,触发共识网络中的共识节点基于接收到的交易数据执行交易获得交易执行结果,并由共识网络中的共识节点将交易执行结果反馈给各个业务节点;
源区块链存在异常,包括以下一种或多种:
业务网络中的业务节点向共识网络发送交易数据的发送失败率超过预设失败率阈值;
业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的数量比小于预设比值;
共识网络中出现故障的共识节点的数量占比大于预设占比值;
业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的正确率低于预设正确率阈值;
业务网络中的业务节点所记录的交易数据在源区块链上被篡改的数量大于预设篡改数量阈值;
源区块链上被标记为异常的区块数据大于预设数量阈值。
在一个实施例中,计算机设备为第一业务节点,第一业务节点为业务网络中的任一业务节点;处理器801,还用于执行以下操作:
接收客户端发送的交易验证请求,交易验证请求用于请求对源区块链上的目标交易数据进行验证;目标交易数据被记录至业务网络中转发过目标交易数据的业务节点中;
向共识网络转发交易验证请求,以使共识网络中的共识节点获取并返回目标交易数据的验证信息;
根据目标交易数据的验证信息对目标交易数据进行验证。
在一个实施例中,第一业务节点中同步有源区块链上的至少一个区块的区块头,且每个区块头包括区块高度;验证信息包括目标交易数据所属区块的区块高度以及目标交易数据对应的默克尔路径;
处理器801在根据目标交易数据的验证信息对目标交易数据进行验证时,具体可用于执行以下操作:
根据验证信息中的区块高度和第一业务节点中所同步的各个区块头包括的区块高度,从至少一个区块的区块头中确定出参考区块头;参考区块头的区块高度与验证信息中的区块高度相同;
根据验证信息中的默克尔路径确定默克尔根,并比较所确定的默克尔根和参考区块头中的默克尔根;
若所确定的默克尔根和参考区块头中的默克尔根相等,则确定目标交易数据在源区块链上未被篡改;
若所确定的默克尔根和参考区块头中的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
在一个实施例中,源区块链上的交易数据被封装在源区块链上的区块的区块体中,交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;计算机设备为第一业务节点,第一业务节点为业务网络中的任一业务节点,处理器801,还用于执行以下操作:
从共识网络中同步源区块链上未被同步的区块头;未被同步的区块头的区块高度大于第一业务节点中存储的历史同步的区块头中对应的最大区块高度;
若第一业务节点中记录有与未被同步的区块头之间存在关联关系的目标交易数据,则获取目标交易数据的默克尔路径,并根据目标交易数据的默克尔路径确定默克尔根;
若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根相等,则确定目标交易数据在源区块链上未被篡改;
若所同步的与目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根不相等,则确定目标交易数据在源区块链上已被篡改。
在一个实施例中,处理器801,还用于执行以下操作:
若验证出目标交易数据在源区块链上被篡改,则对目标交易数据进行安全处理;
其中,安全处理包括以下任一种:重新向共识网络发送目标交易数据以更新源区块链上被篡改的目标交易数据;请求删除源区块链上被篡改的目标交易数据;对目标交易数据所属区块进行异常标记。
在一个实施例中,计算机设备为第一业务节点,第一业务节点为业务网络中的任一业务节点,处理器801,还用于执行以下操作:
基于客户端发送携带第一交易数据的交易请求,将第一交易数据发送至共识网络,以使共识网络中的共识节点基于第一交易数据执行交易并返回交易执行结果;
根据第一交易数据的预期执行结果对交易执行结果进行验证;预期执行结果包括第一交易数据被正确执行得到的预期结果;
若验证得到交易执行结果符合预期,则确定交易执行结果正确;
若验证得到交易执行结果不符合预期,则确定交易执行结果错误。
本申请实施例在检测到区块链网络中的源区块链存在异常时,可获取针对该源区块链的区块同步数据,还可从业务网络中的各个业务节点中获取各自记录的源区块链上的交易数据;可见,在源区块链存在异常的情况下,能够完整地获取到与源区块链有关的数据(包括区块同步数据和交易数据),进而可基于针对源区块链的区块同步数据和各个业务节点所记录的源区块链上的交易数据进行区块链恢复处理,得到目标区块链。这样,能够基于源区块链上较为关键的数据,能够准确、完整地恢复出与正常的源区块链相同的目标区块链,通过目标区块链可还原出源区块链中应有的区块数据,从而保障原本基于源区块链的业务,能够基于目标区块链被正常执行。
此外,还应指出,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储了前述基于区块链网络的数据处理方法的计算机程序,计算机程序当被处理器执行时,执行本申请实施例中对基于区块链网络的数据处理方法的描述。也即,当一个或多个处理器加载并执行该计算机程序,可以实现实施例中对基于区块链网络的数据处理方法的描述,这里不再赘述,对采用相同方法的有益效果描述,也在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的基于区块链网络的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行本申请实施例中一方面提供的基于区块链网络的数据处理的方法。
本申请的一个方面,提供了另一种计算机程序产品或计算机程序,该计算机程序产品包括计算机程序,该计算机程序被处理器执行时实现本申请实施例提供的基于区块链网络的数据处理方法的步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的单元可以根据实际需要进行合并、划分和删减。
以上所揭露的仅为本申请的部分实施例而已,不能以此来限定本申请之权利范围,因此本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。

Claims (12)

1.一种基于区块链网络的数据处理方法,其特征在于,所述区块链网络包括共识网络和业务网络,所述共识网络中包含多个共识节点,所述业务网络中包含多个业务节点;所述方法包括:
当检测到所述区块链网络中的源区块链存在异常时,获取针对所述源区块链的区块同步数据;
从所述业务网络中的各个业务节点中获取所述各个业务节点分别记录的所述源区块链上的交易数据;所述源区块链上的交易数据被封装在所述源区块链上的区块的区块体中,所述交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;所述源区块链的任一区块对应一棵默克尔树,所述默克尔树是根据所述源区块链上的任一区块中的交易数据生成的;
根据区块头与交易数据之间的关联关系,以及所述各个业务节点分别记录的所述源区块链上的交易数据,确定属于同一区块中的交易数据在所述各个业务节点中的分布情况;
基于所述分布情况,构建同一区块在所述各个业务节点中的默克尔子树;
对同一区块的各棵默克尔子树进行合并,得到所述源区块链上各个区块分别对应的默克尔树;
基于各个区块分别对应的默克尔树和各个区块分别对应的区块头,恢复出所述源区块链上的各个区块;
将恢复出的各个区块进行连接,形成目标区块链。
2.如权利要求1所述的方法,其特征在于,所述区块同步数据包括所述源区块链上的区块的区块头;所述获取针对所述源区块链的区块同步数据,包括:
获取针对所述源区块链进行历史同步的区块头;
确定所述历史同步的所有区块头中对应的最大区块高度;
若所述最大区块高度等于所述源区块链的高度,则将所述历史同步的区块头确定为针对所述源区块链的区块同步数据;
若所述最大区块高度小于所述源区块链的高度,则针对所述源区块链重新进行区块同步处理,直至获得所述源区块链上最新区块的区块头,并在区块同步处理完成后将所述历史同步的区块头和重新进行区块同步处理获得的区块头共同确定为针对所述源区块链的区块同步数据。
3.如权利要求1或2所述的方法,其特征在于,所述业务网络中的各个业务节点用于分别向所述共识网络发送交易数据,触发所述共识网络中的共识节点基于接收到的交易数据执行交易获得交易执行结果,并由所述共识网络中的共识节点将交易执行结果反馈给所述各个业务节点;
所述源区块链存在异常,包括以下一种或多种:
所述业务网络中的业务节点向所述共识网络发送交易数据的发送失败率超过预设失败率阈值;
所述业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的数量比小于预设比值;
所述共识网络中出现故障的共识节点的数量占比大于预设占比值;
所述业务网络中的业务节点针对已发送交易数据所接收到的交易执行结果的正确率低于预设正确率阈值;
所述业务网络中的业务节点所记录的交易数据在所述源区块链上被篡改的数量大于预设篡改数量阈值;
所述源区块链上被标记为异常的区块数据大于预设数量阈值。
4.如权利要求3所述的方法,其特征在于,所述方法由第一业务节点执行,所述第一业务节点为所述业务网络中的任一业务节点;所述方法还包括:
接收客户端发送的交易验证请求,所述交易验证请求用于请求对所述源区块链上的目标交易数据进行验证;所述目标交易数据被记录至所述业务网络中转发过所述目标交易数据的业务节点中;
向所述共识网络转发所述交易验证请求,以使所述共识网络中的共识节点获取并返回所述目标交易数据的验证信息;
根据所述目标交易数据的验证信息对所述目标交易数据进行验证。
5.如权利要求4所述的方法,其特征在于,所述第一业务节点中同步有所述源区块链上的至少一个区块的区块头,且每个区块头包括区块高度;所述验证信息包括所述目标交易数据所属区块的区块高度以及所述目标交易数据对应的默克尔路径;
所述根据所述目标交易数据的验证信息对所述目标交易数据进行验证,包括:
根据所述验证信息中的区块高度和所述第一业务节点中所同步的各个区块头包括的区块高度,从所述至少一个区块的区块头中确定出参考区块头;所述参考区块头的区块高度与所述验证信息中的区块高度相同;
根据所述验证信息中的默克尔路径确定默克尔根,并比较所确定的默克尔根和所述参考区块头中的默克尔根;
若所确定的默克尔根和所述参考区块头中的默克尔根相等,则确定所述目标交易数据在所述源区块链上未被篡改;
若所确定的默克尔根和所述参考区块头中的默克尔根不相等,则确定所述目标交易数据在所述源区块链上已被篡改。
6.如权利要求3所述的方法,其特征在于,所述方法由第一业务节点执行,所述第一业务节点为所述业务网络中的任一业务节点,所述方法还包括:
从所述共识网络中同步所述源区块链上未被同步的区块头;所述未被同步的区块头的区块高度大于所述第一业务节点中存储的历史同步的区块头中对应的最大区块高度;
若所述第一业务节点中记录有与所述未被同步的区块头之间存在关联关系的目标交易数据,则获取所述目标交易数据的默克尔路径,并根据所述目标交易数据的默克尔路径确定默克尔根;
若所同步的与所述目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根相等,则确定所述目标交易数据在所述源区块链上未被篡改;
若所同步的与所述目标交易数据存在关联关系的区块头中的默克尔根和所确定的默克尔根不相等,则确定所述目标交易数据在所述源区块链上已被篡改。
7.如权利要求4-6任一项所述的方法,其特征在于,所述方法还包括:
若验证出所述目标交易数据在所述源区块链上被篡改,则对所述目标交易数据进行安全处理;
其中,所述安全处理包括以下任一种:重新向所述共识网络发送所述目标交易数据以更新所述源区块链上被篡改的目标交易数据;请求删除所述源区块链上被篡改的目标交易数据;对所述目标交易数据所属区块进行异常标记。
8.如权利要求3所述的方法,其特征在于,所述方法由第一业务节点执行,所述第一业务节点为所述业务网络中的任一业务节点,所述方法还包括:
基于客户端发送携带第一交易数据的交易请求,将所述第一交易数据发送至所述共识网络,以使所述共识网络中的共识节点基于所述第一交易数据执行交易并返回交易执行结果;
根据所述第一交易数据的预期执行结果对所述交易执行结果进行验证;所述预期执行结果包括所述第一交易数据被正确执行得到的预期结果;
若验证得到所述交易执行结果符合预期,则确定所述交易执行结果正确;
若验证得到所述交易执行结果不符合预期,则确定所述交易执行结果错误。
9.如权利要求1所述的方法,其特征在于,所述共识网络中的各个共识节点均归属于第一中心,所述共识网络由所述第一中心维护;所述方法还包括:
获取针对至少一个候选中心的投票结果,所述投票结果用于指示各个投票对象所选择的候选中心;
根据所述投票结果从所述至少一个候选中心中确定第二中心,所述第二中心维护有至少一个共识节点,所述第二中心维护的各个共识节点形成为新的共识网络;
采用所述新的共识网络替换所述区块链网络中的原共识网络,并将所述目标区块链同步给所述新的共识网络中的各共识节点。
10.一种基于区块链网络的数据处理装置,其特征在于,所述区块链网络包括共识网络和业务网络,所述共识网络中包含多个共识节点,所述业务网络中包含多个业务节点;所述装置包括:
获取单元,用于当检测到所述区块链网络中的源区块链存在异常时,获取针对所述源区块链的区块同步数据;
所述获取单元,还用于从所述业务网络中的各个业务节点中获取所述各个业务节点分别记录的所述源区块链上的交易数据;所述源区块链上的交易数据被封装在所述源区块链上的区块的区块体中,所述交易数据通过所属区块的区块体与所属区块的区块头之间建立关联;所述源区块链的任一区块对应一棵默克尔树,所述默克尔树是根据所述源区块链上的任一区块中的交易数据生成的;
处理单元,用于根据区块头与交易数据之间的关联关系,以及所述各个业务节点分别记录的所述源区块链上的交易数据,确定属于同一区块中的交易数据在所述各个业务节点中的分布情况;基于所述分布情况,构建同一区块在所述各个业务节点中的默克尔子树;对同一区块的各棵默克尔子树进行合并,得到所述源区块链上各个区块分别对应的默克尔树;基于各个区块分别对应的默克尔树和各个区块分别对应的区块头,恢复出所述源区块链上的各个区块;将恢复出的各个区块进行连接,形成目标区块链。
11.一种计算机设备,其特征在于,包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,执行如权利要求1-9任一项所述的基于区块链网络的数据处理方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时,执行如权利要求1-9任一项所述的基于区块链网络的数据处理方法。
CN202311311533.7A 2023-10-11 2023-10-11 基于区块链网络的数据处理方法及相关设备 Active CN117056131B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311311533.7A CN117056131B (zh) 2023-10-11 2023-10-11 基于区块链网络的数据处理方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311311533.7A CN117056131B (zh) 2023-10-11 2023-10-11 基于区块链网络的数据处理方法及相关设备

Publications (2)

Publication Number Publication Date
CN117056131A CN117056131A (zh) 2023-11-14
CN117056131B true CN117056131B (zh) 2024-01-26

Family

ID=88655795

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311311533.7A Active CN117056131B (zh) 2023-10-11 2023-10-11 基于区块链网络的数据处理方法及相关设备

Country Status (1)

Country Link
CN (1) CN117056131B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667749A (zh) * 2021-03-16 2021-04-16 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备及存储介质
CN115730933A (zh) * 2021-08-27 2023-03-03 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及存储介质
WO2023160077A1 (zh) * 2022-02-25 2023-08-31 蚂蚁区块链科技(上海)有限公司 区块链数据恢复方法及装置、电子设备

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10956444B2 (en) * 2019-07-31 2021-03-23 Advanced New Technologies Co., Ltd. Block chain state data synchronization method, apparatus, and electronic device

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112667749A (zh) * 2021-03-16 2021-04-16 腾讯科技(深圳)有限公司 一种数据处理方法、装置、设备及存储介质
CN115730933A (zh) * 2021-08-27 2023-03-03 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及存储介质
WO2023160077A1 (zh) * 2022-02-25 2023-08-31 蚂蚁区块链科技(上海)有限公司 区块链数据恢复方法及装置、电子设备

Also Published As

Publication number Publication date
CN117056131A (zh) 2023-11-14

Similar Documents

Publication Publication Date Title
CN107888562B (zh) 一种平行链接入互联链的数据验证和收发方法、节点及系统
US20220231869A1 (en) Cross-blockchain mutual data storage
US11580075B2 (en) Systems and methods of providing immutable records
US11128522B2 (en) Changing a master node in a blockchain system
WO2020258846A1 (zh) 一种跨链发送可认证消息的方法和装置
CN111630826B (zh) 共识系统和方法
US11625718B2 (en) Blockchain-based data verification system and method, computing device and storage medium
JP7127035B2 (ja) ネットワークのトポロジのネットワークの認識を更新するコンピュータにより実装されるシステム及び方法
US20230037932A1 (en) Data processing method and apparatus based on blockchain network, and computer device
CN112612856B (zh) 基于区块链的数据处理方法和装置
CN111212139A (zh) 对信任节点信息进行更新的方法及装置
US10826987B2 (en) Systems and methods for consensus-based data security for networked devices
CN111582845A (zh) 区块链的跨链交易方法、装置以及电子设备
CN112152981B (zh) 一种通信方法、节点以及通信系统
CN117056131B (zh) 基于区块链网络的数据处理方法及相关设备
Hou et al. A blockchain based architecture for IoT data sharing systems
Constantinescu et al. A fair and resilient decentralized clock network for transaction ordering
CN116186786A (zh) 基于区块链的业务处理方法、装置、电子设备和可读介质
CN111190754A (zh) 一种区块链事件通知方法及区块链系统
CN110933627A (zh) 业务处理方法、装置、设备及存储介质
US20240073045A1 (en) Blockchain-based data processing method and apparatus, device, medium, and product
WO2023221772A1 (zh) 基于区块链网络的数据处理方法及相关产品
CN111162970B (zh) 在区块链系统中测试去中心化应用服务器的方法及装置
US20230370279A1 (en) Terminal device, data management device, management system, processing method, and non-transitory computer-readable medium storing a program
CN117522398A (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
GR01 Patent grant
GR01 Patent grant