CN113826354A - 基于纠错码的区块链数据存储 - Google Patents

基于纠错码的区块链数据存储 Download PDF

Info

Publication number
CN113826354A
CN113826354A CN201980005292.9A CN201980005292A CN113826354A CN 113826354 A CN113826354 A CN 113826354A CN 201980005292 A CN201980005292 A CN 201980005292A CN 113826354 A CN113826354 A CN 113826354A
Authority
CN
China
Prior art keywords
data
blocks
blockchain
transaction
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
CN201980005292.9A
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.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology 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 Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Publication of CN113826354A publication Critical patent/CN113826354A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • 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/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • 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
    • G06F21/645Protecting data integrity, e.g. using checksums, certificates or signatures using a third party
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • 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
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • 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/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Power Engineering (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Retry When Errors Occur (AREA)
  • Storage Device Security (AREA)

Abstract

本文公开了用于存储区块链数据的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。所述方法之一包括,接收由可通信地耦接到许可区块链网络的客户端节点发布的交易,向多个验证节点发送所述交易以验证所述交易并运行共识,接收由所述多个验证节点基于对所述交易的至少一部分的共识而生成的一个或多个区块,使用ECC对所述一个或多个区块进行编码以生成一个或多个编码区块,以及针对所述一个或多个编码区块中的每个编码区块:基于与所述一个或多个区块相关联的数据存储方案将所述编码区块划分为多个数据集。

Description

基于纠错码的区块链数据存储
技术领域
本说明书涉及基于许可区块链网络中的纠错码的区块链数据存储。
背景技术
分布式账本系统(DLS),也可称为共识网络和/或区块链网络,使参与的实体能够安全地且不可篡改地存储数据。在不引用任何特定用例的情况下,分布式账本系统通常被称为区块链网络。区块链网络的示例类型可以包括公有区块链网络、私有区块链网络和联盟区块链网络。联盟区块链网络针对选定的实体组群提供,该实体组群控制共识过程,并且所述联盟区块链网络包括访问控制层。
基于区块链的程序可以由分布式计算平台执行。例如,分布式计算平台可以包括提供用于执行智能合约的运行时环境的虚拟机。区块链计算平台可以被视为基于交易的状态机。平台中的状态数据可以集合成称为世界状态的全局共享状态。世界状态包括账号地址和账号状态之间的映射。世界状态可以被存储在诸如默克尔帕特里夏树(MPT)的数据结构中。
除了状态数据,区块链网络还可以存储其他类型的数据,例如区块数据和索引数据。区块数据可以包括区块头和区块体。区块头可以包括特定区块的身份信息,并且区块体可以包括该区块确认的交易。随着越来越多的交易进入区块链,状态数据和区块数据的大小可能会变得非常大。在某些DLS中,每个节点都存储整个区块链副本,这会占用大量存储空间。这是因为所有区块数据和状态数据以回溯到记录在区块链的第一笔交易的方式被存储。在某些DLS中,一些共享节点存储整个区块链副本,并与其他可能产生“数据不平等”的区块链节点共享区块链数据。也就是说,当数据在不同节点之间分布不均时,当存储大多数数据的节点出现故障时,数据安全性风险可能会很高。
在一些联盟区块链网络或私有区块链网络中,某些节点不参与共识。期望通过在非共识节点之间启用数据存储方案来转移共识节点的一些存储负担。还期望将恢复区块链数据的计算负担转移到非共识节点,同时维护区块链数据的同等性和完整性。
发明内容
所描述的主题的实施例可以包括单独或组合的一个或多个特征。
例如,在一个实施例中,公开了一种计算机实现的用于由许可区块链网络的非验证节点(NVN)执行的区块链数据存储的方法。NVN可以接收由可通信地耦接到许可区块链网络的客户端节点发布的交易,向多个验证节点发送所述交易以验证所述交易并运行共识,接收所述多个验证节点基于对所述交易的至少一部分的共识生成的一个或多个区块,使用ECC对所述一个或多个区块进行编码以生成一个或多个编码区块。针对所述一个或多个编码区块中的每个编码区块,NVN可以基于与所述一个或多个区块相关联的数据存储方案将所述编码区块划分为多个数据集,并基于所述数据存储方案中提供的所述分配存储所述多个数据集中的至少一个数据集。
在一些实施例中,这些一般和特定方面可以使用系统、方法或计算机程序,或系统、方法和计算机程序的任何组合来实现。前述和其他描述的实施例可以各自可选地包括以下特征中的一个或多个:
在一些实施例中,所述NVN还从除所述NVN以外的所述多个NVN的剩余部分,接收相应的NVN基于所述数据存储方案中提供的所述分配存储所述多个数据集中的至少一个数据集的确认;并向所述多个验证节点发送通知以删除所述一个或多个区块。
在一些实施例中,所述NVN将区块链数据存储在分层存储中,且在所述分层存储中,与较旧的区块相比,较新的区块被存储在相同或更快的层中。
在一些实施例中,所述NVN还从所述客户端节点接收用于验证所述一个或多个区块中包括的交易的请求,基于索引从多个NVN的剩余部分检索与所述一个或多个区块相关联的数据集,基于所述数据集对所述一个或多个区块进行解码,以及如果所述交易被包含在所述一个或多个区块中,则验证所述交易存在。
在一些实施例中,所述NVN还从验证节点接收用于检索所述一个或多个区块中包括的交易的请求,基于索引从多个NVN的剩余部分中检索与所述一个或多个区块中的一个区块相关联的数据集,以及基于所述数据集对所述一个或多个区块中的该一个区块进行解码,并向所述验证节点发送所述交易。
在一些实施例中,当所述NVN的计算资源的利用率小于或等于预定值时,执行所述ECC。
在一些实施例中,对于所述多个编码区块中的每个编码区块,所述NVN还对除所述多个数据集中的至少一个数据集以外的所述多个数据集的剩余部分进行哈希处理以生成哈希值,存储所述哈希值,并且丢弃所述一个或多个区块以及所述多个数据集的剩余部分。
在一些实施例中,当所述NVN的存储空间的使用率大于或等于预定百分比时,执行所述ECC。
在一些实施例中,所述ECC是通过向所述多个区块添加冗余位来执行的纠删编码。
应了解,依据本文的方法可以包括本文描述的方面和特征的任意组合。也就是说,根据本文的方法不限于本文具体描述的方面和特征的组合,还包括所提供的方面和特征的任意组合。
以下在附图和描述中阐述了本文的一个或多个实施方案的细节。根据说明书和附图以及权利要求,本文的其他特征和优点将显而易见。
附图说明
图1描绘了可用于执行本文实施例的环境的示例。
图2描绘了根据本文的实施例的架构的示例。
图3描绘了根据本文的实施例的区块数据的编码和哈希处理的示例。
图4描绘了根据本文的实施例的数据存储方案的示例。
图5描绘了根据本文的实施例的区块数据的编码和哈希处理的另一示例。
图6描绘了根据本文的实施例的基于非验证节点(NVN)的共享区块链数据存储的处理的示例。
图7描绘了可以根据本文的实施例执行的过程的示例。
图8描绘了根据本文的实施例的装置的模块的示例。
各附图中相同的附图标记和名称表示相同的元件。
具体实施方式
本文描述了用于在许可区块链网络中基于纠错码(ECC)存储区块链数据的技术。这些技术通常涉及接收由可通信地耦接到许可区块链网络的客户端节点发布的交易,向多个验证节点发送所述交易以验证所述交易并运行共识,接收由所述多个验证节点基于对所述交易的至少一部分的共识生成的一个或多个区块,使用ECC对所述一个或多个区块进行编码以生成一个或多个编码区块,以及针对所述一个或多个编码区块中的每个编码区块:基于与所述一个或多个区块相关联的数据存储方案将所述编码区块划分为多个数据集。
如本文所述,区块链网络可以存储不同类型的数据,例如状态数据、区块数据和索引数据。区块数据包括区块链网络中的所有交易,由于新区块不断被添加到区块链中,因此会占用大量存储空间。对于区块链节点来说,每个区块链节点存储所有区块数据、尤其是不经常被访问的区块(例如,很久以前添加到区块链中的区块),这可能是低效率的。
在诸如私有区块链网络或联盟网络的许可区块链网络中,可以通过验证节点(validating nodes,VN)和非验证节点(non-validating nodes,NVN)运行分布式账本协议。VN和NVN也称为对等体。VN可以是共识节点,负责运行共识、验证交易和维护分布式账本。NVN不参与共识或执行交易。在一些实施例中,代替存储通过共识生成的区块,VN可以将区块(除了最新区块之外)发送到NVN以进行存储。此外,在NVN接收区块之后,它们可以执行ECC以对区块进行编码,并将ECC编码区块划分为数据集,以由每个NVN单独存储。因此,本文的一些实施例提供,在包括VN和NVN的许可区块链网络中,VN仅存储最近创建的区块,并且NVN存储ECC编码区块的一部分,以降低VN和NVN两者的存储成本。
本文中描述的技术产生若干技术效果。例如,本主题的实施例减轻了区块链网络的存储资源的负担,同时维持了区块链节点的计算效率和数据平等性。对于不经常访问的区块(例如,较旧的区块),可以通过在每个区块链节点上仅保存ECC编码区块(此处也称为编码区块)的一部分并当需要时从其他区块链节点检索所述编码区块的剩余区块来节省区块链节点的存储资源。
作为另一个示例,当区块链网络是包括VN和NVN的许可区块链网络时。VN可以达成共识以生成区块,并将该区块发送到NVN进行存储。在NVN接收该区块后,它们可以执行ECC以对该区块进行编码,并将编码区块划分为数据集,以由每个NVN单独存储,进而节省存储空间。这样,本主题的一些实施例降低了VN和NVN两者的存储消耗。此外,由于NVN不参与交易的运行共识,因此由NVN执行ECC可以将一些计算负担从VN转移到NVN,同时实现存储空间的成本节约。类似地,当VN需要访问旧区块中的交易时,VN可以向NVN发送请求以恢复包含交易的相应区块。还可以节省用于对ECC编码的区块进行解码的VN的计算资源消耗。
为本文的实施例提供进一步的背景,如上所述,分布式账本系统(DLS),也可以称为共识网络(例如,由点对点(Peer-to-Peer)节点组成)和区块链网络,使参与实体能够安全且不可篡改地进行交易并存储数据。尽管术语“区块链”通常与特定网络和/或用例相关,但本文所使用的区块链一般指在不参考任何特定用例的情况下的DLS。
区块链是以交易是不可篡改的方式存储交易的数据结构。因此,记录在区块链上的交易是可靠和值得信赖的。区块链包括一个或多个区块。链中的每个区块通过包括紧邻其之前的前一区块的加密哈希值(cryptographic hash)链接到该前一区块。每个区块还包括时间戳、自身的加密哈希值以及一个或多个交易。已经由区块链网络的节点验证的交易经哈希处理并编码成默克尔(Merkle)树。Merkle树是数据结构,其中树的叶节点处的数据是经哈希处理的,并且在该树的每个分支中的所有哈希值在该分支的根处连接。此过程沿着树持续一直到整个树的根,在整个树的根处存储了代表树中所有数据的哈希值。声称是存储在树中的交易的哈希值可以通过确定其是否与树的结构一致而被快速验证。
区块链是用于存储交易的去中心化或至少部分去中心化的数据结构,而区块链网络是通过广播、验证和确认交易等来管理、更新和维护一个或多个区块链的计算节点的网络。如上所述,区块链网络可提供为公有区块链网络、私有区块链网络或联盟区块链网络。在本文中参考联盟区块链网络进一步详细描述本文的实施例。然而,可以预期,可以在任何适当类型的区块链网络中实现本文的实施例。
通常,联盟区块链网络在参与的实体中是私有的。在联盟区块链网络中,共识过程由授权的节点集控制,该节点集可以被称为共识节点,一个或多个共识节点由相应实体(例如,金融机构、保险公司)操作。例如,由十(10)个实体(例如,金融机构、保险公司)组成的联盟可以操作联盟区块链网络,每个实体可以操作联盟区块链网络中的至少一个节点。
在一些示例中,在联盟区块链网络内,提供全局区块链作为跨所有节点复制的区块链。也就是说,所有的共识节点相对于全局区块链而言处于完全共识状态。为了达成共识(例如,同意将区块添加到区块链),在联盟区块链网络内实施共识协议。例如,联盟区块链网络可以实施实用拜占庭容错(PBFT)共识,下面将进一步详细描述。
图1是示出了可以用于执行本文实施例的环境100的示例的图。在一些示例中,环境100使得实体能够参与联盟区块链网络102。环境100包括计算系统106、108和网络110。在一些示例中,网络110包括局域网(LAN)、广域网(WAN)、因特网或其组合,并且连接网站、用户设备(例如,计算设备)和后端系统。在一些示例中,可以通过有线和/或无线通信链路来访问网络110。在一些示例中,网络110使得能够与联盟区块链网络102通信或能够在联盟区块链网络102内部通信。通常,网络110表示一个或多个通信网络。在一些情况下,计算系统106、108可以是云计算系统(未示出)的节点,或者每个计算系统106、108可以是单独的云计算系统,其包括通过网络互连并且用作分布式处理系统的多个计算机。
在所描述的示例中,计算系统106、108可以各自包括能够作为节点参与至联盟区块链网络102中的任何适当计算系统。计算设备的示例包括但不限于服务器、台式计算机、膝上型计算机、平板计算设备和智能电话。在一些示例中,计算系统106、108承载一个或多个由计算机实施的服务,用于与联盟区块链网络102交互。例如,计算系统106可以承载第一实体(例如,用户A)的由计算机实施的、例如交易管理系统的服务,第一实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。计算系统108可以承载第二实体(例如,用户B)的由计算机实施的、例如交易管理系统的服务,第二实体使用该交易管理系统管理其与一个或多个其他实体(例如,其他用户)的交易。在图1的示例中,联盟区块链网络102被表示为节点的点对点网络(Peer-to-Peer network),并且计算系统106、108分别提供参与联盟区块链网络102的第一实体和第二实体的节点。
图2描绘了根据本文的实施例的架构200的示例。示例性概念架构200包括分别对应于参与者A、参与者B和参与者C的参与者系统202、204、206。每个参与者(例如,用户、企业)参与到作为点对点网络提供的区块链网络212中,该点对点网络包括多个节点214,至少一些节点将信息不可篡改地记录在区块链216中。如图中进一步详述,尽管在区块链网络212中示意性地描述了单个区块链216,但是在区块链网络212上提供并维护了区块链216的多个副本。
在所描绘的示例中,每个参与者系统202、204、206分别由参与者A、参与者B和参与者C提供或代表参与者A、参与者B和参与者C,并且作为区块链网络中的相应节点214发挥作用。如这里所使用的,节点通常是指连接到区块链网络212且使得相应的参与者能够参与到区块链网络中的个体系统(例如,计算机、服务器)。在图2的示例中,参与者对应于每个节点214。然而,可以预期,一个参与者可以操作区块链网络212内的多个节点214,和/或多个参与者可以共享一个节点214。在一些示例中,参与者系统202、204、206使用协议(例如,超文本传输协议安全(HTTPS))和/或使用远程过程调用(RPC)与区块链网络212通信或经过区块链网络212进行通信。
节点214可以在区块链网络212内具有不同的参与程度。例如,一些节点214可以参与共识处理(例如,作为将区块添加到区块链216的挖矿节点),而其他节点214不参与此共识处理。作为另一示例,一些节点214存储区块链216的完整副本,而其他节点214仅存储区块链216的一部分的副本。例如,数据访问特权可以限制相应的参与者在其相应系统内存储的区块链数据。在图2的示例中,参与者系统202、204和206存储区块链216的相应的完整副本216'、216”和216”'。
区块链(例如,图2的区块链216)由区块的链组成,每个区块存储数据。数据的示例包括表示两个或更多个参与者之间的交易的交易数据。尽管本文通过非限制性示例使用了“交易”,但是可以预期,任何适当的数据可以被存储在区块链中(例如,文档、图像、视频、音频)。交易的示例可以包括(但不限于)有价物(例如,资产、产品、服务、货币)的交换。交易数据被不可篡改地存储在区块链中。也就是说,交易数据不能改变。
在将交易数据存储在区块中之前,对交易数据进行哈希处理。哈希处理是将交易数据(作为字符串数据提供)转换为固定长度哈希值(也作为字符串数据提供)的过程。不可能对哈希值进行去哈希处理(un-hash)以获取交易数据。哈希处理确保即使交易数据轻微改变也会导致完全不同的哈希值。此外,如上所述,哈希值具有固定长度。也就是说,无论交易数据的大小如何,哈希值的长度都是固定的。哈希处理包括通过哈希函数处理交易数据以生成哈希值。哈希函数的示例包括(但不限于)输出256位哈希值的安全哈希算法(SHA)-256。
多个交易的交易数据被哈希处理并被存储在区块中。例如,提供两个交易的哈希值,并对它们本身进行哈希处理以提供另一个哈希值。重复此过程,直到针对所有要存储在区块中的交易提供单个哈希值为止。该哈希值被称为Merkle根哈希值,并被存储在区块的头中。任何交易中的更改都会导致其哈希值发生变化,并最终导致Merkle根哈希值发生变化。
经过共识协议将区块添加到区块链。区块链网络内的多个节点参与共识协议,并从事工作以将区块添加到区块链中。这种节点被称为共识节点。上面介绍的PBFT用作共识协议的非限制性示例。共识节点执行共识协议以将交易添加到区块链,并更新区块链网络的整体状态。
更详细地,共识节点生成区块头,对区块中的所有交易进行哈希处理,并将哈希值成对地组合以生成进一步的哈希值,直到为区块中的所有交易提供单个哈希值(Merkle根哈希值)。将此哈希值添加到区块头中。共识节点还确定区块链中最新区块(即,添加到区块链中的最后一个区块)的哈希值。共识节点还向区块头添加随机数(nonce)和时间戳。
通常,PBFT提供容忍拜占庭故障(例如,故障节点、恶意节点)的实用拜占庭状态机复制。这通过在PBFT中假设将发生故障(例如,假设存在独立节点故障和/或由共识节点发送的操纵消息)而实现。在PBFT中,以包括主共识节点和备共识节点的序列提供共识节点。主共识节点被周期性地改变,通过区块链网络内的所有共识节点对区块链网络的全局状态达成一致,将交易添加到区块链中。在该处理中,消息在共识节点之间传输,并且每个共识节点证明消息是从指定的对等节点(peer node)接收的,并验证在传输期间消息未被修改。
在PBFT中,共识协议是在所有共识节点以相同的状态开始的情况下分多个阶段提供的。首先,客户端向主共识节点发送调用服务操作(例如,在区块链网络内执行交易)的请求。响应于接收到请求,主共识节点将请求多播到备共识节点。备共识节点执行请求,并且各自向客户端发送回复。客户端等待直到接收到阈值数量的回复。在一些示例中,客户端等待直到接收到f+1个回复,其中f是区块链网络内可以容忍的故障共识节点的最大数量。在PBFT中,故障共识节点的最大数量必须小于共识节点总数的1/3。最终结果是,足够数量的共识节点就将记录添加到区块链的顺序达成一致,并且该记录或被接受或被拒绝。
在一些区块链网络中,实施密码学来维护交易的隐私。例如,如果两个节点想要保持交易隐私,以使得区块链网络中的其他节点不能够看出交易的细节,则这两个节点可以对交易数据进行加密处理。加密处理的示例包括但不限于对称加密和非对称加密。对称加密是指使用单个密钥既进行加密(从明文生成密文)又进行解密(从密文生成明文)的加密过程。在对称加密中,同一密钥对于多个节点可用,因此每个节点都可以对交易数据进行加密/解密。
非对称加密使用密钥对,每个密钥对包括私钥和公钥,私钥仅对于相应节点是已知的,而公钥对于区块链网络中的任何或所有其他节点是已知的。节点可以使用另一个节点的公钥来加密数据,并且加密的数据可以使用其他节点的私钥被解密。例如,再次参考图2,参与者A可以使用参与者B的公钥来加密数据,并将加密的数据发送给参与者B。参与者B可以使用其私钥来解密该加密的数据(密文)并提取原始数据(明文)。使用节点的公钥加密的消息只能使用该节点的私钥解密。
非对称加密用于提供数字签名,这使得交易中的参与者能够确认交易中的其他参与者以及交易的有效性。例如,节点可以对消息进行数字签名,而另一个节点可以根据参与者A的该数字签名来确认该消息是由该节点发送的。数字签名也可以用于确保消息在传输过程中不被篡改。例如,再次参考图2,参与者A将向参与者B发送消息。参与者A生成该消息的哈希值,然后使用其私钥加密该哈希值以提供作为加密哈希值的数字签名。参与者A将该数字签名附加到该消息上,并将该具有数字签名的消息发送给参与者B。参与者B使用参与者A的公钥解密该数字签名,并提取哈希值。参与者B对该消息进行哈希处理并比较哈希值。如果哈希值相同,则参与者B可以确认该消息确实来自参与者A,且未被篡改。
图3描绘了根据本文的实施例的区块数据的编码和哈希处理300的示例。在此示例中,描绘了4个区块链节点的区块链网络,4个区块链节点是区块链节点302、304、306和308。以区块链节点302为例来说明编码和哈希处理300,区块链节点302可以将区块链网络的区块数据存储到区块312的区块体中。在所示的示例中,区块数据被存储在区块100中。之后,区块链节点302可以与其他区块链节点304、306和308一起参与共识处理。在共识处理中,区块链节点302可执行共识算法,例如工作量证明(PoW)或权益证明(PoS),以在区块链上创建相应的区块。
在一些实施例中,区块链节点302可以识别一个或多个不经常访问的区块。实际上,区块已经创建的时间越长,对应的区块数据为执行诸如智能合约的操作所需要的可能性就越小。当本地存储的区块是针对预定时间量已经在区块链上创建的历史区块时,区块链节点302可以确定本地存储的区块不常被访问。例如,预定时间量可以是创建区块的平均时间的一倍或两倍。在一些示例中,当区块中的区块数据在预定时间量内没有被检索用以执行智能合约时,该区块也可以被确定为不经常被访问。
在识别不经常访问的区块之后,区块链节点302可以对每个不经常被访问的区块的区块体中的区块数据执行ECC 314。通过向数据添加冗余位(也称为冗余),ECC可用于控制不可靠传输中的数据错误或丢失。冗余位可以是许多原始信息位的复杂函数。冗余使得数据的错误或丢失可以被纠正,而无需再次发送数据。原始信息可能会或可能不会真正地出现在编码输出中。编码输出中包括未修改的原始信息的ECC代码被称为系统ECC代码,而那些不包括的被称为非系统ECC代码。可以通过ECC纠正的错误或丢失位的最大比例由ECC代码的设计确定。因此,不同的纠错码用于不同的条件。通常,更强的ECC代码会引起更多的冗余,这会增加代码的存储消耗,并降低通信效率,如果要传输编码的信息的话。
ECC的一个示例可以是纠删编码。使用纠删编码,可以将k个符号的消息编码为具有n个符号的码字,其中k和n是自然数,并且k<n。该消息可以从n-符号码字的子集中被恢复。分数r=k/n是纠删编码的编码率。
通过使用ECC,每个区块链节点可以存储一部分编码区块数据,并在需要时从其他区块链节点检索剩余的编码区块数据。在一些实施例中,可以当区块链节点302的计算资源的利用率低于预定值(例如40%)时执行ECC。这样,可以减少对区块链节点302上的其他计算操作的干扰。在一些实施例中,可以当区块链节点302的存储空间的使用率大于或等于预定百分比时执行ECC,使得在ECC之后,编码区块数据的某些部分可以被删除以释放存储空间。
再次以区块100为例,假设区块链节点302将区块100确定为不经常访问的区块并执行ECC 314,则ECC编码数据可以基于数据存储方案被划分为多个数据集。可以将数据存储方案提供为一组计算机可执行指令,这些指令定义了将数据存储在区块链网络中的位置和/或方式。在一些示例中,数据存储方案可以由具有权限证明的可信节点提供并由区块链节点同意。在一些示例中,数据存储方案可以由区块链节点通过共识来被同意。通常,数据存储方案可以包括一个或多个预定规则,用于基于区块链网络中的区块链节点的数量将编码数据划分为多个数据集。所述数据存储方案还可以包括要由每个区块链节点存储或进行哈希处理的多个数据集中的一个或多个数据集的分配。为了确保数据同等,数据存储方案可以包括要由区块链网络的每个区块链节点存储的至少一个数据集的分配。
在图3所示的示例中,区块100的编码区块数据被分为四个数据集,分别是Data1、Data2、Data3和Vdata1,每个数据集将由区块链节点302、304、306和308中的一个节点存储。Vdata1可以代表用于纠错的ECC的冗余位。根据数据存储方案,Data1经选择由区块链节点302存储。Data2、Data3和Vdata1经选择分别进行哈希处理316以分别产生哈希值Dhash2、Dhash3和Vhash1。根据本文的实施例,当区块链网络具有四个以上的节点时,可以将编码数据划分为四个以上数据集。在一些示例中,每个区块链节点可以存储一个以上数据集,并对分配给其他节点存储的剩余数据集进行哈希处理。
现在参考图4,图4描绘了根据本文的实施例的数据存储方案400的示例。如前所述,根据数据存储方案400,Data1经选择由区块链节点302存储。基于数据存储方案400,区块链节点304存储Data2并分别对Data1、Data3和Vdata1进行哈希处理以分别生成哈希值Dhash1、Dhash3和Vhash1。区块链节点306存储Data3并分别对Data1、Data2和Vdata1进行哈希处理,以分别生成哈希值Dhash1、Dhash2和Vhash1。区块链节点308存储Vdata1并分别对Data1、Data2和Data3进行哈希处理以分别生成哈希值Dhash1、Dhash2和Dhash3。
再次参考图3,因为哈希值对应于相同区块的编码数据集,所以它们可以通过该区块的区块ID被索引。例如,区块链节点302可以用区块ID 100索引与区块100相关联的Data1、Dhash1、Dhash2和Vhash1。这样,区块链节点302可以使用索引的区块ID将哈希值映射到其对应的区块。在图6的描述中讨论了索引数据集和哈希值的更详细的示例。
应当理解,根据数据存储方案,可以为区块链节点302、304、306和308做出其他数据存储方案。在一些示例中,可以将区块100的编码区块数据划分为四个以上数据集。应当理解,根据数据存储方案,可以为区块链节点502、504、506和508做出其他数据存储方案。
在生成并存储Dhash2、Dhash3和Vhash1之后,区块链节点302可以从存储中删除Data2、Data3和Vdata1以节省存储空间。这样,对于每个区块,区块链节点302仅存储一个ECC编码数据集(即,Data1)和三个哈希值(即,Dhash2、Dhash3和Vhash1),而不是整个区块。这样,可以大大减少存储空间。类似于区块100,可以对由区块链节点304、306和308存储的其他不经常访问的区块执行编码和哈希处理。
当区块链节点302确定执行智能合约需要区块100的区块数据时,它可以根据数据存储方案分别从区块链节点304、306和308检索Data2、Data3和Vdata1。为了从其他区块链节点304、306和308检索数据集,区块链节点302可以根据数据存储方案发送与将要检索的数据集相对应的哈希值。
例如,为了检索Data2,区块链节点302可以向区块链节点304发送Dhash2。如果区块链节点304存储有Data2,则其可以响应于接收Dhash2而将Data2发送回区块链节点302。接收到来自区块链节点304的Data2之后,区块链节点302可以对接收的数据集进行哈希处理,并比较哈希值与Dhash2。如果哈希值与Dhash2相同,则区块链节点302可以确定接收的数据集是可信的。否则,可以确定接收的数据集是不可信的。当接收的数据集被确定为不可信时,区块链节点302可以报告区块链节点304为故障节点(或拜占庭节点)。如果区块链节点302接收的不可信数据的百分比小于或等于可以由ECC校正的错误或丢失位的最大比例,则可以从本地存储和接收的数据集恢复区块100。
如上所述,区块链网络可以存储不同类型的数据,例如状态数据、区块数据和索引数据。状态数据通常存储为内容寻址状态树,例如MPT或固定深度默克尔树(FDMT)。内容寻址状态树本质上是增加的。即,通过添加新的树结构而不是仅更新现有状态树的值来反映账号状态的变化。因此,当将区块连续添加到区块链时,内容寻址状态树的大小会变得非常大。在FDMT存储方案下,状态数据可以被分为与当前区块关联的当前状态数据和与区块链的所有区块关联的历史状态数据。FDMT中的大多数数据是不经常使用的历史状态数据。就存储资源的使用而言,将所有历史状态数据存储在每个共识节点中可能效率很低。
在一些实施例中,类似于编码和共享区块数据,ECC诸如纠删编码可以用于编码历史状态数据。区块链网络中的每个共识节点仅存储部分历史状态数据,并从其他节点检索剩余的历史状态数据以减少存储消耗。通过共享ECC编码的历史状态数据而不是原始历史状态数据,即使存在不可信数据或发生数据丢失,只要不可信数据或数据丢失的百分比小于或等于能够由ECC纠正的错误或丢失位的最大比例,就可以恢复原始历史状态数据。
图5描绘了根据本文的实施例的区块数据的编码和哈希处理500的另一示例。在此示例中,描绘了4个区块链节点的区块链网络,4个区块链节点是区块链节点502、504、506和508。以区块链节点502为例来说明编码及哈希处理500,当新的区块数据被添加至区块512时,区块链节点502可执行ECC 514以对区块数据进行编码。与在图3的描述中讨论的编码和哈希处理300相比,当区块数据被写入区块时,区块链节点502对区块数据执行ECC。这样,区块链节点502不需要存储整个区块,而是可以基于数据存储方案存储ECC编码区块数据的选定部分和与剩余的编码区块数据相对应的哈希值。该编码和哈希处理500可以特别适合于区块链节点502具有低磁盘空间的情况。
在一些实施例中,代替将数据存储为区块,区块链节点502可以存储预写日志(WAL)文件或其他类似的前滚日志文件(roll-forward journal file)。预写日志文件可以记录已经被区块链节点502提交但尚未被存储的区块数据。使用预写日志文件,原始的区块链数据可以被保存在数据库文件中,而区块链数据的更改可以被写入单独的预写日志文件中。能够利用更改提交前滚,而无需写入原始区块链数据。这种安排允许在更改被提交至预写日志文件时继续进行区块链数据的操作。通过使用预写日志文件存储通过编码和哈希处理500进行的更改,区块链节点502可以指示其具有用于共识的区块数据,同时在适当的时候在后台执行ECC。这样,当区块链节点302的计算资源的利用率较低时可以执行ECC,以降低对对计算效率的影响或者共识处理的延时。
在一些实施例中,区块链节点502可以将区块数据存储在缓冲器中。当数据的大小大于预定阈值或当缓冲器已满时,区块链节点502可以对缓冲器中存储的区块数据执行ECC。在执行ECC之后,区块链节点502可以遵循编码和哈希处理500以存储编码区块数据和哈希值,如以下描述中所讨论的。
再次以区块100为例,在执行ECC之后,可以基于数据存储方案将编码区块数据划分为多个数据集。类似于图3的描述中讨论的示例,区块100的编码区块数据可以被分为四个数据集,分别是Data1、Data2、Data3和Vdata1,每个数据集将由区块链节点502、504、506和508中的一个节点存储。Vdata1可以代表ECC的冗余位。根据数据存储方案,Data1经选择由区块链节点502存储。Data2、Data3和Vdata1经选择分别进行哈希处理516以分别产生哈希值Dhash2、Dhash3和Vhash1。
哈希值可以通过哈希值的对应区块的区块ID被索引。例如,区块链节点502可以用区块ID 100索引与区块100相关联的Data1、Dhash1、Dhash2和Vhash1。这样,区块链节点502可以使用索引的区块ID将哈希值映射到其对应的区块。在图6的描述中讨论了索引数据集和哈希值的更详细的示例。
应当理解,根据数据存储方案,可以为一个或多个区块链节点502、504、506和508做出其他数据存储方案。例如,可以将区块100的编码区块数据划分为四个以上数据集。区块链节点502、504、506和508中的每一个可以存储一个以上数据集,并对其他节点存储的剩余数据集进行哈希处理。
在生成Dhash2、Dhash3和Vhash1之后,区块链节点502可以存储Data1、Dhash2、Dhash3和Vhash1并从存储中删除Data2、Data3和Vdata1以节省存储空间。这样,对于区块链中的每个区块,区块链节点502仅存储ECC编码区块数据的一个数据集(即,Data1)和三个哈希值(即,Dhash2、Dhash3和Vhash1),而不是存储原始区块数据,从而节省存储空间。当区块链节点502确定执行智能合约需要区块100的区块数据时,它可以根据数据存储方案分别从区块链节点504、506和508检索Data2、Data3和Vdata1。
为了从其他区块链节点504、506和508检索数据集,区块链节点502可以根据数据存储方案发送与将要检索的数据集相对应的哈希值。例如,为了检索Data2,区块链节点502可以向区块链节点504发送Dhash2。如果区块链节点504存储有Data2,则其可以响应于接收Dhash2而将Data2发送回区块链节点502。接收到来自区块链节点504的Data2之后,区块链节点502可以对接收的数据集进行哈希处理,并比较哈希值与Dhash2。如果哈希值与Dhash2相同,则区块链节点502可以确定接收的数据集是可信的。否则,接收的数据集可以被确定为不可信。当接收的数据集被确定为不可信时,区块链节点502可以报告区块链节点504为故障节点(或拜占庭节点)。如果区块链节点502接收的不可信数据的百分比小于或等于可以由ECC校正的错误或丢失位的最大比例,则可以从本地存储和接收的数据集恢复区块100。
如前所述,通过执行编码和哈希处理,区块链数据可以被ECC编码并被划分为多个数据集。为了节省存储空间,每个区块链节点可以基于数据存储方案存储多个数据集中的一个或多个以及剩余数据集的哈希值。存储的数据集和哈希值可以使用区块ID进行索引,以便区块链节点从其他节点检索数据集以恢复原始数据。
图6描绘了根据本文实施例的基于NVN的共享区块链数据存储的处理600的示例。VN(在此称为验证对等体)和NVN(在此称为非验证对等体)是为许可的区块链平台(例如Hyperledger fabric)运行分布式账本协议的两种类型对等体。许可区块链网络可以是私有区块链网络或联盟区块链网络,其中每个成员节点在网络中维护身份。使用网络之前,需要对终端用户或客户端节点进行授权和认证。换句话说,许可的区块链控制谁可以参与验证和分布式账本协议。VN可以负责运行共识、验证交易和维护分布式账本。NVN可以用作代理以将客户端节点(例如,发布交易的节点)连接到VN。NVN不执行交易,但可以验证它们。
在所示的示例中,假定区块链网络610是包括VN 602、604、606和608的许可区块链网络。区块链网络610还包括由NVN 612、614、616、618形成的NVN集群610。在一些实施例中,可以从客户端节点630生成交易。客户端节点630可以是一件计算机硬件或软件。在一些实施例中,客户端节点310可以向NVN集群610或NVN 612、614、616、618之一发送交易。在接收交易之后,NVN集群610可以向VN 602、604、606和608转发交易622以运行共识。在接收交易之后,VN 602、604、606和608可以通过参与共识处理(例如,PBFT)验证交易,以基于接收的交易的至少一个子集生成区块(例如,区块100)并将其附加到区块链。
在生成区块100并将其附加到区块链之后,VN 602可以向NVN集群610发送区块100以进行存储。在一些实施例中,NVN还可以自动从VN中拉出该区块。可以周期性地或在生成预定数量的区块(例如50个区块)之后拉出该区块。在从VN 602接收一个或多个区块之后,NVN 612、614、616和618然后可以进行编码和哈希处理,如在图3和5的描述中所讨论的。每个NVN可以使用ECC 626(例如,纠删编码)对一个或多个区块进行编码,以生成一个或多个ECC编码区块。在一些实施例中,可以当NVN的计算资源的利用率小于或等于预定值(例如50%)时执行ECC,以维持NVN的计算效率。在一些实施例中,可以当NVN的存储空间的使用率大于或等于预定百分比(例如80%)时执行ECC。
在生成ECC编码区块之后,基于在图4的描述中所讨论的数据存储方案400,NVN(在此,NVN 612)可以将ECC编码区块划分为四个数据集Data1、Data2、Data3和Vdata1。然后,NVN 612可以基于数据存储方案中提供的分配存储Data1,并且可以对剩余数据集执行哈希处理628,以生成哈希值Dhash2、Dhash3和Vhash1。在存储数据集(Data1)和哈希值(Dhash2、Dhash3和Vhash1)之后,NVN 612可以丢弃ECC编码区块以及剩余数据集Data2、Data3和Vdata1,以节省存储空间。
在一些实施例中,NVN 612可以与其他NVN 614、616和618一起确认它们是否已经根据数据存储方案存储其分配的数据集和哈希值。在接收到来自其他NVN 614、616和618的确认之后,NVN 612可以向多个VN 602、604、606和608发送NVN 612、614、616和618已完成编码和哈希处理的通知。然后VN 602、604、606和608可以安全地删除区块100以节省存储空间。
在一些实施例中,客户端节点630或VN可以向NVN 612发送用于验证交易是否存在于区块链上的请求。接收该请求的NVN 612可以基于索引检索由其他NVN 614、616和618存储的数据集,并对数据集进行解码以恢复对应的区块。在恢复区块之后,NVN 612可以验证交易是否被包括在区块中。
在一些实施例中,VN可以向NVN 612发送用于检索交易的请求以执行智能合约。接收该请求的NVN 612可以确定交易被包含在由NVN集群610作为数据集保存的一个或多个区块中。然后,NVN 612可以基于索引检索由其他NVN 614、616和618存储的数据集,并对数据集进行解码以恢复对应的一个或多个区块。之后,NVN节点612可以定位该交易并向VN发送该交易。
在一些实施例中,NVN可以将区块链数据存储在分层存储(tiered storage)中。使用分层存储,数据可以根据其相对业务价值被放置在分层结构中。例如,可以基于数据被访问的频率确定数据的业务价值。通常,更有价值的数据可以被保存在更快或更昂贵的存储介质(即层)中。由于较新的区块中的区块链数据比较旧的区块更有可能被访问,因此与较新的区块相比,较旧的区块可以被存储在较慢的存储介质中,以降低存储成本。
图7描绘了可以根据本文的实施例执行的处理700的示例。为了方便起见,将处理700描述为由NVN执行。NVN可以是位于一个或多个位置并根据本文被适当编程的计算机或者一台或多台计算机的系统。例如,NVN可以是计算系统(例如,图1的计算系统106、108)中的计算设备,其被适当地编程,可以执行处理700。
在702,NVN接收由可通信地耦接到包括该NVN的许可区块链网络的客户端节点发布的交易。在704,NVN向多个验证节点发送该交易,以验证该交易并运行共识。
在706,NVN接收多个验证节点基于对该交易的至少一部分的共识生成的一个或多个区块。在708,NVN使用ECC对一个或多个区块进行编码以生成一个或多个编码区块。在某些情况下,当NVN的计算资源的利用率小于或等于预定值时,执行ECC。在某些情况下,当NVN的存储空间的使用率大于或等于预定百分比时,执行ECC。在某些情况下,ECC是通过向多个区块添加冗余位来执行的纠删编码。
在710,针对一个或多个编码区块中的每个编码区块,NVN基于与一个或多个区块相关联的数据存储方案将编码区块划分为多个数据集,其中该数据存储方案提供关于多个数据集至多个NVN的分配。在某些情况下,NVN将区块链数据存储在分层存储中,且在该分层存储中,与较旧的区块相比,较新的区块被存储在相同或更快的层中。在712,NVN基于数据存储方案中提供的分配存储多个数据集中的至少一个数据集。
在某些情况下,NVN还进行以下操作:从除该NVN以外的多个NVN的剩余部分,接收相应的NVN基于数据存储方案中提供的分配存储多个数据集中的至少一个数据集的确认,并向多个验证节点发送通知以删除一个或多个区块。
在某些情况下,NVN还进行以下操作:从客户端节点接收用于验证一个或多个区块中包括的交易的请求,基于索引从多个NVN的剩余部分检索与一个或多个区块相关联的数据集,基于所述数据集对一个或多个区块进行解码,以及如果交易被包含在一个或多个区块中,则验证交易存在。
在某些情况下,NVN还进行以下操作:从验证节点接收用于检索一个或多个区块中包括的交易的请求,基于索引从多个NVN的剩余部分中检索与一个或多个区块中的一个区块相关联的数据集,以及基于所述数据集对所述一个或多个区块中的该一个区块进行解码,并向验证节点发送交易。
在某些情况下,针对所述多个编码区块中的每个编码区块,NVN还进行以下操作:对所述多个数据集中的除所述多个数据集中的至少一个数据集以外的剩余部分进行哈希处理以生成哈希值,存储所述哈希值,并且丢弃所述一个或多个区块以及所述多个数据集的剩余部分。
图8是根据本文的实施例的装置800的模块的示例的图。装置800可以是被配置为存储和处理区块链数据的NVN的实施例的示例。装置800可以对应于上述实施例,并且装置800包括以下:接收模块802,接收由可通信地耦接至许可区块链网络的客户端节点发布的交易;发送模块804,向多个验证节点发送所述交易,以验证所述交易并运行共识;接收模块802,还接收多个验证节点基于对所述交易的至少一部分的共识生成的一个或多个区块;编码模块806,使用ECC对所述一个或多个区块进行编码以生成一个或多个编码区块;针对一个或多个编码区块中的每个编码区块:划分模块808,基于与所述一个或多个区块相关联的数据存储方案将编码区块划分为多个数据集,其中,所述数据存储方案提供关于多个数据集至多个NVN的分配;以及存储模块810,基于数据存储方案中提供的分配,存储多个数据集中的至少一个数据集。
在一些实施例中,接收模块802还从除该NVN以外的多个NVN的剩余部分,接收相应的NVN基于数据存储方案中提供的分配存储多个数据集中的至少一个数据集的确认;发送模块804还向多个验证节点发送通知以删除一个或多个区块。
在一些实施例中,NVN将区块链数据存储在分层存储中,且在该分层存储中,与较旧的区块相比,较新的区块被存储在相同或更快的层中。
在一些实施例中,接收模块802还从客户端节点接收用于验证一个或多个区块中包括的交易的请求。所述装置还包括:检索子模块,基于索引从多个NVN的剩余部分中检索与所述一个或多个区块相关联的数据集;解码子模块,基于所述数据集对所述一个或多个区块进行解码;以及验证子模块,如果所述交易被包括在一个或多个区块中,则验证所述交易存在。
在一些实施例中,接收模块802还从验证节点接收用于检索一个或多个区块中包括的交易的请求。检索子模块还基于索引从多个NVN的剩余部分中检索与一个或多个区块中的一个区块相关联的数据集。解码子模块进一步基于数据集对一个或多个区块中的该一个区块进行解码,并且发送模块804进一步向验证节点发送交易。
在一些实施例中,当NVN的计算资源的利用率小于或等于预定值时,执行ECC。
在一些实施例中,装置800还包括哈希子模块。针对所述多个编码区块中的每个编码区块,所述哈希子模块对除所述多个数据集中的至少一个数据集以外的所述多个数据集的剩余部分进行哈希处理以生成哈希值。存储模块812还存储所述哈希值,并丢弃一个或多个区块以及所述多个数据集的剩余部分。
在一些实施例中,当NVN的存储空间的使用率大于或等于预定百分比时,执行ECC。
在一些实施例中,ECC是通过向多个区块添加冗余位来执行的纠删编码。
在先前实施中示出的系统、装置、模块或单元可以通过使用计算机芯片或实体来实现,或者可以通过使用具有特定功能的产品来实现。典型的实施例设备是计算机,计算机可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件接收和发送设备、游戏控制台、平板电脑、可穿戴设备或这些设备的任意组合。
对于装置中每个模块的功能和角色的实施例过程,可以参考前一方法中相应步骤的实施例过程。为了简单起见,这里省略了细节。
由于装置实施例基本上与方法实施例相对应,因此对于相关部分,可以参考方法实施例中的相关描述。前述装置实施例仅仅是示例。被描述为单独部分的模块可以是或可以不是物理上分离的,并且显示为模块的部分可以是或可以不是物理模块,可以位于一个位置,或者可以分布在多个网络模块上。可以基于实际需求来选择一些或所有模块,以实现本文方案的目标。本领域普通技术人员在无需付出创造性努力的情况下就能理解和实现本申请的实施例。
再次参考图8,可以解释为示出了内部功能模块和区块链节点的结构。本质上,执行主体可以是电子设备,该电子设备包括:一个或多个处理器;被配置为存储一个或多个处理器的可执行指令的一个或多个计算机可读存储器。在一些实施例中,一个或多个计算机可读存储器耦接至一个或多个处理器且其上存储有编程指令,所述编程指令能够由所述一个或多个处理器执行以执行如本文中所述的算法、方法、函数、处理、流程和程序。本文还提供了耦接至一个或多个处理器并且其上存储有指令的一个或多个非暂时性计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
本文还提供了用于实施本文提供的所述方法的系统。所述系统包括一个或多个处理器以及耦接到所述一个或多个处理器并且其上存储有指令的计算机可读存储介质,当所述指令由所述一个或多个处理器执行时,所述指令将促使所述一个或多个处理器按照本文提供的方法的实施例执行操作。
本文中描述的主题、动作和操作的实施例可以在数字电子电路中、有形体现的计算机软件或固件中、包括本文中公开的结构及其结构等同物的计算机硬件中,或者它们中的一个或多个的组合中实现。本文中描述的主题的实施例可以实现为一个或多个计算机程序,例如,一个或多个计算机程序指令模块,编码在计算机程序载体上,用于由数据处理装置执行或控制数据处理的操作。例如,计算机程序载体可以包括具有编码在其上或存储在其上的指令的一个或多个计算机可读存储介质。载体可以是有形的非暂态计算机可读介质,例如磁盘、磁光盘或光盘、固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)或其他介质类型。可选地或附加地,载体可以是人工生成的传播信号,例如,机器生成的电、光或电磁信号,其被生成为对信息进行编码用于传输到合适的接收器装置以供数据处理装置执行。计算机存储介质可以是或可以部分是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备或它们中的一个或多个的组合。计算机存储介质不是传播信号。
计算机程序也可以被称为或描述为程序、软件、软件应用程序、app、模块、软件模块、引擎、脚本或代码,可以以任何形式的编程语言编写,包括编译或解释语言、说明或程序性语言;它可以被配置为任何形式,包括作为独立程序,或者作为模块、组件、引擎、子程序或适合在计算环境中执行的其他单元,该环境可以包括由数据通信网络互连的在一个或多个位置的一台或多台计算机。
计算机程序可以但非必须对应于文件系统中的文件。计算机程序可以存储在:保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本;专用于所讨论的程序的单个文件;或者多个协调文件,例如,存储一个或多个模块、子程序或代码部分的多个文件。
举例来说,用于执行计算机程序的处理器包括通用和专用微处理器,以及任何类型的数字计算机的任何一个或多个处理器。通常,处理器将从耦接到处理器的非暂态计算机可读介质接收用于执行的计算机程序的指令并且接收数据。
术语“数据处理装置”包括用于处理数据的所有类型的装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。数据处理装置可以包括例如FPGA(现场可编程门阵列),ASIC(专用集成电路)或GPU(图形处理单元)的专用逻辑电路。除了硬件,该装置还可以包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。
本文中描述的处理和逻辑流程可以由一台或多台计算机或处理器执行一个或多个计算机程序进行,以通过对输入数据进行运算并生成输出来执行操作。过程和逻辑流程也可以由例如FPGA、ASIC或GPU等的专用逻辑电路或专用逻辑电路与一个或多个编程计算机的组合来执行。
适合于执行计算机程序的计算机可以基于通用和/或专用微处理器,或任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的元件可以包括用于执行指令的中央处理单元和用于存储指令和数据的一个或多个存储设备。中央处理单元和存储器可补充有专用逻辑电路或集成在专用逻辑电路中。
通常,计算机还将包括或可操作地耦接为从一个或多个存储设备接收数据或将数据传输到一个或多个存储设备。存储设备可以是例如磁盘、磁光盘或光盘、固态驱动器或任何其他类型的非暂态计算机可读介质。然而,计算机不需要具有这样的设备。因此,计算机可以耦接到本地和/或远程的例如一个或多个存储器的一个或多个存储设备。例如,计算机可以包括作为计算机的集成组件的一个或多个本地存储器,或者计算机可以耦接到云网络中的一个或多个远程存储器。此外,计算机可以嵌入在另一个设备中,例如移动电话,个人数字助理(PDA),移动音频或视频播放器,游戏控制台,全球定位系统(GPS)接收器或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
组件可以通过诸如直接地连接、或经由一个或多个中间组件彼此电学连接或光学连接可通信地连接而彼此“耦接”。如果其中一个组件被集成到另一个组件中,组件也可以彼此“耦接”。例如,集成到处理器中的存储组件(例如,L2高速缓存组件)“耦接到”处理器。
为了提供与用户的交互,本文中所描述的主题的实施例可以在计算机上实现或配置为与该计算机通信,该计算机具有:显示设备,例如,LCD(液晶显示器)监视器,用于向用户显示信息;以及输入设备,用户可以通过该输入设备向该计算机提供输入,例如键盘和例如鼠标、轨迹球或触摸板等的指针设备。其他类型的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户设备上的web浏览器收到的请求,向web浏览器发送web页面,或者通过与例如智能电话或电子平板电脑等的用户设备上运行的应用程序(app)进行交互。此外,计算机可以通过向个人设备(例如,运行消息应用的智能手机)发送文本消息或其他形式的消息并作为回应接收来自用户的响应消息来与用户交互。
本文使用与系统,装置和计算机程序组件有关的术语“配置为”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了在运行中促使该系统执行所述操作或动作的软件、固件、硬件或它们的组合。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当被数据处理装置执行时促使该装置执行所述操作或动作的指令。对于被配置为执行特定操作或动作的专用逻辑电路,意味着该电路具有执行所述操作或动作的电子逻辑。
尽管本文包含许多具体实施例细节,但这些不应被解释为对由权利要求书本身限定的请求保护的范围的限制,而是作为对特定实施例的具体特征的描述。在本文单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管上面的特征可以被描述为以某些组合起作用并且甚至最初被如此请求保护,但是在一些情况下,可以从请求保护的组合中删除来自该组合的一个或多个特征,并且权利要求书可以涉及子组合或子组合的变体。
类似地,虽然以特定顺序在附图中描绘了操作并且在权利要求书中叙述了操作,但是这不应该被理解为:为了达到期望的结果,要求以所示的特定顺序或序列顺序执行这些操作,或者要求执行所有示出的操作。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的划分不应被理解为所有实施例中都要求如此划分,而是应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或打包成多个软件产品。
已经描述了主题的特定实施例。其他实施例在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程无需要求所示的特定顺序或序列顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。

Claims (11)

1.一种计算机实现的用于由许可区块链网络的非验证节点NVN处理区块链数据的方法,所述方法包括:
接收由可通信地耦接到许可区块链网络的客户端节点发布的交易;
向多个验证节点发送所述交易,以验证所述交易并运行共识;
接收所述多个验证节点基于对所述交易的至少一部分的共识生成的一个或多个区块;
使用纠错编码ECC对所述一个或多个区块进行编码以生成一个或多个编码区块;以及
针对所述一个或多个编码区块中的每个编码区块:
基于与所述一个或多个区块相关联的数据存储方案将所述编码区块划分为多个数据集,其中,所述数据存储方案提供关于所述多个数据集至多个非验证节点NVN的分配;以及
基于所述数据存储方案中提供的所述分配,存储所述多个数据集中的至少一个数据集。
2.如权利要求1所述的方法,还包括:
从所述多个非验证节点中除所述非验证节点以外的剩余部分,接收相应的非验证节点基于所述数据存储方案中提供的所述分配存储所述多个数据集中的至少一个数据集的确认;以及
向所述多个验证节点发送通知以删除所述一个或多个区块。
3.如权利要求1所述的方法,其中,所述非验证节点将区块链数据存储在分层存储中,在所述分层存储中,与较旧的区块相比,较新的区块被存储在相同或更快的层中。
4.如权利要求1所述的方法,还包括:
从所述客户端节点接收用于验证所述一个或多个区块中包含的交易的请求;
基于索引,从所述多个非验证节点的剩余部分中检索与所述一个或多个区块相关联的数据集;
基于所述数据集对所述一个或多个区块进行解码;以及
如果所述交易被包括在所述一个或多个区块中,则验证所述交易存在。
5.如权利要求1所述的方法,还包括:
从验证节点接收用于检索所述一个或多个区块中包含的交易的请求;
基于索引,从所述多个非验证节点的剩余部分中检索与所述一个或多个区块中的一个区块相关联的数据集;
基于所述数据集对所述一个或多个区块中的该一个区块进行解码;以及
向所述验证节点发送所述交易。
6.如前述任一权利要求所述的方法,其中,当所述非验证节点的计算资源的利用率小于或等于预定值时,执行所述纠错编码。
7.如前述任一权利要求所述的方法,还包括:
针对所述多个编码区块中的每个编码区块:
对除所述多个数据集中的至少一个数据集之外的所述多个数据集的剩余部分进行哈希处理以生成哈希值;
存储所述哈希值;并且
丢弃所述一个或多个区块以及所述多个数据集的剩余部分。
8.如前述任一权利要求所述的方法,其中,当所述非验证节点的存储空间的使用率大于或等于预定百分比时,执行所述纠错编码。
9.如前述任一权利要求所述的方法,其中,所述纠错编码是通过向所述多个区块添加冗余位来执行的纠删编码。
10.一种用于处理区块链数据的系统,包括:
一个或多个处理器;和
耦接到所述一个或多个处理器并且其上存储有指令的一个或多个计算机可读存储器,所述指令能由所述一个或多个处理器执行以执行权利要求1至9中任一项所述的方法。
11.一种用于处理区块链数据的装置,所述装置包括用于执行权利要求1至9中的任一项所述的方法的多个模块。
CN201980005292.9A 2019-11-13 2019-11-13 基于纠错码的区块链数据存储 Pending CN113826354A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/118175 WO2020035092A2 (en) 2019-11-13 2019-11-13 Blockchain data storage based on error correction code for permissioned blockchain network

Publications (1)

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

Family

ID=69525951

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980005292.9A Pending CN113826354A (zh) 2019-11-13 2019-11-13 基于纠错码的区块链数据存储

Country Status (9)

Country Link
US (1) US11233654B2 (zh)
EP (1) EP3769252B1 (zh)
JP (1) JP7025566B2 (zh)
KR (1) KR102433504B1 (zh)
CN (1) CN113826354A (zh)
AU (1) AU2019323043A1 (zh)
CA (1) CA3098768A1 (zh)
SG (1) SG11202010558PA (zh)
WO (1) WO2020035092A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111902817B (zh) * 2019-08-20 2024-04-09 创新先进技术有限公司 基于共享节点和纠错编码的区块链数据存储
AU2019323043A1 (en) * 2019-11-13 2021-05-27 Alipay (Hangzhou) Information Technology Co., Ltd. Blockchain data storage based on error correction code for permissioned blockchain network
WO2021253127A1 (en) * 2020-06-19 2021-12-23 Neuralia Technologies Inc. System and method for controlling network access
WO2022010289A1 (ko) * 2020-07-10 2022-01-13 주식회사 미디움 하이퍼레저 패브릭 구조에서 피어 단말기에 수신된 블록 데이터를 처리하는 방법
KR102412780B1 (ko) * 2020-07-10 2022-06-24 주식회사 미디움 하이퍼레저 패브릭 구조에서 피어 단말기에 수신된 블록 데이터를 처리하는 방법
KR102392150B1 (ko) * 2020-07-10 2022-04-28 주식회사 미디움 하이퍼레저 패브릭 구조에서 피어 단말기가 블록 데이터를 클라이언트 단말기로 전송하는 방법
US11133936B1 (en) * 2021-03-22 2021-09-28 Matthew Branton Methods and systems for introducing self-contained intent functionality into decentralized computer networks
JP2023083228A (ja) 2021-12-03 2023-06-15 韓國電子通信研究院 ブロックチェーントランザクションデータ格納方法、装置およびこれを用いた分散格納システム
CN114710512B (zh) * 2022-03-30 2023-09-29 蚂蚁区块链科技(上海)有限公司 共识结果的分发方法、节点和区块链系统
US20230388246A1 (en) * 2022-05-25 2023-11-30 Softiron Limited Resource-Sharing System with Cryptographically Enforced Fair Access

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101606900B1 (ko) * 2007-09-11 2016-03-28 와이-랜, 인코포레이티드 지속 자원 할당을 위한 에러 정정
US9449719B2 (en) * 2008-12-19 2016-09-20 Seagate Technology Llc Solid-state storage device including a high resolution analog-to-digital converter
US11062303B2 (en) * 2015-06-08 2021-07-13 Blockstream Corporation Cryptographically concealing amounts transacted on a ledger while preserving a network's ability to verify the transaction
US11403019B2 (en) * 2017-04-21 2022-08-02 Pure Storage, Inc. Deduplication-aware per-tenant encryption
US10749668B2 (en) 2017-05-03 2020-08-18 International Business Machines Corporation Reduction in storage usage in blockchain
US11626993B2 (en) * 2017-05-22 2023-04-11 Visa International Service Association Network for improved verification speed with tamper resistant data
US11218324B2 (en) * 2018-04-05 2022-01-04 Ares Technologies, Inc. Systems and methods authenticating a digitally signed assertion using verified evaluators
US11444769B2 (en) * 2018-07-02 2022-09-13 Ares Technologies, Inc. Systems, devices, and methods for signal localization and verification of sensor data
US10404467B1 (en) 2018-09-09 2019-09-03 Tyson York Winarski Blockchain digest augmention of media files including group-of-pictures video streams for MXF files
CN109359223A (zh) 2018-09-17 2019-02-19 重庆邮电大学 基于纠删码实现的区块链账本分布式存储技术
US11153098B2 (en) * 2018-10-09 2021-10-19 Ares Technologies, Inc. Systems, devices, and methods for recording a digitally signed assertion using an authorization token
US11240040B2 (en) * 2018-10-09 2022-02-01 Ares Technologies, Inc. Systems, devices, and methods for recording a digitally signed assertion using an authorization token
JP6726367B2 (ja) 2018-12-13 2020-07-22 アリババ・グループ・ホールディング・リミテッドAlibaba Group Holding Limited 分散システムにおける1次ノードの変更を行うこと
CN109871366B (zh) * 2019-01-17 2021-09-10 华东师范大学 一种基于纠删码的区块链分片存储与查询方法
US11716617B2 (en) * 2019-05-02 2023-08-01 Ares Technologies, Inc. Systems and methods for cryptographic authorization of wireless communications
US11575517B2 (en) * 2019-05-02 2023-02-07 Ares Technologies, Inc. Methods and systems for utilizing hardware-secured receptacle devices
EP3794770B1 (en) * 2019-08-01 2021-10-06 Advanced New Technologies Co., Ltd. Shared blockchain data storage based on error correction code
CN111095218B (zh) * 2019-08-01 2022-01-11 创新先进技术有限公司 基于纠错编码存储共享的区块链数据的方法、系统及装置
CN111033491B (zh) * 2019-08-01 2023-06-30 创新先进技术有限公司 基于纠错编码存储共享的区块链数据
CN111837117B (zh) * 2019-09-11 2024-04-16 创新先进技术有限公司 可信执行环境中基于纠错编码的共享区块链数据存储
JP7050955B2 (ja) * 2019-11-06 2022-04-08 アリペイ (ハンジョウ) インフォメーション テクノロジー カンパニー リミテッド 共有されたブロックチェーンデータの記憶の優先順位付け
KR102225196B1 (ko) * 2019-11-06 2021-03-09 알리페이 (항저우) 인포메이션 테크놀로지 씨오., 엘티디. 에러 정정 코드에 기초하는 공유 블록체인 데이터 저장의 컨센서스
AU2019323043A1 (en) * 2019-11-13 2021-05-27 Alipay (Hangzhou) Information Technology Co., Ltd. Blockchain data storage based on error correction code for permissioned blockchain network

Also Published As

Publication number Publication date
WO2020035092A2 (en) 2020-02-20
EP3769252A4 (en) 2021-01-27
EP3769252B1 (en) 2022-10-19
KR20210058744A (ko) 2021-05-24
US20210119805A1 (en) 2021-04-22
EP3769252A2 (en) 2021-01-27
KR102433504B1 (ko) 2022-08-18
SG11202010558PA (en) 2020-11-27
WO2020035092A3 (en) 2020-09-03
JP2021528885A (ja) 2021-10-21
CA3098768A1 (en) 2020-02-20
US11233654B2 (en) 2022-01-25
AU2019323043A1 (en) 2021-05-27
JP7025566B2 (ja) 2022-02-24

Similar Documents

Publication Publication Date Title
EP3769252B1 (en) Blockchain data storage based on error correction code for permissioned blockchain network
KR102412024B1 (ko) 인코딩된 블록체인 데이터의 인덱싱 및 복구
CN111406252B (zh) 基于纠错码的共享区块链数据存储的共识
US11327833B2 (en) Prioritizing shared blockchain data storage
CN111902817A (zh) 基于共享节点和纠错编码的区块链数据存储
TWI759791B (zh) 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置
CN111095218B (zh) 基于纠错编码存储共享的区块链数据的方法、系统及装置
CN111837117A (zh) 可信执行环境中基于纠错编码的共享区块链数据存储
CN111033491B (zh) 基于纠错编码存储共享的区块链数据
CN111095210A (zh) 基于纠错编码存储共享的区块链数据
US11030044B2 (en) Dynamic blockchain data storage based on error correction code

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