CN111951004A - 数据库世界状态完整性证实 - Google Patents
数据库世界状态完整性证实 Download PDFInfo
- Publication number
- CN111951004A CN111951004A CN202010415344.4A CN202010415344A CN111951004A CN 111951004 A CN111951004 A CN 111951004A CN 202010415344 A CN202010415344 A CN 202010415344A CN 111951004 A CN111951004 A CN 111951004A
- Authority
- CN
- China
- Prior art keywords
- blockchain
- world state
- peers
- block
- nodes
- 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
Links
- 238000010200 validation analysis Methods 0.000 title claims abstract description 18
- 238000000034 method Methods 0.000 claims description 44
- 230000004044 response Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims description 5
- 230000015654 memory Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 16
- 230000008569 process Effects 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012163 sequencing technique Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002155 anti-virotic effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3236—Cryptographic 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/3239—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic 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/3247—Cryptographic 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Abstract
示例操作可以包括以下项中的一项或多项:由区块链网络的区块链用户创建请求世界状态证实的世界状态检查点交易;由一个或多个背书方节点或对等方对该世界状态检查点交易进行背书;将背书传递到区块链用户;由排序方节点或对等方将所述背书的世界状态检查点交易记录到区块中;证实并提交区块中的所有交易;由区块链网络的所有区块链节点或对等方计算当前世界状态的散列并对当前世界状态的散列进行签名;以及由区块链用户从当前世界状态的所计算和所签名的散列中验证世界状态完整性。
Description
技术领域
本申请总体上涉及改进的世界状态验证,并且更具体地涉及数据库世界状态完整性证实。
背景技术
集中式数据库在一个位置的单个数据库(例如数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如台式中央处理单元(CPU)、服务器CPU或大型计算机。通常可以从多个不同点访问在集中式数据库中存储的信息。例如基于客户端/服务器配置,多个用户或客户端工作站可以在集中式数据库上同时工作。集中式数据库易于管理、维护和控制,特别是出于安全目的,因为它位于单个位置。在集中式数据库中,由于所有数据的单个存储位置也意味着给定的数据集合仅具有一个主记录,因此数据冗余被最小化。
然而,集中式数据库遭受重大缺陷。例如集中式数据库只有单个故障点。特别是,如果没有容错性的考虑,并且发生硬件故障(例如硬件、固件和/或软件故障),则数据库中的所有数据都将丢失,并且所有用户的工作都会中断。此外,集中式数据库高度依赖于网络连接。结果,连接越慢,每次数据库访问所需的时间量就会增加。另一个缺陷是当集中式数据库由于单个位置而遇到高流量时,会出现瓶颈。此外,由于数据库仅维护数据的一个副本,因此集中式数据库提供了对数据的有限访问。结果,在不会造成严重的问题或存在覆盖已存储数据的风险的情况下,多个设备无法同时访问同一条数据。此外,由于数据库存储系统的数据冗余很小甚至没有,因此,除了通过手动操作从备份存储中恢复之外,很难恢复意外丢失的数据。因此,需要一种克服这些缺陷和局限性的解决方案。
发明内容
一个示例实施例提供了一种系统,该系统包括区块链网络,该区块链网络包括:区块链用户,被配置为执行创建请求世界状态证实的世界状态检查点交易,以及验证世界状态完整性中的一项或多项;一个或多个背书方节点或对等方,被配置为执行对世界状态检查点交易进行背书,并将背书传递到区块链用户中的一项或多项;排序方节点或对等方,被配置为将所背书的世界状态检查点交易记录到区块中。
另一示例实施例提供了一种方法,包括以下项中的一项或多项:由区块链网络的区块链用户创建请求世界状态证实的世界状态检查点交易;由一个或多个背书方节点或对等方对该世界状态检查点交易进行背书;将背书传递到区块链用户;由排序方节点或对等方将所背书的世界状态检查点交易记录到区块中;证实并提交区块中的所有交易;由区块链网络的所有区块链节点或对等方计算当前世界状态的散列并对当前世界状态的散列进行签名;以及由区块链用户从当前世界状态的所计算和所签名的散列中验证世界状态完整性。
另一示例实施例提供了一种非暂态计算机可读介质,包括指令,在指令被处理器读取时,使处理器执行以下项中的一项或多项:由区块链网络的区块链用户创建请求世界状态证实的世界状态检查点交易;由一个或多个背书方节点或对等方对该世界状态检查点交易进行背书;将背书传递到区块链用户;由排序方节点或对等方将所背书的世界状态检查点交易记录到区块中;证实并提交区块中的所有交易;由区块链网络的所有区块链节点或对等方计算当前世界状态的散列并对当前世界状态的散列进行签名;以及由区块链用户从当前世界状态的所计算和所签名的散列中验证世界状态完整性。
附图说明
图1示出了根据示例实施例的用于数据库的世界状态验证系统的逻辑网络图。
图2A示出了根据示例实施例的示例区块链架构配置。
图2B示出了根据示例实施例的区块链交易流程。
图3A示出了根据示例实施例的许可网络。
图3B示出了根据示例实施例的另一许可网络。
图4示出了根据示例实施例的用于执行世界状态完整性验证的系统消息图。
图5A示出了根据示例实施例的验证区块链中的世界状态完整性的示例方法的流程图。
图5B示出了根据示例实施例的认证用于区块链的检查点的示例方法的流程图。
图6A示出了根据示例实施例的被配置为执行本文所述的一个或多个操作的示例系统。
图6B示出了根据示例实施例的被配置为执行本文所述的一个或多个操作的另一示例系统。
图6C示出了根据示例实施例的被配置为利用智能合约的另一示例系统。
图6D示出了根据示例实施例的被配置为利用区块链的又一示例系统。
图7A示出了根据示例实施例的用于将新区块添加到分布式分类帐的过程。
图7B示出了根据示例实施例的新数据块的内容。
图7C示出了根据示例实施例的用于数字内容的区块链。
图7D示出了根据示例实施例的可以表示区块链中的区块的结构的区块。
图8示出了支持一个或多个示例实施例的示例系统。
具体实施方式
容易理解的是,如本文的附图中一般性描述和示出的本组件可以以多种不同的配置来被布置和设计。因此,如附图所示,对方法、装置、非暂态计算机可读介质和系统中的至少一个的实施例的以下详细描述并非旨在限制所要求保护的本申请的范围,而仅仅是代表所选实施例。
在整个说明书中描述的本特征、结构或特性可以在一个或多个实施例中以任意合适的方式被组合或被移除。例如在整个说明书中,短语“示例实施例”、“一些实施例”或其他类似语言的使用是指以下事实:结合该实施例描述的特定特征、结构或特性可以被包括在至少一个实施例中。因此,在整个说明书中,短语“示例实施例”、“在一些实施例中”、“在其他实施例中”或其他类似语言的出现并不一定都指同一组实施例,并且在一个或多个实施例中,所描述的特征、结构或特性可以以任何合适的方式被组合或被移除。
另外,尽管在实施例的描述中可能已经使用术语“消息”,但是本申请可以应用于许多类型的网络和数据。此外,尽管在示例性实施例中可以描绘某些类型的连接、消息和信令,但本申请不限于特定类型的连接、消息和信令。
示例实施例提供了方法、系统、组件、非暂时性计算机可读介质、设备和/或网络,其提供了数据库世界状态完整性证实。
在一个实施例中,该应用利用作为分布式存储系统的分散式数据库(诸如区块链),其包括彼此通信的多个节点。分散式数据库包括仅附加的不可变数据结构,类似于能够维护互不信任的各方之间的记录的分布式分类账。不信任方在本文中称为对等方或对等方节点。每个对等方都维护数据库记录的副本,并且在分布式对等方之间未达成共识的情况下,没有单个对等方可以修改数据库记录。例如对等方可以执行共识协议以证实区块链存储交易,将存储交易分组为区块,并在这些区块上构建散列链。为了保持一致性,如所需要的,此过程通过对存储交易进行排序来形成分类帐。在各种实施例中,可以使用许可的和/或非许可的区块链。在公共或未经许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本机加密货币,并基于诸如工作量证明(PoW)的各种协议来使用共识。另一方面,许可的区块链数据库提供了共享共同目标但彼此之间并不完全信任的一组实体之间的安全交互,诸如交换资金、商品、信息等业务的企业。
该应用可以利用区块链,区块链操作任意的可编程逻辑,被定制为分散式存储方案,并被称为“智能合约”或“链码”。在某些情况下,可能存在用于管理功能和参数的专用链码,被称为系统链码。该应用可以进一步利用智能合约,智能合约是受信任的分布式应用,它利用了区块链数据库的防篡改属性以及节点之间的基础协议,被称为背书或背书策略。与该应用相关联的区块链交易可以在提交给区块链之前通常必须“背书”,而未背书的交易将被忽略。背书策略允许链码以背书所需的一组对等方节点的形式指定交易的背书方。当客户将交易发送给背书策略中指定的对等方时,将执行交易以证实交易。证实之后,交易进入排序阶段,在该阶段中,使用共识协议来产生分组为区块的背书交易的排序序列。
该应用可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可以在同一物理服务器上运行的意义上,“节点”可以执行逻辑功能。节点在信任域中被分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同类型,诸如客户端或递交客户端节点,该递交客户端节点将交易调用(“invocation”)递交给背书方(例如对等方),并将交易提议广播到排序服务(例如排序节点)。另一类节点是对等方节点,它可以接收客户递交的交易、提交交易并维护区块链交易分类账的状态和副本。尽管不是必需的,但对等方也可以充当背书方的角色。排序服务节点或排序方是为所有节点运行通信服务的节点,并实现递送保证,诸如在提交交易和修改区块链的世界状态时向系统中的每个对等方节点广播,这是初始区块链交易的另一个名称,通常包括控制和设置信息。
该应用可以利用分类账,该分类帐是区块链的所有状态转换的有序、防篡改记录。状态转换可能是由参与方(例如客户端节点、排序节点、背书方节点、对等方节点等)递交的链码调用(即交易)导致的。每个参与方(例如对等方节点)都可以维护分类帐的副本。交易可能导致资产键值对集合作为诸如创建、更新、删除等的一个或多个操作数被提交到分类账。分类账包括区块链(也称为链),该区块链用于将不可变的顺序记录存储在区块中。分类账还包括状态数据库,其维护区块链的当前状态。
该应用可以利用作为交易日志的链,其被构造为散列链接的区块,并且每个区块包含N个交易的序列,其中N等于或大于一。区块头部包括该区块交易的散列,以及先前区块头部的散列。以这种方式,分类账上的所有交易都可以被排序并密码链接在一起。因此,在不破坏散列链接的情况下不可能篡改分类帐数据。最近添加的区块链区块的散列表示链上之前发生的每笔交易,从而可以确保所有对等方节点处于一致且受信任的状态。链可以存储在对等方节点文件系统(即本地、附加存储装置、云等)上,高效地支持区块链工作载荷的仅附加性质。
不可变分类帐的当前状态表示链式交易日志中包括的所有密钥的最新值。因为当前状态代表通道已知的最新键值,所以有时将其称为世界状态。链码调用针对分类账的当前状态数据执行交易。为了使这些链码交互高效,可以将密钥的最新值存储在状态数据库中。状态数据库可能只是链中交易日志的索引视图,因此其可以随时从链中重新被生成。状态数据库可以在对等方节点启动时以及在接受交易之前自动恢复(或根据需要生成)。
本申请描述了对传统方法的功能改进。所公开的方法允许一个或多个区块链用户快速标识节点或对等方的世界状态是否已被损坏,同时不影响区块链平台的性能。目前,还没有方案可以判断节点或对等方的世界状态的完整性。确保节点或对等方的世界状态正确地被集成的唯一方式是挂起节点或对等方,然后重新运行共享分类帐中的所有交易以重建世界状态。这种方案很耗时间和资源,特别是对于大型且长期运行的区块链。
由于多种原因,本申请可能无法在不是区块链传的统数据库上实现。首先,传统数据库中没有区块和世界状态。本申请改进了区块链平台中世界状态的可靠性。其次,需要将特殊交易记录到该区块中,以便对等方可以确定要制作哪个世界状态快照。传统数据库没有区块的概念。第三,区块链网络中的不同对等方需要达成共识,以便于确定什么世界状态散列值可以代表当前正确的世界状态。这种共识在传统数据库中未使用。
本申请提供了一种使用区块链技术来创建对计算机功能的功能改进的公开。功能改进归因于(1)改进了区块链对等方节点的可靠性,尤其是对等方节点上的世界状态,以及(2)通过允许区块链用户标识哪些对等方节点发生故障来增强了区块链平台的安全性。
新数据被存储在区块链的区块中。要存储在区块中的新数据是世界状态快照交易,并且其被存储在区块的数据部分中。此新数据使异步区块链对等方在无需相互通信的情况下即可创建同步的世界状态散列值。区块链用户可以使用这种散列值来确定区块链世界状态的完整性。
世界状态是区块链技术的关键组件。它是键值存储,其包含所有共享分类帐资产的最新版本。每个对等方都具有世界状态的副本,以便高效的交易生成,因为在不访问共享分类账中的历史信息的情况下可以生成读取集合/写入集合。
在区块链网络中,某些节点或对等方可能在不太安全和可靠的环境中运行;因此,此类节点或对等方的区块链世界状态可能容易受到破坏。对于这些节点或对等方,其世界状态损坏可能是由多种原因引起的。
首先,恶意用户或恶意软件可以侵入节点或对等方并破坏世界状态数据库。其次,由于防伪病毒检测,某些防病毒软件可以通过删除其数据来破坏世界状态。第三,硬件/软件错误可能会导致世界状态破坏。世界状态中数据的完整性和无误性对于交易生成以及整体区块链性能可能至关重要。节点或对等方无法在可能已被证实的已损坏的世界状态上生成交易。这种未证实的交易不仅损害了区块链平台的吞吐量,而且浪费了资源,诸如CPU周期以及用于生成和存储这些交易的区块内的空间。
图1示出了根据示例实施例的用于数据库的世界状态验证系统的逻辑网络图。参照图1,网络100可以是具有世界状态的私有或许可的区块链网络,包括超级分类帐区块链网络。假设在区块链网络100中仅存在一个组织,则每个节点或对等方应该具有相同的世界状态。世界状态将所有交易的执行结果存储在区块中。
网络100包括区块链用户104、任意数量的区块链节点或对等方108和排序方节点或对等方116。区块链节点或对等方108包括背书世界状态检查点交易124的一个或多个背书方节点或对等方。示出了三个区块链节点或对等方108,其被标识为区块链节点或对等方108A和108B至108N。每个区块链节点或对等方108包括世界状态112。区块链节点或对等方108A包括世界状态112A,区块链节点或对等方108B包括世界状态112B,并且区块链节点或对等方108N包括世界状态112N。一个区块链节点或对等方108上的每个世界状态112可以与其他区块链节点或对等方108上的其他世界状态112相同或不同。
区块链用户104是连接到区块链网络100并创建世界状态检查点交易124的客户端应用。世界状态检查点交易124是对区块链节点或对等方仅进行世界状态证实的请求,并且不会给区块链平台带来任意附加的易损性。在一个实施例中,区块链用户104可以设置超时值,使得世界状态检查点交易124将被周期性地发送到区块链节点或对等方。在另一实施例中,如果区块链用户104怀疑或希望验证一个或多个特定节点或对等方上的世界状态的完整性,则区块链用户104可以向共享同一世界状态的区块链节点或对等方发送世界状态检查点交易124。
区块链用户104将世界状态检查点交易124传递到一个或多个背书方节点或对等方108,一个或多个背书方节点或对等方108对这些交易进行背书并将背书提供回区块链用户104。区块链用户104从背书方节点或对等方收集所有背书,并向排序方节点或对等方116提供背书的世界状态检查点交易128。
排序方节点或对等方116将背书的世界状态检查点交易128包括在区块120中,并将新区块132传递到区块链节点或对等方108。响应于接收到新区块132,区块链节点或对等方108证实新区块132并计算其世界状态112副本的散列,直到检查点为止。然后对散列进行签名,然后每个区块链节点或对等方108将散列和签名136传递给区块链用户104。
响应于接收到散列和签名136,区块链用户104比较散列以确定大多数公共散列值。区块链用户104证实散列值,使用共识算法对其进行比较,然后确定是否存在任意损坏的世界状态。具有与大多数接收的散列值相同的散列值的那些区块链节点或对等方108具有正确的世界状态112,并且具有与大多数接收的散列值不同的散列值的那些区块链节点或对等方108具有不正确的世界状态112。
该解决方案可以是较大项目的一部分,该项目使节点/对等方能够高效地创建世界状态快照,并在任意世界状态损坏的情况下从快照可靠地恢复其世界状态。它还可以是允许区块链用户104建立整个区块链网络100的状态并允许节点/对等方检查其状态完整性的解决方案的一部分。
图2A示出了根据示例实施例的区块链架构配置200。参照图2A,区块链架构200可以包括某些区块链元素,例如一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅以示例的方式示出)。这些节点参与了许多活动,诸如区块链交易添加和证实过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略来背书交易,并且可以为架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证并且试图写入在区块链层216中存储的区块链不可变分类账中,其副本也可以被存储在基础物理基础设施214上。区块链配置可以包括一个或多个应用224,其链接到应用编程接口(API)222以访问和执行存储的程序/应用代码220(例如链码、智能合约等),其可以根据参与者寻求的定制配置来被创建,并且可以维持自己的状态、控制自己的资产并接收外部信息。其可以被部署为交易,并经由附加到分布式分类帐中来被安装在所有区块链节点204-210上。
区块链基础或平台212可包括各个层的区块链数据、服务(例如密码信任服务、虚拟执行环境等)以及基础(underpinning)物理计算机基础设施,其可用于接收和存储新交易并为寻求访问数据条目的审核方提供访问。区块链层216可以暴露接口,该接口提供对处理程序代码和使用物理基础设施214所必需的虚拟执行环境的访问。密码信任服务218可以用于验证诸如资产交换交易的交易并保持信息私有。
图2A的区块链架构配置可以经由区块链平台212暴露的一个或多个接口以及提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如代码220可以存储和传递数据,并且可以由节点204-210以智能合约和相关链码的形式利用受制于其执行的条件或其他代码元素来执行。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或其受制于改变、更新等的其他通知。智能合约本身可以用于标识与授权和访问要求及分类帐的使用相关联的规则。例如信息226可以包括来自所有区块链节点或对等方的散列和签名,并且可以由在区块链层216中包括的一个或多个处理实体(例如虚拟机)进行处理。结果228可以包括经证实的世界状态,其反映大多数区块链节点或对等方的相同散列值。物理基础设施214可以用于取回本文描述的任意数据或信息。
智能合约可以经由高级应用和编程语言来被创建,然后被写入区块链中的区块中。智能合约可以包括通过区块链(例如区块链对等方的分布式网络)注册、存储和/或复制的可执行代码。交易是可以响应于与智能合约相关联的条件得到满足而执行的智能合约代码的执行。智能合约的执行可以触发对数字区块链分类账状态的(一个或多个)受信任的修改。由智能合约执行引起的对区块链分类账的(一个或多个)修改可以通过一个或多个共识协议在整个区块链对等方的分布式网络中自动地被复制。
智能合约可以以键值对的格式将数据写入区块链。此外,智能合约代码可以读取在区块链中存储的值,并将其用于应用操作中。智能合约代码可以将各种逻辑操作的输出写入区块链。该代码可用于在虚拟机或其他计算平台中创建临时数据结构。写入区块链的数据可以是公开的和/或可以加密并保持为私有。智能合约使用/生成的临时数据由提供的执行环境保持在存储器中,并且一旦标识出区块链所需的数据,便被删除。
链码可以包括具有附加特征的智能合约的代码解释。如本文所述,链码可以是部署在计算网络上的程序代码,其中其由链证实器在共识过程期间一起被执行和证实。链码接收散列,并从区块链中取回与使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列与从存储的标识符模板数据创建的散列匹配,则链码将授权密钥发送到请求的服务。链码可以将与密码详细信息相关联的数据写入区块链。
图2B示出了根据示例实施例的在区块链的节点之间的区块链交易流250的示例。参照图2B,交易流可以包括由应用客户端节点260发送到背书对等方节点281的交易提议291。背书对等方281可以验证客户端签名并执行链码功能以发起交易。输出可能包括链码结果,在链码中读取的键/值版本集合(读取集合)以及以写入链码的键/值集合(写入集合)。如果批准,则将提议响应292与背书签名一起发送回客户端260。客户端260将背书组装成交易有效载荷293,并将其广播到排序服务节点284。排序服务节点284然后将排序的交易作为区块递送给通道上的所有对等方281-283。在提交到区块链之前,每个对等方281-283可以证实交易。例如对等方可以检查背书策略,以确保指定对等方的正确分配已经对结果进行了签名并针对交易有效载荷293认证了签名。
再次参考图2B,客户端节点260通过构造请求并将其发送给作为背书方的对等方节点281来发起交易291。客户端260可以包括利用受支持的软件开发套件(SDK)的应用,该应用利用可用的API来生成交易提议。该提议是调用链码功能的请求,以便可以将数据读取和/或写入分类帐(即,为资产写入新的键值对)。SDK可以充当垫片(“shim”),用于将交易提议打包为适当的架构格式(例如远程过程调用(RPC)上的协议缓冲区),并取得客户的加密凭证以产生交易提议的唯一签名。
作为响应,背书对等方节点281可以验证(a)交易提议被正确地形成,(b)过去尚未递交交易(重放攻击保护),(c)签名是有效的,以及(d)递交方(在此示例中为客户端260)已被适当授权以在该频道上执行提议的操作。背书对等方节点281可以将交易提议输入作为所调用的链码功能的参数。然后针对当前状态数据库执行链码,以产生交易结果,包括响应值、读取集合和写入集合。然而,此时尚未对分类帐进行任意更新。在292中,将值的集合与背书对等方节点281的签名一起作为提议响应292传递回客户端260的SDK,客户端260的SDK解析有效载荷用于应用消费。
作为响应,客户端260的应用检查/验证背书的对等方的签名,并比较提议响应以确定提议响应是否相同。如果链码仅查询分类帐,则应用将检查查询响应,并且通常不将交易递交至排序节点服务284。如果客户端应用打算将交易递交至排序节点服务284以更新分类帐,则应用在递交之前确定指定的背书策略是否已实现(即,交易所需的所有对等方节点是否都对交易进行背书)。在此,客户端可以仅包括交易的多方之一。在这种情况下,每个客户端可能有自己的背书节点,并且每个背书节点都需要背书交易。该架构使得即使应用选择不检查响应或以其他方式转发未背书的交易,背书策略仍将由对等方强制执行并在提交证实阶段得到维护。
在成功检查之后,在步骤293中,客户端260将背书组装成交易,并将交易消息内的交易提议和响应内向排序节点284广播。交易可包含读取/写入集合、背书对等方的签名和通道ID。排序节点284不需要检查交易的全部内容以便执行其操作,相反,排序节点284可以简单地从网络中的所有通道接收交易,按通道按时间顺序对它们进行排序,并为每个通道创建交易区块。
交易的区块从排序节点284递送到通道上的所有对等方节点281-283。证实区块内的交易294,以确保满足任意背书策略,并确保自交易执行生成读取集合以来,读取集合变量的分类帐状态没有变化。区块中的交易被标记为有效或无效。此外,在步骤295中,每个对等方节点281-283将区块附加到通道的链上,并且对于每个有效交易,将写入集合提交给当前状态数据库。发出事件,以通知客户端应用交易(调用)已被不可变地附加到链上,并通知交易是被证实的还是未被证实的。
图3A示出了许可的区块链网络300的示例,其特征在于分布式的、分散式的对等方架构。在该示例中,区块链用户302可以将交易发起至许可的区块链304。在该示例中,该交易可以是部署、调用或查询,并且可以通过利用SDK的客户端应用、直接通过API等来被发布。网络可以提供对诸如审核方的监管者306的访问。区块链网络运营商308管理成员许可,诸如将监管者306注册为“审核方”,并且将区块链用户302注册为“客户端”。审核方可能只限于查询分类帐,而客户可以被授权以部署、调用和查询某些类型的链码。
区块链开发者310可以编写链码和客户端应用。区块链开发者310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的凭证,开发者310可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等方节点314连接到许可的区块链304。在进行任意交易之前,对等方节点314从管理用户角色和许可的证书颁发机构316取回用户的注册和交易证书。在某些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链网络304上进行交易。同时,可能要求尝试利用链码的用户在传统数据源312上验证其凭证。为了确认用户的授权,链码可以使用通过传统处理平台320到该数据的带外连接。
图3B示出了被许可的区块链网络320的另一示例,其特征在于分布式的、分散式的对等方架构。在该示例中,区块链用户322可以将交易递交至许可的区块链324。在该示例中,该交易可以是部署、调用或查询,并且可以通过利用SDK的客户端应用、直接通过API等来发布。网络可以提供对诸如审核方的监管者326的访问。区块链网络运营商328管理成员许可,诸如将监管者326注册为“审核方”,并且将区块链用户322注册为“客户端”。审核方可能只限于查询分类帐,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者330编写链码和客户端侧应用。区块链开发者330可以通过接口将链码直接部署到网络。为了将来自传统数据源332的凭证包括在链码中,开发者330可以使用带外连接来访问数据。在该示例中,区块链用户322通过对等方节点334连接到网络。在进行任意交易之前,对等方节点334从证书颁发机构336取回用户的注册和交易证书。在某些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链324上进行交易。同时,可以要求尝试利用链码的用户在传统数据源332上验证其凭证。为了确认用户的授权,链码可以使用通过传统处理平台338到该数据的带外连接。
图4示出了根据示例实施例的用于执行世界状态完整性验证的系统消息图400。参照图4,系统消息传递图400包括区块链用户410、一个或多个背书方节点或对等方420、以及排序方节点或对等方430。区块链用户410通过创建世界状态检查点交易415来发起该过程,以及将世界状态检查点交易416传递到背书方节点或对等方420。
响应于接收到世界状态检查点交易416,背书方节点或对等方420对交易进行背书425并将背书426传递到区块链用户410。区块链用户410将来自背书方节点或对等方420的背书435打包进入背书的世界状态检查点交易436,并将背书的世界状态检查点交易436传递到排序方节点或对等方430。
排序方节点或对等方430将经背书的世界状态检查点交易包括在新区块440中,并将新区块441传递到包括背书方节点或对等方420的区块链节点或对等方。包括背书方节点或对等方420的区块链节点或对等方计算它们自己的世界状态的副本的散列445,直到世界状态检查点交易中指定的世界状态检查点436,并对该散列进行签名。包括背书节点或对等方420的区块链节点或对等方将世界状态散列和签名446传递到区块链用户410。
区块链用户410基于接收到的散列值446,验证每个区块链节点或对等方的世界状态完整性450。如果区块链节点或对等方具有与大多数接收到的散列值相同的散列值,则它们具有正确的世界状态,并且如果它们具有与大多数接收到的散列值不同的散列值,则它们具有不正确的世界状态。区块链用户410向大多数区块链节点或对等方通知它们具有正确的世界状态455,并向非多数区块链节点或对等方通知其不具有正确的世界状态460。未能达成共识的节点或对等方(即不是绝大多数)将移除其当前的世界状态,并从其他节点或对等方获得正确的世界状态。
图5A示出了根据示例实施例的验证区块链中的世界状态完整性的示例方法的流程图500。参照图5A,方法500可以包括以下步骤中的一个或多个。
在框504处,区块链用户创建世界状态检查点交易。
在框508处,区块链网络的背书方节点或对等方对世界状态检查点交易进行背书,并将背书返回给区块链用户。区块链用户将背书组合成背书的世界状态检查点交易,并将其提供给排序方节点或对等方。
在框512处,排序方节点或对等方创建包括背书的世界状态检查点交易的新区块,并将新区块发送至区块链网络的所有节点或对等方。
在框516处,区块链节点或对等方中的每一个证实新区块,生成世界状态的新散列,并用节点或对等方的私钥对散列进行签名。然后将散列和签名发送给区块链用户。
在框520处,区块链用户通过比较接收到的散列来验证世界状态完整性。区块链用户使用节点或对等方的公钥来验证散列的完整性和签名。如果大多数区块链节点或对等方发送了相同的散列,则这些节点或对等方的世界状态已经过验证。提供不同散列值的区块链节点或对等方具有不正确的世界状态。
在框524处,区块链用户向区块链节点或对等方通知其世界状态的完整性,无论正确与否。该机制提供了一种高效且可靠的方案来证实区块链世界状态的完整性。
首先,它消除了在共享分类帐中重新运行一系列历史交易的需要,这既浪费资源又耗时,特别是对于大型且长期运行的区块链而言。
其次,使用CoW(写时复制)技术来最小化世界状态证实过程带来的负面区块链性能影响。当节点或对等方在提交新区块时遇到世界状态检查点交易时,它将开始计算其当前世界状态的散列值。节点或对等方在计算世界状态散列时不需要挂起,并且其可以继续处理其他交易。由新交易得到的所有世界状态更新均被临时存储。在计算世界状态散列值之后,将存储的更新应用于现有的世界状态。
在世界状态检查点之后到来的交易也将具有对世界状态的更新;因此,为了不影响世界状态检查点的计算,这些交易得到的更新将被存储在单独的位置。当节点或对等方基于世界状态检查点交易来完成计算世界状态检查点时,可以将此类更新重新应用于世界状态。
第三,该方案可靠地确定区块链世界状态的完整性,其基于从同一组织的所有节点或对等方收集的世界状态散列值来。来自节点或对等方的世界状态散列值使用其对应的签名进行验证。同样,区块链世界状态的完整性由在从所有这些节点或对等方收集的散列值上运行的共识算法确定。
图5B示出了根据示例实施例的认证用于区块链的检查点的示例方法的流程图550。参照图5B,方法550可以包括以下步骤中的一个或多个。
在框554,将完整检查点设置为空状态。这反映了没有达成协议的初始状态。
在框558,存储区块链网络的世界状态。此步骤还保存对位置中检查点数据的位置的引用。世界状态例如被记录在传统介质(例如磁带、磁盘、云等)上,或被记录在其自己的区块链中。记录的世界状态称为检查点。
在框562处,计算检查点状态散列。
在框566处,检查散列的共识。例程检查在此检查点的散列上是否已经达成协议(共识)。如果不是,则例程在检查点的散列上与其他节点(提交方)达成协议。
在框570处,将计算出的散列与约定散列进行比较。如果计算的散列与约定的散列不同,则完成步骤574。否则,将保存检查点数据的散列,并保存对检查点数据位置的引用。保存这些值,以便在采用增量检查点时将其恰当地链接到完整的检查点。然后,例程将创建交易,该交易将是包含检查点状态的散列和对该位置的引用的下一个区块中的第一个交易。此交易可以包含所需的尽可能多的信息。
在框574处,从另一个提交方取回有效的世界状态散列。当所计算的散列与约定的散列不同时,将发生此步骤。
图6A示出了根据示例实施例的示例系统600,其包括被配置为执行各种操作的物理基础设施610。参照图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),它们可以执行在示例实施例中的任意一个中包括的操作步骤608中的任意一个(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6B示出了根据示例实施例的被配置为执行各种操作的示例系统640。参照图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(可以驻留在区块链620上),其可以执行示例实施例中的任意一个中所包括的操作步骤608中的任意一个(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612、和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6C示出了根据示例实施例的示例系统,该示例系统被配置为利用在合约方和中介服务器之间的智能合同配置,该中介服务器被配置为在区块链上实施智能合约条款。参照图6C,配置650可以表示由智能合约630驱动的通信会话、资产传递会话或处理或过程,该智能合约630明确地标识一个或多个用户设备652和/或656。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由作为智能合约交易的各方的实体652和656中的一个或多个的数字签名。智能合约执行的结果可以作为区块链交易被写入区块链620。智能合约630驻留在区块链620上,该区块链620可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。
图6D示出了根据示例实施例的包括区块链的系统660。参照图6D的示例,应用编程接口(API)网关662提供用于访问区块链逻辑(例如智能合约630或其他链码)和数据(例如分布式分类账等)的公共接口。在该示例中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等方(即服务器654)来在区块链上执行交易(调用、查询等)的公共接口。在这里,服务器654是区块链网络对等方组件,其拥有世界状态的副本和分布式分类帐,允许客户端652和656查询有关世界状态的数据以及将交易递交到区块链网络中,其中取决于智能合约630和背书策略,背书对等方将运行智能合约630。
以上实施例可以以硬件,以处理器执行的计算机程序,以固件或以上述的组合来实现。计算机程序可以体现在诸如存储介质的计算机可读介质上。例如计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦可编程只读存储器(“EPROM”)、电可擦可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任意其他形式的存储介质中。
示例性存储介质可以被耦合到处理器,使得处理器可以从该存储介质读取信息,并且可以向该存储介质写入信息。替代地,存储介质可以被集成到处理器。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代方案中,处理器和存储介质可作为分立组件驻留。
图7A示出了根据示例实施例的将新区块添加至分布式分类帐730的过程700,并且图7B示出了根据示例实施例的区块链的新数据区块结构750的内容。参照图7A,客户端(未示出)可以向区块链节点721、722和/或723递交交易。客户端可以是从任意来源接收的用于在区块链720上制定活动的指令。作为示例,客户端可以是代表诸如设备、个人或实体的请求者来采取行动以为区块链提出交易的应用。多个区块链对等方(例如区块链节点721、722和723)可以维持区块链网络的状态和分布式分类帐720的副本。在区块链网络中可以存在不同类型的区块链节点/对等方,包括:背书对等方,其模拟和背书由客户端提议的交易;以及提交对等方,其验证背书、证实交易并将交易提交给分布式分类帐720。在此示例中,区块链节点721、722和723可以执行背书方节点、提交方节点、或两者的角色。
分布式分类帐720包括:区块链,其在区块中存储不可变的、有序的记录;以及状态数据库724(当前世界状态),其维持区块链722的当前状态。每个通道可能存在一个分布式分类帐720,并且每个对等方为它们作为成员的每个通道维护自己的分布式分类帐730副本。区块链722是交易日志,被构造为散列链接的区块,其中每个区块包含N个交易的序列。区块可以包括诸如图7B所示的各种组件。区块的链接(图7A中的箭头所示)可以通过在当前区块的区块头部中添加先前区块头部的散列来生成。以此方式,区块链722上的所有交易被进行排序并被密码地链接在一起,以防止在不破坏散列链接的情况下篡改区块链数据。此外,由于链接,区块链722中的最新区块表示在其之前进行的每个交易。区块链722可以被存储在对等方文件系统(本地或附加存储)上,该对等方文件系统支持仅追加的区块链工作载荷。
区块链722和分布式分类帐722的当前状态可以被存储在状态数据库724中。这里,当前状态数据表示区块链722的链交易日志中曾经包含的所有密钥的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常高效,所有密钥的最新值都存储在状态数据库724中。状态数据库724可以在区块链722的交易日志中包括索引视图,因此其可以在任何时间从链中被重新生成。状态数据库724可以在交易被接受之前在对等方启动时自动恢复(或者如果需要的话被生成)。
背书节点从客户端接收交易,并基于模拟结果背书该交易。背书节点持有模拟交易提议的智能合约。当背书节点背书交易时,背书节点创建交易背书,该背书是从背书节点到客户端应用的签名响应,指示模拟交易的背书。背书交易的方法取决于可以在链码中指定的背书策略。背书策略的一个示例是“大多数背书对等方必须背书交易。”不同的通道可能有不同的背书策略。客户端应用将背书的交易转发到排序服务710。
排序服务710接受已背书的交易,将其排序为区块,并将这些区块递送给提交对等方。例如当已经达到交易的阈值、计时器超时或其他条件时,排序服务710可以启动新区块。在图7A的示例中,区块链节点712是提交对等方,其已接收到新的数据区块730,用于存储在区块链720上。区块链中的第一块可以被称为起源区块,其包括关于区块链、其成员、在其中存储的数据等的信息。
排序服务710可以由排序者集群组成。排序服务710不处理交易、智能合约或维护共享分类帐。相反,排序服务710可以接受背书的交易并指定将那些交易被提交给分布式分类账720的排序。可以设计区块链网络的架构,以使得“排序”的特定实现(例如Solo、Kafka、BFT等)成为可插拔组件。
交易以一致的排序被写入分布式分类账720。建立交易的排序以确保在将状态数据库724的更新被提交到网络时状态数据库724的更新有效。与通过解决密码难题或挖掘进行排序的加密货币区块链系统(例如比特币等)不同,在此示例中,分布式分类帐720的当事方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据区块730时,新区块730可被广播到提交对等方(例如区块链节点711、712和713)。作为响应,每个提交对等方通过检查以确保读取集合和写入集合仍与状态数据库724中的当前世界状态相匹配,来证实新数据区块730中的交易。具体地说,提交对等方可以确定当背书方模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等方证实交易时,将交易写入分布式分类账720上的区块链722,并用来自读取写入集合的写入数据来更新状态数据库724。如果交易失败,即,如果提交对等方在状态数据库724中发现读取写入集合与当前世界状态不匹配,则被排序到区块中的交易仍将包括在该区块中,但是它将被标记为无效,并且状态数据库724将不被更新。
参照图7B,在分布式分类帐720的区块链722上存储的新数据区块730(也称为数据区块)可以包括多个数据段,诸如区块头部740、区块数据750和区块元数据760。应当理解,所描绘的各种区块及其内容,诸如图7B中所示的新数据区块730及其内容,仅是示例,并不意味着限制示例实施例的范围。新数据区块730可在区块数据750内存储N个交易(例如1、10、100、500、1000、2000、3000等)的交易信息。新数据区块730还可在区块头部740内包括到先前块(例如,在图7A中的区块链722上)的链接。具体而言,区块头部740可包括先前区块头部的散列。区块头部740还可以包括唯一区块号、新数据区块730的区块数据750的散列等等。新数据区块730的区块号可以是唯一的,并且以诸如从零开始的增量/顺序排序等各种排序来被分配。
区块数据750可以存储在新数据区块730内记录的每个交易的交易信息。例如交易数据可以包括以下一项或多项:交易的类型、版本、时间戳、分布式分类帐720的通道ID、交易ID、时期、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和功能)、诸如公钥和证书的客户端(创建者)标识、客户的签名、背书方身份、背书方签名、提议散列、链码事件、响应状态、名称空间、读取集合(交易读取的密钥列表和版本等)、写入集合(键和值的列表等)、开始键、结束键、键列表、默克尔树查询摘要等。可以针对N个交易中的每一个存储交易数据。
在一些实施例中,区块数据750还可存储新数据762,该新数据762将附加信息添加到区块链722中的散列链接的区块链中。附加信息包括本文描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因此,新数据762可被存储在分布式分类账720的区块的不可变日志中。存储这种新数据762的一些益处被反映在本文公开和描绘的各种实施例中。尽管在图7B中,新数据762被描述在块数据750中,但是也可以位于区块头部740或区块元数据760中。
区块元数据760可以存储元数据的多个字段(例如作为字节阵列等)。元数据字段可以包括在区块创建时的签名、对最后一个配置区块的引用、标识区块内有效交易和无效交易的交易过滤器、对区块进行排序的排序服务的最后偏移持续时间等。签名、最后配置区块和排序者元数据可以由排序服务710添加。同时,区块的提交方(例如,区块链节点712)可以基于背书策略、读出/写入集合的验证等来添加有效性/无效性信息。交易过滤器可以包括大小等于区块数据750中的交易数量的字节阵列和标识交易有效/无效的证实码。
图7C示出了根据本文所述实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联的信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链的不变性、仅追加的方面可作为保护数字内容的完整性、有效性和真实性的保障,使其适用于受理规则应用的法律程序或计入或考虑证据或会引起人们对数字信息的展示和使用的兴趣的其他设置。在这种情况下,数字内容可以被称为数字证据。
区块链可以以各种方式形成。在一个实施例中,数字内容可以被包括在区块链本身中并且可以从区块链本身访问。例如区块链的每个区块可以沿着相关联的数字内容存储参考信息的散列值(例如标题、值等)。然后可以将散列值和相关联的数字内容一起加密。因此,可以通过解密区块链中的每个块来访问每个块的数字内容,并且每个块的散列值可以用作参考先前区块的基础。这可以说明如下:
在一个实施例中,数字内容可以不被包括在区块链中。例如区块链可以存储每个区块的内容的加密散列,而无需数字内容中的任意一个。数字内容可以与原始文件的散列值相关联地存储在另一存储区域或存储器地址中。其他存储区域可以是用于存储区块链的相同存储设备,也可以是不同的存储区域,甚至是单独的关系数据库。可以通过获得或查询感兴趣的区块的散列值,并且然后查找其具有在与实际数字内容相对应地存储的存储区域中的值,来引用或访问每个区块的数字内容。该操作例如可以执行数据库看守者。可以说明如下:
在图7C的示例实施例中,区块链770包括以排序序列密码地链接的多个区块7781、7782、...778N,其中N≥1。用于链接区块7781、7782、...778N的加密可以是许多加密或非加密散列函数中的任意一个。在一个实施例中,区块7781、7782、...778N受制于散列函数,该散列函数基于区块中的信息从输入产生n位字母数字输出(其中n是256或另一个数字)。此类散列函数的示例包括但不限于SHA型(SHA代表安全散列算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle-tree算法、基于随机数的算法、和非防碰撞PRF算法。在另一个实施例中,可以通过与散列函数不同的函数来密码地链接区块7781、7782、...778N。为了说明的目的,以下参考诸如SHA-2的散列函数进行描述。
区块链中的每个区块7781、7782、...778N包括头部,文件版本和值。由于区块链中的散列的结果,每个区块的头部和值都不同。在一个实施例中,该值可以被包括在头部中。如下面更详细描述的,文件的版本可以是原始文件或原始文件的不同版本。
区块链中的第一区块7781被称为起源区块,并且包括头部7721、原始文件7741和初始值7761。用于起源区块以及实际上在所有后续区块中的散列方案可以变化。例如可以将第一区块7781中的所有信息一次散列在一起,或者可以分别对第一区块7781中的信息中的每一个或一部分进行散列处理,然后分别散列的部分的散列被执行。
头部7721可以包括一个或多个初始参数,其例如可以包括版本号、时间戳、随机数、根信息、难度级别、共识协议、持续时间、媒体格式、源、描述性关键字和/或与原始文件7741和/或区块链相关联的其他信息。头部7721可以自动地(例如通过区块链网络管理软件)被生成,或者可以由区块链参与者手动生成。与区块链中其他区块7782至778N中的头部不同,起源区块中的头部7721并不引用先前的区块,仅仅是因为没有先前的区块。
起源区块中的原始文件7741可以是例如由设备捕获的数据,在其包括在区块链中之前进行了处理或不进行处理。通过系统的接口从设备、媒体源或节点接收原始文件7741。原始文件7741与元数据相关联,例如元数据可以由用户、设备和/或系统处理器手动地或自动地生成。元数据可以与原始文件7741相关联地被包括在第一区块7781中。
起源区块中的值7761是基于原始文件7741的一个或多个唯一属性生成的初始值。在一个实施例中,一个或多个唯一属性可包括原始文件7741的散列值、原始文件7741的元数据、以及与该文件相关联的其他信息。在一种实现中,初始值7761可以基于以下唯一属性:
1)原始文件的SHA-2计算的散列值
2)始发设备ID
3)原始文件的开始时间戳
4)原始文件的初始存储位置
5)用于当前控制原始文件和相关联的元数据的软件的区块链网络成员ID
区块链中的其他区块7782至778N也具有头部、文件和值。然而,与第一区块7721不同,其他区块中的头部7722至772N中的每一个均包括紧接在前的区块的散列值。紧接在先前区块的散列值可以只是先前区块的头部的散列,或者可以是整个先前区块的散列值。通过在剩余的每个区块中包括先前区块的散列值,可以逐区块地执行从第N个区块返回到起源区块(以及相关联的原始文件)跟踪,如箭头780所示,以建立可审计且不可改变的监管链。
其他区块中的头部7722至772N中的每个还可以包括其他信息,例如版本号、时间戳、随机数、根信息、难度级别、共识协议、和/或与对应文件和/或一般的区块链相关联的其他参数或信息。
其他区块中的文件7742至774N可以等于原始文件,也可以是例如取决于执行的处理类型的起源区块中的原始文件的修改版本。所执行的处理类型可能因区块而异。该处理可以涉及例如在先前的区块中对文件的任意修改,诸如编辑(redacting)信息或以其他方式改变文件的内容,从文件中取走信息,或向文件添加或附加信息。
另外地或可替代地,该处理可以涉及仅从先前的区块复制文件,改变文件的存储位置,从一个或多个先前的区块分析文件,将文件从一个存储装置或存储器位置移动到另一存储装置或存储器位置,或相对于区块链文件和/或其相关联的元数据执行动作。涉及分析文件的处理可以包括例如附加、包括或以其他方式关联与文件相关联的各种分析、统计或其他信息。
其他区块中的每个其他区块7762至776N中的值是唯一值,并且由于执行的处理而全部不同。例如任意一个区块中的值都对应于先前区块中值的更新版本。该更新反映在为其分配了值的区块的散列中。因此,区块的值提供了对在区块中执行了哪些处理的指示,并且还允许通过区块链跟踪回到原始文件。这种跟踪确认了整个区块链中文件的监督链。
例如考虑对先前区块中的文件的部分进行编辑、屏蔽或像素化以保护文件中所示的人的身份的情况。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如如何执行编辑,谁执行了编辑,(一个或多个)编辑发生的时间戳等。可以对元数据进行散列以形成值。由于该区块的元数据与经过散列处理以形成先前区块中的值的信息不同,因此这些值互不相同,并且在解密时可以被恢复。
在一个实施例中,当以下任意一个或多个发生时,可以更新先前区块的值(例如计算新的散列值)以形成当前区块的值。在该示例实施例中,可以通过对以下所述的全部或部分信息进行散列处理来计算新的散列值。
a)如果文件已以任意方式被处理(例如如果文件已被编辑,复制,更改,访问或已被采取其他动作),则新的SHA-2计算出的散列值
b)文件的新存储位置
c)与文件相关联地标识的新元数据
d)将文件的访问或控制权从一个区块链参与者传递到另一区块链参与者
图7D示出了根据一个实施例的可以表示区块链790中的区块的结构的区块的实施例。区块Blocki包括头部772i、文件774i和值776i。
头部772i包括先前区块Blocki-1的散列值和附加参考信息,其例如可以是本文讨论的任意类型的信息(例如头部信息,包括参考、特性、参数等)。当然,除起源区块外,所有区块均引用先前区块的散列。先前区块的散列值可以仅仅是先前区块中头部的散列,也可以是先前区块中所有或部分信息的散列,包括文件和元数据。
文件774i依次包括多个数据,诸如数据1、数据2、…、数据N。数据用元数据元数据1、元数据2、…、元数据N标记,这些元数据描述了与数据相关联的内容和/或特性。例如每个数据的元数据可包括指示数据时间戳、处理数据的信息、指示人或数据中描述的其他内容的关键字、和/或有助于建立文件整体有效性和内容的其他特征,尤其是其使用数字证据,例如结合以下讨论的实施例所述。除元数据外,每个数据都可以使用参考REF1、REF2、…、REFN标记到先前数据,以防止篡改、文件中的空白、以及通过文件的顺序参考。
一旦将元数据被分配给数据(例如通过智能合约),就不能在不改变散列的情况下更改元数据,其很容易被标识为无效。因此,元数据创建信息的数据日志,该数据日志可以被访问供区块链中的参与者使用。
值776i是散列值或基于先前讨论的任意类型的信息计算出的其他值。例如对于任意给定的区块Blocki,可以对该区块的值进行更新以反映对该区块执行的处理,例如新的散列值、新的存储位置、相关联文件的新元数据、控制或访问的传递、标识符、或其他要添加的动作或信息。尽管示出了每个区块中的值与用于文件和头部的数据的元数据分离,但是在另一实施例中,该值可以部分或全部基于该元数据。
一旦形成区块链770,在任意时间点,可以通过向区块链查询跨区块的值的交易历史来获得文件的不可变的监管链。该查询或跟踪处理可以从解密当前包括的区块(例如最后(第N个)区块)的值开始,并且然后继续解密其他区块的值,直到达到起源区块并且恢复原始文件为止。解密还可以涉及在每个区块处解密头部和文件以及相关联的元数据。
基于在每个区块中发生的加密的类型来执行解密。这可能涉及私钥、公钥或公钥-私钥对的使用。例如当使用非对称加密时,网络中的区块链参与者或处理器可以使用预定算法来生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可以被公开分发,以用作接收来自其他用户的消息的地址,例如IP地址或家庭地址。私钥是保密的,用于对发送给其他区块链参与者的消息进行数字签名。签名包括在消息中,以便接收者可以使用发送者的公钥进行验证。这样,接收者可以确定只有发送者可以发送此消息。
生成密钥对可以类似于在区块链上创建账户,但是不必实际在任意地方进行注册。此外,发送者使用其私钥对在区块链上执行的每个交易进行数字签名。该签名可确保只有帐户所有者才能跟踪和处理(如果在智能合约确定的许可范围内)区块链文件。
图8示出了示例系统800,其支持本文描述和/或描绘的一个或多个示例实施例。系统800包括计算机系统/服务器802,计算机系统/服务器802可与许多其他通用或专用计算系统环境或配置一起操作。可能适合与计算机系统/服务器802一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或便携式设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括上述系统或设备中的任意一个的分布式云计算环境、等等。
可以在由计算机系统执行的诸如程序模块的计算机系统可执行指令的一般上下文中描述计算机系统/服务器802。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。可以在分布式云计算环境中实践计算机系统/服务器802,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图8所示,以通用计算设备的形式示出了云计算节点800中的计算机系统/服务器802。计算机系统/服务器802的组件可以包括但不限于一个或多个处理器或处理单元804、系统存储器806以及将包括系统存储器806的各种系统组件耦合到处理器804的总线。
总线表示几种类型的总线结构中的任意一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口以及使用各种总线架构中的任意一种的处理器或本地总线。作为示例而非限制,此类架构包括行业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线和外围组件互连(PCI)总线。
计算机系统/服务器802通常包括各种计算机系统可读介质。这样的介质可以是计算机系统/服务器802可访问的任意可用介质,并且它包括易失性和非易失性介质,可移除和不可移除介质。在一个实施例中,系统存储器806实现其他附图的流程图。系统存储器806可以包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)810和/或高速缓冲存储器812。计算机系统/服务器802可以进一步包括其他可移除/不可移除、易失性/非易失性计算机系统存储介质。仅作为示例,可以提供存储系统814以用于读取和写入不可移除的非易失性磁性介质(未示出并且通常称为“硬盘驱动器”)。尽管未示出,但是可以提供用于从可移除非易失性磁盘(例如“软盘”)进行读取和向可移动非易失性磁盘(例如“软盘”)写入的磁盘驱动器、以及用于从可移除非易失性光盘读取或向可移动非易失性光盘写入的光盘驱动器,诸如CD-ROM、DVD-ROM或其他光学介质。在这种情况下,每一个都可以通过一个或多个数据介质接口连接到总线。如将在下面进一步描绘和描述的,存储器806可以包括具有(例如至少一个)程序模块集合的至少一个程序产品,所述程序模块被配置为执行本申请的各种实施例的功能。
具有(至少一个)程序模块818的集合的程序/实用工具816可以与操作系统、一个或多个应用程序、其他程序模块和程序数据一起被存储在存储器806中,其作为示例而非限制。操作系统、一个或多个应用程序、其他程序模块以及程序数据或它们的某种组合中的每一个可以包括联网环境的实现。程序模块818通常执行本文所述的本申请的各种实施例的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以体现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取以下形式:完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例,这些软件和硬件方面通常都可以在本文中被称为“电路”、“模块”或“系统”。此外,本申请的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,一个或多个计算机可读介质在其上体现有计算机可读程序代码。
计算机系统/服务器802还可以与以下各项通信:一个或多个外部设备820,诸如键盘、指示设备、显示器822等;使用户能够与计算机系统/服务器802交互的一个或多个设备;和/或使计算机系统/服务器802能够与一个或多个其他计算设备进行通信的任意设备(例如网卡、调制解调器等)。这样的通信可以经由I/O接口824发生。然而,计算机系统/服务器802仍可以与一个或多个网络通信,诸如局域网(LAN)、通用广域网(WAN)、和/或经由网络适配器826的公共网络(例如因特网)。如图所示,网络适配器826经由总线与计算机系统/服务器802的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器802结合使用。示例包括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
尽管在附图中示出并在前述详细描述中描述了系统、方法和非暂态计算机可读介质中的至少一个的示例性实施例,但是应当理解,本申请不限于所公开的所述实施例,但是能够进行如所附权利要求所阐述和定义的许多重新布置、修改和替换。例如各个附图的系统的能力可以由本文描述的模块或组件中的一个或多个或以分布式架构来执行,并且可以包括发射机、接收机或两者的对。例如由单独模块执行的全部或部分功能可以由这些模块中的一个或多个来执行。此外,本文描述的功能可以在各种时间并与在模块或组件的内部或外部的各种事件相关地执行。此外,在各种模块之间发送的信息可以经由以下各项中的至少一项在各个模块之间发送:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或通过多种协议。此外,由模块中的任意一个发送或接收的消息可以直接和/或经由其他模块中的一个或多个来发送或接收。
本领域技术人员将理解,“系统”可以体现为个人计算机、服务器、控制台、个人数字助理(PDA)、手机、平板计算设备、智能手机或任意其他合适的计算设备或设备组合。将上述功能呈现为由“系统”执行并不旨在以任意方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的局部和分布式形式来实现。
应该注意的是,在本说明书中描述的一些系统特征已经作为模块呈现,以便更具体地强调它们的实现独立性。例如模块可以被实现为硬件电路,该硬件电路包括定制的超大规模集成电路(VLSI)电路或门阵列,诸如逻辑芯片、晶体管或其他分立组件的现成半导体。模块也可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等的可编程硬件设备中实现。
模块也可以至少部分地以用于由各种类型的处理器执行的软件来实现。所标识的可执行代码单元可以例如包括计算机指令的一个或多个物理或逻辑区块,所述计算机指令可以例如被组织为对象、过程或功能。然而,所标识的模块的可执行文件不需要在物理上位于一起,而是可以包括在不同位置存储的不同指令,当这些指令在逻辑上结合在一起时,包括模块并实现模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带、或用于存储数据的任意其他此类介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在多个不同的代码段上、在不同的程序之间以及跨多个存储设备。类似地,操作数据可以在本文在模块内被标识和示出,并且可以以任意合适的形式来体现并且可以以任意合适的类型的数据结构被组织。操作数据可以作为单个数据集合被收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
将容易地理解,如本文的附图中总体上描述和图示的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不旨在限制所要求保护的本申请的范围,而仅代表本申请的所选实施例。
本领域普通技术人员将容易地理解,以上内容可以以不同顺序的步骤和/或以与所公开的配置不同的配置中的硬件元件来实践。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员显而易见的是,某些修改、变体和替代构造将是显而易见的。
尽管已经描述了本申请的优选实施例,但是应当理解,所描述的实施例仅是示意性的,并且当考虑具有全部范围的等同和修改(例如,协议、硬件设备、软件平台等)时,本申请的范围将仅由所附权利要求限定。
Claims (22)
1.一种系统,包括:
区块链网络,包括:
区块链用户,被配置为:
创建请求世界状态验证的世界状态检查点交易;以及
验证世界状态完整性;
一个或多个背书方节点或对等方,被配置为:
对所述世界状态检查点交易进行背书;以及
将背书传递到所述区块链用户;
排序方节点或对等方,被配置为:
将所背书的所述世界状态检查点交易记录到区块中。
2.根据权利要求1所述的系统,其中所述区块链网络的所有区块链节点或对等方被配置为:
证实并提交所述区块中的所有交易;
计算当前世界状态的散列并且对所述当前世界状态的所述散列进行签名;以及
将所述当前世界状态的所签名的所述散列传递给所述区块链用户。
3.根据权利要求2所述的系统,其中所述排序方节点或对等方将所述世界状态检查点交易记录到所述区块中包括所述排序方节点或对等方还被配置为:
从所述区块链用户接收所背书的所述世界状态检查点交易;
将所背书的所述世界状态检查点交易包括在所述区块中;以及
将所述区块传递到所述区块链网络的所有区块链节点或对等方。
4.根据权利要求2所述的系统,其中所有区块链节点或对等方计算所述当前世界状态的所述散列并且对所述当前世界状态的所述散列进行签名包括所有区块链节点或对等方还被配置为:
标识所述区块内的所述世界状态检查点交易;
生成针对所述当前世界状态的散列值;
用对应的签名对所述散列值进行签名;以及
由所述区块链节点或对等方中的每一个将所签名的所述散列值和签名传递给所述区块链用户。
5.根据权利要求2所述的系统,其中所述区块链用户验证世界状态完整性,包括:所述区块链用户还被配置为:
用对应的签名来验证每个所签名的散列值;
比较所签名的所述散列值;
确定区块链节点或对等方中的大多数具有相同的所签名的散列值;以及
通知所述区块链节点或对等方中的所述大多数所述当前世界状态是正确的。
6.根据权利要求2所述的系统,其中响应于所述区块链用户验证了世界状态完整性,所述区块链用户还被配置为:
通知不在大多数中的区块链节点或对等方所述当前世界状态是不正确的。
7.根据权利要求6所述的系统,其中响应于所述区块链用户通知不在所述大多数中的所述区块链节点或对等方所述当前世界状态是不正确的,所述区块链用户还被配置为:
暂停不在所述大多数中的所述区块链节点或对等方与所述区块链网络的交互;以及
由不在所述大多数中的所述区块链节点或对等方从所述区块链网络的所有存储的交易中重新计算新的当前世界状态。
8.一种方法,包括:
由区块链网络的区块链用户创建请求世界状态证实的世界状态检查点交易;
由一个或多个背书方节点或对等方对所述世界状态检查点交易进行背书;
将背书传递到所述区块链用户;
由排序方节点或对等方将所背书的所述世界状态检查点交易记录到区块中;
证实并提交所述区块中的所有交易;
由所述区块链网络的所有区块链节点或对等方计算当前世界状态的散列并对所述当前世界状态的所述散列进行签名;以及
由所述区块链用户从所述当前世界状态的所计算和所签名的所述散列中验证世界状态完整性。
9.根据权利要求8所述的方法,其中所有区块链节点或对等方证实并提交所述区块中的所有交易。
10.根据权利要求8所述的方法,其中将所述世界状态检查点交易记录到所述区块中包括:
由排序方节点或对等方从所述区块链用户接收所背书的所述世界状态检查点交易;
将所背书的所述世界状态检查点交易包括在所述区块中;以及
将所述区块传递到所有区块链节点或对等方。
11.根据权利要求8所述的方法,其中计算所述当前世界状态的所述散列并对所述当前世界状态的所述散列进行签名包括:
标识所述区块内的所述世界状态检查点交易;
生成针对所述当前世界状态的散列值;
用对应的签名对所述散列值进行签名;以及
由所述区块链节点或对等方中的每一个将所签名的所述散列值和签名传递给所述区块链用户。
12.根据权利要求8所述的方法,其中验证世界状态完整性包括:
用对应的签名来验证每个所签名的散列值;
比较所签名的所述散列值;
确定区块链节点或对等方中的大多数具有相同的所签名的散列值;以及
通知所述区块链节点或对等方中的所述大多数所述当前世界状态是正确的。
13.根据权利要求8所述的方法,其中响应于验证世界状态完整性,所述方法还包括:
通知不在所述大多数中的区块链节点或对等方所述当前世界状态是不正确的。
14.根据权利要求13所述的方法,还包括:
暂停不在所述大多数中的所述区块链节点或对等方与所述区块链网络的交互;以及
由不在所述大多数中的所述区块链节点或对等方从所述区块链网络的所有存储的交易中重新计算新的当前世界状态。
15.一种非暂态计算机可读介质,包括指令,所述指令在由处理器读取时,使所述处理器执行:
由区块链网络的区块链用户创建请求世界状态证实的世界状态检查点交易;
由一个或多个背书方节点或对等方对所述世界状态检查点交易进行背书;
将背书传递到所述区块链用户;
由排序方节点或对等方将所背书的所述世界状态检查点交易记录到区块中;
证实并提交所述区块中的所有交易;
由所述区块链网络的所有区块链节点或对等方计算当前世界状态的散列并对所述当前世界状态的所述散列进行签名;以及
由所述区块链用户从所述当前世界状态的所计算和所签名的所述散列中验证世界状态完整性。
16.根据权利要求15所述的非暂态计算机可读介质,其中所有区块链节点或对等方证实并提交所述区块中的所有交易。
17.根据权利要求15所述的非暂态计算机可读介质,其中将所述世界状态检查点交易记录到所述区块中包括:
由排序方节点或对等方从所述区块链用户接收所背书的所述世界状态检查点交易;
将所背书的所述世界状态检查点交易包括在所述区块中;以及
将所述区块传递到所有区块链节点或对等方。
18.根据权利要求15所述的非暂态计算机可读介质,其中计算所述当前世界状态的所述散列并对所述当前世界状态的所述散列进行签名包括:
标识所述区块内的所述世界状态检查点交易;
生成针对所述当前世界状态的散列值;
用对应的签名对所述散列值进行签名;以及
由所述区块链节点或对等方中的每一个将所签名的所述散列值和签名传递给所述区块链用户。
19.根据权利要求15所述的非暂态计算机可读介质,其中验证世界状态完整性包括:
用对应的签名来验证每个所签名的散列值;
比较所签名的所述散列值;
确定区块链节点或对等方中的大多数具有相同的所签名的散列值;以及
通知所述区块链节点或对等方中的所述大多数所述当前世界状态是正确的。
20.根据权利要求16所述的非暂态计算机可读介质,其中响应于验证世界状态完整性,所述指令使所述处理器还执行:
通知不在所述大多数中的区块链节点或对等方所述当前世界状态是不正确的;
暂停不在所述大多数中的所述区块链节点或对等方与所述区块链网络的交互;以及
由不在所述大多数中的所述区块链节点或对等方从所述区块链网络的所有存储的交易中重新计算新的当前世界状态。
21.一种计算机系统,所述系统包括分别用于执行根据权利要求8-14中的任一项所述的方法的步骤的模块。
22.一种计算机程序产品,包括计算机可读存储介质,所述计算机可读存储介质具有利用其体现的程序指令,所述程序指令由处理器可执行以使所述处理器执行根据权利要求8至14中任一项所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/415,866 | 2019-05-17 | ||
US16/415,866 US11526487B2 (en) | 2019-05-17 | 2019-05-17 | Database world state integrity validation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111951004A true CN111951004A (zh) | 2020-11-17 |
Family
ID=73228334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010415344.4A Pending CN111951004A (zh) | 2019-05-17 | 2020-05-15 | 数据库世界状态完整性证实 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11526487B2 (zh) |
CN (1) | CN111951004A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433822A (zh) * | 2020-12-07 | 2021-03-02 | 北京远为软件有限公司 | 基于三权分立的跨域网络终端虚拟机的实现方法 |
CN112988469A (zh) * | 2021-04-27 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 联盟链中的状态备份方法、装置和电子设备 |
CN115115361A (zh) * | 2021-03-19 | 2022-09-27 | 富士通株式会社 | 用于处理区块链交易数据的方法和设备及存储介质 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102620584B1 (ko) * | 2019-05-17 | 2024-01-02 | 삼성에스디에스 주식회사 | 블록체인 기반 시스템에서 상태 db의 무결성을 보장하는 장치 및 그 방법 |
US11429738B2 (en) * | 2019-05-29 | 2022-08-30 | International Business Machines Corporation | Blockchain endorsement with approximate hash verification |
US11539527B2 (en) | 2019-05-29 | 2022-12-27 | International Business Machines Corporation | Peer node recovery via approximate hash verification |
US11711202B2 (en) | 2019-05-29 | 2023-07-25 | International Business Machines Corporation | Committing data to blockchain based on approximate hash verification |
US11516000B2 (en) * | 2019-05-29 | 2022-11-29 | International Business Machines Corporation | Approximate hash verification of unused blockchain output |
US11570002B2 (en) | 2019-05-29 | 2023-01-31 | International Business Machines Corporation | Reduced-step blockchain verification of media file |
EP3682340A4 (en) | 2019-09-12 | 2020-12-02 | Advanced New Technologies Co., Ltd. | LOG-STRUCTURED STORAGE SYSTEMS |
SG11202002587TA (en) * | 2019-09-12 | 2020-04-29 | Alibaba Group Holding Ltd | Log-structured storage systems |
CN111226206B (zh) * | 2019-11-29 | 2023-10-13 | 支付宝(杭州)信息技术有限公司 | 拍摄区块链数据的快照 |
US11386071B2 (en) * | 2020-04-22 | 2022-07-12 | Sap, Se | Processing consistency validations of configuration data |
JP7408499B2 (ja) * | 2020-07-06 | 2024-01-05 | 株式会社日立製作所 | 分散台帳管理システム、分散台帳管理方法、およびノード |
US11080412B1 (en) | 2020-08-20 | 2021-08-03 | Spideroak, Inc. | Efficiently computing validity of a block chain |
CN112417054B (zh) * | 2020-12-09 | 2024-03-05 | 北京万古科技股份有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
CN113065867B (zh) * | 2021-03-30 | 2023-06-30 | 上海万向区块链股份公司 | 基于数据重放的非兼容性区块链升级系统、方法及介质 |
WO2023102581A1 (en) * | 2021-12-07 | 2023-06-15 | Flugdachs Intellectual Property Gmbh | Provable remote execution of a computer program |
CN116701414A (zh) * | 2022-02-24 | 2023-09-05 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN114463010B (zh) * | 2022-04-13 | 2022-06-17 | 南京金宁汇科技有限公司 | 基于双层链的本地节点区块数据完整性检测方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106384236A (zh) * | 2016-08-31 | 2017-02-08 | 江苏通付盾科技有限公司 | 基于区块链的ca认证管理方法、装置及系统 |
US20180158034A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
US20180219671A1 (en) * | 2017-01-27 | 2018-08-02 | Accenture Global Solutions Limited | Hardware Blockchain Acceleration |
US20190018888A1 (en) * | 2017-04-12 | 2019-01-17 | Vijay K. Madisetti | Method and System for Tuning Blockchain Scalability, Decentralization, and Security for Fast and Low-Cost Payment and Transaction Processing |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10103893B2 (en) | 2015-02-27 | 2018-10-16 | Guardtime IP Holdings, Ltd. | Blockchain-supported, fail-safe synchronization in a data authentication infrastructure |
CN108352016B (zh) * | 2015-07-08 | 2022-11-11 | 巴克莱执行服务有限公司 | 数据确证和存储 |
US10360191B2 (en) | 2016-10-07 | 2019-07-23 | International Business Machines Corporation | Establishing overlay trust consensus for blockchain trust validation system |
US10523421B2 (en) * | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US10586210B2 (en) * | 2016-11-30 | 2020-03-10 | International Business Machines Corporation | Blockchain checkpoints and certified checkpoints |
US11281644B2 (en) * | 2017-07-28 | 2022-03-22 | Hitachi, Ltd. | Blockchain logging of data from multiple systems |
WO2019089651A1 (en) * | 2017-10-31 | 2019-05-09 | Myndshft Technologies, Inc. | System and method for configuring an adaptive computing cluster |
-
2019
- 2019-05-17 US US16/415,866 patent/US11526487B2/en active Active
-
2020
- 2020-05-15 CN CN202010415344.4A patent/CN111951004A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106384236A (zh) * | 2016-08-31 | 2017-02-08 | 江苏通付盾科技有限公司 | 基于区块链的ca认证管理方法、装置及系统 |
US20180158034A1 (en) * | 2016-12-07 | 2018-06-07 | International Business Machines Corporation | Dynamic reordering of blockchain transactions to optimize performance and scalability |
US20180219671A1 (en) * | 2017-01-27 | 2018-08-02 | Accenture Global Solutions Limited | Hardware Blockchain Acceleration |
US20190018888A1 (en) * | 2017-04-12 | 2019-01-17 | Vijay K. Madisetti | Method and System for Tuning Blockchain Scalability, Decentralization, and Security for Fast and Low-Cost Payment and Transaction Processing |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112433822A (zh) * | 2020-12-07 | 2021-03-02 | 北京远为软件有限公司 | 基于三权分立的跨域网络终端虚拟机的实现方法 |
CN115115361A (zh) * | 2021-03-19 | 2022-09-27 | 富士通株式会社 | 用于处理区块链交易数据的方法和设备及存储介质 |
CN112988469A (zh) * | 2021-04-27 | 2021-06-18 | 支付宝(杭州)信息技术有限公司 | 联盟链中的状态备份方法、装置和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20200364205A1 (en) | 2020-11-19 |
US11526487B2 (en) | 2022-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11526487B2 (en) | Database world state integrity validation | |
CN111800268B (zh) | 用于区块链背书的零知识证明 | |
US11539527B2 (en) | Peer node recovery via approximate hash verification | |
US11151236B2 (en) | File verification database system | |
US11570002B2 (en) | Reduced-step blockchain verification of media file | |
US11711202B2 (en) | Committing data to blockchain based on approximate hash verification | |
US11689356B2 (en) | Approximate hash verification of unused blockchain output | |
CN115210741B (zh) | 部分有序的区块链 | |
CN111881129A (zh) | 用于数据库的索引管理 | |
CN111881099A (zh) | 数据库私有文档共享 | |
CN112053157B (zh) | 灵活交易验证 | |
CN111666332B (zh) | 自动演进的数据库背书策略 | |
US11025430B2 (en) | File provenance database system | |
US11177938B2 (en) | Database composite endorsement | |
CN111754343A (zh) | 隐私保护的死锁解除 | |
CN111796968A (zh) | 受数据库交易保证的提交 | |
CN111881130A (zh) | 区块链存储结构的冲突解决方案 | |
US11139960B2 (en) | File redaction database system | |
CN111831740B (zh) | 对等体的同步 | |
CN111881109B (zh) | 数据库可合并分类账 | |
CN115004625A (zh) | 用于区块链分类账的索引结构 | |
CN111797347A (zh) | 分布在安全通道上的内容 | |
CN112084186A (zh) | 拆分和合并存储 | |
CN111797426B (zh) | 一种用于去信任通知服务的方法和系统 | |
CN112036876A (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 |