CN117827963A - 基于区块链的区块存储处理方法及装置、区块链系统 - Google Patents

基于区块链的区块存储处理方法及装置、区块链系统 Download PDF

Info

Publication number
CN117827963A
CN117827963A CN202211195286.4A CN202211195286A CN117827963A CN 117827963 A CN117827963 A CN 117827963A CN 202211195286 A CN202211195286 A CN 202211195286A CN 117827963 A CN117827963 A CN 117827963A
Authority
CN
China
Prior art keywords
block
data
blockchain
consensus
node
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
CN202211195286.4A
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.)
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 CN202211195286.4A priority Critical patent/CN117827963A/zh
Publication of CN117827963A publication Critical patent/CN117827963A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请的实施例揭示了一种基于区块链的区块存储方法及装置、区块链系统。在区块链系统中,提议节点对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播,并将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;共识节点在接收到提议节点发起的所述广播后,对所述区块执行隐私计算,并将所述区块对应的第一部分数据存储至区块链上;提议节点或共识节点在确定所述区块已达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。本申请的实施例能够减少存储区块所需的时间。

Description

基于区块链的区块存储处理方法及装置、区块链系统
技术领域
本申请涉及区块链技术领域,具体涉及一种基于区块链的区块存储处理方法及装置,以及涉及一种区块链系统。
背景技术
目前,区块链节点对于一个区块的处理过程包括区块的隐私计算、共识和存储三个部分。区块的隐私计算是指对于区块内交易的执行,也即目前对于区块处理的整个流程是先执行区块内交易,再进行区块的共识,最后进行区块的存储,但如何提升区块的整体处理性能是本领域的技术人员仍需研究解决的技术问题。
发明内容
为解决上述技术问题,本申请的实施例提供了一种基于区块链的区块存储处理方法、基于区块链的区块存储处理装置、区块链系统、电子设备、计算机可读存储介质以及计算机程序产品。
根据本申请实施例的一个方面,提供了一种基于区块链的区块存储处理方法,应用于提议节点,该方法包括:在对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播;将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
根据本申请实施例的一个方面,提供了一种基于区块链的区块存储处理装置,配置于提议节点,该装置包括:广播发起模块,配置为在对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播;第一存储模块,配置为将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;第二存储模块,配置为在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
根据本申请实施例的另一个方面,提供了一种基于区块链的区块存储处理方法,应用于共识节点,该方法包括:在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对所述区块执行隐私计算;将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
根据本申请实施例的另一个方面,提供了一种基于区块链的区块存储处理装置,配置于共识节点,该装置包括:广播接收模块,配置为在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对所述区块执行隐私计算;第三存储模块,配置为将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;第四存储模块,配置为在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
根据本申请实施例的另一个方面,提供了一种基于区块链系统,由提议节点和共识节点构成所述区块链系统的共识网络,包括:所述提议节点对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播,并将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;所述共识节点在接收到提议节点发起的所述广播后,对所述区块执行隐私计算,并将所述区块对应的第一部分数据存储至区块链上;所述提议节点或所述共识节点在确定所述区块已达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如前所述的基于区块链的区块存储处理方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行如上所述的基于区块链的区块存储处理方法。
根据本申请实施例的一个方面,还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的基于区块链的区块存储处理方法。
在本申请的实施例所提供的技术方案中,是将区块数据的存储拆分为了两个阶段,第一个阶段是针对区块执行隐私计算后将区块对应的第一部分数据存储于链上,第二个阶段是在确定区块达成共识后将区块对应的第二部分数据存储于链上,可以看出在此处理过程中,区块对应的第一部分数据的存储可以与区块的共识过程并行进行,区块对应的第二部分数据则在达成共识后进行存储,相比于现有的区块处理流程,本申请的实施例能够减少存储一个完整的区块所需的时间,因此能够提升区块的整体处理性能。
应当理解的,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例示出的一种区块链系统的结构示意图;
图2是一示例性的区块链组成架构的示意图;
图3是一示例性的区块生成过程的示意图;
图4是现有的技术实现所涉及的区块处理的时序流程示意图;
图5是本申请的一示例性实施例示出的区块链系统的结构示意图;
图6是针对图5示例的区块链系统所提出的一种示例性的区块处理的时序流程示意图;
图7是本申请的一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图8是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图9是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图10是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图11是一示例性的提议节点对应的区块处理流程示意图;
图12是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图13是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图;
图14是一示例性的共识节点对应的区块处理流程示意图;
图15是一示例性的区块处理架构示意图;
图16是本申请的一示例性实施例示出的基于区块链的区块存储处理装置的框图;
图17是本申请的另一示例性实施例示出的基于区块链的区块存储处理装置的框图;
图18示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
首先说明的是,本申请的实施例涉及区块链(Blockchain)技术。区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。区块链是指一套去中心化、具备分布式存储特点的基础架构,具体是一种按照时间顺序将数据区块用类似链表的方式组成的数据结构,能够安全存储有先后关系的、能在系统内进行验证的数据,并以密码学方式保证数据不可篡改和不可伪造。简单的讲,区块链就是去中心化的分布式账本,每一条链相当于一个独立的账本。
图1是一示例性实施例示出的一种区块链系统的结构示意图。图1所示的区块链系统100可以包含节点设备10a、节点设备10b、节点设备10c、节点设备10d。其中,节点设备10a、节点设备10b、节点设备10c、节点设备10d均为图1所示的区块链系统100中的区块链节点(简称为节点),这些节点可以为接入该区块链系统100中的任意形式的计算设备,如服务器、用户终端等。图1所示的节点设备10a、节点设备10b、节点设备10c、节点设备10d之间也可以通过网络通信的形式连接形成区块链系统100。
图1所示的区块链系统100的架构中所涉及的区块链的类型具体可以包括:公有链(Public Blockchain)、私有链(Private Blockchain)和联盟链(ConsortiumBlockchain),不同的区块链应用场景下所采用的区块链的类型可能不同,在此不作限制。其中,公有链是指可以对外公开,任何人可以加入并访问的区块链;公有链上的区块可以被任何人查看,任何人也可以在公有链上发起交易,还可以随时参与公有链的共识过程。私有链是指可以在私有组织内部使用,在区块链上的读写权限、参与记账权限可以按照私有组织的规则来制定;通常用于企业内部的数据管理、审计等。联盟链是指参与联盟链的联盟成员在区块链上的读写权限、参与记账权可以按照联盟规则来制定;一般用于机构间的交易、结算或清算等场景。
对于区块链系统100中的每个节点,均具有与其对应的节点标识,而且区块链系统100中的每个节点均可以存储有区块链系统100中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链系统100中的其他节点。
区块链系统100中的每个节点均存储一条相同的区块链(参见图1所示的区块链10e),因此区块链系统100也可以称为数据共享系统。区块链由多个区块组成,参见图2,组成区块链的每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链,以保证区块中输入信息的安全性。另外区块中还可以包括有区块生成时的时间戳、版本号、难度值等信息,在此不进行列举。
区块链上一个新区块的生成过程可参见图3所示例的步骤1-9,区块链系统100中的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将这些输入信息存储至内存池中,并更新用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次针对交易进行特征值计算,直至计算得到的特征值小于特征值阈值,将此特征值称为合理特征值,之后则根据这些信息打包生成区块头和区块体,得到新的区块;随后,区块链系统100中的节点将新的区块广播至区块链系统100中的其他节点,由区块链系统100中的其他节点对新的区块进行验证,在完成验证后将新的区块存储至区块链上。示例性的,输入信息也可以被称为是交易,用于存储输入信息的内存池通常也被称为交易池。
可以理解的是,图3所示例的新区块的生成过程也即是背景技术中所述的区块链节点对于一个区块的处理过程,包括区块的隐私计算、共识和存储三个部分。区块的隐私计算是指计算内存池中的输入信息的合理特征值的过程,可对应图3所示例的步骤2-7,若以输入信息为交易作为示例来理解,区块的隐私计算是指执行区块内交易的过程。区块的共识过程也即对应图3所示例的步骤8中将新的区块广播给区块链系统100中的其他节点进行验证,若新的区块在多个其它节点中均通过验证,表示该区块在区块链系统100中的其他节点之间达成共识,需说明的是,区块链系统100中的各个节点中配置有一致的共识算法用以执行对于区块的验证处理。区块的存储过程也即是对达成共识的区块进行上链存储,对应图3所示例的步骤9。
在如上所示例的区块处理过程中,由于隐私计算、共识和存储这三个部分在一个区块链节点上是串行执行的,导致区块的整个处理流程所需花费的时间较长,区块的整体处理性能也较低。
便于理解的,举例来说,参见图4所示例的区块处理的时序流程示意图。将区块链系统中打包生成区块的节点称为提议节点,将区块链系统中的其它节点称为共识节点,由图4可以看出在每个提议节点以及每个共识节点中,区块的隐私计算、共识和存储这三个部分都是串行执行的,具体来说,只有在完成区块的隐私计算后才执行区块的共识过程,在区块达成共识后才将区块上链存储,处理区块所需花费的时间也即是执行串行的隐私计算、共识和存储这三个流程所需的总时长,因此导致区块的处理流程需要花费较长的时间。
为解决如上问题,以提升区块的整体处理性能,本申请的实施例分别提出一种基于区块链的区块存储处理方法、基于区块链的区块存储处理装置、区块链系统、电子设备、计算机可读存储介质和计算机程序产品。下面将对这些实施例进行详细介绍。
首先请参见图5,图5是本申请的一示例性实施例示出的区块链系统的结构示意图。在该示例性的区块链系统中,由提议节点和多个共识节点组成共识网络,如图5中示出由提议节点和共识节点1、共识节点2、共识节点3组成共识网络,且提议节点和共识节点、以及共识节点与共识节点之间预先建立有点对点(P2P,Peer To Peer)的通信连接。需理解的是,提议节点是指区块链系统中打包生成新的区块、并发起该区块在区块链系统中的共识过程的节点,共识节点相应是指区块链系统中参与区块共识的节点,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。
参阅图6,图6是针对图5示例的区块链系统所提出的一种示例性的区块处理的时序流程示意图,该时序流程示例出了一种能够提升区块的整体处理性能的方案。
如图6所示,该示例性的区块处理的时序流程包括如下:
提议节点对待上链的区块执行隐私计算后,发起针对该区块进行共识处理的广播,并将该区块对应的第一部分数据存储至区块链上,第一部分数据包括不会随着共识处理而变化的区块数据;
共识节点在接收到提议节点发起的广播后,对该区块执行隐私计算,并将该区块对应的第一部分数据存储至区块链上;
提议节点或共识节点在确定区块已达成共识后,将该区块对应的第二部分数据存储至区块链上,以完成该区块的上链存储,第二部分数据包括随着共识处理而变化的区块数据。
从如上所示例的流程中可以看出,在该示例性的区块链系统中,是将区块数据的存储拆分为了两个阶段,第一个阶段是针对区块执行隐私计算后将区块对应的第一部分数据存储于链上,第二个阶段是在确定区块达成共识后将区块对应的第二部分数据存储于链上。
在此处理过程中,区块对应的第一部分数据的存储可以与区块的共识过程并行进行,区块对应的第二部分数据则在达成共识后进行存储,对于区块链系统中的每个节点来说,相当于是在发起共识或者进入共识时先将区块的一部分数据写入区块链存储系统,在共识完成后将另一部分数据写入区块链存储系统,在区块处理的整个时序流程中,由于在存储区块对应的第一部分数据的过程中节点同时在发起共识或者进入共识,真正存储区块数据的时间是消耗在区块对应的第二部分数据上,区块对应的第一部分数据的存储并未真正消耗区块处理的整体时长(例如图6所示的“存储第一部分数据”的流程在时间线上是与“发起共识”并行的),相比于图4所示的串行处理流程,本实施例由于减少了真正消耗区块存储时间的数据存储量,因此本实施例能够减少存储一个完整的区块所需的时间,而对于区块链系统来说,能够提升区块的整体处理性能。
需要说明的是,如上所示例的提议节点或共识节点涉及的详细处理流程请参见后续实施例中的记载,本实施例在此不进行赘述。
另外还需要理解的是,在图6所示的时序流程中,各个节点涉及的处理流程所对应的时间线的位置也是示例性的,或者是处于理想网络状态下的,并不表示是对实际应用场景下对于区块的处理时序进行了严格限制。举例来说,在图6所示的时序流程中,提议节点对应的发起共识流程与共识节点1对应的收到共识流程、以及共识节点2对应的收到共识流程对应于时间线上的相同位置,也即表示这三个流程在时间线上是同时进行的,但在实际的应用场景中,节点之间的通信连接可能存在延迟通信的情况,例如提议节点与共识节点1之间由于存在延迟通信的问题,导致实际上共识节点1对应的收到共识流程在时间线上应晚于提议节点对应的发起共识流程、以及晚于共识节点2对应的收到共识流程。
请参见图7,图7是本申请的一示例性实施例示出的基于区块链的区块存储处理方法的流程图。该方法由提议节点执行,例如由图5所示例的提议节点执行,但需理解的是,提议节点是区块链系统中打包生成新的区块、并发起该区块在区块链系统中的共识过程的节点,因此,不同的区块所对应的提议节点可能是不同的。
还应理解的是,共识节点是指区块链系统中参与区块共识的节点,提议节点也是用于形成区块链系统的共识网络中的其中一个共识节点,提议节点与共识节点的本质相同,都是通过预先配置的共识算法来对待上链的区块进行验证。
如图7所示,在一示例性的实施例中,基于区块链的区块存储处理方法包括步骤S710-S730,详细介绍如下:
S710,在对待上链的区块执行隐私计算后,发起针对该区块进行共识处理的广播。
首先需要说明的是,如前所述的,本实施例提及的针对区块执行隐私计算是指计算区块链节点的内存池中的输入信息的合理特征值的过程,若以输入信息为交易为示例,对区块执行隐私计算也即是执行区块内交易的过程。
提议节点在对待上链的区块执行隐私计算后,便发起对该区块进行共识处理的广播。由于区块链系统中的提议节点与共识节点之间、以及共识节点与共识节点之间预先建立有点对点的通信连接,因此区块链系统中的共识节点会相应接收到提议节点发起的广播。
一般而言,提议节点所发起的广播中含有待上链的区块的详细信息,例如区块头和区块体,区块体中含有详细的交易数据。在一些示例性的实施方式中,提议节点直接广播待上链的区块,以使得共识节点获取到该区块的详细信息,进而便于针对该区块进行共识处理。在另一些示例性的实施方式中,提议节点广播的并不是待上链的区块本身,而是一条消息,这条消息中包含待上链的区块的相关信息,共识节点接收到提议广播的这条消息后,如果判定自身没有接收过这个区块的信息,会向提议节点发送一条数据请求,用以请求获取这个区块对应的交易记录以及区块的详细信息,提议节点只有接收到这条数据请求后,才会把区块的详细信息发送给相应的共识节点。
S720,将区块对应的第一部分数据存储至区块链上,第一部分数据包括不会随着共识处理而变化的区块数据。
本实施例将一个完整的区块看作是由区块对应的第一部分数据和第二部分数据组成。区块对应的第一部分数据是指不会随着共识处理而变化的区块数据,例如区块头、交易数据等,可以理解的是,由于本实施例选择在节点发起共识或进入共识时存储区块对应的第一部分数据,相当于是预先存储,因此区块对应的第一部分数据不应受到共识处理过程的影响。区块对应的第二部分数据是指会随着共识处理而变化的区块数据,因此需要在区块达成共识后再存储这部分数据,以保证区块存储的可靠性。区块对应的第二部分数据例如包括共识数据、交易读写集等,可以理解的,共识数据例如包括针对区块的共识执行所产生的数据,交易读写集是执行交易数据所产生的结果,由于提议节点和共识节点中都需要执行区块的共识处理,因此对于整个区块来说,区块对应的第二部分数据是会随着共识处理而变化的。
提议节点在发起针对待上链的区块进行共识处理的广播后,就将区块对应的第一部分数据存储至区块链上,对于提议节点来说,区块共识的发起和区块对应的第一部分数据的存储是同时进行的,因此对于区块的整体处理时序来说,区块对应的第一部分数据的存储并不会真正消耗时间,相当于实现了区块对应的第一部分数据的预先存储。
S530,在确定区块达成共识后,将区块对应的第二部分数据存储至区块链上,以完成该区块的上链存储,第二部分数据包括随着共识处理而变化的区块数据。
提议节点确定区块达成共识是指,待上链的区块在多个共识节点中的验证结果满足共识算法的规定,从而判定该区块已在区块链系统中达成共识,例如对待上链的区块验证通过的共识节点的数量占比满足共识算法规定的数量占比条件。共识算法例如包括工作量证明(Proof of Work,PoW)算法、权益证明(Proof of Stake,PoS)算法、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法等,本实施例不对此进行限制。
若提议节点确定待上链的区块达成共识,则可以相应确定区块对应的第二部分数据,通过将区块对应的第二部分数据存储至区块链上,则可完成该区块的完整上链存储。
仍参照图6所示的时序流程示意图,对于提议节点来说,可以看到提议节点中执行区块处理的完整流程依次为:隐私计算、发起共识、达成共识和存储第二部分数据,此完整流程对应提议节点进行区块处理真正所需要耗费的时间,由于在提议节点中,存储第一部分数据的流程是与发起共识的流程并行进行的,存储第一部分数据的流程并不会真正消耗提议节点执行区块处理的完整流程所需的时间,因此相比于现有技术,本申请的实施例将提议节点执行完整区块存储所需的时间减小到实际仅需消耗存储区块对应的第二部分数据所需的时间,能够明显缩短区块处理所需时间,进而提升了区块的整体处理性能。
图8是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图。如图8所示,该方法是在图7所示实施例的基础上所进一步提出的,具体来说,图7所示实施例中的步骤S720进一步包括如下步骤S721-S722:
S721,将区块对应的第一部分数据提交至区块链存储系统;
S722,在区块链存储系统中进行该第一部分数据的存储,且将该第一部分数据的数据状态存储为预提交状态。
可以理解的,区块链存储系统是指提议节点部署的用于存储区块链的存储系统,区块链存储系统部署于提议节点的物理本地,因此存储于提议节点本地的区块链账本也可以称为物理账本。在一些示例性的实施方式中,提议节点可能实现为是云服务器,也即提议节点部署在云端,这时区块链存储系统也相应部署在云端。
提议节点首先将区块对应的第一部分数据提交至区块链存储系统,然后在区块链存储系统中进行该第一部分数据的存储,同时还需将该第一部分数据的数据状态存储为预提交状态。也即在本实施例中,区块链存储系统在存储区块对应的第一部分数据的同时,还需相应存储该第一部分数据的数据状态,以通过存储的数据状态来区分针对待上链的区块在不同阶段所存储的区块数据。
为了实现在区块链存储系统中进行区块对应的第一部分数据的存储,同时存储该第一部分数据的数据状态,本实施例提出了一种示例性的区块链存储系统可支持的存储结构,以便于将相应数据写入至区块链存储系统中。该示例性的存储结构如下:
可以理解的,“DataInfo:[]”表示数据文件,data字段表示数据本身,status字段表示数据状态。并且由上可以看出,在该示例性的存储结构中,支持三种数据状态的写入,分别为预先提交状态、确定提交状态和回滚状态,预先提交状态对应的是区块对应的第一部分数据的存储,例如用字段值“0”表示,确定提交状态对应的是区块对应的第二部分数据的存储,例如用字段值“1”表示,回滚状态是指在一些场景下需要将之前已写入的数据回滚,可使用字段值“2”表示。
在此示例性的存储结构下,步骤S722中提及的在区块链存储系统中进行该第一部分数据的存储,且将该第一部分数据的数据状态存储为预提交状态的过程具体可以包括如下:
在区块链存储系统中创建数据文件;
向数据文件中写入区块对应的第一部分数据,以及写入该第一部分数据对应的数据状态为预提交状态。
举例来说,若假设区块对应的第一部分数据包括待上链区块的区块头和交易数据,预提交状态的字段值为“0”,区块对应的第一部分数据在区块链存储系统的存储形式则表示为如下的数据文件:
由上可以看出,在本实施例提供的方案中,通过在存储区块对应的第一部分数据的同时,还需相应存储该第一部分数据的数据状态,能够基于相应存储的数据状态来区分针对待上链的区块在不同阶段所存储的区块数据,例如本实施例中,通过预提交状态来区分数据文件中写入的这部分区块数据为待上链的区块对应的第一部分数据。
图9是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图。如图9所示,该方法也是在图7所示的实施例的基础上所进一步提出的,图7所示实施例中的步骤S730进一步包括如下步骤S731-S732:
S731,将区块对应的第二部分数据提交至区块链存储系统;
S732,在区块链存储系统中进行第二部分数据的存储,且将第二部分数据的数据状态存储为确认提交状态。
本实施例将区块对应的第二部分数据存储至区块链存储系统的过程请参照图8所示的将区块对应的第一部分数据存储至区块链存储系统的过程,提议节点将区块对应的第二部分数据提交至区块链存储系统后,在区块链存储系统中创建对应的数据文件,然后向该数据文件中写入该第二部分数据,以及写入该第二部分数据对应的数据状态为确认提交状态即可。
若假设区块对应的第二部分数据包括交易读写集和共识数据,且确认提交状态对应的字段值为“1”,区块对应的第二部分数据在区块链存储系统的存储形式则可表示为如下的数据文件:
由上可以看出,在本实施例提供的方案中,通过在存储区块对应的第二部分数据的同时,还需相应存储该第二部分数据的数据状态,仍能够实现基于相应存储的数据状态来区分针对待上链的区块在不同阶段所存储的区块数据,例如本实施例中,通过确认提交状态来区分数据文件中写入的这部分区块数据为待上链的区块对应的第二部分数据。
图10是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图。如图10所示,该方法也是在图7所示的实施例的基础上所进一步提出的,图7所示的基于区块链的区块存储处理方法还包括如下步骤S740-S750:
S740,若确定区块并未达成共识,向区块链存储系统发起回滚请求;
S750,在区块链存储系统中响应回滚请求,以存储预设格式的数据,且将预设格式的数据的数据状态存储为回滚状态。
本实施例考虑到待上链的区块在多个共识节点之间可能存在不会达成共识的情况,那么这个区块如果存储到区块链存储系统中,应被作为是无效的区块,而不应算作是正常的区块,因此需要设置区块链存储系统支持回滚,以允许将已经写入的数据设定为无效。
提议节点若确定区块并未达成共识,则向区块链存储系统发起回滚请求,区块链存储系统响应该回滚请求,相应创建一个数据文件,并将预设格式的数据写入,同时将该预设格式的数据的数据状态存储为回滚状态。预设格式的数据例如为空数据,或者是其它格式的数据,在此不进行限制。
若假设确认回滚状态对应的字段值为“1”,以及预设格式的数据为空数据,该预设格式的数据在区块链存储系统的存储形式则可表示为如下的数据文件:
由上可以看出,在本实施例提供的方案中,通过在存储预设格式的数据的同时,还需相应存储该预设格式的数据的数据状态,能够实现基于相应存储的数据状态来判定之前已经写入区块链存储系统的区块数据无效,例如在本实施例中,通过回滚状态来判定区块链存储系统中之前写入的有关区块的区块数据是无效的。
基于图8至图10所示的实施例可以得到如图11所示的提议节点对应的区块处理流程示意图。如图11所示,提议节点在针对待上链的区块完成隐私计算后,针对该区块发起共识,同时将区块对应的第一部分数据预先提交到区块链存储系统中存储;之后,提议节点若确定该区块已经达成共识,则将区块对应的第二部分数据确认提交到区块链存储系统中存储;若提议节点确定该区块未能达成共识,则向区块链存储系统发起回滚请求。
基于图8至图10所示的实施例还可以看出,区块在区块链存储系统中的写入,是写一个序列化好的数据文件DataInfo到预写日志系统(WAL,Write-Ahead Logging)中。所以对于任一个区块,在预写日志系统中的存储形式会是三种情况,分别为完整写入、不完整写入、被回滚,下面将逐一对这三种情况进行示例性解释。
首先,假设一个区块被完整写入,在区块链存储系统中写入的数据文件依次为DataInfo1、DataInfo2,其中数据文件DataInfo1是在预提交阶段写入的,数据文件DataInfo2是在确定提交阶段写入的,那么在预写日志系统中,通过读取最近两次写入的数据即可分别得到数据文件DataInfo1和数据文件DataInfo2,如下所示:
因此只要判断从预写日志系统中读取最近写入的两个数据文件,并判断这两个数据文件中包含的数据状态是否依次为预提交状态和确认提交状态,也即判断数据状态的字段值是否依次为“0”和“1”,如果判断为是,则说明这个区块是完整写入的,也可以理解为这个区块具备原子性。
需要理解的是,区块的原子性对应区块的完整性。由于在本申请的实施例所提供的应用场景下,一个区块的存储过程被拆分为了预先提交和确认提交两个阶段,如果在预先提交阶段已经成功写入区块对应的第一部分数据,这时节点在断电或宕机,且重启之后,因为只成功写入了区块对应的第一部分数据,而没有写入区块对应的第二部分数据,这个区块就是写入不完整的,不完整的区块就不能当作完整的区块来实用,这就是区块的原子性。因此在完整写入的情况下,区块在区块链存储系统中的写入是具备原子性的。
若假设一个区块是不完整写入的,仅在区块链存储系统中写入预提交阶段的数据文件DataInfo1,那么在预写日志系统中,通过读取最近一次写入的数据可得到数据文件DataInfo1如下所示:
由于从预写日志系统中读取的最近一次写入的数据文件中包含的数据状态为预提交状态,也即读取到数据状态对应的字段值为“0”,那么说明这个区块是不完整写入的,不具有原子性,也表明这部分区块数据是失效的。
若假设一个区块被回滚,在区块链存储系统中写入的数据文件依次为DataInfo1、DataInfo2,其中数据文件DataInfo1是在预提交阶段写入的,数据文件DataInfo2是在回滚阶段写入的,那么在预写日志系统中,通过读取最近两次写入的数据即可分别得到数据文件DataInfo1和数据文件DataInfo2,如下所示:
只要判断从预写日志系统中读取最近写入的两个数据文件,并判断这两个数据文件中包含的数据状态是否依次为预提交状态和回滚状态,也即判断数据状态的字段值是否依次为“0”和“2”,如果判断为是,则说明这个区块是被回滚了,也不具有原子性,表明这部分区块数据是失效的,
由上也可以看出,本申请的实施例通过将一个完整区块的存储拆分为两个阶段进行,并且在每个阶段存储相应的区块数据的同时,还存储对应的数据状态,不仅可以通过数据状态来区分相应区块数据所对应的存储阶段,还可以通过数据状态的分布情况来判断区块是否满足原子性,只有满足原子性的区块才可以作为完整区块用于后续的使用。
在一个示例性的实施例中,如图12所示,在图7所示的实施例的基础上,基于区块链的区块存储处理方法还包括如下步骤S760-S780:
S760,响应于查询客户端发送的区块数据查询请求,在区块链存储系统中查询目标区块对应的数据文件集;
S770,若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为预提交状态或回滚状态,向查询客户端返回指示查询失败的通知消息;
S780,若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为确认提交状态,向查询客户端返回数据文件集。
在如上所示的流程中,查询客户端是指用于查询区块信息的客户端,例如可以是APP(Application,应用程序)客户端,或者是网页客户端,或者是其它的客户端形式,本实施例在此不进行限制。查询客户端可以运行在智能手机、平板电脑、笔记本电脑、计算机等终端设备中,也可以运行在服务器中,其中服务器可以是独立的物理服务器,还可以是多个物理服务器构成的服务器集群或者分布式系统,或者还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,在此也不进行限制。
查询客户端预先与区块链系统中的节点设备建立有线或者无线的通信连接,基于此通信连接,查询客户端可以向对应的节点设备发送区块数据查询请求。需要说明的是,本实施例所示例的查询客户端是与提议节点预先建立通信连接,提议节点在接收到查询客户端发送的区块数据查询请求后,在本地的区块链存储系统中查询目标区块对应的数据文件集。其中,目标区块也即是用户希望查询的区块,目标区块可以使用区块唯一标识进行标记,如区块高度、哈希值等,在此也不进行限制。
若提议节点查询到的目标区块对应的数据文件集中,最近一次写入的目标数据文件包含的数据状态为预提交状态或者回滚状态,则表示目标区块在区块链存储系统中的数据写入是不完整的或者是被回滚的,区块链存储系统中存储的有关目标区块的区块数据是无效的,因此提议节点向查询客户端返回指示查询失败的通知消息。
举例来说,若提议节点查询到的数据文件集如下表1所示,其中最近写入的目标数据文件包含的数据状态的字段值为“0”,也即数据状态为预提交状态,则表示该目标区块是不完整写入的,区块链存储系统中写入的这部分数据不应被查询客户端获取到,因此需向查询客户端返回指示查询失败的通知消息。
DataInfo:[data:[]byte,status:0]
表1
若提议节点查询到的数据文件集如下表2所示,其中最近写入的目标数据文件包含的数据状态的字段值为“2”,也即数据状态为回滚状态,则表示该目标区块在预提交阶段写入的第一部分数据是被回滚了,区块链存储系统中写入的第一部分数据也不应被查询客户端获取到,因此也需向查询客户端返回指示查询失败的通知消息。
DataInfo:[data:[]byte,status:0]
DataInfo:[data:[]byte,status:2]
表2
若提议节点查询的数据文件集中,最近写入的目标数据文件包含的数据状态为确定提交状态,则表示目标区块在区块链存储系统中是完整写入的,符合原子性,目标区块对应的区块数据可以被查询客户端获取得到,因此提议节点向查询客户端返回该数据文件集,以使查询客户端基于接收到的数据文件集相应获取目标区块的区块数据。示例性的,若提议节点查询到的数据文件集如下表3所示,其中最近写入的目标数据文件包含的数据状态的字段值为“1”,也即数据状态为确认提交状态,因此将该数据文件集返回给查询客户端。
DataInfo:[data:[]byte,status:0]
DataInfo:[data:[]byte,status:1]
表3
由上可以看出,本申请的实施例通过在将一个完整区块的存储拆分为两个阶段进行,并且在每个阶段存储相应的区块数据的同时,还存储对应的数据状态,不仅可以通过数据状态来区分相应区块数据所对应的存储阶段,还可以通过数据状态的分布情况来判断区块是否满足原子性,只有满足原子性的区块才可以作为完整区块用于后续的使用,由此配合查询客户端中输入的用户操作,使得不满足原子性的区块存储是不会被用户感知到的,符合实际应用场景中的业务需求。
图13是本申请的另一示例性实施例示出的基于区块链的区块存储处理方法的流程图。该方法由共识节点执行,例如由图5所示例的任意一个共识节点执行,同样需要理解的是,共识节点是指区块链系统中参与区块共识的节点,提议节点也是用于形成区块链系统的共识网络中的其中一个共识节点,提议节点与共识节点的本质相同,都是通过预先配置的共识算法来对待上链的区块进行验证。
如图13所示,在一示例性的实施例中,基于区块链的区块存储处理方法包括步骤S1310-S1330,详细介绍如下:
S1310,在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对该区块执行隐私计算。
首先需要理解的是,本实施例所提及的待上链的区块与图7所示实施例中提及的待上链的区块是同一区块。提议节点在对待上链的区块执行隐私计算后,便发起对该区块进行共识处理的广播,区块链系统中的共识节点会相应接收到提议节点发起的广播。
针对区块执行隐私计算是指计算区块链节点的内存池中的输入信息的合理特征值的过程,若以输入信息为交易为示例,对区块执行隐私计算也即是执行区块内交易的过程。共识节点在接收到提议节点发起的广播后,则针对该区块进行相应的隐私计算。
S1320,将该区块对应的第一部分数据存储至区块链上。
共识节点进行区块处理的过程也与提议节点类似,将一个完整的区块看作是由区块对应的第一部分数据和第二部分数据组成,区块对应的第一部分数据是指不会随着共识处理而变化的区块数据,例如区块头、交易数据等,区块对应的第二部分数据是指会随着共识处理而变化的区块数据,例如包括共识数据、交易读写集等。共识节点在对待上链的区块执行完成隐私计算后,将区块对应的第一部分数据存储至区块链上。
示例性的,与提议节点进行区块处理的过程类似,共识节点将待上链的区块对应的第一部分数据存储至区块链上的过程如下:
将待上链的区块对应的第一部分数据提交至区块链存储系统;
在区块链存储系统中进行第一部分数据的存储,且将第一部分数据的数据状态存储为预提交状态。
需要理解的是,本实施例提及的区块链存储系统是指共识节点部署的用于存储区块链的存储系统,区块链存储系统部署于共识节点的物理本地。而在共识节点部署为云服务器的情况下,也即共识节点部署在云端的情况下,区块链存储系统也相应部署在云端。
共识节点将待上链的区块对应的第一部分数据提交至区块链存储系统,以在区块链存储系统中存储该第一部分数据,同时将该第一部分数据的数据状态存储为预提交状态。仍与提议节点中部署的区块链存储系统同理,本实施例也在共识节点中设置有相同的存储结构,并使用不同的字段值来区分不同的数据状态,以便于将区块数据写入至该区块链存储系统中。该示例性的存储结构如下所示:
基于此示例性的存储结构,并假设区块对应的第一部分数据包括待上链区块的区块头和交易数据,预提交状态的字段值为“0”,区块对应的第一部分数据在共识节点的区块链存储系统的存储形式则表示为如下的数据文件:
S1330,在确定该区块达成共识后,将该区块对应的第二部分数据存储至区块链上,以完成区块的上链存储。
共识节点确定区块达成共识是指,待上链的区块在多个共识节点中的验证结果满足共识算法的规定,从而判定该区块已在区块链系统中达成共识,例如对待上链的区块验证通过的共识节点的数量占比满足共识算法规定的数量占比条件。
若共识节点确定待上链的区块已经达成共识,则可以相应确定区块对应的第二部分数据,通过将区块对应的第二部分数据存储至区块链上,则可完成该区块的完整上链存储。
共识节点将区块对应的第二部分数据存储至区块链上的过程如下所示:
将待上链的区块对应的第二部分数据提交至区块链存储系统;
在区块链存储系统中进行第二部分数据的存储,且将第二部分数据的数据状态存储为确认提交状态。
基于前述的关于共识节点中配置的区块链存储系统所支持的示例性的存储结构,假设区块对应的第二部分数据包括交易读写集和共识数据,确认提交状态的字段值为“1”,区块对应的第二部分数据在共识节点的区块链存储系统的存储形式则表示为如下的数据文件:
由上可以看出,在本实施例提供的方案中,通过在存储区块对应的第一部分数据或者第二部分数据的同时,还需相应存储该部分数据的数据状态,使得能够基于相应存储的数据状态来区分针对待上链的区块在不同阶段所存储的区块数据,例如本实施例中,通过预提交状态来区分数据文件中写入的这部分区块数据为待上链的区块对应的第一部分数据或者第二部分数据。
仍参照图6所示的时序流程示意图,对于共识节点来说,执行区块处理的完整流程也依次为:隐私计算、发起共识、达成共识和存储第二部分数据,此完整流程对应共识节点进行区块处理真正所需要耗费的时间,由于在共识节点中存储区块对应的第一部分数据的流程是与进行共识的流程并行进行的,存储第一部分数据的流程并不会真正消耗共识节点执行区块处理的完整流程所需的时间,因此相比于现有技术,本申请的实施例将共识节点执行完整区块存储所需的时间减小到实际仅需消耗存储区块对应的第二部分数据所需的时间,能够明显缩短区块处理所需时间,进而提升了区块的整体处理性能。
另外还考虑到待上链的区块在多个共识节点之间可能存在不会达成共识的情况,在一些示例性的实施例中,若共识节点确定待上链的区块并未在多个共识节点之间达成共识,则向区块链存储系统发起回滚请求,区块链存储系统响应于该回滚请求,存储预设格式的数据,且将预设格式的数据的数据状态存储为回滚状态。
示例性的,若假设确认回滚状态对应的字段值为“1”,以及预设格式的数据为空数据,该预设格式的数据在区块链存储系统的存储形式则可表示为如下的数据文件:
如上的区块处理流程可以表示为如图14所示的共识节点对应的区块处理流程示意图。如图14所示,提议节点在收到指示对待上链的区块进行处理的广播后(图14中称为收到共识),针对该区块进行隐私计算,同时将该区块对应的第一部分数据预先提交到区块链存储系统中存储;之后,共识节点若确定该区块已经达成共识,则将区块对应的第二部分数据确认提交到区块链存储系统中存储;若共识节点确定该区块未能达成共识,则向区块链存储系统发起回滚请求。
由上可以看出,共识节点对于待上链的区块的整体处理流程与前述实施例中记载的提议节点对于待上链的区块的整体处理流程是基本一致的,这也使得各节点中存储的区块链账本是一致的。因此,对于共识节点中进行区块处理的详细过程,可以参见前述实施例中记载的关于提议节点针对待上链的区块的整体处理流程,本实施例不再对此进行赘述。
总的来说,基于前述的各个实施例中的详细记载可以看出,本申请的实施例为了提升区块链系统处理区块的整体性能,所采用的技术方案是将一个区块的区块数据拆分为第一部分数据和第二部分数据,第一部分数据在预先提交阶段提交至节点的区块链存储系统中上链存储,第二部分数据在确认提交阶段提交至节点的区块链存储系统中上链存储;并且,节点的区块链存储系统还支持已写入区块数据的回滚。
若以区块对应的第一部分数据包括区块头和交易数据,区块对应的第二部分数据包括交易读写集和共识数据作为示例,本申请的实施例所采用的技术方案可以表示为如图15所示的区块处理架构。
结合前述各个实施例中的记载内容和图15所示的区块处理架构可以看出,本申请的实施例提供的技术方案至少具有如下几个方面的技术效果:
第一、缩短了存储区块所需的时间;
本申请的实施例所提供的技术方案中,考虑到现有技术中对于区块的隐私计算、共识、存储是串行执行的,通过分析区块包含的区块数据的组成特性和区块的处理环节,本申请的实施例特此提出了如上的技术方案,对于区块链系统中的每个节点来说,实现了在发起共识或者进入共识的同时将区块对应的第一部分数据提交到区块链存储系统中进行上链存储,区块的这部分数据的存储并不会真正消耗区块处理的时长,而在真正消耗区块存储所需时间的阶段仅需存储区块对应的第二部分数据,能够明显地缩短区块的处理时间。对于整个区块链系统来说,也能够整体上缩短处理每个区块所需的时间,从而能够提升区块的整体处理性能。
第二、实现了区块存储可分阶段提交;
本申请的实施例可以将一个区块进行拆分,在一个节点发起共识或者进入共识时,可以把区块中的部分数据先写入到区块链存储系统中,而区块的另一部分数据时在共识完成后再写入到区块链存储系统中。这样相当于将一个区块拆分为两部分,分为两次写入到区块链存储系统中,因此区块链存储也实现了支持对于同一区块进行两次区块数据写入的功能。
第三、区块存储能够保证原子性;
在本申请的实施例中,区块存储可分为两阶段提交,也即是将一个区块分为两次写入到区块链存储系统中,这就要求区块的写入需要保证原子性。例如,如果只在区块链存储系统中写入了区块对应的第一部分数据,而没有写入区块对应的第二部分数据,这样的区块数据在区块链存储系统中是不完整的,不完整的区块不能被查询客户端查询到,因此本申请的实施例通过在每次存储区块数据时,同时存储区块数据的数据状态,使得节点在从区块链存储系统中读取目标区块对应的数据文件时,根据最近写入的数据文件中含有的数据状态来哦判断目标区块的存储是否满足原子性,只有满足原子性的目标区块的区块数据才可以被外部获知。
第四、区块的存储支持回滚;
在本申请的实施例中,如果一个区块只写入了第一部分数据,且写入错误,则允许已写入区块数据的回滚,相当于实现了已写入的部分区块数据的“删除”操作。但是需理解的是,该“删除”操作并不是真正意义上的删除,因为已经写入区块链存储系统中的这部分区块数据仍存在于区块链存储系统中,而仅是对于除节点以外的外部设备来说,已经回滚的这部分数据是无法被外部设备所感知到的,其在应用场景中的应用状态相当于是已被删除的状态。
图16是本申请的一示例性实施例示出的基于区块链的区块存储处理装置的框图。该装置配置于提议节点上。如图16所示,该装置包括:
广播发起模块1610,配置为在对待上链的区块执行隐私计算后,发起针对区块进行共识处理的广播;
第一存储模块1620,配置为将区块对应的第一部分数据存储至区块链上,第一部分数据包括不会随着共识处理而变化的区块数据;
第二存储模块1630,配置为在确定区块达成共识后,将区块对应的第二部分数据存储至区块链上,以完成区块的上链存储,第二部分数据包括随着共识处理而变化的区块数据。
在另一示例性的实施例中,第一存储模块1620包括:
第一提交单元,配置为将区块对应的第一部分数据提交至区块链存储系统;
第一存储单元,配置为在区块链存储系统中进行第一部分数据的存储,且将第一部分数据的数据状态存储为预提交状态。
在另一示例性的实施例中,第一存储单元包括:
创建子单元,配置为在区块链存储系统中创建数据文件;
写入子单元,配置为向数据文件中写入第一部分数据,以及写入第一部分数据对应的数据状态为预提交状态。
在另一示例性的实施例中,第二存储模块1630包括:
第二提交单元,配置为将区块对应的第二部分数据提交至区块链存储系统;
第二存储单元,配置为在区块链存储系统中进行第二部分数据的存储,且将第二部分数据的数据状态存储为确认提交状态。
在另一示例性的实施例中,该装置还包括:
第一请求模块,配置为若确定区块并未达成共识,向区块链存储系统发起回滚请求;
第一响应模块,配置为在区块链存储系统中响应回滚请求,以存储预设格式的数据,且将预设格式的数据的数据状态存储为回滚状态。
在另一示例性的实施例中,该装置还包括:
第二响应模块,配置为响应于查询客户端发送的区块数据查询请求,在区块链存储系统中查询目标区块对应的数据文件集;
数据返回模块,配置为若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为预提交状态或回滚状态,向查询客户端返回指示查询失败的通知消息;若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为确认提交状态,向查询客户端返回数据文件集。
图17是本申请的另一示例性实施例示出的基于区块链的区块存储处理装置的框图。该装置配置于共识节点上。如图17所示,该装置包括:
广播接收模块1710,配置为在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对区块执行隐私计算;
第三存储模块1720,配置为将区块对应的第一部分数据存储至区块链上,第一部分数据包括不会随着共识处理而变化的区块数据;
第四存储模块1730,配置为在确定区块达成共识后,将区块对应的第二部分数据存储至区块链上,以完成区块的上链存储,第二部分数据包括随着共识处理而变化的区块数据。
在另一示例性的实施例中,第三存储模块1720包括:
第三提交单元,配置为将区块对应的第一部分数据提交至区块链存储系统;
第三存储单元,配置为在区块链存储系统中进行第一部分数据的存储,且将第一部分数据的数据状态存储为预提交状态。
在另一示例性的实施例中,第四存储模块1730包括:
第四提交单元,配置为将区块对应的第二部分数据提交至区块链存储系统;
第四存储单元,配置为在区块链存储系统中进行第二部分数据的存储,且将第二部分数据的数据状态存储为确认提交状态。
在另一示例性的实施例中,该装置还包括:
第三请求模块,配置为若确定区块并未达成共识,向区块链存储系统发起回滚请求;
第二响应模块,配置为在区块链存储系统中响应回滚请求,以存储预设格式的数据,且将预设格式的数据的数据状态存储为回滚状态。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。上述实施例所提供的装置在实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能,本处也不对此进行限制。
本申请的实施例还提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得电子设备实现上述各个实施例中提供的基于区块链的区块存储处理方法。
图18示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。需要说明的是,图18示出的电子设备的计算机系统1800仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图18所示,计算机系统包括中央处理单元(Central Processing Unit,CPU)1801,其可以根据存储在只读存储器(Read-Only Memory,ROM)1802中的程序或者从储存部分1808加载到随机访问存储器(Random Access Memory,RAM)1803中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1803中,还存储有系统操作所需的各种程序和数据。CPU 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。输入/输出(Input/Output,I/O)接口1805也连接至总线1804。
以下部件连接至I/O接口1805:包括键盘、鼠标等的输入部分1806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1807;包括硬盘等的储存部分1808;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1809。通信部分1809经由诸如因特网的网络执行通信处理。驱动器1810也根据需要连接至I/O接口1805。可拆卸介质1811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1810上,以便于从其上读出的计算机程序根据需要被安装入储存部分1808。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1809从网络上被下载和安装,和/或从可拆卸介质1811被安装。在该计算机程序被中央处理单元(CPU)1801执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前的基于区块链的区块存储处理方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各个实施例中提供的基于区块链的区块存储处理方法。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术人员根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。

Claims (16)

1.一种基于区块链的区块存储处理方法,其特征在于,应用于提议节点,所述方法包括:
在对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播;
将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;
在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
2.根据权利要求1所述的方法,其特征在于,所述将所述区块对应的第一部分数据存储至区块链上,包括:
将所述区块对应的第一部分数据提交至区块链存储系统;
在所述区块链存储系统中进行所述第一部分数据的存储,且将所述第一部分数据的数据状态存储为预提交状态。
3.根据权利要求2所述的方法,其特征在于,所述在所述区块链存储系统中进行所述第一部分数据的存储,且将所述第一部分数据的数据状态存储为预提交状态,包括:
在所述区块链存储系统中创建数据文件;
向所述数据文件中写入所述第一部分数据,以及写入所述第一部分数据对应的数据状态为预提交状态。
4.根据权利要求2所述的方法,其特征在于,所述在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,包括:
将所述区块对应的第二部分数据提交至所述区块链存储系统;
在所述区块链存储系统中进行所述第二部分数据的存储,且将所述第二部分数据的数据状态存储为确认提交状态。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若确定所述区块并未达成共识,向所述区块链存储系统发起回滚请求;
在所述区块链存储系统中响应所述回滚请求,以存储预设格式的数据,且将所述预设格式的数据的数据状态存储为回滚状态。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:
响应于查询客户端发送的区块数据查询请求,在所述区块链存储系统中查询目标区块对应的数据文件集;
若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为预提交状态或回滚状态,向所述查询客户端返回指示查询失败的通知消息;
若查询到的数据文件集中,最近写入的目标数据文件包含的数据状态为确认提交状态,向所述查询客户端返回所述数据文件集。
7.一种基于区块链的区块存储处理方法,其特征在于,应用于共识节点,所述方法包括:
在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对所述区块执行隐私计算;
将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;
在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
8.根据权利要求7所述的方法,其特征在于,所述将所述区块对应的第一部分数据存储至区块链上,包括:
将所述区块对应的第一部分数据提交至区块链存储系统;
在所述区块链存储系统中进行所述第一部分数据的存储,且将所述第一部分数据的数据状态存储为预提交状态。
9.根据权利要求8所述的方法,其特征在于,所述在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,包括:
将所述区块对应的第二部分数据提交至所述区块链存储系统;
在所述区块链存储系统中进行所述第二部分数据的存储,且将所述第二部分数据的数据状态存储为确认提交状态。
10.根据权利要求8所述的方法,其特征在于,所述方法还包括:
若确定所述区块并未达成共识,向所述区块链存储系统发起回滚请求;
在所述区块链存储系统中响应所述回滚请求,以存储预设格式的数据,且将所述预设格式的数据的数据状态存储为回滚状态。
11.一种区块链系统,其特征在于,由提议节点和共识节点构成所述区块链系统的共识网络,其中:
所述提议节点对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播,并将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;
所述共识节点在接收到提议节点发起的所述广播后,对所述区块执行隐私计算,并将所述区块对应的第一部分数据存储至区块链上;
所述提议节点或所述共识节点在确定所述区块已达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
12.一种基于区块链的区块存储处理装置,其特征在于,配置于提议节点,所述装置包括:
广播发起模块,配置为在对待上链的区块执行隐私计算后,发起针对所述区块进行共识处理的广播;
第一存储模块,配置为将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;
第二存储模块,配置为在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
13.一种基于区块链的区块存储处理装置,其特征在于,配置于共识节点,所述装置包括:
广播接收模块,配置为在接收到提议节点发起的针对待上链的区块进行共识处理的广播后,对所述区块执行隐私计算;
第三存储模块,配置为将所述区块对应的第一部分数据存储至区块链上,所述第一部分数据包括不会随着所述共识处理而变化的区块数据;
第四存储模块,配置为在确定所述区块达成共识后,将所述区块对应的第二部分数据存储至所述区块链上,以完成所述区块的上链存储,所述第二部分数据包括随着所述共识处理而变化的区块数据。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现如权利要求1-10中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机可读指令,当所述计算机可读指令被计算机的处理器执行时,使计算机执行权利要求1-10中任一项所述的方法。
16.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-10中任一项所述的方法。
CN202211195286.4A 2022-09-28 2022-09-28 基于区块链的区块存储处理方法及装置、区块链系统 Pending CN117827963A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211195286.4A CN117827963A (zh) 2022-09-28 2022-09-28 基于区块链的区块存储处理方法及装置、区块链系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211195286.4A CN117827963A (zh) 2022-09-28 2022-09-28 基于区块链的区块存储处理方法及装置、区块链系统

Publications (1)

Publication Number Publication Date
CN117827963A true CN117827963A (zh) 2024-04-05

Family

ID=90519638

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211195286.4A Pending CN117827963A (zh) 2022-09-28 2022-09-28 基于区块链的区块存储处理方法及装置、区块链系统

Country Status (1)

Country Link
CN (1) CN117827963A (zh)

Similar Documents

Publication Publication Date Title
US11243945B2 (en) Distributed database having blockchain attributes
US10936445B2 (en) Resource management
US20220209948A1 (en) Blockchain notification board storing blockchain resources
US12120254B2 (en) Blockchain notification board storing blockchain resources
US11489672B2 (en) Verification of conditions of a blockchain transaction
CN112101942B (zh) 基于区块链的交易请求处理方法、系统、装置及设备
CN109492013B (zh) 应用于数据库集群的数据处理方法、装置和系统
US11720545B2 (en) Optimization of chaincode statements
US20240232223A1 (en) Data synchronization method and system based on blockchain, and related device
CN112612856B (zh) 基于区块链的数据处理方法和装置
US11627122B2 (en) Inter-system linking method and node
CN111737104B (zh) 区块链网络服务平台及其测试用例共享方法、存储介质
WO2019184775A1 (zh) 管理数据的存储方法、设备及存储介质
US12105735B2 (en) Asynchronous accounting method and apparatus for blockchain, medium and electronic device
US12072866B2 (en) Data processing method and apparatus, computer device, and storage medium
US20200169125A1 (en) Wireless energy transfer
CN111639309B (zh) 一种数据处理方法、装置、节点设备及存储介质
US12032943B1 (en) Method for upgrading blockchain system, and terminal device
CN116150260A (zh) 区块链系统的数据处理方法、装置、介质及电子设备
US20240137208A1 (en) Asset transferring method and apparatus based on multiple blockchains, device, medium, and product
WO2023207529A1 (zh) 数据处理方法、装置及设备、介质、产品
CN115098528B (zh) 业务处理方法、装置、电子设备及计算机可读存储介质
CN117827963A (zh) 基于区块链的区块存储处理方法及装置、区块链系统
US20200358597A1 (en) Blockchain-based data processing
CN115220775A (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