CN112136291B - 用于区块链的验证的方法和系统 - Google Patents
用于区块链的验证的方法和系统 Download PDFInfo
- Publication number
- CN112136291B CN112136291B CN201980032234.5A CN201980032234A CN112136291B CN 112136291 B CN112136291 B CN 112136291B CN 201980032234 A CN201980032234 A CN 201980032234A CN 112136291 B CN112136291 B CN 112136291B
- Authority
- CN
- China
- Prior art keywords
- blockchain
- transaction
- database
- validation
- height
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000010200 validation analysis Methods 0.000 title claims abstract description 118
- 238000000034 method Methods 0.000 title claims description 37
- 238000012795 verification Methods 0.000 claims description 53
- 238000004088 simulation Methods 0.000 claims description 33
- 230000004044 response Effects 0.000 claims description 19
- 230000006870 function Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013475 authorization Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 239000004744 fabric Substances 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
示例操作可包括下列内容中的一个或多个:由区块链节点在存储器中创建验证数据库、模拟一个或多个事务中的每一个、确定新区块中的每个事务可使用验证数据库来验证、使用验证数据库来验证新区块中的每个事务、以及将新区块提交到区块链中。验证数据库包括与区块链的状态数据库的预定数量的最近区块相对应的数据。
Description
技术领域
本申请一般涉及区块链网络的事务验证,尤其涉及区块链的高效验证。
背景技术
分类帐通常被定义为记录事务的条目的账簿。分布式分类帐是整体或部分复制到多个计算机的账本。密码分布式分类帐(Cryptographic Distributed Ledger,CDL)可以具有这些属性中的至少一些:不可逆性(一旦记录了事务,就不能逆转)、可访问性(任何一方可以全部或部分地访问CDL)、时间顺序和时间戳(所有方都知道何时将事务添加到分类账)、基于共识的(只有当通常一致地被网络上的各方批准时才添加事务)、可验证性(所有事务都可以被密码地验证)。区块链是CDL的一个实例。虽然本文的描述和附图是根据区块链来描述的,但本申请同样适用于任何CDL。
分布式分类帐是通常应用诸如存储与其他区块相关的密码散列(hash)等密码技术的记录的持续增长的列表。区块链是分布式分类账的一个常见实例,并且可以用作公共分类账来存储信息。尽管主要用于金融事务,区块链可以存储与商品和服务相关的各种信息(即,产品、包裹、状态等)。去中心化方案向去中心化网络提供授权和信任,并且使其节点能够连续地和顺序地将其事务记录在公共“区块”上,从而创建被称为区块链的唯一“链”。通过散列码的密码技术被用于保护事务源的认证并移除中央中介。区块链是维护区块链的区块中的记录的持续增长的列表的分布式数据库,由于其不可变的属性这些记录被保护不受篡改和修订。每个区块包含时间戳和到前一个区块的链接。区块链可用于保持、跟踪、传递和验证信息。由于区块链是分布式系统,因此在向区块链分类账添加事务之前,所有对等体需要达到共识状态。
传统上,区块链事务是针对区块链中的所有区块的状态数据库来验证的,这受到从数据库检索状态数据所花费的时间的限制。因此,需要一种更快更有效的事务验证形式来克服这些限制。
发明内容
一个示例实施例可以提供一种方法,包括以下内容中的一个或多个:由区块链节点在存储器中创建验证数据库、模拟一个或多个事务中的每一个、确定可以使用验证数据库来验证新区块中的每个事务、使用验证数据库来验证新区块中的每个事务、以及将新区块提交到区块链。验证数据库包括对应于区块链的状态数据库的预定数量的最近的区块。
另一示例实施例可提供一种系统,其包括处理器和存储器,其中处理器被配置为执行以下内容中的一个或多个:模拟一个或多个事务中的每一个;确定可使用验证数据库来验证新区块中的每个事务;使用验证数据库来验证新区块中的每个事务;以及将新区块提交到区块链。
根据一个方面,提供了一种系统,包括:包括验证区块链事务的一个或多个区块链节点的区块链网络,每个区块链节点包括:处理器;以及存储器装置,其耦合到所述处理器,所述存储器装置包括:验证数据库,验证数据库包括:对应于区块链的预定数量的最近的区块的数据;所述处理器被配置为:模拟一个或多个事务中的每一个;确定可以使用验证数据库来验证新区块中的每个事务;使用验证数据库验证新区块中的每个事务;以及提交新区块到区块链。
另一示例实施例可以提供一种包括指令的非暂时性计算机可读介质,所述指令在由处理器读取时使处理器执行以下操作中的一个或多个:由区块链节点在存储器中创建验证数据库;模拟一个或多个事务中的每个事务;确定可以使用验证数据库来验证新区块中的每个事务;使用验证数据库验证新区块中的每个事务;以及将新区块提交到区块链。验证数据库包括与区块链的状态数据库的预定数量的最近的区块相对应的数据。
附图说明
现在将参考附图仅通过示例的方式描述本发明的实施例,在附图中:
图1A示出了根据示例实施例的用于高效地验证区块链的事务的系统的网络图。
图1B示出了根据示例实施例的区块链的状态数据库参数的网络图。
图2A示出了根据示例实施例的用于资产共享场景的示例对等节点块链架构配置。
图2B示出了根据示例实施例的示例对等节点区块链配置。
图3是示出根据示例实施例的许可的区块链网络的图
图4示出了根据示例实施例的用于执行块链状态模拟和验证的系统消息传递图。
图5A示出了根据示例实施例的在区块链中使用验证数据库来模拟和验证事务的示例方法的流程图。
图5B示出了根据示例实施例的解决区块链中的分支链验证的示例方法的流程图。
图6A示出了根据示例实施例的被配置为根据本文所述的一个或多个操作对区块链执行各种操作的示例物理基础设施。
图6B示出了根据示例实施例的合约订立方与被配置成在区块链上实施智能合约条款的中介服务器之间的示例智能合约配置。
图7示出了被配置为支持一个或多个示例实施例的示例计算机系统。
具体实施方式
容易理解,如在本文附图中一般性描述和说明的,本发明的部件可以以各种不同的配置来布置和设计。因此,如附图中所表示的方法、装置、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述不旨在限制如所要求保护的应用的范围,而仅仅是所选实施例的代表。
在一个或多个实施例中,可以以任何适当的方式组合本说明书中描述的特征、结构或特性。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其它类似语言的使用指的是结合实施例描述的特定特征、结构或特性可以被包括在至少一个实施例中的事实。因此,在整个说明书中出现的短语“示例实施例”、“一些实施例中”、“其它实施例中”或其它类似语言不一定全部指代同一组实施例,并且所描述的特征、结构或特性可以以任何合适的方式组合在一个或多个实施例中。
另外,虽然在实施例的描述中使用了术语“消息(message)”,但是本申请可以应用于许多类型的网络数据,例如分组、帧、数据报等。术语“消息”还包括分组、帧、数据报及其任何等效物。此外,虽然在示例性实施例中可以描述某些类型的消息和信令,但是它们不限于特定类型的消息,并且应用不限于特定类型的信令。示例实施例提供了为区块链提供高效事务验证的方法、系统、非暂时性计算机可读介质、设备和/或网络。
区块链是分布式系统,其包括彼此通信的多个节点。区块链操作被称为链代码的程序(例如,智能合约等),保存状态和分类帐数据,并执行事务。一些事务是对链代码调用的操作。通常,区块链事务通常必须由某些区块链成员“背书(endorse)”,并且只有背书的事务才可以被提交给区块链并对区块链的状态有影响。没有被背书的其它事务被忽略。可以存在一个或多个用于管理功能和参数的专用链代码,统称为系统链代码。
节点是区块链系统的通信实体。“节点”可以执行逻辑功能,其意义在于不同类型的多个节点可以在同一物理服务器上运行。节点被分组在信任域中,并且与以各种方式控制它们的逻辑实体相关联。节点可包括不同类型,诸如向背书者(例如,对等方)提交事务调用、并向排序服务(例如,排序节点)广播事务提议的客户端或提交客户端节点。另一种类型的节点是对等节点,其可接收客户端提交的事务、提交事务并维护区块链事务的分类账的状态和副本。对等方也可以具有背书者的角色,尽管这不是必需的。排序服务节点或排序者是为所有节点运行通信服务的节点,并且当提交事务和修改区块链世界状态(这是初始区块链事务的另一名称,其通常包括控制和设置信息)时,其实现递送保证,例如广播到系统中的每个对等节点。
分类账是区块链的所有状态转换的排序的、防篡改的记录。状态转换可以由参与方(例如,客户端节点、排序节点、签注者节点、对等节点等)提交的链代码调用(即,事务)产生。事务可以导致一组资产键-值对被提交给分类账作为一个或多个操作数,诸如创建、更新、删除等。分类账包括用于以块存储不可改变的顺序的记录的区块链(也称为链)。分类账还包括状态数据库,其维护区块链的当前状态。通常每个通道有一个分类帐。每个对等节点为它们是其成员的每个信道维护分类账的副本。
链是事务日志,其被构造为散列链接的区块,并且每个区块包含N个事务的序列,其中N等于或大于一。区块标题包括区块事务的散列,以及前一区块标题的散列。以这种方式,可以对分类账上的所有事务进行排序并且将其加密地链接在一起。因此,在不破坏散列链接的情况下,不可能篡改分类账数据。最近添加的区块链区块的散列表示在其之前到来的链上的每个事务,使得可以确保所有对等节点处于一致且可信的状态。链可被存储在对等节点文件系统(即,本地、附加存储、云等)上,从而高效地支持区块链工作负荷的仅附加性质。
不可变账本的当前状态表示包括在链事务日志中的所有键的最新值。因为当前状态表示通道已知的最近的键值,所以它有时被称为世界状态。链代码调用针对分类账的当前状态数据执行事务。为了使这些链代码交互有效,可将键的最新值存储在状态数据库124中。状态数据库124可以简单地是链的事务日志中的索引视图,因此它可以在任何时间从链中重新生成。状态数据库124可以在对等节点启动时并且在接受事务之前自动恢复(或者如果需要的话生成)。
示例实施例涉及支持区块链解决方案的方法、设备、网络、非暂时性计算机可读介质和/或系统,区块链解决方案支持快速事务验证。一些益处包括提供用于验证新区块中的事务的新方案。在任何区块链中,当新的区块被发布到网络时,执行事务的验证是关键步骤。该步骤最终决定区块中的哪些事务将被接受为有效或无效。验证的结果进而决定当提交区块时,区块链的状态如何变化。该验证步骤的执行对区块链网络可提供的事务的总吞吐量具有直接影响。本申请使得能够对实际上是通用的区块链技术中的验证步骤进行性能改进,并实现执行/背书/排序/提交范例(诸如超级分类账结构(Hyperledger Fabric))。
当执行验证时,提交阶段期间的现有技术是访问状态数据库(其存储在磁盘上并且可能规模非常大)。本申请提出了一种新技术,其通过在新的验证数据库中仅维护有限量的数据来提高验证过程的效率和性能。该技术需要维护对应于验证数据库中的预定数目的最近的区块的有限量的数据,而不考虑区块链中的区块的实际数目(其随时间保持增长)。由于这种有限数量的数据,验证数据库可以潜在地保持在存储器中而不是磁盘上,因此避免了访问较慢的存储介质来进行验证。
区块链与传统数据库的不同之处在于区块链不是中心的,而是分散的、不可变的和安全的存储,其中节点必须共享存储中记录的变化。区块链中固有的并且帮助实现区块链的一些属性包括但不限于不可改变的分类账、智能合约、安全、隐私、去中心化、共识、背书、可访问性等,其在本文中被进一步描述。根据各种实施例,验证数据库通常被实现为对区块链技术的改进,并且所有的区块链网络将受益于更快的事务验证。
示例实施例的益处之一是通过改进事务验证性能和效率来改进计算系统的功能。通过本文描述的区块链解决方案,计算系统可以通过将验证数据库维护在存储器中来执行新的功能。这将显著减少区块链节点为执行新区块中的事务的验证而维护的数据量。
示例实施例提供了优于传统数据库的许多益处。例如,通过提高区块链中的事务验证性能来实现各种优点。例如,在不增加网络速度/性能或区块链节点硬件的情况下,单位时间可以验证更多的事务。而且,通过替换更快的区块链节点或联网硬件,可以在不增加区块链网络的成本的情况下实现这种性能增加。本申请提供的改进对于现有的区块链网络是透明的。
同时,传统的数据库不能用于实现示例实施例,因为本文描述的改进是区块链技术和区块链基础设施所固有的。因此,示例实施例提供了对区块链的高效验证领域中的问题的具体解决方案。
图1A示出了根据示例实施例的用于高效地验证区块链的事务的系统的逻辑网络图。在许多区块链系统中,在区块提交期间,事务验证是性能瓶颈之一。这主要是因为验证过程引起对数据库的大量随机读取,以对照数据库的当前状态来验证事务。这反映了在超级分类账结构(Hyperledger Fabric)中当前实现的验证方案。本申请介绍系统和方法,其通过允许针对小得多的数据集执行确认来使该验证过程更高效,该小得多的数据集可以被维护在存储器中,并因此避免访问磁盘或较慢的主存储。
区块链事务包括由语句‘begin_tran’和‘commit_tran’标记的边界中所包含的查询和更新语句序列。语句‘begin_tran’相当于事务的模拟(simulation)的开始,而语句‘commit_tran’相当于事务的确认和提交。然而,由于区块链的分布式性质,在一个或多个节点处执行模拟,并且在所有节点上执行确认和提交。在事务的生命期期间(即,在分别为'模拟'和'提交'的‘begin_tran’和‘commit_tran’之间),如果事务执行查询一次以上,则查询结果不应改变。这被称为可串行化事务隔离级别。然而,如果某个其他事务在第一事务的‘begin_tran’和
‘commit_tran’之间作出数据改变,则第一事务可以接收针对同一查询的不同结果。对于第二查询,它将接收附加条目,其中该附加条目被称为假想条目。
参考图1A,网络100包括状态数据库124,其存储区块链中的所有区块的当前状态120。图1A示出了包括状态0 120A、状态1、120B、状态2 120C、到状态L120L、状态M 120M和状态N 120N的区块链。因此,对于所示的区块链存在N个状态120。对于每个状态120,存在对应的块(未示出),其中区块存储验证的事务,并且状态120存储所有唯一键的元组<键,值>的集合,其中‘键’表示存在于任何区块中的任何写集合中的键,并且‘值’表示存在于区块链中的有效的事务(其包含写集合)中的键的最近出现中的值。例如,如果在不同区块中的三个有效事务中存在键“余额”(例如在块#1中为<‘余额A’:30>,在块#20中为<‘余额B’:50>,以及在块#45中为<‘余额C’:70>),则在状态数据库124中,键‘余额’可以与值70(来自最近的块)一起仅出现一次。
网络100还包括验证数据库116,其存储状态数据库124的子集。该子集对应于预定数量的最近的区块128。图1A示出了存储状态L 120L、状态M 120M和状态N 120N的状态信息的验证数据库116。因此,在所说明的实例中,在验证数据库116中展示三个状态120。通常应该理解,存在与状态120相等数量的区块(未示出)。在实际实施例中,验证数据库116中通常存在多于三个状态120,例如100个状态120。与验证数据库116相对应的预定数量的区块取决于许多因素,包括区块链网络或网络100的性能、区块中的事务数量、以及用于将状态120存储在验证数据库116中的存储器的大小和性能。
验证数据库116包括由最后几个区块引起的状态改变120,并且在验证156期间,由于事务104的模拟108可能没有影响由事务104在其模拟108期间执行的查询112A的结果,所以区块链网络验证(由其他提交的事务160)引起的状态改变。与验证数据库116相关联的是最小高度164,其是标识验证数据库116内最旧的块120的位置的标记。在图1A中,最小高度164当前对应于状态L 120L,并且随着更多的区块被添加到区块链以及状态120被添加到状态数据库124而被向上调整。
在传统的区块链验证方案(诸如在超级分类账结构中实现的)中,在存在于区块中的事务的验证期间,针对状态数据库124执行查询(在模拟期间由事务执行)以验证结果是相同的。相反,本申请在存储器中维护明显更小的数据集(验证数据库116)以便高效地执行验证。
事务建议104由模拟108执行,作为对状态数据库124的模拟查询112A。在模拟108期间,事务被完全执行,但是对状态数据库124的任何改变未被提交。相反,它们被记录并以二进制形式绑定。这被称为读-写集合。读取集包含关于由事务读取的数据项和由事务执行的查询的信息。写集包含关于事务想要更新的数据项的信息。
状态数据库124向模拟108提供读取集132,其临时存储模拟结果136以用于稍后的验证。在一个实施例中,验证数据库116被提供在区块链节点存储器中,而不是磁盘(disk)或其他大容量存储中。在另一实施例中,验证数据库116被提供在区块链节点SSD存储器(固态盘)中,而不是磁盘或其他大容量存储中。
每个参与的区块链节点通过对事务144签名来背书模拟事务136。将签名的事务144传送到排序者148,其将签名的事务144置于执行顺序。接下来,将有序事务152发送到执行验证156的区块链节点。在验证156期间,向验证数据库116呈现验证查询112B。验证数据库116以包括所有数据项的版本号的结果来响应。将结果与模拟结果136进行比较。如果它们匹配,则验证成功,有序事务156被分组在新的区块(未示出)内,并且新的状态变为提交的状态160。
当新区块120被提交给区块链时,它作为最新的区块120被添加到状态数据库124,其对应于图1A中的状态O 120O。在删除最旧的状态(状态L 120L)之后,新状态120也作为状态O 120O被添加到确认数据库116。调整最小高度164以反映状态M 120M作为验证数据库116中的最旧的状态120,而不是状态L 120L。
图1B示出了根据示例实施例的区块链的状态数据库参数的另一逻辑网络图。参考图1B,网络100包括状态数据库124,其包括对应于区块链中的每个区块的状态120。在模拟108期间,模拟高度170由每个模拟区块链节点通过观察状态数据库124中的最新状态120来确定。在图1B所示的示例中,模拟高度170对应于状态L120L。
在稍后的时间,验证新的区块的事务。作为验证的一部分,由每个验证区块链节点再次通过观察状态数据库124中的最新状态120来确定验证高度174。在图1B所示的示例中,验证高度174对应于状态N 120N。由于验证在模拟之后的某个时间发生,所以附加的区块可能已经被提交给区块链,在状态数据库124中具有更多的对应状态120。因此,如图1B所示,在验证期间状态数据库124中存在N个状态120N,但在模拟期间存在L个状态120L。
图2A示出了根据示例实施例的区块链架构配置200。参考图2A,区块链架构200可包括一些区块链元件,例如,一组区块链节点202。区块链节点202可包括一个或多个节点204和210(这些节点仅通过示例来描述)。这些节点参与多个活动,诸如区块链事务增加和验证过程(共识)。区块链节点204和210中的一个或多个可支持事务,并可为架构200中的所有区块链节点提供排序服务。区块链节点可启动区块链认证并设法写入存储在区块链层216中的区块链不可变分类账,其副本也可存储在基础物理基础设施214上。区块链配置可包括链接到应用编程接口(API)222的一个或多个应用224,以访问和执行存储的程序/应用代码220(例如,链代码、智能合约等),其可根据参与者所寻求的定制配置来创建,并且可维护其自己的状态、控制其自己的资产、以及接收外部信息。这可以被部署为事务,并且经由附加到分布式分类账而被安装在所有区块链节点204和210上。
区块链基础或平台212可包括区块链数据、服务(例如,密码信任服务、虚拟执行环境等)、以及基础物理计算机基础设施的各层,基础物理计算机基础设施可用于接收和存储新的事务并提供对试图访问数据条目的审核器的访问。区块链层216可展示提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问的接口。加密信任服务218可用于验证诸如资产交换事务等事务并保持信息私密。
图2A的区块链架构配置可经由区块链平台212所暴露的一个或多个接口以及所提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传送数据,并且可以由节点204-210执行,以智能合约和具有条件或服从于其执行的其它代码元素的关联链代码的形式。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或服从改变、更新等的其他通知。智能合约本身可以用于识别与分类账的授权和访问要求以及使用相关联的规则。例如,拦截的模拟查询226可由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)处理。模拟结果228可以包括状态数据库124的模拟高度170。物理基础设施214可以用于检索本文所述的任何数据或信息。
在链代码内,智能合约可以经由高级应用和编程语言来创建,并且然后被写入区块链中的区块。智能合约可以包括向区块链(例如,区块链对等方的分布式网络)注册、存储和/或复制的可执行代码。事务是智能合约代码的执行,其可以响应于与智能合约相关联的条件被满足而被执行。智能合约的执行可以触发对数字区块链分类账的状态的(一个或多个)可信修改。由智能合约执行引起的对块链分类账的(一个或多个)修改可以通过一个或多个共识协议在整个区块链对等方的分布式网络中自动复制。
智能合约可以以键-值对的格式将数据写入区块链。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可以将各种逻辑操作的输出写入区块链中。该代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入到区块链的数据可以是公共的和/或可以被加密并被维护为私有的。由智能合约使用/生成的临时数据由所供应的执行环境保持在存储器中,然后一旦识别了区块链所需的数据就被删除。
链代码可以包括具有附加特征的智能合约的代码解释。如本文所述,链代码可以是部署在计算网络上的程序代码,其中它在共识过程期间由链验证器一起执行和验证。链代码接收散列并从区块链检索与通过使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列与从所存储的标识符模板数据创建的散列匹配,则链代码向所请求的服务发送授权密钥。所述链代码可以向区块链写入与密码细节相关联的数据。在图2A中,在框226中截取对状态数据库124的模拟查询。一个功能可以是提供仿真结果,包括框228中的模拟高度,其可以被提供给节点204-210中的一个或多个。
图2B示出了根据示例实施例的区块链的节点之间的事务流250的示例。参考图2B,事务流可包括由应用客户端节点260发送到背书对等方节点281的事务提议291。背书对等方281可以验证客户端签名并执行链代码功能以发起事务。输出可以包括链代码结果、在链代码中读取的一组键/值版本(读取集)、以及在链代码中写入的一组键/值(写入集)。如果批准,则将提议响应292连同背书签名一起发送回客户端260。客户端260将背书组装成事务载荷293,并将其广播到排序服务节点284。然后,排序服务节点284将排序的事务作为区块在通道上递送给所有对等方281-283。在提交到区块链之前,每个对等方281-283可以验证事务。例如,对等方可以检查背书策略以确保指定对等方的正确分配已经签署了结果并对照事务载荷293认证了签名。
再次参考图2B,客户端节点260通过构造请求并将其发送到作为背书者的对等方节点281来启动事务291。客户端260可包括利用诸如NODE、JAVATM、PYTHON等支持软件开发工具包(SDK)的应用程序,它利用可用API来生成事务提议。该提议是调用链代码功能的请求,以便可以将数据读取和/或写入到分类账(即,写入用于资产的新的键值对)。SDK可以用作填补将事务建议封装为适当的架构化格式(例如,远程过程调用(remote procedure call,RPC)上的协议缓冲区),并采用客户端的密码证书来产生事务提议的唯一签名。Java和所有基于Java的商标和标志是Oracle和/或其分支机构的商标或注册商标。
作为响应,背书对等方节点281可以验证(a)事务提议形成得很好,(b)过去事务尚未提交(重放攻击保护),(c)签名有效,以及(d)提交者(在该示例中为客户端260)被正确授权在该通道上执行所提议的操作。背书对等方节点281可以将事务提议输入作为所调用的链代码函数的自变量。然后,对照当前状态数据库执行该链代码,以产生包括响应值、读集合和写集合的事务结果。然而,此时不对账本进行更新。在292处,该组值连同背书对等方节点281的签名一起作为提议响应292被传递回客户端260的SDK,该SDK解析应用程序要消耗的载荷。
作为响应,客户端260的应用检查/验证背书对等方的签名,并比较该提议响应以确定该提议响应是否相同。如果该链代码只查询分类帐,则该应用将检查查询响应,并且通常不向排序节点服务284提交事务。如果客户应用程序想要将该事务提交给排序节点服务284以更新分类账,则该应用程序确定在提交之前是否已经满足了指定的背书策略(即,该事务所必需的所有对等方节点是否背书了该事务)。这里,客户端可以仅包括事务的多方中的一方。在这种情况下,每个客户端可以具有它们自己的背书节点,并且每个背书节点将需要背书该事务。该体系结构使得即使应用程序选择不检查响应或以其它方式转发未受保护的事务,背书策略仍将由对等体实施并在提交确认阶段得到支持。
在成功检查之后,在步骤293中,客户端260将背书汇集到事务中,并在事务消息内将事务提议和响应广播到排序节点284。事务可以包含读/写集、背书对等方签名和通道ID。排序节点284不需要检查事务的全部内容以便执行其操作,而是排序节点284可以简单地从网络中的所有通道接收事务,按通道按时间顺序对它们排序,并且按通道创建事务的区块。
事务的区块在信道上从排序节点284被递送到所有对等节点281和283。验证区块内的事务294,以确保满足任何背书策略,并且确保自从由事务执行生成读取集以来,针对读取集变量的分类账状态没有改变。区块中的事务被标记为有效或无效。此外,在步骤295中,每个对等节点281-283将区块追加到该通道的链,并针对每个有效的事务,写入集被提交到当前状态数据库。发出事件以通知客户端应用程序该事务(调用)已被不可变地追加到链中,以及通知该事务是有效还是无效。
图3示出了许可的区块链网络300的示例,其特征在于分布式、分散式对等架构,以及管理用户角色和许可的证书授权机构318。在该示例中,区块链用户302可向许可的区块链网络310提交事务。在该示例中,事务可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过REST API等来发出。可信商业网络可以提供对诸如审计方(例如,美国权益市场中的证券事务委员会)的监管机构(regulator)系统314的访问。同时,节点308的区块链网络运营方系统管理成员权限,诸如将监管机构系统310登记为“审计方”并且将区块链用户302登记为“客户端”。审计方可能只限于查询分类帐,而客户端可以被授权部署、调用和查询某些类型的链代码。
区块链开发者系统316编写链代码和客户端应用。区块链开发者系统316可通过REST接口将链代码直接部署到网络。为了在链代码中包括来自传统数据源330的证书,开发者系统316可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点312连接到网络。在进行任何事务之前,对等节点312从证书授权机构318检索用户的登记和事务证书。在一些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链网络310上进行事务。同时,可能需要试图驱动链代码的用户验证他们在传统数据源330上的证书。为了确认用户的授权,链代码可以通过传统的处理平台320使用到该数据的带外连接。
图4示出了根据示例实施例的用于执行块链状态模拟和验证的系统消息传递图。参考图4,系统图400包括一个或多个区块链节点410、状态数据库420和验证数据库430。状态数据库420通常存储在由区块链节点410访问的基于盘的存储设备上,而验证数据库430通常存储在基于半导体的存储设备上,包括由区块链节点410控制的系统RAM或固态设备(SSD)。已知基于半导体的存储设备具有比基于盘的存储设备更快的性能特性。
区块链节点410首先创建验证数据库430。状态信息从状态数据库420传送416到验证数据库430。状态信息416对应于区块链的预定数量的最近的区块。一旦验证数据库430已被如此建立,区块链节点410可接收区块链事务425。区块链的最近的块的预定数量是变量,其取决于能够分配给验证数据库430的存储器的量、存储器的性能、状态数据库420相对于存储器的性能、以及可能对创建新区块有效的定时要求。
验证数据库430包括最小高度164,其是具有验证数据库430中可用的数据的最旧的块(即最旧的状态120)的高度。区块链节点410通过验证每个事务的模拟高度大于或等于与验证数据库430中维护的数据相对应的最小高度164,来确定可以使用验证数据库430来验证新区块中的每个事务。
响应于接收到事务425,区块链节点410模拟事务435。当区块链节点410拦截到状态数据库420的查询436并向区块链节点410审阅模拟结果437时,事务被模拟。在一个实施例中,区块链节点410确定每个模拟的事务的区块链的高度435,其中区块链高度是在模拟时区块链中的区块的数量,并且将模拟高度170设置为区块链高度的最小值。在另一实施例中,区块链节点410将模拟高度170设置为针对多个事务的最小的区块链高度。在另一实施例中,区块链节点410确定每个模拟事务的区块链的高度,并拦截针对每个模拟事务的对状态数据库124的一个或多个查询,获得一个或多个数据版本,并选择一个或多个数据版本中的最大的数据版本作为模拟高度170。
接下来,区块链节点410验证事务440。区块链节点410从验证数据库430请求验证数据441,并且验证数据库作为响应提供验证结果442。验证440包括在模拟435期间记录状态数据库快照的标识,以及检测在模拟435和验证440之间状态数据库420中是否存在差异。在验证440期间,区块链节点410识别状态数据库420中的假想项,并且响应于识别事务的一个或多个假想项而将事务记录为无效。假想项是重复的项。
如果模拟结果437与验证结果442一致,则区块链节点410将状态更新提交到区块链。将事务存储到区块(未示出),更新状态数据库(451),并更新验证数据库(452)。区块链节点410将新区块中的有效事务的写入作为更新应用于状态数据库420和验证数据库430,删除与验证数据库430中最旧的区块对应的数据,并调整最小高度164以反映与验证数据库430中维护的数据对应的区块。一旦状态数据库420、确认数据库430和区块包括提交的更新,提交阶段就已完成。
图5A示出了根据示例实施例的在区块链中使用验证数据库来模拟和验证事务的示例方法的流程图500。参考图5A,方法500可以包括一个或多个所示步骤。在框504处,区块链节点创建验证数据库116。验证数据库116是从区块链的状态数据库124创建的,并且包括对应于预定数量的最近的块的状态信息。验证数据库116存储在比状态数据库124更快的存储器中,这导致比常规系统更快的事务验证。
在框508处,区块链节点模拟接收的事务。截取对状态数据库124的查询,并且作为查询的结果返回关于数据项的信息。在一个实施例中,数据项可包括一个或多个事务的模拟高度,其中模拟高度对应于事务模拟时区块链中的区块的数量。
在框512处,区块链节点确定可使用验证数据库116验证每个事务。这允许验证数据库116而不是更大且更慢的状态数据库124用于事务验证,从而导致更少的事务验证时间。
在框516处,使用验证数据库116验证新区块中的每个事务。在一个实施例中,验证包括将验证高度174与模拟高度170进行比较,其中验证高度174对应于验证时区块链中的区块的数量。
在框520处,新的经验证的区块被提交给区块链。状态数据库124具有对应于新区块而附加的新状态120。删除验证数据库中的最旧的状态120,同时将对应于新区块的新状态120添加到验证数据库116。这将验证数据库116维持为存储对应于预定数目的最近的区块的若干个状态120。最后,更新最小高度164参数以反映验证数据库116中最旧的状态120的高度。
图5B示出了根据示例实施例的解决区块链中的分叉链验证的示例方法的流程图550。参考图5B,方法550还可以包括以下步骤中的一个或多个。
在框554处,区块链网络识别在区块链中创建分叉的新区块。当应用必须在多个有效事务历史或分叉链之间选择时,一般将警告共识软件应用的用户。这是因为分叉区块链的存在可指示其他用户出于双倍花费的目的而有意尝试更改事务历史。
在框558处,区块链网络定义区块链验证机构的有限的集合。在生产区块时为每个区块定义区块链验证机构(validating authority,VA)的有限的集合,并且这些验证机构用于消除源自该区块的任何分叉的歧义。
在框562处,区块链网络基于验证机构的百分比来评估分叉链。验证机构集合内的每个验证结构可以被理解为占全部验证机构集合的组合机构的指定百分比。通过确认每条分叉链的验证机构的百分比评估分叉链。
在框566处,区块链网络分配具有最高百分比的分叉链作为共识链。验证机构确认的百分比可以称为分叉链的宽度。具有最高百分比确认的分叉链被认为是最宽的链,并且被接受为共识链(假设该链遵循所有其他共识规则)。当评估分叉并且特定机构已经签名了分叉链时,相同机构再次签名相同的分叉链不会增加宽度。
在框570处,区块链网络使用验证机构的子集来验证新区块。验证机构列表可以是小的,诸如一小组最高排名的选则的区块签名者。小的验证机构列表在比较分叉时将更快地检查,并且更快地确认对分类账的改变,导致更快的事务/区块验证。
图6A示出了被配置为根据示例实施例的一个或多个示例操作方法在区块链上执行各种操作的示例物理基础设施。参考图6A,示例配置600A包括具有区块链620和智能合约630的物理基础设施610,其可以执行包括在任何示例实施例中的任何操作步骤612。步骤/操作612可包括在一个或多个流程图和/或逻辑图中描述或描绘的一个或多个步骤。这些步骤可以表示输出或写入的信息,该信息是从驻留在计算机系统配置的物理基础设施610上的一个或多个智能合约630和/或区块链620写入或读取的。数据可以从执行的智能合约630和/或区块链620输出。物理基础设施610可以包括一个或多个计算机、服务器、处理器、存储器、和/或无线通信设备。
图6B图示了根据示例实施例的合约订约方和被配置成在区块链上实施智能合约条款的中介服务器之间的示例智能合约配置。参考图6B,配置650可以表示由明确标识一个或多个用户设备652和/或656的智能合约630驱动的通信会话、资产转移会话或过程或规程。可以由服务器654管理智能合约执行的执行、操作和结果。智能合约630的内容可能需要由实体652和656中的一个或多个实体进行的数字签名,这些实体是智能合约事务的各方。智能合约执行的结果可作为区块链事务被写入区块链。
上述实施例可以以硬件、由处理器执行的计算机程序、固件或上述组合来实现。计算机程序可以被包含在计算机可读介质上,例如存储介质。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质中。
示例性存储介质可耦合到处理器,使得处理器可从存储介质读取信息并向存储介质写入信息。在替代方案中,存储媒体可与处理器成一体式。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代方案中,处理器和存储媒体可作为离散组件而驻存。例如,图7示出了示例计算机系统体系结构700,其可以表示或集成在上述组件等中的任一个中。
图7不旨在对本文所述的应用的实施例的使用范围或功能提出任何限制。无论如何,计算节点700能够被实现和/或执行上文阐述的任何功能。
在计算节点700中,存在计算机系统/服务器702,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器702一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器702可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器702可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图7所示,云计算节点700中的计算机系统/服务器702以通用计算设备的形式示出。计算机系统/服务器702的组件可以包括但不限于一个或多个处理器或处理单元704、系统存储器706、以及将包括系统存储器706在内的各种系统组件耦合到处理器704的总线。
总线表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
计算机系统/服务器702通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器702访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。在一个实施例中,系统存储器706实现其它附图的流程图。系统存储器706可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)710和/或高速缓存712。计算机系统/服务器702还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统714可被提供用于从不可移动、非易失性磁介质(未示出且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线。如下面将进一步描绘和描述的,存储器706可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该程序模块被配置成执行本申请的各种实施例的功能。
具有一组(至少一个)程序模块718的程序/实用程序716,以及操作系统、一个或多个应用程序、其它程序模块和程序数据,可作为示例而非限制存储在存储器706中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块718通常执行如本文所述的应用程序的各种实施例的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以被实现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,其在这里可以被统称为“电路”、“模块”或“系统”。此外,本申请的各方面可以采取在其上包含计算机可读程序代码的一个或多个计算机可读介质中包含的计算机程序产品的形式。
计算机系统/服务器702还可以与一个或多个外部设备720通信,诸如键盘、定点设备、显示器722等;一个或多个设备,其使得用户能够与计算机系统/服务器702交互;和/或使计算机系统/服务器702能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由I/O接口724发生。此外,计算机系统/服务器702可以经由网络适配器726与一个或多个网络通信,所述网络诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)。如所描述的,网络适配器726经由总线与计算机系统/服务器702的其他组件通信。应当理解,尽管未示出,但是可以结合计算机系统/服务器702使用其他硬件和/或软件组件。示例包括但不限于:微代码、设备驱动、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
尽管在附图中示出并在前述详细描述中描述了系统、方法和非瞬态计算机可读介质中的至少一个的示例性实施例,但是将理解,本申请不限于所公开的实施例,而是能够进行如所附权利要求书所阐述和定义的众多重新布置、修改和替换。例如,各附图的系统的能力可由本文描述的模块或组件中的一个或多个或以分布式架构来执行,并且可包括发射机、接收机或两者的配对。例如,由各个模块执行的所有或部分功能可以由这些模块中的一个或多个执行。此外,本文描述的功能可以在各种时间执行,并且可以与模块或组件内部或外部的各种事件相关。而且,在各种模块之间发送的信息可以经由以下中的至少一个在模块之间发送:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或经由多个协议。而且,由任何模块发送或接收的消息可以直接和/或经由一个或多个其他模块发送或接收。
本领域技术人员将理解,“系统”可以被实现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其他合适的计算设备、或设备的组合。将上述功能呈现为由“系统”执行不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式来实现。
应当注意,本说明书中描述的一些系统特征已经被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以被实现为包括定制超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管或其他分立组件的现成半导体的硬件电路。模块还可以在可编程硬件设备中实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可以至少部分地以由各种类型的处理器执行的软件来实现。可执行代码的标识的单元例如可以包括计算机指令的一个或多个物理或逻辑块,其例如可以被组织为对象、过程或函数。然而,标识的模块的可执行代码不需要物理地位于一起,而是可以包括存储在不同位置的不同指令,当这些指令逻辑地结合在一起时,包括该模块并实现该模块的规定目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其他这样的介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在若干不同的代码段上、在不同的程序之间、以及跨若干存储器设备。类似地,操作数据可以在模块内被标识和示出,并且可以以任何合适的形式被体现并且被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解,如在本文附图中一般性描述和示出的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不是要限制所要求保护的本申请的范围,而仅仅是本申请的所选实施例的代表。
本领域的普通技术人员将容易理解,可以用不同顺序的步骤和/或用配置不同于所公开的配置的硬件元件来实践以上内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说,某些修改、变化和替代构造将是显而易见的。
尽管已经描述了本申请的优选实施例,但是应当理解,所描述的实施例仅是说明性的,并且当考虑到其全部范围的等同物和修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求来限定。
Claims (17)
1.一种用于区块链的验证的方法,包括:
由区块链节点在存储器中创建验证数据库,所述验证数据库包括与区块链的状态数据库的预定数量的最近的区块相对应的数据;
模拟一个或多个事务中的每一个,其中所述模拟包括确定每个模拟的事务的所述区块链的高度,所述区块链的高度对应于在模拟时间的所述区块链中的区块的数量,以及设定模拟高度为所述区块链的高度;
确定能够使用所述验证数据库来验证新区块中的每个事务;
使用所述验证数据库验证所述新区块中的每个事务;以及
将所述新区块提交至所述区块链;
其中所述验证数据库包括最小高度,其中所述最小高度是具有所述验证数据库中的可用的数据的最旧的区块的高度,其中确定能够使用所述验证数据库来验证所述新区块中的每个事务包括:
验证每个事务的模拟高度大于或等于所述最小高度。
2.根据权利要求1所述的方法,其中创建所述验证数据库包括:
确定包括在所述验证数据库中的所述预定数量的区块;以及
将所述区块链的所述预定数量的最近的区块的状态信息从所述状态数据库迁移到更高性能的存储介质。
3.根据权利要求1所述的方法,所述方法还包括:
针对每个模拟的事务拦截对所述状态数据库的一个或多个查询;
响应于所述一个或多个查询,获得一个或多个数据版本;以及
选择所述一个或多个数据版本中的最大数据版本作为所述模拟高度。
4.根据权利要求1所述的方法,其中将所述新区块提交到所述区块链包括:
将所述新区块中的有效事务的写入应用于所述验证数据库和所述状态数据库;
删除与所述验证数据库的最旧的区块相对应的数据;以及
调整所述最小高度以反映与所述验证数据库中维护的数据相对应的区块。
5.根据权利要求4所述的方法,还包括:
针对通过对所述验证数据库执行验证而正被验证的事务,识别所述状态数据库中的假想项;以及
响应于识别出所述事务的一个或多个假想项,将所述事务记录为无效。
6.根据权利要求4所述的方法,其中验证所述新区块中的每个事务包括:
在事务模拟阶段期间记录状态数据库快照的标识;以及
检测在所述事务模拟阶段和稍后的事务验证阶段之间所述状态数据库中是否存在差异。
7.一种用于区块链的验证的系统,包括:
区块链网络,所述区块链网络包括:
验证区块链事务的一个或多个区块链节点,每个区块链节点包括:
处理器;以及
存储器设备,其耦合到所述处理器,所述存储器设备包括:
验证数据库,所述验证数据库包括:
与区块链的状态数据库的预定数量的最近的区块相对应的数据;
所述处理器被配置为:
模拟一个或多个事务中的每一个,其中所述模拟包括确定每个模拟的事务的所述区块链的高度,所述区块链的高度对应于在模拟时间的所述区块链中的区块的数量,以及设定模拟高度为所述区块链的高度;
确定能够使用所述验证数据库来验证新区块中的每个事务;
使用所述验证数据库验证所述新区块中的每个事务;以及
将所述新区块提交到所述区块链;
其中所述验证数据库包括最小高度,其中所述最小高度是具有所述验证数据库中的可用的数据的最旧的区块的高度,其中确定能够使用所述验证数据库来验证所述新区块中的每个事务包括:
验证每个事务的模拟高度大于或等于所述最小高度。
8.根据权利要求7所述的系统,其中所述验证数据库包括比状态数据库更高性能的存储介质,其中所述状态数据库存储与所述区块链中的所有区块相对应的数据。
9.根据权利要求8所述的系统,其中,由所述处理器还被配置为:
针对每个模拟事务拦截对所述状态数据库的一个或多个查询;
响应于所述一个或多个查询,获得一个或多个数据版本;以及
选择所述一个或多个数据版本中的最大数据版本作为所述模拟高度。
10.根据权利要求7所述的系统,其中,所述处理器将所述新区块提交到所述区块链包括所述处理器被配置为:
将所述新区块中的有效事务的写入应用于所述验证数据库和所述状态数据库;
删除与所述验证数据库的最旧的块相对应的数据;以及
调整所述最小高度以反映与所述验证数据库中维护的数据相对应的区块。
11.根据权利要求10所述的系统,其中所述处理器还被配置为:
在针对所述验证数据库验证事务时,识别所述状态数据库中的假想项;以及
响应于所述处理器识别所述事务的一个或多个假想项,将所述事务记录为无效。
12.根据权利要求10所述的系统,其中所述处理器验证所述新区块中的每个事务包括所述处理器被配置为:
在模拟一个或多个事务时记录状态数据库快照的标识;以及
检测在所述事务模拟阶段和稍后的事务验证阶段之间所述状态数据库中是否存在差异。
13.一种包括指令的非暂时性计算机可读介质,所述指令在由处理器读取时使所述处理器执行:
由区块链节点在存储器中创建验证数据库,所述验证数据库包括与区块链的状态数据库的预定数量的最近的区块相对应的数据;
模拟一个或多个事务中的每一个,其中所述模拟包括确定每个模拟的事务的所述区块链的高度,所述区块链的高度对应于在模拟时间的所述区块链中的区块的数量,以及设定模拟高度为所述区块链的高度;
确定能够使用所述验证数据库来验证新区块中的每个事务;
使用所述验证数据库验证所述新区块中的每个事务;以及
将所述新区块提交至所述区块链;
其中所述验证数据库包括最小高度,其中所述最小高度是具有所述验证数据库中的可用的数据的最旧的区块的高度,其中确定能够使用所述验证数据库来验证所述新区块中的每个事务包括:
验证每个事务的模拟高度大于或等于所述最小高度。
14.根据权利要求13所述的非暂时性计算机可读介质,其中创建所述验证数据库包括:确定包括在所述验证数据库中的所述预定数量的块;以及
将所述区块链的所述预定数量的最近的块的状态信息从所述状态数据库迁移到更高性能的存储介质。
15.根据权利要求14所述的非暂时性计算机可读介质,其中所述处理器还执行:
针对每个模拟事务拦截对所述状态数据库的一个或多个查询;
响应于所述一个或多个查询,获得一个或多个数据版本;以及
选择所述一个或多个数据版本中的最大数据版本作为所述模拟高度。
16.根据权利要求13所述的非暂时性计算机可读介质,其中,将所述新区块提交到所述区块链包括:
将所述新区块中的有效事务的写入应用于所述验证数据库和所述状态数据库;
删除与所述验证数据库的最旧的块相对应的数据;以及
调整所述最小高度以反映与所述验证数据库中维护的数据相对应的区块。
17.根据权利要求16所述的非暂时性计算机可读介质,其中验证所述新区块中的每个事务包括:
在事务模拟阶段期间,记录状态数据库快照的标识;以及
检测在所述事务模拟阶段和稍后的事务验证阶段之间所述状态数据库中是否存在差异。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/002,150 | 2018-06-07 | ||
US16/002,150 US10972279B2 (en) | 2018-06-07 | 2018-06-07 | Efficient validation for blockchain |
PCT/EP2019/063295 WO2019233773A1 (en) | 2018-06-07 | 2019-05-23 | Efficient validation for blockchain |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112136291A CN112136291A (zh) | 2020-12-25 |
CN112136291B true CN112136291B (zh) | 2024-04-09 |
Family
ID=66810759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980032234.5A Active CN112136291B (zh) | 2018-06-07 | 2019-05-23 | 用于区块链的验证的方法和系统 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10972279B2 (zh) |
EP (1) | EP3804217B1 (zh) |
JP (1) | JP7382108B2 (zh) |
CN (1) | CN112136291B (zh) |
WO (1) | WO2019233773A1 (zh) |
Families Citing this family (45)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019233123A1 (en) * | 2018-06-08 | 2019-12-12 | AnApp Technologies Limited | System and method for securing transaction in a blockchain network |
CN109033832B (zh) * | 2018-06-22 | 2021-02-09 | 深圳前海益链网络科技有限公司 | 一种防范对区块链网络进行短暂分叉双花攻击的方法 |
GB201811263D0 (en) * | 2018-07-10 | 2018-08-29 | Netmaster Solutions Ltd | A method and system for managing digital using a blockchain |
US10671315B2 (en) | 2018-08-17 | 2020-06-02 | Bank Of America Corporation | Blockchain architecture for selective data restore and migration |
US11212076B2 (en) | 2018-09-19 | 2021-12-28 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11032063B2 (en) | 2018-09-19 | 2021-06-08 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11940978B2 (en) * | 2018-09-19 | 2024-03-26 | International Business Machines Corporation | Distributed platform for computation and trusted validation |
US11314749B2 (en) | 2018-10-03 | 2022-04-26 | International Business Machines Corporation | Blockchain implementing reliability database |
US11226971B2 (en) * | 2018-10-03 | 2022-01-18 | International Business Machines Corporation | Blockchain implementing reliability database |
US11243917B2 (en) | 2018-10-03 | 2022-02-08 | International Business Machines Corporation | Blockchain implementing reliability database |
EP3866094A4 (en) * | 2018-10-11 | 2022-04-20 | Hefei Dappworks Technology Co., Ltd. | RESOURCE FLOW TRANSACTION METHOD AND APPARATUS |
US10942916B2 (en) * | 2018-11-03 | 2021-03-09 | International Business Machines Corporation | Fraud prevention via database referencing |
US20200153605A1 (en) * | 2018-11-13 | 2020-05-14 | Accelor Ltd. | Systems and methods for pre-executing transaction validation for blockchain applications |
US10671515B1 (en) * | 2018-11-30 | 2020-06-02 | Bank Of America Corporation | Recording and playback of electronic event sequence in a distributed ledger system |
WO2019072288A2 (en) * | 2018-11-30 | 2019-04-18 | Alibaba Group Holding Limited | TEST PLATFORM FOR BLOCK CHAIN NETWORKS |
EP3891633B1 (en) * | 2018-12-03 | 2023-01-25 | Nagravision Sàrl | Secure deployment and operation of a virtual platform system |
US20200210170A1 (en) * | 2018-12-27 | 2020-07-02 | Hcl America Inc | Resolving potential merge conflicts by utilizing a distributed blockchain framework |
CN110431577B (zh) * | 2018-12-29 | 2023-08-22 | 创新先进技术有限公司 | 用于检测重放攻击的系统和方法 |
JP6882474B2 (ja) | 2018-12-29 | 2021-06-02 | アドバンスド ニュー テクノロジーズ カンパニー リミテッド | リプレイ攻撃の検出のためのシステム及び方法 |
US11222099B2 (en) * | 2019-02-08 | 2022-01-11 | Synergex Group | Methods, systems, and media for authenticating users using blockchains |
US20200334229A1 (en) * | 2019-04-17 | 2020-10-22 | Hill-Rom Services, Inc. | Medical device blockchain exchange |
JP7256064B2 (ja) * | 2019-04-18 | 2023-04-11 | 三菱重工業株式会社 | 管理システム、管理方法、上位ブロックチェーンの演算装置、及びプログラム |
US10936581B2 (en) * | 2019-08-30 | 2021-03-02 | Advanced New Technologies Co., Ltd. | Blockchain transaction processing method and apparatus |
SG11202002027TA (en) * | 2019-09-12 | 2020-04-29 | Alibaba Group Holding Ltd | Log-structured storage systems |
WO2021130968A1 (ja) * | 2019-12-26 | 2021-07-01 | 富士通株式会社 | 送信制御方法、送信制御プログラム及び情報処理装置 |
CN111274317A (zh) * | 2020-01-07 | 2020-06-12 | 书生星际(北京)科技有限公司 | 多节点数据同步的方法和装置,以及计算机设备 |
WO2021207830A1 (en) * | 2020-04-14 | 2021-10-21 | Dfuse Platform Inc. | Method and systems for indexing databases based on states and state transitions |
CN111611310A (zh) * | 2020-04-28 | 2020-09-01 | 深圳壹账通智能科技有限公司 | 区块链数据裁剪方法、节点恢复方法、装置、设备及介质 |
CN111694852B (zh) * | 2020-05-28 | 2024-06-25 | 平安科技(深圳)有限公司 | 基于分布式事务的数据处理方法、装置、终端及存储介质 |
CN111680105B (zh) * | 2020-06-15 | 2023-09-22 | 浙江创邻科技有限公司 | 基于区块链的分布式关系型数据库的管理方法及系统 |
CN111475501B (zh) * | 2020-06-24 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 区块链网络的数据清理方法及装置 |
CN112131235A (zh) * | 2020-09-21 | 2020-12-25 | 中国电子科技网络信息安全有限公司 | 一种区块链系统内交易可信校验实现方法 |
CN112131236B (zh) * | 2020-09-21 | 2022-07-05 | 中国电子科技网络信息安全有限公司 | 一种新型区块链并行处理性能优化方法 |
US11763296B2 (en) * | 2020-09-22 | 2023-09-19 | Bank Of America Corporation | Information security using integrated data control ledgers |
CN112417054B (zh) * | 2020-12-09 | 2024-03-05 | 北京万古科技股份有限公司 | 分布式数据存储方法、数据查询方法、设备和存储介质 |
JP7152828B1 (ja) * | 2021-05-24 | 2022-10-13 | 株式会社Scalar | ビザンチン故障を検知するデータ管理システム及び方法 |
WO2022250047A1 (ja) * | 2021-05-24 | 2022-12-01 | 株式会社Scalar | ビザンチン故障を検知するデータ管理システム及び方法 |
US12020246B2 (en) | 2021-06-01 | 2024-06-25 | Bank Of America Corporation | Intelligent distributed ledger consent optimizing apparatus for asset transfer |
US11625698B2 (en) | 2021-06-01 | 2023-04-11 | Bank Of America Corporation | Intelligent distributed ledger consent optimizing apparatus for asset transfer |
US11811944B2 (en) | 2021-07-15 | 2023-11-07 | Bank Of America Corporation | Electronic system for resource origination tracking |
US11985256B2 (en) | 2021-07-22 | 2024-05-14 | Bank Of America Corporation | Electronic system for automatic provisioning of limited-transferability electronic digital certificates associated with events |
CN114003972B (zh) * | 2021-12-30 | 2022-06-10 | 北京连琪科技有限公司 | 生成区块状态承诺和证明及验证区块状态证明的方法 |
WO2023201032A1 (en) * | 2022-04-15 | 2023-10-19 | Kanovitz Michael Ira | Secure retrieval of off-network data by trusted network entities |
US11930043B1 (en) | 2023-02-28 | 2024-03-12 | Blockaid Ltd | Techniques for digital wallet integration and for scanning transactions using integrated modules |
US12045826B1 (en) | 2023-02-28 | 2024-07-23 | Blockaid Ltd | Techniques for decentralized application discovery and scanning |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107615317A (zh) | 2015-03-31 | 2018-01-19 | 纳斯达克公司 | 区块链交易记录的系统和方法 |
US20160299918A1 (en) * | 2015-04-07 | 2016-10-13 | Dell Software, Inc. | Device Control Using a Secure Decentralized Transactional Ledger |
US10304143B2 (en) | 2016-05-05 | 2019-05-28 | Lance Timothy Kasper | Consensus system for manipulation resistant digital record keeping |
EP3317775B1 (en) | 2015-07-02 | 2022-02-16 | Nasdaq, Inc. | Systems and methods of secure provenance for distributed transaction databases |
US20170132626A1 (en) | 2015-11-05 | 2017-05-11 | Mastercard International Incorporated | Method and system for processing of a blockchain transaction in a transaction processing network |
US9948467B2 (en) | 2015-12-21 | 2018-04-17 | Mastercard International Incorporated | Method and system for blockchain variant using digital signatures |
WO2017109140A1 (en) | 2015-12-22 | 2017-06-29 | Bigchaindb Gmbh | Decentralized, tamper-resistant, asset-oriented database system and method of recording a transaction |
US20170243193A1 (en) | 2016-02-18 | 2017-08-24 | Skuchain, Inc. | Hybrid blockchain |
US10404469B2 (en) | 2016-04-08 | 2019-09-03 | Chicago Mercantile Exchange Inc. | Bilateral assertion model and ledger implementation thereof |
US10529042B2 (en) | 2016-04-18 | 2020-01-07 | Rs Ltd. | System and method for managing transactions in dynamic digital documents |
US20170345011A1 (en) * | 2016-05-26 | 2017-11-30 | Hitfin, Inc. | System and method executed on a blockchain network |
EP3253020A1 (en) | 2016-06-03 | 2017-12-06 | Gemalto Sa | A method and an apparatus for publishing assertions in a distributed database of a mobile telecommunication network |
US10587628B2 (en) * | 2016-09-29 | 2020-03-10 | Microsoft Technology Licensing, Llc | Verifiable outsourced ledgers |
US10262140B2 (en) * | 2016-09-29 | 2019-04-16 | Intel Corporation | Methods and apparatus to facilitate blockchain-based boot tracking |
US10657526B2 (en) | 2016-10-28 | 2020-05-19 | International Business Machines Corporation | System and method to dynamically setup a private sub-blockchain based on agility of transaction processing |
US10523421B2 (en) | 2016-11-30 | 2019-12-31 | International Business Machines Corporation | Checkpoints for permissionless blockchains |
US20180276626A1 (en) * | 2017-03-21 | 2018-09-27 | Dappsters, LLC | Blockchain systems and methods |
US10880071B2 (en) * | 2018-02-23 | 2020-12-29 | Samsung Electronics Co., Ltd. | Programmable blockchain solid state drive and switch |
-
2018
- 2018-06-07 US US16/002,150 patent/US10972279B2/en active Active
-
2019
- 2019-05-23 JP JP2020567217A patent/JP7382108B2/ja active Active
- 2019-05-23 WO PCT/EP2019/063295 patent/WO2019233773A1/en unknown
- 2019-05-23 CN CN201980032234.5A patent/CN112136291B/zh active Active
- 2019-05-23 EP EP19729453.1A patent/EP3804217B1/en active Active
Non-Patent Citations (1)
Title |
---|
ELLI ANDROULAKI ET AL..Hyperledger fabric: a distributed operating system for permissioned blockchains.ARXIV.ORG,CORNELL UNIVERSITY LIBRARY.2018,第1-7页. * |
Also Published As
Publication number | Publication date |
---|---|
US20190379543A1 (en) | 2019-12-12 |
JP2021525931A (ja) | 2021-09-27 |
EP3804217B1 (en) | 2023-09-06 |
CN112136291A (zh) | 2020-12-25 |
EP3804217A1 (en) | 2021-04-14 |
JP7382108B2 (ja) | 2023-11-16 |
WO2019233773A1 (en) | 2019-12-12 |
US10972279B2 (en) | 2021-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112136291B (zh) | 用于区块链的验证的方法和系统 | |
CN110636492B (zh) | 使用区块链切换移动服务提供商 | |
CN112106336B (zh) | 区块链上的代理方代理和代理方账本 | |
US10834095B2 (en) | Post-commit validation in a distributed ledger | |
US10756884B2 (en) | On-chain governance of blockchain | |
CN110674128B (zh) | 区块链的链上治理 | |
CN112840617B (zh) | 用于管理区块链资源的方法和计算节点,计算机可读介质 | |
US20200013025A1 (en) | Conditional deferred transactions for blockchain | |
US11924323B2 (en) | On-chain governance of blockchain | |
US20190354397A1 (en) | Prioritization in a permissioned blockchain | |
CN110874739B (zh) | 实现高完整性、高带宽、低延迟、安全处理的分布式计算和存储网络 | |
CN112868210B (zh) | 区块链时间戳协议 | |
CN111144881A (zh) | 对资产转移数据的选择性访问 | |
JP7228322B2 (ja) | ブロックチェーン・ネットワークにおける自動コミット・トランザクション管理 | |
CN112241919B (zh) | 具有数据流控制的多域区块链网络 | |
US11568402B2 (en) | Decentralized out-of-band accelerated blockchain transaction processing | |
CN112154434A (zh) | 区块链上智能合约组的自动数据投影 | |
US11070563B2 (en) | Trace-based transaction validation and commitment | |
CN112036876B (zh) | 基于元数据的背书 | |
CN115605868A (zh) | 跨网身份提供 | |
CN112084186B (zh) | 拆分和合并存储 | |
CN116941265A (zh) | 区块链网络身份管理使用ssi | |
CN111831739A (zh) | 数据库复合背书 | |
CN111753009A (zh) | 包括快速路径服务的分散式数据库中的信息管理 | |
CN111698198B (zh) | 秘密生成和份额分发 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |