CN113824755A - 区块链数据处理的方法、系统及相关装置 - Google Patents

区块链数据处理的方法、系统及相关装置 Download PDF

Info

Publication number
CN113824755A
CN113824755A CN202010568739.8A CN202010568739A CN113824755A CN 113824755 A CN113824755 A CN 113824755A CN 202010568739 A CN202010568739 A CN 202010568739A CN 113824755 A CN113824755 A CN 113824755A
Authority
CN
China
Prior art keywords
data
node
block
block data
data packet
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
Application number
CN202010568739.8A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010568739.8A priority Critical patent/CN113824755A/zh
Publication of CN113824755A publication Critical patent/CN113824755A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本申请实施例公开了区块链数据处理的方法。该方法中,将区块链账本中的区块数据拆分为多个区块数据包,根据区块数据包生成恢复数据包,并将该区块数据包和恢复数据包转移到区块链系统中的多个节点中去。而区块链账本中的该区块数据可以被删除,因而能够减轻区块链存储压力。转移的区块数据包、恢复数据包这些数据包和存储这些数据包的节点之间的对应关系被记录下来,并广播到区块链系统中,便于后期获取转移的该区块数据。在发生区块数据包不可用时恢复数据包可用于恢复区块数据包,从而提高了区块数据转移的可靠性。

Description

区块链数据处理的方法、系统及相关装置
技术领域
本申请涉及信息技术领域,尤其涉及区块链数据处理的方法、系统及相关装置。
背景技术
区块链技术,也被称为分布式账本技术,依靠多个节点共同参与记账、共同维护一个可靠的数据库。每当有新的交易数据需要被写入区块链账本,这些数据会被汇总到一个区块中,该区块被添加到已有区块链账本的末端。区块链技术通过共识算法保证每个节点新添加的区块是相同的。每个区块除记录交易数据之外,还包含前一个区块的摘要(如哈希值),从而使得组成的区块链难以被篡改和伪造。因而区块链技术可以不依赖第三方信用机构,具有去中心化的特性。
在使用区块链技术的过程中,存储的数据不断增多,导致区块链的存储压力越来越大。
发明内容
本申请实施例提供一种区块链数据处理的方法、系统和相关装置,能够缓解区块链的存储压力。
第一方面,本申请实施例提供了一种区块链数据处理的方法,具体为转移区块链数据的方法。该方法包括:第一节点确定从存储的区块链账本中待转移的第一区块数据;接着,第一节点将该第一区块数据拆分为至少2个区块数据包,并根据该至少2个区块数据包生成至少1个恢复数据包,其中,恢复数据包用于恢复区块数据包;进而,第一节点将该至少2个区块数据包和该至少1个恢复数据包中的数据包发送至对应的第二节点,记录第一区块数据的数据包与第二节点的第一对应关系,并广播该第一对应关系;第一节点还删除存储的区块链账本中的第一区块数据。
本申请中,区块链账本中的区块数据可以被拆分并转移到多个节点中,从而减轻了区块链账本的存储压力。并且恢复数据包可以容忍转移到一些节点上的区块数据包不可用,即在发生区块数据包不可用时恢复数据包可用于恢复区块数据包,从而提高了区块数据转移的可靠性。
在一个实施方式中,第二节点为区块链系统中的节点。由于区块链系统中的节点相对于区块链系统外部的设备安全性更高,因而将区块数据的数据包转移到区块链系统内部的节点,有利于提高区块数据转移的安全性。
可选地,第一节点根据第一区块数据生成第一校验数据,并广播该第一校验数据,其中,该第一校验数据用于对第一区块数据进行校验。该第一校验数据便于后期获取转移的该第一区块数据时对获取的第一区块数据进行校验,从而保证获取的第一区块数据是准确的,即保证了数据的可靠性和安全性。
可选地,第一节点根据第一区块数据的每个数据包(包括区块数据包和/或恢复数据包)生成对应的第二校验数据,并广播第二校验数据,其中,该第二校验数据用于对对应的数据包进行校验,以快速地确定是否存在不可用的数据包,以及准确地确定不可用的数据包是哪个。
可选地,在第一节点将该第一区块数据拆分为至少2个区块数据包之前,第一节点还触发区块链系统对于第一区块数据进行一致性校验。具体地,第一节点广播指示对于第一区块数据进行一致性校验的第一共识请求,并接收对于该第一共识请求的共识成功消息,从而确定对于第一区块数据的一致性校验成功。这样保证了待转移的第一区块数据是准确的,避免对本身就不准确的区块数据进行转移而导致的安全隐患。
可选地,在第一节点删除存储的区块链账本中的该第一区块数据之前,第一节点成功获取已转移的该第一区块数据。具体地,第一节点根据该第一对应关系中第一区块数据的区块数据包与存储该区块数据包的第二节点之间的对应关系从该存储该区块数据包的第二节点获取对应的区块数据包,并将该获取的区块数据包组合成第二区块数据,当该第二区块数据与该第一区块数据相同时,第一节点确定成功获取该第一区块数据。从而保证转移的区块数据是可以成功获取的,以避免转移的区块数据无法成功获取而造成的区块数据丢失。
可选地,在第一节点删除存储的区块链账本中的该第一区块数据之前,第一节点触发区块链系统对于能够成功获取已转移的第一区块数据进行共识。具体地,第一节点在区块链系统中广播第二共识请求,该第二共识请求用于请求校验是否能成功获取已转移的第一区块数据;第一节点接收对于该第二共识请求的共识成功消息。进一步地,共识成功之后,第一节点还进一步触发区块链系统删除区块链账本中的该第一区块数据。具体地,第一节点还广播删除请求,该删除请求指示删除区块链账本中的该第一区块数据。这样可以在多节点对于能够成功获取已转移的第一区块数据达成共识之后,再删除第一区块数据,以避免第一节点被攻击利用而随意删除区块链账本中的数据,从而提高数据安全性。
在一个实施方式中,该至少1个恢复数据包的总数据量小于该至少2个区块数据包的总数据量,从而在保证区块数据转移的可靠性的同时,避免恢复数据包占用过多存储空间而造成存储压力。
可选地,第一节点从存储的区块链账本中确定待转移的第三区块数据,该第三区块数据的安全要求低于该第一区块数据的安全要求;进而第一节点将该第三区块数据发送至区块链系统外部的存储设备,记录该第三区块数据与该存储设备的第二对应关系,并广播该第二对应关系;第一节点删除该存储的区块链账本中的该第三区块数据。将安全要求较高的第一区块数据转移到区块链系统内部的节点,安全要求不高的第三区块数据转移到区块链系统外部的存储设备,有利于在保证安全要求高的区块数据的安全性的同时,还进一步减轻区块链系统的存储压力。
可选地,第一节点根据区块链系统中各节点的性能信息选取该第二节点,其中,该性能信息包括以下一项或多项:安全性、剩余存储空间、访问频率、CPU占用率、或故障率。
在一个实施方式中,该第二节点为区块链系统中的安全节点,其中,安全节点是根据区块链系统中各节点的安全性来确定的、或者是通过共识机制来确定的。由于区块链系统中可能存在恶意说谎节点,这样可以避开这些恶意说谎节点,从而进一步提高了区块数据转存的安全性。可选地,第一节点还触发区块链系统删除区块链账本中的第一区块数据。具体地,第一节点广播删除请求,该删除请求指示删除区块链账本中的该第一区块数据。
第二方面,本申请实施例提供了一种区块链数据处理的方法,具体为存储区块链数据的方法。该方法包括:第二节点接收并存储第一节点发送的第一数据包,其中,该第一数据包为第一区块数据被拆分得到的区块数据包中的一个或多个数据包,和/或用于恢复该第一区块数据的区块数据包的恢复数据包,该第一区块数据为区块链账本中待转移的数据;接着,第二节点还接收并存储第一对应关系,该第一对应关系包括:该第一区块数据的区块数据包与存储该区块数据包的节点的对应关系、该第一区块数据的恢复数据包与存储该恢复数据包的节点的对应关系。
本申请中,区块链账本中的区块数据可以被拆分并转移到多个节点中,从而减轻了区块链账本的存储压力。并且恢复数据包可以容忍转移到一些节点上的区块数据包不可用,即在发生区块数据包不可用时恢复数据包可用于恢复区块数据包,从而提高了区块数据转移的可靠性。转移的区块数据的数据包(区块数据包、恢复数据包)以及存储这些数据包的节点之间的对应关系被保存下来,从而便于后期根据该对应关系获取转移的区块数据。
在一个实施方式中,第二节点为区块链系统中的节点。由于区块链系统中的节点相对于区块链系统外部的设备安全性更高,因而区块链系统内部的节点来存储转移的区块数据的数据包,有利于提高区块数据转移的安全性。
进一步地,该第二节点为区块链系统中的安全节点,其中,安全节点是根据区块链系统中各节点的安全性来确定的、或者通过共识机制来确定的。由于区块链系统中可能存在恶意说谎节点,这样可以避开这些恶意说谎节点,从而进一步提高了区块数据转存的安全性。
在一个实施方式中,第二节点为存储区块链账本的节点,该方法还包括:第二节点接收第一节点发送的删除请求,该删除请求指示删除区块链账本中的第一区块数据,进而第二节点删除存储的区块链账本中的第一区块数据。这样记账节点可以删除存储的区块链账本中被转移的区块数据,从而缓解了区块链系统的存储压力。
可选地,第二节点还接收共识请求(第二共识请求),该共识请求指示校验是否能成功获取已转移的第一区块数据,从而第二节点作为参与此次共识的节点,根据第一对应关系(具体为其中的区块数据包与存储区块数据包的节点之间的对应关系)成功获取已转移的第一区块数据,并广播校验成功消息。进一步地,第二节点还接收对于该共识请求的共识成功消息,从而确定区块链系统对于能成功获取已转移的第一区块数据达成共识。该情况下,若第二节点为存储区块链账本的节点,第二节点还删除存储的区块链账本中的第一区块数据。这样可以在多节点对于能够成功获取已转移的第一区块数据达成共识之后,再删除第一区块数据,以避免第一节点被攻击利用而随意删除区块链账本中的数据,从而提高数据安全性。
在一个实施方式中,第二节点成功获取已转移的第一区块数据具体包括:第二节点根据该第一对应关系中第一区块数据的区块数据包与存储区块数据包的节点之间的对应关系从其他存储第一区块数据的区块数据包的节点获取第一区块数据的区块数据包,并将第一区块数据的区块数据包组合成第二区块数据,当第二区块数据与第一区块数据一致时,第二节点确定成功获取已转移的第一区块数据。
可选地,第二节点还接收并存储该第一数据包的校验数据,并且周期性地根据第一数据包的校验数据对存储的第一数据包进行完整性校验,从而保证第二节点存储的第一数据包的可靠性。进一步地,当对该第一数据包的完整性校验失败时,第二节点还根据第一对应关系向存储该第一区块数据的其他数据包的节点获取该第一区块数据的其他数据包,其中第一区块数据的其他数据包具体指第一区块数据的区块数据包和恢复数据包中除第一数据包以外的数据包;第二节点根据该第一区块数据的其他数据包恢复该第一数据包。这样可以及时发现不可用的数据包,并及时地恢复不可用的数据包,从而保证了转移区块数据的可靠性,且能够提高对于转移区块数据的获取效率。
可选地,第二节点还接收校验数据,并将该校验数据存储至区块链账本中,其中,该校验数据包括以下一项或多项:用于该第一区块数据的完整性校验的第一校验数据、用于该第一区块数据的区块数据包和恢复数据包的完整性校验的第二校验数据。该校验数据存储到区块链账本中,能够保证安全性,且校验数据本身数据量不会很大,不会造成存储压力。
第三方面,本申请实施例提供了一种区块链数据处理的方法,具体为获取区块链数据的方法。该方法包括:第三节点根据第一区块数据的区块数据包与存储该区块数据包的节点之间的对应关系从对应的节点获取第一区块数据的区块数据包;进而,第三节点将获取的区块数据包组合以得到第一区块数据。这样,区块链系统中被转移的区块数据仍然能被获取。
可选地,当第一区块数据的区块数据包中存在至少1个区块数据包不可用时,第三节点还根据第一区块数据的恢复数据包与存储该恢复数据包的节点之间的对应关系从对应的节点获取第一区块数据的恢复数据包,并根据该恢复数据包和可用的区块数据包恢复该至少1个不可用的区块数据包;进而,第三节点将该至少1个恢复的区块数据包,和该可用的区块数据包组合以得到该第一区块数据。该方法中,即使有区块数据包不可用,依然能够利用恢复数据包来恢复不可用的区块数据包,从而提高了区块数据转移的可靠性。
可选地,第三节点还根据第一区块数据的第一校验数据对第一区块数据进行完整性校验,从而第三节点根据完整性校验的结果确定是否成功获取该第一区块数据。通过完整性校验来保证获取的第一区块数据的安全性。
可选地,第三节点还根据第一区块数据的区块数据包的校验数据对各区块数据包分别进行完整性校验。这样第三节点既可以判断出各区块数据包是否可用,也可以快速地确定出不可用的区块数据包是哪个。
可选地,第三节点还根据第二对应关系从区块链系统外部的存储设备获取第三区块数据,其中,该第二对应关系包括该第三区块数据与存储该第三区块数据的存储设备的对应关系,上述第一区块数据的安全要求是高于该第三区块数据的安全要求。
第四方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括用于执行第一方面的任一方法的功能模块;本申请对功能模块的划分不做限定,可以按照第一方面的区块链数据处理的方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。作为一个例子,该装置包括发送模块、处理模块、发送模块、和/或接收模块。其中,功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第五方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括存储器和至少一个处理器,该存储器存储有程序代码,该处理器调用该程序代码以执行第一方面的任一方法。该装置还可以包括通信接口,用于与其他设备通信。
第六方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括用于执行第二方面的任一方法的功能模块;本申请对功能模块的划分不做限定,可以按照第二方面的区块链数据处理的方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。作为一个例子,该装置包括接收模块、存储模块、处理模块、和/或发送模块。其中,功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第七方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括存储器和至少一个处理器,该存储器存储有程序代码,该处理器调用该程序代码以执行第二方面的任一方法。该装置还可以包括通信接口,用于与其他设备通信。
第八方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括用于执行第三方面的任一方法的功能模块;本申请对功能模块的划分不做限定,可以按照第三方面的区块链数据处理的方法的流程步骤对应划分功能模块,也可以按照具体实现需要划分功能模块。作为一个例子,该装置包括发送模块、接收模块、处理模块、和/或存储模块。其中,功能模块可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第九方面,本申请实施例提供了一种区块链数据处理的装置,该装置包括存储器和至少一个处理器,该存储器存储有程序代码,该处理器调用该程序代码以执行第三方面的任一方法。该装置还可以包括通信接口,用于与其他设备通信。
第十方面,本申请实施例提供了一种区块链数据处理的系统,包括第一节点和第二节点,该第一节点为第四方面或第五方面所述的装置,该第二节点为第六方面或第七方面所述的装置。可选地,该系统还包括第三节点,该第三节点为第八方面或第九方面所述的装置。
第十一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储了程序代码,当该程序代码运行时,能够使运行该程序代码的设备实现本申请第一方面的任一方法。
第十二方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储了程序代码,当该程序代码运行时,能够使运行该程序代码的设备实现本申请第二方面的任一方法。
第十三方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储了程序代码,当该程序代码运行时,能够使运行该程序代码的设备实现本申请第三方面的任一方法。
第十四方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机实现本申请第一方面的任一方法。
第十五方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机实现本申请第二方面的任一方法。
第十六方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机实现本申请第三方面的任一方法。
第十七方面,本申请实施例提供一种芯片,当该芯片运行时,能够实现本申请第一方面的任一方法。
第十八方面,本申请实施例提供一种芯片,当该芯片运行时,能够实现本申请第二方面的任一方法。
第十九方面,本申请实施例提供一种芯片,当该芯片运行时,能够实现本申请第三方面的任一方法。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1A为本申请实施例提供的区块链账本的结构示意图;
图1B为本申请实施例提供的区块链数据处理的系统架构示意图;
图2为本申请实施例提供的区块链数据处理的方法流程图;
图3为本申请实施例提供的又一区块链数据处理的方法流程图;
图4为本申请实施例提供的又一区块链数据处理的方法流程图;
图5为本申请实施例提供的又一区块链数据处理的方法流程图;
图6为本申请实施例提供的区块链数据处理的装置的结构示意图;
图7为本申请实施例提供的又一区块链数据处理的装置的结构示意图;
图8为本申请实施例提供的又一区块链数据处理的装置的结构示意图;
图9为本申请实施例提供的又一区块链数据处理的装置的结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
为了方便理解本申请,首先在此介绍一下与区块链技术相关的一些概念。
区块链技术,具有去中心化的特性,依靠多个节点共同参与记账、共同维护一个可靠的数据库,这个数据库又被称为区块链账本(或者分布式账本、账本等等)。
区块链账本由多个区块组成,每个区块包括若干交易信息、以及前一个区块的哈希值。这多个区块按生成的顺序依次连接,从而形成了区块链账本。如图1A所示,为区块链账本的形象化的结构示意图。区块高度是指区块在区块链账本中的位置,区块高度值可以用于标识该区块,例如图1A中的区块H001、区块H002等等。另外,区块哈希值是指对区块的区块头进行哈希计算得到的值,也可以用于标识该区块。区块哈希值还可以用于校验区块,从而使得区块链账本难以被篡改和伪造。例如区块H002包含区块H001的哈希值,则节点可以根据区块H002中包含的区块H001的哈希值来校验区块H002的数据。因而,各区块哈希值就像区块之间的锁链,提高了区块链账本的安全性。
共识机制用于保障区块链系统满足不同程度的一致性,共识机制往往需要共识算法来达成。共识算法解决的是多个节点对某个提案达成一致的问题。由于区块链系统中的各节点相互之间并不完全信任,有可能存在恶意说谎节点,而共识算法可以很好地解决这一问题。虽然区块链系统中的每个节点都有可能是恶意说谎节点,但是众多节点共识的结果是一个可信的结果。常用的共识算法包括实用拜占庭容错(practical byzantine faulttolerance,PBFT)算法、工作量证明(proof of work,PoW)算法、POE(proof of endorse)算法等等。另外,共识算法也有助于发现恶意说谎节点,从而提高区块链系统的安全性。
区块链系统中的节点为通信实体,具体可以部署于一个或多个物理设备。节点可以按照网络功能分为以下几种类型:背书节点、排序节点、记账节点等等。举例来说,背书节点用于接收模拟运行智能合约的请求后,运行智能合约,并对该智能合约的运行结果进行签名,再返回该运行结果。排序节点用于接收交易后对交易进行共识、排序操作,而后将交易打包成区块,并将区块发送给记账节点。记账节点用于存储区块链账本,具体用于对接收到的区块进行校验,在校验通过后将该区块添加到区块链账本中。多个记账节点之间还可以周期性地对于各自存储的区块链账本进行一致性校验,从而及时发现被篡改数据,以保证区块链账本的数据安全。因而,多个记账节点都会存储一份完整的区块链账本,这一方面保证了区块链账本的安全性,另一方面也对区块链存储带来了很大压力。
另外,区块链系统还可以包括领导节点,该部署下,排序节点将区块发送给领导节点,由领导节点广播该区块,以使得各记账节点接收到该区块。应理解,一个节点可以同时具有上述一种或多种类型节点的网络功能,本申请对此不做限定。例如,一个区块链节点可以同时是背书节点、记账节点。
智能合约是由事件驱动的、具有状态的、能够管理区块链账本上数据的程序。事件信息会触发智能合约的状态判断,如果判断的状态满足触发条件,则自动执行预设动作,例如查询或更新区块链账本等。
在使用区块链技术的过程中,随着区块不断增加,区块链账本的存储占用了大量资源,因而本申请提供了优化区块链数据存储的方法。
图1B为本申请实施例的系统架构示意图。如图1B所示,虚线范围内的节点之间构成区块链系统。该区块链系统包括第一节点101以及第二节点102。
其中,第一节点101用于从存储的区块链账本中确定待转移的第一区块数据;并将该第一区块数据拆分成至少2个区块数据包(图1B中以2个区块数据包:区块数据包A和区块数据包B为例),根据该至少2个区块数据包生成至少1个恢复数据包(图1B中以1个恢复数据包:恢复数据包C为例),该恢复数据包用于恢复该区块数据包。进而,第一节点101还用于将该至少2个区块数据包和该至少1个恢复数据包中的每一个数据包发送至对应的第二节点102。举例来说,第一节点101将区块数据包A发送至第二节点102-1,将区块数据包B发送至第二节点102-2,将恢复数据包C发送至第二节点102-3。相应地,第二节点102用于接收并存储第一节点101发送的第一数据包,为便于描述,将第二节点102接收到的数据包称为第一数据包。该第一数据包为该第一区块数据的区块数据包和/或恢复数据包。应理解,第一节点101也可能向同一个第二节点102发送多个数据包,例如第一节点101将区块数据包A、区块数据包B都发送给了第二节点102-1。
第一节点101还用于记录该第一区块数据的数据包与第二节点102的第一对应关系,并广播该第一对应关系。相应地,区块链系统中的各节点(可包括第二节点102、第三节点103)用于接收并存储该第一对应关系。该第一对应关系有利于后期获取第一区块数据的时候,准确地查找到第一区块数据的区块数据包、恢复数据包存储的位置。第一节点101还用于删除存储的区块链账本中的该第一区块数据。因此,区块链账本中的区块数据可以被拆分并转移到多个节点中,从而减轻了区块链账本的存储压力。并且恢复数据包可以容忍转移到一些节点上的区块数据包不可用(如丢失、损坏或者被篡改),在发生区块数据包不可用时恢复数据包可用于恢复区块数据包,从而提高了区块数据转移的可靠性和安全性。
进一步地,第一节点101还用于触发删除区块链账本中的该第一区块数据。具体地,第一节点101广播删除请求,该删除请求指示删除区块链账本中的该第一区块数据,从而区块链中的记账节点接收该删除请求后,删除自身存储的区块链账本中的第一区块数据。
进一步地,第一节点101还用于根据第一区块数据生成第一校验数据,并广播该第一校验数据。其中,该第一校验数据用于该第一区块数据的完整性校验。相应地,区块链系统中的各节点(可包括第二节点102、第三节点103)用于接收并存储该第一校验数据。该第一校验数据便于后期获取转移的该第一区块数据时对获取的第一区块数据进行完整性校验,从而保证获取的第一区块数据是准确的,即保证了数据的可靠性和安全性。
进一步地,第一节点101还用于根据每个数据包(区块数据包和/或恢复数据包)生成对应的第二校验数据,并广播该第二校验数据。其中,该第二校验数据用于对应数据包的完整性校验。相应地,区块链系统中的各节点(可包括第二节点102、第三节点103)用于接收并存储该第二校验数据。该第二校验数据用于对对应的数据包进行完整性校验,以快速地确定是否存在不可用的数据包,以及准确地确定不可用的数据包是哪些。
作为一种可选的方式,第二节点102用于接收并存储第一数据包的校验数据。其中,该第一数据包的校验数据用于该第一数据包的完整性校验。这里描述的情况可能有多种,例如当第二节点102接收第一节点101发送的每个数据包的第二校验数据时,第二节点102仅保存了第二节点102接收到的第一数据包的校验数据,或者第二节点102将每个数据包的第二校验数据都保存下来,其中包括了第一数据包的校验数据;再例如第二节点102在接收第一节点101发送的第一数据包时,同时接收到第一节点101发送的该第一数据包的校验数据,则第二节点102保存该第一数据包和该第一数据包的校验数据。
进一步地,第二节点102还用于周期性地根据该第一数据包的校验数据对该第一数据包进行完整性校验,从而保证第二节点102存储的第一数据包的可靠性。当第二节点102对第一数据包的完整性校验失败时,第二节点102用于根据该第一对应关系向对应的节点获取第一区块数据的其他区块数据包和恢复数据包,并根据该其他区块数据包和恢复数据包恢复该第一数据包。这样可以及时发现不可用的数据包,并及时地进行数据包恢复,可以避免获取时才发现有不可用数据而造成获取效率低或者无法获取的情况,从而进一步保证了转移区块数据的可靠性,以及提高了对于转移区块数据的获取效率。
作为一种可选的方式,第一节点101还用于广播指示对于第一区块数据进行一致性校验的第一共识请求,在共识成功后,再对第一区块数据进行转移。这样保证了待转移的数据是准确的,避免对本身就不准确的区块数据进行转移而导致的安全隐患。
作为一种可选的方式,在第一节点101删除该第一区块数据、触发删除该第一区块数据之前,第一节点101还用于成功获取已转移的第一区块数据之后,从而保证转移的区块数据是可以成功获取的,以避免转移的区块数据无法成功获取而造成的区块数据丢失。具体地,第一节点101根据该第一对应关系中第一区块数据的区块数据包与存储该区块数据包的第二节点102之间的对应关系从该第二节点102获取对应的区块数据包,并将获取的区块数据包组合成第二区块数据。当第二区块数据与第一区块数据相同时,第一节点101确定成功获取该第一区块数据。
作为一种可选的方式,第一节点101还用于广播第二共识请求,该第二共识请求指示校验是否能成功获取已转移的第一区块数据,并在接收该对于第二共识请求的共识成功消息后,再删除该第一区块数据、触发删除该第一区块数据。这样可以在多节点对于能够成功获取已转移的第一区块数据达成共识之后,再删除第一区块数据,以避免第一节点101被利用而随意删除区块链账本中的数据,从而提高数据安全性。相应地,第二节点102可以用于参与该共识,即在成功获取已转移的第一区块数据时,广播校验成功消息。
作为一种可选的方式,第一节点101还用于根据区块链系统中各节点的性能信息选取第二节点102,从而提高转移区块数据的成功率,并整体上提高区块链系统的运行效率。
该区块链系统还可以包括第三节点103,第三节点103用于根据该第一对应关系获取该第一区块数据。具体地,第三节点103用于根据第一区块数据的区块数据包与存储该区块数据包的节点之间的对应关系从对应的节点(如第二节点102-1、第二节点102-2)获取对应的区块数据包,并将区块数据包组合以得到该第一区块数据。其中,该对应关系是第三节点103本地存储的或者向其他节点(如第一节点101)获取的。
作为一种可选的方式,当区块数据包中存在至少1个区块数据包不可用时,第三节点103用于根据第一区块数据的恢复数据包与存储该恢复数据包的节点之间的对应关系从对应的节点(如第二节点102-3)获取第一区块数据的恢复数据包。第三节点103还用于根据该恢复数据包和可用的区块数据包恢复该至少1个不可用的区块数据包,并将该至少1个恢复的区块数据包,和该可用的区块数据包组合以得到该第一区块数据。从而使得被转移的区块数据仍能够被获取,保证了转移数据的可用性。
进一步地,第三节点103还用于根据第一校验数据对该第一区块数据进行完整性校验从而第三节点103根据完整性校验的结果确定是否成功获取该第一区块数据。这样可以进一步识别获取的第一区块数据是否是准确的。
作为一种可选的方式,第三节点103用于根据各数据包的校验数据(即第二校验数据)对每个数据包进行完整性校验,以便快速而准确地确定是否存在不可用的数据包,以及当存在不可用数据包时不可用的数据包是哪些。
应理解,第三节点103具体可以是第一节点101、第二节点102或者区块链系统中其他具有获取转移的区块数据的功能的节点。另外,图1B仅为示例,对于区块链系统包含的节点的数量和类型,本申请不做限定。第一节点101、第二节点102和第三节点103,作为区块链系统内部的节点,还可以同时具备其他功能,例如参与共识、运行智能合约、和/或存储区块链账本等维护区块链账本的功能。
本申请实施例的系统还可以包括存储设备104,其中,存储设备104可以是集中式的存储设备也可以是分布式存储设备。存储设备104可以与区块链系统中的第一节点101通信以存储待转移的第三区块数据。第三区块数据的安全要求低于第一区块数据。具体地,第一节点101还用于从区块链账本中确定待转移的第三区块数据,记录该第三区块数据与存储设备104的第二对应关系,广播该第二对应关系,并删除存储的区块链账本中的该第三区块数据。而存储设备104用于接收并存储该第三区块数据。
进一步地,区块链系统中的节点能够获取转移到存储设备104的第三区块数据。这里依然以第三节点103为例进行说明。即第三节点103还用于根据该第二对应关系从存储设备104获取该第三区块数据。
与区块链系统内部的节点相比,存储设备104作为区块链系统外部的设备安全性可能是较低的。但是存储设备104的优势在于不会占用区块链系统的存储空间,从而能够提高区块链系统的运行效率,并且存储设备104是易于扩展的。因而,将安全要求较高的第一区块数据转移到区块链系统内部的节点(第二节点102),安全要求不高的第三区块数据转移到区块链系统外部的存储设备104,有利于在保证安全要求高的区块数据的安全性的同时,还进一步提高区块链系统的运行效率。应理解,安全要求也可以用重要性、数据级别等衡量区块数据价值的参数来替代,本申请不做限定。
本申请实施例没有将存储设备104划分进区块链系统中(即本申请实施例中将存储设备104作为区块链系统外部的设备),是考虑到存储设备104无法参与区块链系统的共识、不运行区块链系统的智能合约、也不存储区块链账本,因而也无法参与维护区块链账本。若本领域技术人员,采用更广泛的概念来定义区块链系统,例如将处理过区块数据的设备都纳入区块链系统的范围,则存储设备104也可能被称为是区块链系统内部的设备。但存储设备104除存储第三区块数据的功能以外,不具备参与区块链系统的共识、运行区块链系统的智能合约、存储区块链账本等维护区块链账本的功能。
本申请中各设备的功能在后续实施例中还会进一步进行详细阐述。下面将结合具体实施例阐述本申请的方案。
图2是本申请提供的区块链数据处理方法的示意性流程图。该方法可以应用在图1B所示系统中。该方法流程中,区块链账本中的区块数据可以被拆分后转移到区块链系统中的多个节点,也可以被转移到区块链系统外部的存储设备,具体步骤如下。
S201、第一节点101确定区块链账本中待转移的第一区块数据。
该第一区块数据满足预设转移条件,预设转移条件包含以下一项或多项:指定时间段内产生(参考时间戳)、区块高度值低于预设高度值、区块访问频率低于预设频率值、和/或区块数据安全要求低于预设安全要求等等。当预设转移条件包括多项条件时,多项条件之间可以是与的关系(多项条件都满足)也可以是或的关系(多项条件中至少一项满足)。
第一节点101周期性地检测区块链账本中是否有满足预设转移条件的区块数据,或者第一节点101在事件触发后去做检测,例如内存告警事件等。
另外,第一节点101还可以根据客户端发送的消息来确定待转移的第一区块数据,例如用户自行确定要转移第一区块数据时,通过客户端向区块链系统发出消息。
可选地,该第一区块数据是一个或多个区块的数据。当第一区块数据是一个区块的数据时,可以直接将该区块的标识符(如区块高度值)作为第一区块数据的标识符。当第一区块数据是多个区块的数据时,直接将该多个区块的标识符拼接起来作为第一区块数据的标识符,或者根据该多个区块的标识符生成第一区块数据的标识符。第一区块数据的标识符是用于标识第一区块数据的。具体地,该第一区块数据是连续的多个区块的数据,便于后期获取。
当然,也可能存在不连续的情况,例如区块高度值为H100-H103的区块数据达到了预设的区块高度值,但是其中,H101的安全要求级别为高,因而H101的区块数据不能被转移,从而H100、H102和H103的区块数据达到了预设转移条件。将H100、H102和H103这几个不连续的区块数据作为第一区块数据一起处理,那么在H100、H102和H103合成第一区块数据时,在一个区块数据结束/开始的位置插入某些特定字符是有好处的,以便于后期获取时分辨不同区块数据。该情况下,还可以对每个区块数据做单独的转移(例如分三次对H100、H102和H103中每个区块数据进行分别处理),即该第一区块数据仅包括一个区块数据。
另外,该第一区块数据还可以是区块中的部分数据(如某些交易数据,可通过交易标识符(Identity,ID)来标识)。该情况下,可以直接将该部分数据的标识符(如交易标识符)作为第一区块数据的标识符,或者将该部分数据所属区块的标识符作为第一区块数据的标识符。
S202、第一节点101触发区块链系统对于第一区块数据进行一致性校验。
具体地,通过共识机制来实现一致性校验,步骤如下:
S202a、第一节点101广播第一共识请求,该第一共识请求指示对于第一区块数据进行一致性校验。
该第一共识请求可以携带第一区块数据的标识符,以及第一区块数据的校验数据(如哈希值)。从而区块链系统中的参与此次共识的节点根据该第一区块数据的标识符从本地存储的区块链账本中找到对应区块数据,并计算该对应区块数据的校验数据,比较第一区块数据的校验数据与该对应区块数据的校验数据,若两者相同则确定校验成功,确定校验成功的节点在区块链网络中广播校验成功的通知消息。若两者不相同则确定校验失败,确定校验失败的节点在区块链网络中广播校验失败的通知消息或者不进行广播。具有共识服务功能的节点(如排序节点)统计接收到的校验成功的通知消息,从而判断是否达到共识成功的条件,并在区块链系统中广播共识结果。若达到共识成功的条件,排序节点广播共识成功消息。举个例子,共识成功的条件是校验成功的节点的个数达到预设值。若没有达到共识成功的条件,则排序节点广播共识失败消息。
应理解,该第一共识请求还可以不携带第一区块数据的标识符,则该第一共识请求触发对区块链账本的一致性校验。这里所提到的一致性校验也是通过共识机制来进行的,具体校验过程不再赘述。
S202b、第一节点101接收对于第一共识请求的共识成功消息。
第一节点101根据接收到的共识成功消息确定该第一区块数据是准确的,没有被篡改。进而第一节点101转移第一区块数据是安全的,可以避免对本身就不准确的区块数据进行转移而导致的安全隐患。若第一节点101接收的是共识失败消息,则该第一区块数据的可能被篡改了,第一节点101先向其他节点获取准确的数据,或者发出告警、并根据管理员的指令进行相应的处理以获取准确的数据。之后,第一节点101再转移第一区块数据,或者由其他节点来转移相应的区块数据。
应理解,由于区块链系统中各节点可能会周期性地对于区块链账本进行一致性校验,步骤S202是可选的。另外,第一共识请求、对于第一共识请求的共识成功消息是示例性的消息名称,例如第一共识请求也可以叫做一致性校验请求,本申请对此不做限定。
S203、第一节点101生成第一区块数据的数据包。
第一节点101将第一区块数据拆分为至少2个区块数据包。
作为一种可选的方式,区块数据包的大小预置为N。N为正整数,N的单位可以为字节、比特等等,并不限定。将第一区块数据的大小称为S1,其中S1和N的单位相同、或者S1和N的单位存在换算关系,S1为正整数。第一节点101判断S1是否能被N整除,当S1能被N整除时,第一节点101直接将第一区块数据拆分为等长(大小均为N)的区块数据包。当S1不能被N整除时,第一节点101先将第一区块数据补位,以使得补位后的第一区块数据的大小S2能被N整除,进而第一节点101将补位后的第一区块数据拆分为等长(大小均为N)的区块数据包。或者该情况下,在第一节点101拆分时,前几个区块数据包是等长(大小均为N)的,第一节点101将最后一个区块数据包补位以使得该最后一个区块数据包和其他区块数据包等长(大小也为N)。应理解,当S1和N的单位存在换算关系时,先对S1或者N进行单位换算,将两者单位统一后再进行整除。
作为一种可选的方式,第一节点101根据第一区块数据的大小S1设置区块数据包的大小N,例如将N设置为S1的因数,进而将第一区块数据拆分为等长(大小均为N)的区块数据包。
作为一种可选的方式,拆分的区块数据包的个数预置为M,M为大于等于2的整数。第一节点101判断S1是否能被M整除,当S1能被M整除时,第一节点101直接将第一区块数据拆分为M个等长的区块数据包。当S1不能被M整除时,第一节点101先将第一区块数据补位,以使得补位后的第一区块数据的大小S2能被M整除,进而第一节点101将补位后的第一区块数据拆分为M个等长的区块数据包。或者该情况下,在第一节点101拆分时,前(M-1)个区块数据包是等长的,第一节点101将最后一个区块数据包补位以使得该最后一个区块数据包和其他区块数据包等长。
第一节点101根据该至少2个区块数据包生成至少1个恢复数据包。恢复数据包是用于恢复区块数据包的。最常见的恢复数据包的生成方法是将该至少2个区块数据包进行复制(又可以叫做备份)从而为每个区块数据包生成对应的恢复数据包。但是该方法中至少1个恢复数据包的总数据量和至少2个区块数据包的总数据量大小是相同的(复制一份),或者至少1个恢复数据包的总数据量比至少2个区块数据包的总数据量更大(复制多份),因而占用了较大的存储空间。
作为另一种可选的方式,第一节点101根据该至少2个区块数据包计算以得到至少1个恢复数据包。具体计算方法可以有多种,例如对至少2个区块数据包进行异或运算以得到1个恢复数据包,该计算方式下生成了1个恢复数据包。其中,恢复数据包的总数据量小于该至少2个区块数据包的总数据量。再例如对至少2个区块数据包进行和运算以得到第一恢复数据包,将至少2个区块数据包分别乘以对应系数后再进行和运算,以得到第二恢复数据包,该计算方式下生成了2个恢复数据包。该计算方式下,当区块数据包的个数为2个时,恢复数据包的总数据量等于区块数据包的总数据量。但大多数情况下,区块数据包的个数是超过2个的,那么恢复数据包的总数据量小于区块数据包的总数据量。恢复数据包的总数据量较小,从而带来很多存储压力。
S204、第一节点101将生成的数据包发送至对应的第二节点102。
生成的数据包包括步骤S203中生成的至少2个区块数据包、至少1个恢复数据包。第一节点选取一定数量的第二节点102以将这些数据包转移到第二节点102。选取的方法有多种,例如随机选取。再例如,第一节点101根据区块链系统中各节点的性能信息选取第二节点102。其中,性能信息包括以下一项或多项:安全性、剩余存储空间、访问频率、中央处理单元(Central Processing Unit,CPU)占用率、或故障率等等。具体地,区块链系统中各节点的性能信息可以是从某个维护节点性能信息的节点(如领导节点)获取的,或者是由各节点周期性地广播而得到的等。第一节点101选取性能达到预设条件的第二节点102,如安全性高的安全节点等。另外,区块链系统中也许存在部分节点不具备存储转移的数据包的功能,那么第一节点101在具备存储转移的数据包的功能的节点中随机选取或者根据性能信息选取第二节点102。
可选地,第一节点101还可以通过共识机制来确定安全节点,并从确定的安全节点中选取第二节点102,即第二节点102是该确定的安全节点中的一个或多个节点。例如,第一节点101(或者其他区块链系统中的其他节点)广播共识请求,区块链系统中各节点接收该共识请求后,广播响应消息。各节点返回的响应消息是利用自身存储的私钥进行签名的。具有共识服务功能的节点(如排序节点)接收各节点的响应消息后,会利用公钥对响应消息进行解密以确定各节点的安全性。若对于某节点的响应消息解密失败,则该节点被确定为安全性低(恶意说谎节点);若对于某节点的响应消息解密成功,则该节点被确定为安全性高(安全节点)。该排序节点会在广播共识结果时携带恶意说谎节点的信息和/或安全节点的信息,从而第一节点101根据接收到的共识结果确定安全节点,并进一步从安全节点中选取第二节点102。作为一种实施方式,这里的共识请求具体可以是S202中的第一共识请求,则参与共识的节点还利用自身存储的私钥对校验成功或校验失败的通知消息进行签名,而排序节点不仅判断是否达到共识成功的条件,还判断参与共识的节点为安全节点还是恶意说谎节点,并在共识结果中携带恶意说谎节点的信息和/或安全节点的信息。作为另一种实施方式,这里的共识请求还可以是其他共识请求,例如第一节点101还广播用于验证安全性的共识请求,具体步骤类似,不再赘述。
应理解,区块链系统可以周期性地或者事件触发式地通过共识机制来确定区块链系统中各节点的安全性,从而来维护各节点的性能信息中的安全性。
理想的情况下,第一节点101为X个数据包选取X个第二节点102,从而第一节点101将每个数据包分别发送至1个第二节点102。其中,X为大于等于3的整数,且X个数据包即为上述生成的数据包。以X=3为例进行说明,则S204a、第一节点101向第二节点102-1发送数据包A;S204b、第一节点101向第二节点102-2发送数据包B;S204c、第一节点101向第二节点102-3发送数据包C。
也可能存在这样的情况:第一节点101为X个数据包选取Y个第二节点102(Y为小于X的正整数),从而第一节点101可能将多于1个的数据包发送至同一个第二节点102。该情况下一般是由于区块链系统的节点较少,性能达到预设条件的节点较少,或者具备存储转移的数据包的功能的节点较少等等。例如第一节点101将数据包A、数据包B都发送给了第二节点102-2,将数据包C发送给第二节点102-3。可选地,第一节点101还可以将自身确定为一个存储转移的数据包的节点,即第二节点102包含第一节点101。例如第一节点自身存储数据包A,并将数据包B发送给第二节点102-2、数据包C发送给第二节点102-3。
相应地,第二节点102接收并存储第一节点101发送的数据包,为便于描述,将第二节点102接收到的数据包称为第一数据包。该第一数据包为该第一区块数据的区块数据包和/或恢复数据包。例如,第二节点102-1接收并存储第一节点101发送的数据包A,则对于第二节点102-1,第一数据包为数据包A。
应理解,这里的存储并不是存储到区块链的账本中,即第一数据包并没有以区块的形式存储到区块链中。具体地,第二节点102将第一数据包存储到用于存储转移的数据包的存储空间中、或者第二节点102将第一数据包存储到除用于存储区块链账本的空间之外的其他存储空间中。
可选地,第二节点102存储第一数据包成功后,向第一节点101发送数据接收成功消息。进一步地,第二节点102还可以计算该第一数据包的校验数据(例如该第一数据包的哈希值),并向第一节点101发送该第一数据包的校验数据。从而第一节点101根据该第一数据包的校验数据来对该第一数据包进行校验,以判断第二节点102接收到的第一数据包是不是准确的。
S205、第一节点101记录数据包和第二节点102的第一对应关系。
第一对应关系描述的是第一区块数据的数据包与存储该数据包的第二节点102之间的对应关系。
可选地,第一对应关系具体为第一区块数据的数据包的标识符与第二节点102的标识符之间的对应关系。第一区块数据的数据包的标识符既可以标识第一区块数据,又可以标识其中的数据包。例如第一区块数据的数据包标识符分别为:H100A、H100B、H100C。其中,H100为第一区块数据的标识符,用于标识第一区块数据,而A、B、C为数据包的标识符,用于标识数据包在第一区块数据中的顺序(即具体为第一区块数据的哪个数据包),比如H100A标识的是第一区块数据中的第一个数据包、H100B标识的是第一区块数据中的第二个数据块,H100C标识的是第一区块数据中的第三个数据包,从而后期获取已转移的第一区块数据的时候能按顺序组合数据包以得到正确的第一区块数据。第二节点102的标识符是用于标识第二节点102的,具体为第二节点102的节点标识符(例如区块链系统中各节点都有分配好的节点标识符)、或者第二节点102的互联网协议(Internet Protocol,IP)地址。
可选地,第一对应关系具体为第一区块数据的标识符、数据包的标识符与第二节点102的标识符之间的对应关系。第一区块数据的标识符用于标识第一区块数据,具体可以是区块高度值或者交易标识符等(如S201中介绍的)。数据包的标识符用于标识某区块数据中的数据包,例如标识该数据包在该区块数据中的顺序。从而第一区块数据的标识符和数据包的标识符结合起来能够标识第一区块数据的数据包。第二节点102的标识符不再赘述。另外,数据包的标识符不是必要的,例如将多个第二节点102的标识符按数据包在区块数据中的顺序来记录,从而也能体现出某个第二节点102上存储的数据包是第一区块数据中的哪个数据包。例如记录的第一对应关系如表1,则表示H100的第一个数据包存储于Node02、H100的第二个数据包存储于Node08、H100的第三个数据包存储于Node09。
表1
H100 Node02 Node08 Node09
从上文描述可知,该第一区块数据的数据包包括区块数据包和恢复数据包。那么,可以通过另外的标识符来标识某个数据包是区块数据包还是恢复数据包,也可以通过数据包的标识符本身来区别区块数据包和恢复数据包,例如第一区块数据的数据包标识符分别为:H100A-1、H100B-1、H100C-2,则H100A-1、H100B-1标识的数据包为区块数据包,H100C-2标识的数据包为恢复数据包。或者,还可以将区块数据包与存储区块数据包的第二节点102之间的对应关系(简称为区块数据包存储的对应关系)、恢复数据包与存储恢复数据包的第二节点102之间的对应关系(简称为恢复数据包存储的对应关系)作为两类对应关系维护,那么上述第一对应关系包括区块数据包存储的对应关系和恢复数据包存储的对应关系。另外,若对于任意区块数据,恢复数据包的个数是不变的,例如为2个,则可以将恢复数据包排在区块数据包的后面,那么对于任意区块数据,顺序排在最后的两个数据包为恢复数据包,其他数据包为区块数据包,则不需要标识来区分。
应理解,步骤S205的执行顺序是不限定的,例如可以和S203同时执行、和S204同时执行、或者在S203之后执行等。
S206、第一节点101广播该第一对应关系。
第一节点101在区块链系统中广播该第一对应关系。相应地,区块链系统中各节点存储该第一对应关系。
作为一种可选的方式,区块链中具备存储转移的数据包的功能的节点(如第二节点102)存储该第一对应关系,从而当存储的数据包不可用时,可以根据第一对应关系获取其他数据包来恢复该不可用的数据包(具体参见S207的描述)。
作为一种可选的方式,区块链中具备获取转移的区块数据的功能的节点(如第三节点103)存储该第一对应关系,从而后期可以根据该第一对应关系获取第一区块数据。具体地,第三节点103将该第一对应关系存储到除用于存储区块链账本的空间之外的其他存储空间中,例如用于存储数据包和节点之间对应关系的空间。应理解,具备存储转移的数据包的功能的节点也可以同时具备获取转移的区块数据的功能。
应理解,步骤S206的执行顺序也是不限定的,在步骤S205之后执行即可。
S207、第一节点101生成第一区块数据的校验数据,和/或第一区块数据的数据包的校验数据。
具体地,第一节点101根据第一区块数据生成第一区块数据的校验数据(简称为第一校验数据)。第一校验数据用于对第一区块数据进行完整性校验。具体地,第一节点101计算第一区块数据的哈希值,该哈希值为第一校验数据。
第一节点101还可以根据第一区块数据的每个数据包(包括区块数据包、恢复数据包)分别生成每个数据包的校验数据(简称为第二校验数据)。第二校验数据用于对对应的数据包进行完整性校验。具体地,第一节点101计算数据包的哈希值,该哈希值为该数据包的第二校验数据。
应理解,步骤S207的执行顺序是不限定的,例如可以和S203-S206中任一步骤同时执行,或者在S203-S206中任一步骤之后执行等。
作为一种可选的方式,第一节点101在S203中生成每个数据包的校验数据,并且在S204中将数据包和该数据包的校验数据发送至对应的第二节点102。相应地,第二节点102接收并存储第一节点101发送的数据包以及该数据包的校验数据,即第一数据包和第一数据包的校验数据。例如,S204中,第二节点102-1接收并存储数据包A和数据包A的校验数据;第二节点102-2接收并存储数据包B和数据包B的校验数据;第二节点102-3接收并存储数据包C和数据包C的校验数据。
进一步地,第二节点102可以周期性地根据存储的第一数据包的校验数据对对应的第一数据包进行完整性校验,从而保证第二节点102存储的第一数据包的可靠性。当第二节点102对第一数据包的完整性校验失败时,第二节点102根据S206中存储的第一对应关系向对应的节点获取第一区块数据的其他数据包,根据该其他数据包恢复该第一数据包。这里的对应的节点指的是存储第一区块数据的其他数据包的节点,而第一区块数据的其他数据包指的是第一区块数据的区块数据包和恢复数据包中除第一数据包以外的数据包。具体地,第二节点102根据该第一对应关系向对应的节点请求第一区块数据的其他数据包,并接收对应的节点返回的第一区块数据的其他数据包。若第一数据包为第一区块数据的某个区块数据包,则第二节点102根据第一区块数据的恢复数据包和其他区块数据包重新生成该第一数据包,具体的生成方法可以参见图4所示实施例的S403的描述、或者图5所示实施例的S506的描述。若第一数据包为第一区块数据的某个恢复数据包,则第二节点102根据第一区块数据的区块数据包重新生成该第一数据包,具体的生成方法可以参见S203的描述、或者图3所示实施例的S304的描述。
这样便于及时发现不可用的数据包,并及时地恢复不可用的数据包,能够避免后期获取第一区块数据时才发现有不可用数据包而造成获取效率低或者无法获取的情况。例如第二节点102-1周期性地根据数据包A的校验数据对数据包A进行完整性校验,若校验失败(即数据包A不可用,如已被篡改或数据损坏等),则第二节点102-1根据第一对应关系向第二节点102-2、第二节点102-3获取第一区块数据的数据包B、数据包C。则第二节点102根据数据包B、数据包C重新生成数据包A(即恢复数据包A)。
S208、第一节点101广播校验数据(具体包括第一校验数据,和/或第二校验数据)。
具体地,第一节点101在区块链系统中广播该第一校验数据,和/或第二校验数据。
相应地,区块链系统中各节点存储该第一校验数据,和/或第二校验数据。可选地,区块链系统中具备存储转移的数据包的功能的节点(如第二节点102)存储该第一校验数据,和/或第二校验数据校验数据。其中第二校验数据包括第一数据包的校验数据。因而该情况下,第二节点102存储该第二校验数据后,也可以周期性地根据其中的第一数据包的校验数据对对应的第一数据包进行完整性校验,并在校验失败时对第一数据包进行恢复,从而保证第二节点102存储的第一数据包的可靠性,具体参见S207中的描述。可选地,区块链中具备获取转移的区块数据的功能的节点(如第三节点103)存储该校验数据,从而后期获取第一区块数据时,可以根据该校验数据对第一区块数据、和/或第一区块数据的数据包进行完整性校验。具体存储方法可以参见S206,与之类似,不再赘述。
作为一种实施方式,第一节点101还触发区块链系统将第一区块数据的校验数据(第一校验数据)、和/或第一区块数据的数据包的校验数据(第二校验数据)存储到区块链账本中。例如第一节点101向排序节点发送第一校验数据和/或第二校验数据,排序节点接收该第一校验数据和/或第二校验数据后,对其进行共识、排序操作,而后将其打包成区块,并广播出去,以使得区块链系统中的记账节点在自身存储的区块链账本中增加包含该第一校验数据和/或第二校验数据的区块。
应理解,步骤S208的执行顺序是不限定的,在步骤S207之后执行即可。例如S207在S206之前已执行,则S208可以和S206同时执行。
作为一种可选的方式,第一区块数据的校验数据(第一校验数据,和/或第二校验数据)可以和第一区块数据的第一对应关系携带在同一广播消息中。进一步地,第一节点101还在区块链系统中广播第一区块数据的大小S1。相应地,区块链系统中各节点存储该第一区块数据的大小S1,具体哪些节点存储以及如何存储参见存储第一区块数据的校验数据、或者存储第一区块数据的第一对应关系的描述,不再赘述。这样后期获取第一区块数据时能够识别哪些是补位的数据。作为一种可选的方式,第一区块数据的大小S1、第一区块数据的第一对应关系、以及第一区块数据的校验数据(第一校验数据,和/或第二校验数据)都可以携带在同一广播消息中。
S209、区块链系统删除区块链账本中的第一区块数据。
第一节点101删除自身存储的区块链账本中的第一区块数据。进一步地,第一节点101还触发区块链系统删除区块链账本中的第一区块数据。
作为一种实施方式,第一节点101广播删除请求,该删除请求指示删除区块链账本中的第一区块数据,从而区块链系统中的记账节点接收该删除请求后,删除自身存储的区块链账本中的第一区块数据。
作为一种实施方式,第一节点101通过共识机制来删除区块链账本中的第一区块数据。例如,该删除请求是共识请求。参与此次共识的节点接收该删除请求后,对该删除请求进行验证,验证该删除请求合法后广播验证成功的通知消息(即表示同意删除该第一区块数据)。具有共识服务功能的节点(如排序节点)统计接收到的验证成功的通知消息(关于删除请求的),从而判断是否达到共识成功的条件,若达到共识成功的条件,排序节点广播关于删除请求的共识成功消息。进而区块链系统中的记账节点接收该共识成功消息后删除区块链账本中的第一区块数据。
应理解,第一节点删除自身存储的第一区块数据和触发区块链系统删除第一区块数据的顺序是不限定的。例如,第一节点触发区块链系统删除第一区块数据之后,再删除自身存储的第一区块数据。另外,若第二节点102属于记账节点,则也会执行记账节点执行的操作,不再赘述。
作为一种可选的方式,在第一节点101删除自身存储的区块链账本中的第一区块数据、和/或触发区块链系统删除区块链账本中的第一区块数据之前,第一节点101先验证能够成功获取已转移的第一区块数据(即验证能够根据第一对应关系中区块数据包存储的对应关系成功获取第一区块数据),从而保证第一区块数据已转移成功,这样避免转移过程中出现问题但区块链账本中的数据也被删除了而导致的数据丢失。具体地,第一节点101根据第一区块数据的区块数据包存储的对应关系向对应的第二节点102请求区块数据包,并接收对应的第二节点102返回的区块数据包,并将接收的区块数据包组合成第二区块数据,当该第二区块数据与该第一区块数据一致(即相同)时,第一节点101确定成功获取该第一区块数据。应理解,若将区块数据包按顺序拼接后得到的数据大小大于第一区块数据的长度S1,第一节点101还根据S1截取该拼接后的数据以得到第二区块数据。本申请中提到的组合区块数据包都可以包含截取这个步骤,以下不再赘述。
作为一种可选的方式,在第一节点101删除自身存储的区块链账本中的第一区块数据、和/或触发区块链系统删除区块链账本中的第一区块数据之前,第一节点101触发区块链系统对于能够成功获取已转移的第一区块数据进行共识。具体地,第一节点101广播第二共识请求,该第二共识请求指示校验是否能够成功获取转移的第一区块数据,即请求校验是否能根据第一对应关系(具体为其中的区块数据包存储的对应关系)成功获取第一区块数据。从而,区块链系统中参与此次共识的节点接收该第二共识请求后,根据区块数据包存储的对应关系获取已转移的第一区块数据,并在获取成功时广播校验成功消息。
具体地,参与此次共识的节点具体是部分或者全部具备获取转移的区块数据的功能的节点。以第三节点103为一个参与此次共识的节点为例进行说明,其他节点也是类似的。第三节点103根据区块数据包存储的对应关系从第二节点102获取对应的区块数据包,并将返回的区块数据包组合成第二区块数据,计算该第二区块数据的校验数据,将该第二区块数据的校验数据与第一区块数据的校验数据进行比较,当两者相同时,第三节点103确定成功获取该第一区块数据,并广播校验成功消息。应理解,若第三节点103还存储有区块链账本,则第三节点103在得到该第二区块数据后,还可以直接将该第二区块数据与存储的区块链账本中的第一区块数据比较,当两者相同时,则确定成功获取该第一区块数据,并广播校验成功消息。
当然,若第二节点102具备获取转移的区块数据的功能,那么也可以参与此次共识,执行的方法与上述第三节点103类似。以第二节点102-1为例进行说明。第二节点102-1根据第一对应关系中区块数据包存储的对应关系从其他第二节点(即第二节点102-2、102-3)分别获取第一区块数据的其他区块数据包;将自身存储的第一区块数据包和该第一区块数据的其他区块数据包组合成第二区块数据;计算该第二区块数据的校验数据,将该第二区块数据的校验数据与第一区块数据的校验数据进行比较,当两者相同时,第二节点102-1确定成功获取该第一区块数据,并广播校验成功消息。
应理解,若参与此次共识的节点已存储有第一对应关系、第一区块数据的校验数据,则各节点用自身存储的第一对应关系、第一区块数据的校验数据来进行上述校验即可。作为另一种可选的方式,第二共识请求携带第一对应关系、第一区块数据的校验数据,从而各节点可以用接收到的第二共识请求携带的第一对应关系、第一区块数据的校验数据来进行上述校验。在该情况下,S206、S208可以在本步骤中执行,即第一对应关系、第一区块数据的校验数据(第一校验数据)、第一区块数据的数据包的校验数据(第二校验数据)都可以携带在第二共识请求中被广播到区块链系统中。本申请对此不做限定。
具有共识服务功能的节点(如排序节点)统计接收到的校验成功消息(关于第二共识请求的),从而判断是否达到共识成功的条件,若达到共识成功的条件,排序节点广播对于第二共识请求的共识成功消息。接下来也包括至少两种方式:
方式一:该对于第二共识请求的共识成功消息指示删除区块链中的第一区块数据。则区块链系统中的各记账节点接收该对于第二共识请求的共识成功消息后,删除自身存储的区块链账本中的第一区块数据。该删除操作具体是由智能合约控制的,例如该共识成功消息触发智能合约的状态判断,并且根据该共识成功消息判断当前状态满足删除区块链账本中的区块数据的条件,从而删除其中的第一区块数据。该情况下,删除操作也可以认为是由第二共识请求触发的,因而上述第二共识请求还可以用于触发删除区块链账本中的第一区块数据。可选地,各记账节点还将第一校验数据、和/或第二校验数据存储到区块链账本中。应理解,该存储操作也是由智能合约控制的,不再赘述。
方式二:第一节点101接收该对于第二共识请求的共识成功消息,从而确定对于成功获取已转移的第一区块数据的共识成功。进一步地,第一节点101触发区块链系统删除区块链账本中的第一区块数据(具体内容参见上文,例如第一节点101广播删除请求),从而区块链系统中的各记账节点删除自身存储的区块链账本中的第一区块数据。可选地,第一节点101还触发区块链系统将第一校验数据、和/或第二校验数据存储到区块链账本。
应理解,第二共识请求、删除请求是示例性的消息名称,例如第二共识请求也可以叫做校验转移数据的指示消息,删除请求可以叫做删除指示消息等,本申请对此不做限定。
本申请实施例中,将区块链账本中的区块数据拆分成区块数据包并转移到多个节点,由该多个节点来存储区块数据包,从而减轻了区块链账本的存储压力。另外,本申请实施例还利用了恢复数据包,从而可以容忍转移到一些节点上的区块数据包不可用(如损坏、丢失或者被篡改),在发生区块数据包不可用时恢复数据包可用于恢复不可用的区块数据包,从而提高了区块数据转移的可靠性和安全性。例如区块链系统中10个记账节点都存储有一份完整的区块链账本,将其中不常用的区块数据H100(一份H100占用内存3兆字节(Mega Byte,MB))拆分成3个区块数据包后转移到3个节点中存储,从而10个记账节点中被H100占用的30MB内存得以释放,从而整个系统减少了大约27MB的存储空间的占用。而恢复数据包的内存占用取决于生成恢复数据包的方法,具体可以参见S203的描述。以恢复数据包的数据量占区块数据的1/3为例来说明,则转移的区块数据包和恢复数据包共占用内存4MB,则整个系统减少了大约26MB的存储空间的占用。当然,对于记账节点自身来说,被H100占用的3MB内存得以释放,也减少了存储空间的占用。
本申请中,作为一种实施例,区块链账本中的部分区块数据(第一区块数据)可以被转移到区块链系统内部的多个节点(第二节点102)中去,而区块链账本中还有部分区块数据(第三区块数据)可以被转移到区块链系统外部的存储设备104中。对于第一区块数据的处理,具体参见步骤S201-S209;而对于第三区块数据的处理,具体步骤如下:
S210、第一节点101确定区块链账本中待转移的第三区块数据。
对于区块链系统来说,存储设备104是区块链系统外部的设备,因而存储设备104的安全性低于区块链系统内部的节点。因而被转移到存储设备104的第三区块数据的安全要求低于被转移到区块链系统内部节点的第一区块数据的安全要求。
具体地,S201中,第一节点101会周期性地或者事件触发性地检测是否有满足预设转移条件的区块数据。那么在本申请实施例中,第一节点101依然做这样的检测,并且第一区块数据满足第一预设转移条件,从而第一区块数据被转移到区块链系统内部的节点(即第二节点102);第三区块数据满足第二预设转移条件,从而第三区块数据被转移到存储设备104。第一预设转移条件和第二预设转移条件中的安全要求不同。例如第一预设转移条件:区块数据安全要求在第一预设安全要求和第二预设安全要求之间;第二预设转移条件:区块数据安全要求低于第二预设安全要求。其中,第二预设安全要求低于第一预设安全要求。但第一预设转移条件和第二预设转移条件中其他条件可以是相同的,也可以是不同的。相同的情况就不再赘述,这里简单介绍不同的情况,例如第一预设转移条件:区块高度值在第一预设高度值与第二预设高度值之间、区块访问频率在第一预设频率值与第二预设频率值之间等等;第二预设转移条件:区块高度值低于第二预设高度值、区块访问频率低于第二预设频率值等等。其中,第二预设高度值低于第一预设高度值,第二预设频率值低于第一预设频率值。
另外,第一节点101还可以根据客户端发送的消息来确定待转移的第三区块数据,例如用户自行确定要将第三区块数据转移到存储设备104时,通过客户端向区块链系统发出消息。
该第三区块数据可以是一个或多个区块的数据,也可以是区块中的部分数据,与第一区块数据类似,具体参见S201,这里不再赘述。
S211、第一节点101将第三区块数据发送至存储设备104。
存储设备104接收该第三区块数据后,存储该第三区块数据。作为一种可选方式,存储设备104可以自行对该第三区块数据进行备份,从而存储到存储设备104的多个存储节点中以提高数据可靠性。
S212、第一节点101记录第三区块数据和存储设备104的第二对应关系。
第二对应关系描述的是第三区块数据与存储该第三区块数据的存储设备104之间的对应关系。具体地,第二对应关系为第三区块数据的标识符与存储设备104的标识符之间的对应关系。存储设备104的标识符具体可以是存储设备104的IP地址。
第一节点101还可以根据第三区块数据生成该第三区块数据的校验数据(如第三区块数据的哈希值)。
S213、第一节点101广播该第二对应关系。
第一节点101在区块链系统中广播该第二对应关系。相应地,区块链系统中各节点存储该第一对应关系。作为一种可选的方式,区块链系统中具备获取转移的区块数据的功能的节点(如第三节点103)存储该第二对应关系,从而后期可以根据该第二对应关系获取第一区块数据。具体地,第三节点103将该第二对应关系存储到除用于存储区块链账本的空间之外的其他存储空间中。
第一节点101还可以在区块链系统中广播该第三区块数据的校验数据。相应地,区块链系统中各节点存储该第三区块数据的校验数据。作为一种可选的方式,区块链系统中具备获取转移的区块数据的功能的节点存储该第三区块数据的校验数据,从而后期可以根据该校验数据来验证从存储设备104获取的第三区块数据是否准确。
S214、区块链系统删除区块链账本中的第三区块数据。
第一节点101删除自身存储的区块链账本中的第三区块数据。
进一步地,第一节点101还触发区块链系统删除区块链账本中的第三区块数据。具体地,第一节点101通过共识机制来删除区块链账本中的第三区块数据。可选地,第一节点101还可以通过共识机制将该第三区块数据的校验数据存储到区块链账本中。具体方法参见S209,方法类似,不再赘述。
本申请实施例中,将安全要求较高的第一区块数据转移到区块链系统内部的节点,安全要求不高的第三区块数据转移到区块链系统外部的存储设备104,保证了转移安全要求较高的区块数据的安全性,并且进一步缓解了区块链系统的存储压力、提高了区块链系统的运行效率。
为使本申请中图2所示实施例的方案更清楚,如图3所示,以一个例子来具体介绍图2所示实施例的方案。该方法包括如下步骤:
S301、第一节点101确定区块链账本中待转移的区块数据D。
第一节点101周期性地检测存储的区块链账本中是否有满足预设转移条件的区块数据。预设转移条件为:区块访问频率低于10次/1周。有一段连续的区块H001至H010的区块访问频率为0次/1周。因而第一节点101将该区块H001-H010的数据作为待转移的区块数据D(即S201中的第一区块数据)。将该区块数据D标记为H001-010,即该区块数据D的标识符为H001-010。
应理解,S301是对S201的示例性描述,S301与S201中的描述内容可以相互参考。
S302、第一节点101判断区块数据D的大小S1是否能被拆分的数据包的个数M整除。
其中,该区块数据D的大小S1为100B(字节)。拆分的数据包的个数M预置为3,则该情况下,S1不能被M整除。因而将区块数据D补位成区块数据包D’,以使得区块数据包D’的大小S2能被M整除。例如在区块数据D之后补2B的“1”,则区块数据包D’的大小S2为102B。
S303、第一节点101将区块数据包D’拆分为M个区块数据包。
仍然以M=3为例,则第一节点101将区块数据包D’拆分为大小相同的三个区块数据包E1(大小为34B)、E2(大小为34B)和E3(大小为34B)。
应理解,若S1能被M整除,则不需要补位,从而第一节点101将区块数据包D拆分为M个区块数据包。
S304、第一节点101根据M个区块数据包计算得到L个恢复数据包。
生成恢复数据包的方法有多种,以下举两个例子说明:
1)当L=1时(该情况下,最多允许1个区块数据包不可用),通过以下公式计算恢复数据包P1
P1=E1 XOR E2XOR E3
其中,XOR表示异或运算。
2)当L=2(该情况下,最多允许2个区块数据包不可用)时,通过以下公式计算恢复数据包P1、P2
P1=E1+E2+E3
P2=E1+2*E2+3*E3
其中,“+”表示和运算,“*”表示乘运算。
本申请实施例中以下步骤以L=2的情况为例,进行描述。其他情况也是类似的。
应理解,S302-S304是对S203的示例性描述,S302-S304与S203的描述内容可以相互参考。
S305、第一节点101生成区块数据D的校验数据、区块数据包的校验数据、以及恢复数据包的校验数据。
第一节点101计算得到区块数据D的哈希值H0(bfe7h),则H0为区块数据D的校验数据;第一节点101分别计算得到区块数据包E1的哈希值HE1(afe3k)、区块数据包E2的哈希值HE2(3e4gh)、区块数据包E3的哈希值HE3(bfe7h),则HE1、HE2、HE3分别为区块数据包E1、区块数据包E2、区块数据包E3的校验数据;第一节点101分别计算得到恢复数据包P1的哈希值HP1(da3sd)、恢复数据包P2的哈希值HP2(xcz5y),则HP1、HP2分别为恢复数据包P1、恢复数据包P2的校验数据。
应理解,S305是对S207的示例性描述,S305与S207的描述内容可以相互参考。
S306、第一节点101将区块数据包、恢复数据包发送至多个第二节点102,并记录数据包与第二节点102之间的第一对应关系。
第一节点101随机选取区块链系统中具备存储转移的数据包的功能的5个节点(即第二节点102-1、102-2、102-3、102-4、102-5),以将区块数据包、恢复数据包发送至这5个节点。
第一节点101记录区块数据D的数据包与发送的节点的第一对应关系:{H001-010,[E1,10.186.53.224(102-1)],[E2,10.186.53.180(102-2)],[E3,15.10.186.131(102-3)],[P1,14.10.186.53(102-4)],[P2,10.186.53.19(102-5)]}。
第一节点101根据这5个第二节点的IP地址将区块数据包E1、E2、E3,以及恢复数据包P1、P2发送至对应的节点。例如第一节点101向IP地址为10.186.53.224的第二节点102-1发送区块数据包E1,向IP地址为10.186.53.180的第二节点102-2发送区块数据包E2等等。
这5个第二节点中每个节点接收到数据包后,存储接收到的数据包,例如将接收到的数据包存储于用于存储转移的数据包的存储空间。存储成功后,每个第二节点返回数据接收成功消息。
应理解,S305和S306没有执行顺序的限定。并且S306是对S204、S205的示例性描述,S306与S204、S205的描述内容可以相互参考。
S307、第一节点101在区块链系统中广播区块数据D的大小S1(100B),区块数据D的校验数据H0(bfe7h),区块数据包的校验数据HE1(afe3k)、HE2(3e4gh)、HE3(bfe7h),恢复数据包的校验数据HP1(da3sd)、HP2(xcz5y),和第一对应关系。
相应地,区块链系统中各节点存储接收到的上述信息,如S1,H0,HE1、HE2、HE3,HP1、HP2,和第一对应关系。作为一种可选的方式,具备存储转移的区块数据的功能的节点(如第二节点102),和/或具备获取转移的区块数据的功能的节点(如第三节点103)存储上述信息。
应理解,S307是对S206、S208的示例性描述,S307与S206、S208的描述内容可以相互参考。
S308、第一节点101删除区块链账本中的区块数据D。
第一节点101通过共识机制触发删除区块链账本中的区块数据D。具体地,第一节点101广播共识请求,该共识请求携带区块标识符H001、H002、……H010,该共识请求还携带删除区块数据的指示信息。区块链系统中参与此次共识的节点验证该共识请求合法后广播验证成功的通知消息。具有共识服务功能的节点(如排序节点)统计接收到的验证成功的通知消息,从而判断是否达到共识成功的条件,若达到共识成功的条件,排序节点广播共识成功消息。进而区块链系统中存储区块链账本的节点(包括第一节点101)接收该共识成功消息后,将自身存储的区块数据D删除。
作为一种可选的方式,第一节点101还通过共识机制将区块数据D的校验数据H0,区块数据包的校验数据HE1、HE2、HE3,恢复数据包的校验数据HP1、HP2存储到区块链账本中。从而区块链系统中存储区块链账本的节点都在区块链账本中添加这些校验数据。
应理解,S308是对S209的示例性描述,S308与S209的描述内容可以相互参考。
图4是本申请提供的区块链数据处理方法的示意性流程图。该方法可以应用在图1B所示系统中。该方法流程中,已经被转移的区块数据是可以获取的,具体步骤如下。
S401、第三节点103确定待获取的第一区块数据。
第三节点103是具备获取转移的区块数据的功能的节点。作为一种可选的方式,第三节点103接收客户端发送的数据请求,该数据请求携带交易ID。从而第三节点103接收该数据请求后,判断该交易ID标识的交易数据是否已经被转移。示例性地,第三节点103先确定该交易ID标识的交易数据所属的区块,若区块链账本中包含该区块的数据,则第三节点103直接从区块链账本中读取所需的交易数据即可。若区块链账本中没有该区块的数据,或者已转移的区块的标识符包含该区块的标识符,则第三节点103确定该区块的数据已经被转移。
从图2所示的实施例可知,一次转移的区块数据可以是一个或多个区块的数据,也可以是区块中的部分数据。而该交易ID标识的交易数据可以是属于一个区块的,也可以是属于多个连续区块的。因而该交易数据可能是一次转移的区块数据中的部分或者全部数据。即使该交易数据只是部分数据,由于一次转移的区块数据被拆分成多个区块数据包,在读取该部分数据前,应先获取一次转移的区块数据。另外,该交易数据也可能是多次转移的区块数据中的部分或者全部数据,但是获取多次转移的区块数据的方法是类似的,因而本申请实施例以获取一次转移的区块数据为例来进行说明。为便于描述,本申请实施例中,将一次转移的区块数据称为第一区块数据,并且待获取的第一区块数据为该交易数据对应的第一区块数据。
作为另一种可选的方式,区块链系统中不具备获取转移的区块数据的功能的节点(简称为第四节点)接收客户端发送的数据请求,该数据请求携带交易ID。第四节点接收该数据请求后,确定该交易标识符标识的交易数据是否已经被转移。若该交易数据没有被转移,则第四节点直接从区块链账本中读取即可。若该交易数据已经被转移,则第四节点向其他具备读取转移的区块数据的功能的节点(如第三节点103)请求获取该交易数据或者该交易数据对应的第一区块数据,例如向第三节点103发送携带该交易标识符或者该第一区块数据的标识符的数据请求。具体地,第四节点存储有具备读取转移的区块数据的功能的多个节点的标识符(如IP地址),从而第四节点在该多个节点中选取一个节点(本申请中以选取第三节点103为例进行说明)以向该节点发送数据请求。或者第四节点存储有第三节点103的标识符,且第四节点被配置为在需要获取已转移的区块数据时向第三节点103发送数据请求。进而,第三节点103根据第四节点发送的该数据请求确定待获取的第一区块数据。
S402、第三节点103根据第一对应关系从第二节点102获取第一区块数据的数据包。
第三节点103根据第一区块数据的标识符确定第一区块数据的第一对应关系。其中,第一对应关系描述的是第一区块数据的数据包与存储该数据包的第二节点102之间的对应关系。具体可以参见图2所示实施例S205的描述。具体地,第三节点103可能存储有多个已转移的区块数据的对应关系。其中,对于某一已转移的区块数据,它的对应关系具体指的是该区块数据的数据包与存储该数据包的节点之间的对应关系。第三节点103根据第一区块数据的标识符从存储的多个已转移的区块数据的对应关系中查找到第一区块数据的第一对应关系。或者第三节点103可以向其他节点(如第一节点101)获取该第一区块数据的第一对应关系。
进一步地,第三节点103根据第一区块数据的第一对应关系向第二节点102获取对应的数据包。具体地,第三节点103根据第一区块数据的第一对应关系确定第一区块数据的数据包存储在哪些节点中,进而分别向这些节点获取对应的数据包。例如第一对应关系中,H100的数据包H100A存储于第二节点102-1,数据包H100B存储于第二节点102-2,数据包H100C存储于第二节点102-3;从而第三节点103向第二节点102-1获取数据包H100A,第三节点103向第二节点102-2获取数据包H100B,第三节点103向第二节点102-3获取数据包H100C。
进一步地,第三节点103判断第一区块数据的区块数据包是否都接收到了。若都接收到了则继续执行S403、或者S404。若存在至少1个区块数据包未接收到,第三节点103可以等待预置时间以接收该至少1个区块数据包,或者第三节点103还再次向对应的第二节点获取该至少1个区块数据包。若超过预置时间或者获取次数超过预设次数,但是仍然没有接收到该至少1个区块数据包,则第三节点103确定该至少1个区块数据包丢失。即该情况下,第一区块数据的区块数据包中存在至少1个区块数据包不可用(具体为数据丢失)。则第三节点103根据第一区块数据的恢复数据包以及其他可用的区块数据包恢复该至少1个不可用的区块数据包,从而得到对应的至少1个恢复的区块数据包。
应理解,第三节点103可以根据第一对应关系获取第一区块数据的区块数据包和恢复数据包,从而在存在不可用的区块数据包时,直接利用已获取的恢复数据包来进行恢复不可用的区块数据包。或者,第三节点103可以先根据第一对应关系中区块数据包存储的对应关系获取第一区块数据的区块数据包,当存在不可用的区块数据包时,再根据第一对应关系中恢复数据包存储的对应关系获取第一区块数据的恢复数据包。当不存在不可用的区块数据包时(即区块数据包都是可用的),则第三节点103可以不获取恢复数据包。本申请实施例对此不做限定。
S403、第三节点103根据第一区块数据的数据包的校验数据(第二校验数据)对获取的第一区块数据的数据包进行完整性校验。
第三节点103存储有第一区块数据的数据包的校验数据(第二校验数据)。
对于获取的第一区块数据的任一数据包,第三节点103根据获取的该数据包计算以得到获取的该数据包的校验数据(如哈希值),将该计算得到的校验数据和存储的该数据包的校验数据比较,如果两者相同,则完整性校验成功,如果两者不相同,则完整性校验失败。
若第一区块数据的区块数据包的完整性校验都成功了,则继续执行S404。若存在至少1个区块数据包完整性校验失败,则该至少1个区块数据包不可用(具体为数据被篡改、或者数据损坏等)。则第三节点103根据第一区块数据的恢复数据包以及可用的区块数据包恢复该至少1个不可用的区块数据包,从而得到对应的至少1个恢复的区块数据包。
应理解,不可用的区块数据包包括S402中丢失的区块数据包,和/或完整性校验失败的区块数据包。作为一种可选的方式,第三节点103在S402中可以先不恢复丢失的区块数据包,而在S403中完整性校验后,再恢复不可用的区块数据包(包括丢失的区块数据包和完整性校验失败的区块数据包)。
另外,当第一区块数据的不可用的区块数据包较多时,利用恢复数据包也无法恢复这些不可用的区块数据包,则第三节点103获取该第一区块数据失败。例如第一区块数据有1个恢复数据包(如S203中对至少2个区块数据包进行异或运算以得到1个恢复数据包),则能够恢复的不可用区块数据包最多为1个,当第一区块数据的不可用的区块数据包超过1个时,则获取该第一区块数据失败;例如第一区块数据有2个恢复数据包(如S203中对至少2个区块数据包进行和运算以得到第一恢复数据包,将至少2个区块数据包分别乘以对应系数后再进行和运算,以得到第二恢复数据包),则能够恢复的不可用区块数据包最多为2个,当第一区块数据的不可用的区块数据包超过2个时,则获取该第一区块数据失败。
S404、第三节点103组合第一区块数据的区块数据包以得到第一区块数据。
具体地,第三节点103将第一区块数据的区块数据包按顺序拼接起来。第三节点103还存储有第一区块数据的大小S1,第一区块数据的大小S1主要用于判断拼接后的数据是否包含补位的数据的。若拼接后得到的数据大小大于第一区块数据的大小S1,则拼接后的数据包含补位的数据,第三节点103还根据S1截取该拼接后的数据以得到第一区块数据。若拼接后得到的数据大小等于第一区块数据的大小S1,则拼接后的数据不包含补位的数据,即为第一区块数据。
其中,第一区块数据的区块数据包是S402中从第二节点102获取的区块数据包。或者第一区块数据的区块数据包包括S403或S404中的恢复的区块数据包,以及可用的区块数据包。
应理解,区块数据包的拼接顺序可以是基于区块数据包的标识符来确定的,也可以是基于第一对应关系来确定的,具体可以参见图2所示实施例中S205的描述,这里不再赘述。
第三节点103还存储有第一区块数据的校验数据(第一校验数据)。进一步地,第三节点103根据存储的第一校验数据对第一区块数据进行完整性校验,并根据完整性校验的结果确定是否成功获取该第一区块数据。具体地,第三节点103计算该第一区块数据的校验数据(如哈希值),将该计算得到的该第一区块数据的校验数据和存储的第一校验数据比较,如果两者相同,则完整性校验成功,第三节点103成功获取该第一区块数据;如果两者不相同,则完整性校验失败,第三节点103获取该第一区块数据失败。
应理解,由于第三节点103还可以对第一区块数据进行完整性校验,因而S403是可选的。例如S404中第三节点103对第一区块数据完整性校验成功,则S403不执行。若S404中第三节点103对第一区块数据完整性校验失败,再执行S403以确定不可用的区块数据包。
进一步地,若第三节点103成功获取该第一区块数据,第三节点103将该第一区块数据返回给第四节点。或者第三节点103从该第一区块数据读取被请求的交易数据,并将该交易数据返回给客户端或者第四节点。若第三节点103获取该第一区块数据失败,则向客户端或者第四节点返回失败通知消息以通知客户端或者第四节点数据获取失败。
本申请实施例中,被转移的区块数据仍能够被获取,保证了转移数据的可用性。并且,恢复数据包还可以用于恢复不可用的区块数据包,从而能够容忍转移到一些节点上的区块数据包不可用,提高了获取转移数据的成功率,从而提高了转移数据的可靠性。
作为一种实施例,区块链账本中的部分区块数据被转移到区块链系统外部的存储设备104中,相应地,区块链系统中的节点还可以从存储设备104获取转移的区块数据。具体地,步骤如下:
S405、第三节点103确定待获取的第三区块数据。
第三节点103接收来自客户端或者区块链系统中其他节点对于某区块数据的数据请求,则判断请求的区块数据是否已经被转移,和/或被转移到哪里了。
具体地,S401中第三节点103确定请求的区块数据已被转移,S402中,第三节点103根据存储的第一对应关系确定请求的区块数据被转移至第二节点102,且第三节点103执行S402-404。具体参见上文描述,不再赘述。作为另一种可选的情况,第三节点103根据第三区块数据的标识符以及存储的第二对应关系确定请求的区块数据已被转移至存储设备104。为便于描述,本申请实施例中,将该已被转移至存储设备104的区块数据称为第三区块数据。其中,第二对应关系描述的是第三区块数据与存储该第三区块数据的存储设备104之间的对应关系。具体参见S212的描述,这里不再赘述。
S406、第三节点103从存储设备104获取第三区块数据。
具体地,第三节点103根据该第二对应关系从存储设备104获取第三区块数据。例如第二对应关系为第三区块数据的标识符与存储设备104的标识符(如存储设备104的IP地址)之间的对应关系。第三节点103根据第三区块数据的标识符和第二对应关系确定对应的存储设备104的标识符,进而根据该存储设备104的标识符向存储设备104发送携带第三区块数据的标识符的数据请求消息。相应地,存储设备104向第三节点103返回第三区块数据。
进一步地,第三节点103接收该第三区块数据后,还可以根据存储的第三区块数据的校验数据对该第三区块数据进行完整性校验。若校验成功,第三节点103成功获取该第三区块数据,则第三节点103还向该客户端或者该区块链系统中其他节点返回该第三区块数据。若校验失败,第三节点103获取该第三区块数据失败,则第三节点103还向该客户端或者该区块链系统中其他节点返回失败通知消息。
本申请实施例中,无论是被转移至区块链系统内部多个节点(第二节点102)的区块数据,还是被转移到存储设备104的区块数据,都能够被区块链系统中的节点获取,因而保证了转移数据的可用性。
为使本申请中图4所示实施例的方案更清楚,如图5所示,以一个例子来具体介绍图4所示实施例的方案。该方法包括如下步骤:
S501、区块链系统中第四节点接收客户端发送的携带交易ID的数据请求。
具体地,客户端向第四节点发送携带交易ID(bbac5ca)的数据请求。第四节点接收该数据请求后,确定交易ID对应的交易数据存储于区块H002中(即交易ID(bbac5ca)所属区块为区块H002)。
S502、第四节点判断区块H002是否已被转移。
第四节点在存储的区块链账本中查找区块H002,从而判断区块H002是否已被转移。若区块链账本中有区块H002的数据,则区块H002未被转移,进而第四节点直接从区块H002读取交易ID对应的数据。接下来直接执行步骤S510即可。
若区块链账本中没有区块H002的数据,则区块H002已被转移。该第四节点不具备获取转移的区块数据的功能,且该第四节点存储有具备获取转移区块数据功能的节点的标识符。从而该第四节点从存储的这些节点中选取一个节点以向该节点发送数据请求。具体地,第四节点可以根据各节点的性能信息选取该节点。本申请中以选取第三节点103为例进行说明,因此第四节点根据存储的第三节点103的标识符将该数据请求转发给第三节点103。
S503、第三节点103根据区块H002所属的区块数据D的第一对应关系中区块数据包存储的对应关系获取区块数据包E1至EM
第三节点103接收该数据请求后,确定区块H002所在的被转移的区块数据为H001-010标识的区块数据D(即S401中的第一区块数据)。进一步地,第三节点103根据区块数据D的第一对应关系中区块数据包存储的对应关系从各第二节点102获取对应的区块数据包。该第一对应关系描述的是区块数据D的数据包与存储该数据包的节点之间的对应关系。例如第一对应关系为:{H001-010,[E1,10.186.53.224(102-1)],[E2,10.186.53.180(102-2)],[E3,15.10.186.131(102-3)],[P1,14.10.186.53(102-4)],[P2,10.186.53.19(102-5)]}。则第三节点103分别向IP地址为10.186.53.224的第二节点102-1获取区块数据包E1,向IP地址为10.186.53.180的第二节点102-2获取区块数据包E2,向IP地址为15.10.186.131的第二节点102-3获取区块数据包E3。相应地,第二节点102-1、102-2、102-3分别向第三节点103发送对应的区块数据包E1、E2、E3
应理解,S501-S503是对S401-S402的示例性描述,S501-S503与S401-S402中的描述内容可以相互参考。
S504、第三节点103根据区块数据包的校验数据对对应的区块数据包进行校验。
第三节点103接收到区块数据包E1、E2、E3后,计算每个区块数据包的哈希值,然后将存储的HE1、HE2、HE3分别与计算得到的对应区块数据包的哈希值进行比较,以判断对各区块数据包的校验是否成功。对于任意一个区块数据包,若存储的校验数据和计算得到的哈希值相同,则对于该区块数据包的校验成功,接下来执行步骤S507即可。若存储的校验数据和计算得到的哈希值不同,则对于该区块数据包的校验失败。校验失败的区块数据包又可以叫做不可用的区块数据包。第三节点103进一步判断不可用的区块数据包的个数是否小于等于L,若不可用的区块数据包的个数大于L,则无法恢复不可用的区块数据包,即获取区块数据D失败。若不可用的区块数据包的个数小于等于L,则不可用的区块数据包能够被恢复,进而第三节点103获取恢复数据包来恢复不可用的区块数据包。
应理解,S504是对S403的示例性描述,S504与S403中的描述内容可以相互参考。
S505、第三节点103根据区块数据D的第一对应关系中恢复数据包存储的对应关系获取恢复数据包P1至PL
依然以S503中的第一对应关系为例进行说明,则第三节点103分别向IP地址为14.10.186.53的第二节点102-4获取恢复数据包P1,向IP地址为10.186.53.19的第二节点102-5获取恢复数据包P2。相应地,第二节点102-4、102-5分别向第三节点103发送对应的恢复数据包P1、P2
应理解,S505是对S402的示例性描述,S505与S402中的描述内容可以相互参考。
S506、第三节点103根据恢复数据包对校验失败的区块数据包进行恢复。
例如当L=1时,S504中第三节点103计算得到的区块数据包E1的哈希值为afe3k,区块数据包E2的哈希值为3e4gh,区块数据包E3的哈希值为jghj5;而HE1的值为afe3k、HE2的值为3e4gh、HE3的值为bfe7h。因而经过校验第三节点103确定区块数据包E1、E2可用,区块数据包E3不可用。由于不可用的区块数据包个数为1,等于L,因而该不可用的区块数据包E3是可以恢复的。第三节点103通过以下公式恢复该区块数据包E3
E3=E1 XOR E2XOR P1
其中,XOR表示异或运算。
再例如当L=2时,S504中第三节点103计算得到的区块数据包E1的哈希值为afe3k,区块数据包E2的哈希值为3e4g0,区块数据包E3的哈希值为jghj5;而HE1的值为afe3k、HE2的值为3e4gh、HE3的值为bfe7h。因而经过校验第三节点103确定区块数据包E1可用,区块数据包E2、E3不可用。由于不可用的区块数据包个数为2,等于L,因而该不可用的区块数据包E2、E3是可以恢复的。第三节点103通过求解以下方程来恢复该区块数据包E2、E3
Figure BDA0002548551740000271
应理解,恢复不可用区块数据包的方法有多种,这里列举的两种恢复不可用区块数据包与图3所示实施例中两种生成恢复数据包的方法(具体参见S304)是相对应的。
应理解,S506是对S402、S403的示例性描述,S505与S402、S403中的描述内容可以相互参考。
S507、第三节点103组合区块数据包E1至EM以得到区块数据D。
具体地,第三节点103拼接区块数据包E1至EM以得到区块数据D’(大小S2为102B),并根据区块数据D的大小S1(100B)截取该区块数据D’以得到区块数据D。
应理解,这里的区块数据包是可用的区块数据包,例如可用区块数据包E1,以及S506中恢复后得到的区块数据包E2、E3
S508、第三节点103根据区块数据D的校验数据H0对区块数据D进行校验。
第三节点103计算区块数据D的哈希值,然后将存储的H0与计算得到的区块数据D的哈希值进行比较,以判断对区块数据D的校验是否成功。若两者不相同,则校验失败,即获取的区块数据D是不正确的。该情况下,获取区块数据D失败。若两者相同,则校验成功,即获取的区块数据D是正确的。该情况下,获取区块数据D成功。
S509、第三节点103从区块数据D中确定交易ID(bbac5ca)对应的数据。
具体地,第三节点103从区块数据D的区块H002中确定交易ID对应的数据,并向第四节点返回该交易ID对应的数据。
S510、第四节点向客户端返回该交易ID对应的数据。
应理解,S507-510是对S404的示例性描述,S507-510与S404中的描述内容可以相互参考。
如图6所示,为本申请实施例提供的一种区块链数据处理的装置的结构示意图。本申请实施例中的第一节点101、第二节点102、第三节点103、存储设备104等,均可以采用图6所示的计算机设备的结构。
该计算机设备包括至少一个处理器601和存储器602,还可以包括通信总线603、通信接口604和I/O接口605。处理器可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本申请方案程序执行的集成电路。
通信总线可包括一通路,在上述组件之间传送信息。所述通信接口,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如通过以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等通信。
存储器可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过总线与处理器相连接。存储器也可以和处理器集成在一起。
其中,所述存储器用于存储执行本申请方案的程序代码,并由处理器来控制执行。所述处理器用于执行所述存储器中存储的程序代码。应理解,所述存储器中还可以存储上述第一对应关系、第二对应关系、第一校验数据、第二校验数据、和/或第一数据包等各种信息,具体内容不再赘述。
在具体实现中,处理器可以包括一个或多个CPU,每个CPU可以是一个单核(single-core)处理器,也可以是一个多核(multi-Core)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,该计算机设备还可以包括输入/输出(I/O)接口。例如,输出设备可以是液晶显示器(liquid crystal display,LCD),发光二级管(lightemitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备可以是鼠标、键盘、触摸屏设备或传感设备等。
上述的计算机设备可以是一个通用计算机设备或者是一个专用计算机设备。在具体实现中,计算机设备可以是台式机、便携式电脑、网络服务器、掌上电脑(PersonalDigital Assistant,PDA)、移动手机、平板电脑、无线终端设备、通信设备、嵌入式设备或有图6中类似结构的设备。本申请实施例不限定计算机设备的类型。
对于第一节点101,当其中的处理器执行存储器中存储的程序代码时,第一节点101可以执行以上所有实施例中与第一节点101相对应的方法步骤,具体执行过程均参见上述实施例,在此不再赘述。
对于第二节点102,当其中的处理器执行存储器中存储的程序代码时,第二节点102可以执行以上所有实施例中与第二节点102相对应的方法步骤,具体执行过程均参见上述实施例,在此不再赘述。
对于第三节点103,当其中的处理器执行存储器中存储的程序代码时,第三节点103可以执行以上所有实施例中与第三节点103相对应的方法步骤,具体执行过程均参见上述实施例,在此不再赘述。
对于存储设备104,当其中的处理器执行存储器中存储的程序代码时,存储设备104可以执行以上所有实施例中与存储设备104相对应的方法步骤,具体执行过程均参见上述实施例,在此不再赘述。
如图7所示,为本申请实施例提供的一种区块链数据处理的装置(具体为第一节点101)的结构示意图,包括存储模块700、处理模块701、发送模块702。
其中,存储模块700,用于存储区块链账本。处理模块701,用于确定该存储的区块链账本中待转移的第一区块数据,将该第一区块数据拆分为至少2个区块数据包,并根据该至少2个区块数据包生成至少1个恢复数据包,该恢复数据包用于恢复该区块数据包。具体内容可参见上述方法实施例中第一节点101侧的说明,例如步骤S201、S203,S301-304等。
发送模块702,用于将该至少2个区块数据包和该至少1个恢复数据包中的数据包发送至对应的第二节点,具体内容可参见上述方法实施例中第一节点101侧的说明,例如步骤S204、S306等。处理模块701,还用于记录该第一区块数据的数据包与该第二节点的第一对应关系。具体内容可参见上述方法实施例中第一节点101侧的说明,例如步骤S205、S306等。发送模块702,还用于广播该第一对应关系,具体内容可参见上述方法实施例中第一节点101侧的说明,例如步骤S206、S209、S307等。
处理模块701,还用于删除存储模块700中存储的区块链账本中的第一区块数据。具体内容可参见上述方法实施例中第一节点101侧的说明,例如步骤S209、S308等。
另外,该装置还可以包括接收模块703等等。该装置的这些模块用于实现前述实施例中的第一节点101侧的相关功能,具体不再赘述。在本申请实施例中,该装置是以功能模块的形式来呈现。这里的“模块”可以指ASIC,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该装置可以采用如图6所示的形式来实现。
如图8所示,为本申请实施例提供的一种区块链数据处理的装置(具体为第二节点102)的结构示意图,包括接收模块801、存储模块802。
其中,接收模块801,用于接收第一节点发送的第一数据包,其中,该第一数据包为第一区块数据被拆分得到的区块数据包中的一个或多个数据包,和/或用于恢复该区块数据包的恢复数据包,而该第一区块数据为区块链账本中待转移的数据。存储模块802,用于存储接收到的该第一数据包。具体内容可参见上述方法实施例中第二节点102侧的说明,例如步骤S204,S306等。
接收模块801,还用于接收第一对应关系,其中,该第一对应关系包括:该第一区块数据的区块数据包与存储该区块数据包的节点的对应关系,该第一区块数据的恢复数据包与存储该恢复数据包的节点的对应关系。存储模块802,还用于存储该第一对应关系。具体内容可参见上述方法实施例中第二节点102侧的说明,例如步骤S206,S307等。
另外,该装置还可以包括发送模块803、处理模块804等等。该装置的这些模块用于实现前述实施例中的第二节点102侧的相关功能,具体不再赘述。在本申请实施例中,该装置是以功能模块的形式来呈现。这里的“模块”可以指ASIC,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该装置可以采用如图6所示的形式来实现。
如图9所示,为本申请实施例提供的一种区块链数据处理的装置(具体为第三节点103)的结构示意图,包括发送模块901、接收模块902和处理模块903。
其中,发送模块901,用于根据第一区块数据的区块数据包与存储该区块数据包的节点之间的对应关系从对应的节点请求第一区块数据的区块数据包;接收模块902用于接收第一区块数据的区块数据包。具体内容可参见上述方法实施例中第三节点103侧的说明,例如步骤S401-402,S503等。
处理模块903还用于将第一区块数据的区块数据包组合以得到该第一区块数据。具体内容可参见上述方法实施例中第三节点103侧的说明,例如步骤S404,S507等。
另外,该装置还可以包括存储模块904等等。该装置的这些模块用于实现前述实施例中的第三节点103侧的相关功能,具体不再赘述。在本申请实施例中,该装置是以功能模块的形式来呈现。这里的“模块”可以指ASIC,电路,执行一个或多个软件或固件程序的处理器和存储器,集成逻辑电路,和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该装置可以采用如图6所示的形式来实现。
在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;本申请中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。这些功能模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以计算机程序产品的形式体现出来,该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机程序产品存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (27)

1.一种区块链数据处理的方法,其特征在于,包括:
第一节点确定存储的区块链账本中待转移的第一区块数据;
所述第一节点将所述第一区块数据拆分为至少2个区块数据包,并根据所述至少2个区块数据包生成至少1个恢复数据包,其中,所述恢复数据包用于恢复所述区块数据包;
所述第一节点将所述至少2个区块数据包和所述至少1个恢复数据包中的数据包发送至对应的第二节点,记录所述第一区块数据的数据包与所述第二节点的第一对应关系,并广播所述第一对应关系;
所述第一节点删除所述存储的区块链账本中的所述第一区块数据。
2.根据权利要求1所述的方法,其特征在于,所述第二节点为区块链系统中的节点。
3.根据权利要求1或2所述的方法,其特征在于,所述第一节点将所述第一区块数据拆分为至少2个区块数据包之前,还包括:
所述第一节点广播第一共识请求,所述第一共识请求指示对于所述第一区块数据进行一致性校验,并接收对于所述第一共识请求的共识成功消息。
4.根据权利要求1-3任一所述的方法,其特征在于,所述第一节点删除所述第一区块数据之前,还包括:
所述第一节点成功获取已转移的所述第一区块数据。
5.根据权利要求4所述的方法,其特征在于,所述第一节点成功获取已转移的所述第一区块数据,包括:
所述第一节点根据所述第一对应关系中第一区块数据的区块数据包与存储所述区块数据包的第二节点之间的对应关系从所述存储所述区块数据包的第二节点获取对应的区块数据包;
所述第一节点将所述获取的区块数据包组合成第二区块数据;
当所述第二区块数据与所述第一区块数据相同时,所述第一节点确定成功获取所述第一区块数据。
6.根据权利要求1-5任一所述的方法,其特征在于,所述第一节点删除所述第一区块数据之前,还包括:
所述第一节点广播第二共识请求,所述第二共识请求指示校验是否能成功获取已转移的所述第一区块数据;
所述第一节点接收对于所述第二共识请求的共识成功消息。
7.根据权利要求1-6任一所述的方法,其特征在于,所述至少1个恢复数据包的总数据量小于所述至少2个区块数据包的总数据量。
8.根据权利要求1-7任一所述的方法,其特征在于,还包括:
所述第一节点从所述存储的区块链账本中确定待转移的第三区块数据,所述第三区块数据的安全要求低于所述第一区块数据的安全要求;
所述第一节点将所述第三区块数据发送至区块链系统外部的存储设备;
所述第一节点记录所述第三区块数据与所述存储设备的第二对应关系,并广播所述第二对应关系;
所述第一节点删除所述存储的区块链账本中的所述第三区块数据。
9.一种区块链数据处理的方法,其特征在于,包括:
接收并存储第一节点发送的第一数据包,其中,所述第一数据包为第一区块数据被拆分得到的区块数据包中的一个或多个数据包,和/或用于恢复所述区块数据包的恢复数据包,所述第一区块数据为区块链账本中待转移的数据;
接收并存储第一对应关系,所述第一对应关系包括:所述第一区块数据的区块数据包与存储所述区块数据包的节点的对应关系,所述第一区块数据的恢复数据包与存储所述恢复数据包的节点的对应关系。
10.根据权利要求9所述的方法,其特征在于,执行所述方法的节点为区块链系统中的第二节点。
11.根据权利要求10所述的方法,其特征在于,所述第二节点为存储所述区块链账本的节点,所述方法还包括:
所述第二节点接收所述第一节点发送的删除请求,所述删除请求指示删除所述区块链账本中的所述第一区块数据;
所述第二节点删除存储的所述区块链账本中的所述第一区块数据。
12.根据权利要求9-11任一所述的方法,其特征在于,还包括:
接收共识请求,所述共识请求用于请求校验是否能成功获取已转移的所述第一区块数据;
成功获取已转移的所述第一区块数据后,,广播校验成功消息。
13.根据权利要求9-12任一所述的方法,其特征在于,还包括:
接收并存储所述第一数据包的校验数据;
周期性地根据所述第一数据包的校验数据对所述第一数据包进行完整性校验。
14.根据权利要求13所述的方法,其特征在于,当对所述第一数据包的完整性校验失败时,还包括:
根据所述第一对应关系向存储所述第一区块数据的其他数据包的节点获取所述第一区块数据的其他数据包,所述第一区块数据的其他数据包为第一区块数据的区块数据包和恢复数据包中除第一数据包以外的数据包;
根据所述第一区块数据的其他数据包恢复所述第一数据包。
15.一种区块链数据处理的装置,其特征在于,包括:
存储模块,用于存储区块链账本;
处理模块,用于确定所述存储模块中存储的所述区块链账本中待转移的第一区块数据,将所述第一区块数据拆分为至少2个区块数据包,并根据所述至少2个区块数据包生成至少1个恢复数据包,其中,所述恢复数据包用于恢复所述区块数据包;
发送模块,用于将所述至少2个区块数据包和所述至少1个恢复数据包中的数据包发送至对应的第二节点;
所述处理模块,还用于记录所述第一区块数据的数据包与所述第二节点的第一对应关系;
所述发送模块,还用于广播所述第一对应关系;
所述处理模块,还用于删除所述存储模块中存储的所述区块链账本中的所述第一区块数据。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:接收模块,并且在所述处理模块用于将所述第一区块数据拆分为至少2个区块数据包之前,
所述发送模块还用于广播第一共识请求,所述第一共识请求指示对于所述第一区块数据进行一致性校验;所述接收模块,用于接收对于所述第一共识请求的共识成功消息。
17.根据权利要求15或16所述的装置,其特征在于,所述处理模块用于删除所述第一区块数据之前,所述处理模块,还用于成功获取已转移的所述第一区块数据。
18.根据权利要求15-17任一所述的装置,其特征在于,所述处理模块用于成功获取已转移的所述第一区块数据包括:
所述发送模块,用于根据所述第一对应关系中第一区块数据的区块数据包与存储所述区块数据包的第二节点之间的对应关系向所述存储所述区块数据包的第二节点请求对应的区块数据包;
所述接收模块,用于接收所述存储所述区块数据包的第二节点返回的区块数据包;
所述处理模块,用于将所述返回的区块数据包组合成第二区块数据;当所述第二区块数据与所述第一区块数据相同时,确定成功获取所述第一区块数据。
19.根据权利要求15-18任一所述的装置,其特征在于,所述处理模块用于删除所述第一区块数据之前,
所述发送模块还用于广播第二共识请求,所述第二共识请求指示校验是否能成功获取已转移的所述第一区块数据;所述接收模块还用于接收对于所述第二共识请求的共识成功消息。
20.根据权利要求15-19任一所述的装置,其特征在于,所述至少1个恢复数据包的总数据量小于所述至少2个区块数据包的总数据量。
21.根据权利要求15-20任一所述的装置,其特征在于,所述处理模块,还用于从所述存储模块中存储的所述区块链账本中确定待转移的第三区块数据,所述第三区块数据的安全要求低于所述第一区块数据的安全要求;所述发送模块还用于将所述第三区块数据发送至区块链系统外部的存储设备;所述处理模块,还用于记录所述第三区块数据与所述存储设备的第二对应关系;所述发送模块,还用于广播所述第二对应关系;所述处理模块,还用于删除所述存储模块中存储的所述区块链账本中的所述第三区块数据。
22.一种区块链数据处理的装置,其特征在于,包括:
接收模块,用于接收第一节点发送的第一数据包,其中,所述第一数据包为第一区块数据被拆分得到的区块数据包中的一个或多个数据包,和/或用于恢复所述区块数据包的恢复数据包,所述第一区块数据为区块链账本中待转移的数据;
存储模块,用于存储所述第一数据包;
所述接收模块,还用于接收第一对应关系,其中,所述第一对应关系包括:所述第一区块数据的区块数据包与存储所述区块数据包的节点的对应关系,所述第一区块数据的恢复数据包与存储所述恢复数据包的节点的对应关系。
所述存储模块,还用于存储所述第一对应关系。
23.根据权利要求22所述的装置,其特征在于,还包括:
所述存储模块,用于存储所述区块链账本;
所述接收模块,还用于接收所述第一节点发送的删除请求,所述删除请求指示删除所述区块链账本中的所述第一区块数据;
处理模块,还用于删除所述存储模块存储的所述区块链账本中的所述第一区块数据。
24.根据权利要求22或23所述的装置,其特征在于,所述接收模块,还用于接收共识请求,该共识请求用于请求校验是否能成功获取已转移的所述第一区块数据;发送模块,用于在成功获取已转移的所述第一区块数据后,广播校验成功消息。
25.根据权利要求22-24任一所述的装置,其特征在于,
所述接收模块,还用于接收所述第一数据包的校验数据;
所述存储模块,还用于存储所述第一数据包的校验数据;
所述处理模块,还用于周期性地根据所述第一数据包的校验数据对所述第一数据包进行完整性校验。
26.根据权利要求25所述的装置,其特征在于,当对所述第一数据包的完整性校验失败时,
所述发送模块,还用于根据所述第一对应关系向存储所述第一区块数据的其他数据包的节点请求所述其他数据包,所述其他数据包为所述第一区块数据的区块数据包和恢复数据包中除所述第一数据包以外的数据包;
所述处理模块,还用于根据所述其他数据包恢复所述第一数据包。
27.一种区块链数据处理的系统,其特征在于,包括第一节点和第二节点,所述第一节点为如权利要求15-21任一所述的装置,所述第二节点为如权利要求22-26任一所述的装置。
CN202010568739.8A 2020-06-19 2020-06-19 区块链数据处理的方法、系统及相关装置 Pending CN113824755A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010568739.8A CN113824755A (zh) 2020-06-19 2020-06-19 区块链数据处理的方法、系统及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010568739.8A CN113824755A (zh) 2020-06-19 2020-06-19 区块链数据处理的方法、系统及相关装置

Publications (1)

Publication Number Publication Date
CN113824755A true CN113824755A (zh) 2021-12-21

Family

ID=78924699

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010568739.8A Pending CN113824755A (zh) 2020-06-19 2020-06-19 区块链数据处理的方法、系统及相关装置

Country Status (1)

Country Link
CN (1) CN113824755A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115037755A (zh) * 2022-04-27 2022-09-09 东北大学 基于数据重分布和动态节点策略的区块链轻量存储方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115037755A (zh) * 2022-04-27 2022-09-09 东北大学 基于数据重分布和动态节点策略的区块链轻量存储方法

Similar Documents

Publication Publication Date Title
CN108446407B (zh) 基于区块链的数据库审计方法和装置
CN110263035B (zh) 基于区块链的数据存储、查询方法及装置和电子设备
CN109831487B (zh) 分片文件验证方法及终端设备
CN111344706B (zh) 管理区块链上的交易的方法和系统
CN108683668B (zh) 内容分发网络中的资源校验方法、装置、存储介质及设备
EP3817333B1 (en) Method and system for processing requests in a consortium blockchain
CN110825698B (zh) 元数据管理方法及相关装置
WO2023016428A1 (zh) 一种拜占庭容错方法、装置、电子设备及存储介质
CN110597839A (zh) 交易数据处理方法、装置、设备以及存储介质
CN108616574B (zh) 管理数据的存储方法、设备及存储介质
CN112069169B (zh) 区块数据存储方法、装置、电子设备及可读存储介质
US11126751B2 (en) Index creation for data records
WO2022237497A1 (zh) 一种基于区块链网络的数据存储方法及装置
CN112035472B (zh) 数据处理方法、装置、计算机设备和存储介质
WO2023016426A1 (zh) 一种异步二元共识方法、装置、电子设备及存储介质
CN110633168A (zh) 一种分布式存储系统的数据备份方法和系统
CN111367923A (zh) 数据处理方法、装置、节点设备及存储介质
US10664349B2 (en) Method and device for file storage
CN111984735A (zh) 一种数据归档方法、装置、电子设备和存储介质
CN110619022B (zh) 基于区块链网络的节点检测方法、装置、设备及存储介质
CN109600254B (zh) 全链路日志的生成方法及相关系统
CN111260475A (zh) 一种数据处理方法、区块链节点设备及存储介质
CN113824755A (zh) 区块链数据处理的方法、系统及相关装置
CN102523205A (zh) 内容校验和的确定方法及装置
CN110930253A (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