CN115699054A - 区块链的更快查看改变 - Google Patents
区块链的更快查看改变 Download PDFInfo
- Publication number
- CN115699054A CN115699054A CN202180018928.0A CN202180018928A CN115699054A CN 115699054 A CN115699054 A CN 115699054A CN 202180018928 A CN202180018928 A CN 202180018928A CN 115699054 A CN115699054 A CN 115699054A
- Authority
- CN
- China
- Prior art keywords
- blockchain
- message
- peer
- change
- view
- 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
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/23—Updating
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Artificial Fish Reefs (AREA)
- Agricultural Chemicals And Associated Chemicals (AREA)
- Information Transfer Between Computers (AREA)
Abstract
公开一种主对等方的方法,包括:接收请求从区块链的先前主对等方到主对等方的查看改变消息,由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中,基于所接收的查看数据消息来验证区块链的状态改变对应于区块链的最近改变,以及将包括区块链状态的进行中改变的新查看消息发送到后续对等方。
Description
技术领域
本发明涉及分散存储系统领域,并且具体地涉及一种用于当对分散存储系统的更新在进行中时使得能够发生更快的查看改变的分散存储系统。
背景技术
集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如台式中央处理单元(CPU)、服务器CPU或大型计算机。存储在集中式数据库上的信息通常可从多个不同点访问。多个用户或客户工作站可以例如基于客户/服务器配置同时在集中式数据库上工作。集中式数据库由于其单个位置而易于管理、维护和控制,尤其是出于安全的目的。在集中式数据库内,数据冗余被最小化,因为所有数据的单个存储位置也暗示给定数据集仅具有一个主记录。
发明内容
一个示例实施例提供了一种装置,其可以包括网络接口,其被配置为执行请求从区块链的先前主对等方到主对等方的查看改变消息中的一个或多个,以及处理器,其被配置为由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中,并且基于所接收的查看数据消息来验证区块链的状态改变对应于区块链的最新改变,其中,网络接口还被配置为向后续对等方发送新查看消息,其包括区块链状态的进行中改变(in-process change)。
另一个示例实施例提供了一种装置,该装置可以包括处理器,该处理器被配置为以下中的一个或多个:确定区块链的当前主要对等方已成为故障对等方、识别区块链的状态改变正在当前主对等方进行中,并生成查看改变消息,该查看改变消息包括下一个查看编号和正在进行的对区块链状态改变的哈希值,以及网络接口,被配置为将生成的查看改变消息传输给其他对等方。
另一实施例提供一种方法,其包括以下中的一个或多个:接收请求从区块链的先前主对等方到主对等方的查看改变消息,由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中,基于所接收的查看数据消息来验证区块链的状态改变对应于区块链的最近改变,以及将包括区块链状态的进行中改变的新查看消息发送到后续对等方。
另一示例实施例提供了一种装置,其可包括网络接口和处理器中的一个或多个,网络接口被配置为从主对等方接收包括要被添加到区块链的建议数据的预准备消息,以及处理器被配置为以下中的一个或多个:生成包括要被添加到区块链的建议数据的哈希和共有对等方的签名的准备消息,将共有对等方的哈希难题添加到准备消息,以及将具有哈希难题的准备消息发送到区块链的多个其他共有对等方。
另一示例实施例提供了一种装置,其可包括网络接口和处理器中的一个或多个,所述网络接口被配置为接收包括下一查看值和对区块链状态的进行中改变的哈希的查看改变消息,所述处理器被配置为以下中的一个或多个:响应于接收到查看改变消息的预定阈值,生成包括来自具有对块链状态的进行中改变的证据的其他后续对等方的签名的准备消息的查看数据消息,以及将所生成的包括签名的准备消息的查看数据消息发送到主对等方。
从第一方面来看,本发明提供了一种装置,包括:网络接口,其被配置为接收查看改变消息,所述查看改变消息请求从区块链先前的主对等方到所述主对等方的查看改变;以及处理器,其被配置为由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中,并且基于所接收的查看数据消息来验证区块链的状态改变对应于区块链的最近改变,其中网络接口还被配置为向后续对等方发送新查看消息,其包括区块链的状态的进行中改变。
优选地,本发明提供了一种装置,其中所述网络接口被配置为响应于仅接收到一个查看数据消息而发送新查看消息。
优选地,本发明提供了一种装置,其中区块链状态的进行中改变包括建议的数据块。
优选地,本发明提供一种装置,其中所述处理器还被配置为验证已经从预定阈值的后续对等方接收到查看改变消息。
优选地,本发明提供了一种装置,其中,对于每个查看改变消息,元数据包括下一查看编号和区块链的哈希改变。
优选地,本发明提供一种装置,其中查看数据消息包括其中的多个准备消息,这些准备消息由后续对等方从其他对等方接收。
优选地,本发明提供了一种装置,其中所述处理器被配置为验证所述区块链状态的进行中改变被包括在存储在所述查看数据消息内的预定数量的签名的准备消息中。
从另一方面来看,本发明提供了一种装置,包括:处理器,被配置为确定区块链的当前主对等方已经变为故障对等方,由当前主对等方识别区块链的状态改变正在进行中,并且生成包括下一查看编号和对区块链状态的进行中改变的哈希的查看改变消息;以及网络接口,其被配置为将所生成的查看改变消息发送到其他对等方。
优选地,本发明提供了一种装置,其中所述处理器还被配置为在查看改变消息中存储区块链的其他后续对等方的签名,所述签名对区块链状态的进行中改变达成共识。
优选地,本发明提供了一种装置,其中在实用拜占廷容错(pBFT)的准备阶段内,收集区块链状态的进行中变化和签名。
优选地,本发明提供一种装置,其中所述处理器被配置为基于从当前主对等方接收的预准备消息来识别区块链状态的进行中改变。
从另一方面来看,本发明提供了一种主对等方的方法,包括:接收请求从区块链的先前主对等方到主对等方的查看改变消息;由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中;基于所接收的查看数据消息验证区块链的状态改变对应于区块链的最近改变;以及向后续对等方发送包括区块链状态的进行中改变的新查看消息。
优选地,本发明提供了一种方法,其中所述发送包括响应于仅接收到一个查看数据消息而发送新查看消息。
优选地,本发明提供了一种方法,其中区块链状态的进行中改变包括建议的数据块。
从另一方面来看,本发明提供了一种装置,包括:网络接口,其被配置为从主对等方接收预准备消息,所述预准备消息包括要被添加到区块链的建议数据;以及处理器,被配置为生成准备消息,准备消息包括要被添加到区块链的建议数据的哈希和共识对等方的签名,将共识对等方的哈希谜题添加到准备消息,以及将具有哈希谜题的准备消息传输到区块链的多个其他共识对等方。
优选地,本发明提供一种装置,其中所述处理器还被配置为基于从其他共识对等方接收到的准备消息,确定其他共识对等方的预定阈值同意将被添加到区块链的建议数据。
优选地,本发明提供一种装置,其中处理器还被配置为生成包括添加到准备消息的哈希谜题的解的提交消息,并且将提交消息发送到多个其它共识对等方。
优选地,本发明提供了一种装置,其中提交消息不包括共识对等方的签名。
优选地,本发明提供了一种装置,其中处理器被配置为经由预定义秘密值的哈希生成哈希谜题。
优选地,本发明提供一种装置,其中处理器还被配置为从其他共识对等方接收准备消息,其中所接收的准备消息包括由其他相应共识对等方添加的哈希谜题。
从另一方面来看,本发明提供了一种装置,包括:网络接口,其被配置为接收查看改变消息,所述查看改变消息包括下一查看值和对区块链的状态的进行中改变的哈希;以及处理器,被配置为响应于接收到查看改变消息的预定阈值,生成包括来自具有对区块链状态的进行中改变的证据的其他后续对等方的签名的准备消息的查看数据消息,并且将所生成的包括签名的准备消息的查看数据消息发送到主对等方。
优选地,本发明提供了一种装置,其中在拜占庭容错(BFT)共识的准备阶段中收集签名的准备消息。
优选地,本发明提供了一种装置,其中签名的准备消息包括元数据,所述元数据包括对区块链状态的进行中改变的哈希和新主对等方的查看编号。
优选地,本发明提供了一种装置,其中所述签名的准备消息还包括由其他后续对等方添加的哈希谜题。
优选地,本发明提供一种装置,其中所述处理器还被配置为从主对等方接收对所述区块链状态的进行中改变。
附图说明
图1A是示出了根据示例性实施例的用于执行查看改变的区块链网络的示意图。
图1B是示出根据示例性实施例的由图1A的区块链网络执行的共识过程的示图。
图1C是示出根据示例性实施例的由图1A的区块链网络执行的查看改变过程的示图。
图2A是示出根据示例实施例的示例区块链架构配置的示示意图。
图2B是示出根据示例实施例的节点之间的区块链事务流的示意图。
图3A是示出根据示例实施例的许可网络的示意图。
图3B是示出根据示例实施例的另一许可网络的示意图。
图3C是示出根据示例实施例的无许可网络的示意图。
图4A是示出根据示例实施例的用于区块链共识的准备消息和提交消息的格式的示意图。
图4B是示出根据示例实施例的查看改变消息的格式的示意图。
图4C是示出根据示例实施例执行的更快查看改变过程的示意图。
图5A是示出根据示例实施例的执行查看改变的方法的示意图。
图5B是示出根据示例实施例的生成查看改变消息的方法的示意图。
图5C是示出根据示例实施例的生成准备消息的方法的示意图。
图5D是示出根据示例实施例的生成查看数据消息的方法的示意图。
图6A是示出根据示例实施例的被配置为执行这里描述的一个或多个操作的示例系统的示意图。
图6B是示出根据示例实施例的被配置为执行这里描述的一个或多个操作的另一示例系统的示意图。
图6C是示出了根据示例实施例的被配置为利用智能合约的另一示例系统的示意图。
图6D是示出根据示例实施例的被配置为利用区块链的又一示例系统的示意图。
图7A是示出了根据示例实施例的将新块被添加到分布式账本的过程的示意图。
图7B是示出根据示例实施例的新数据块的数据内容的示意图。
图7C是示出了根据示例实施例的用于数字内容的区块链的示意图。
图7D是示出了根据示例性实施例的可表示区块链中的区块结构的区块的示意图。
图8A是示出根据示例实施例的存储机器学习(人工智能)数据的示例区块链的示意图。
图8B是示出根据示例实施例的示例量子安全区块链的示意图。
图9是示出支持一个或多个示例实施例的示例系统的示意图。
具体实施方式
容易理解,如在本文附图中一般性描述和说明的,本发明的部件可以以各种不同的配置来布置和设计。因此,如附图中所表示的方法、装置、非瞬时性计算机可读介质和系统中的至少一个的实施例的以下详细描述不旨在限制如所要求保护的应用的范围,而仅仅是所选实施例的代表。
在一个或多个实施例中,可以以任何适当的方式组合或去除本说明书中描述的本特征、结构或特性。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其它类似语言的使用指的是结合实施例描述的特定特征、结构或特性可以被包括在至少一个实施例中的事实。因此,在整个说明书中出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”或其它类似语言不一定全部指代同一组实施例,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或去除。此外,在图中,元件之间的任何连接可以允许单向和/或双向通信,即使所描绘的连接是单向或双向箭头。而且,附图中描绘的任何设备可以是不同的设备。例如,如果移动设备被示为发送信息,则有线设备也可以用于发送信息。
另外,虽然在实施例的描述中可能已经使用了术语“消息”,但是本申请可以应用于许多类型的网络和数据。此外,虽然在示例性实施例中可以描述某些类型的连接、消息和信令,但是本申请不限于某些类型的连接、消息和信令。
示例实施例提供了实现用于许可的区块链的更快的查看改变过程的方法、系统、组件、非瞬态计算机可读介质、设备和/或网络。
在一个实施例中,应用利用作为分布式存储系统的分散式数据库(诸如区块链),其包括彼此通信的多个节点。分散数据库包括只附加的不可改变的数据结构,类似于能够维护相互不信任的各方之间的记录的分布式账本。不受信任方在这里被称为对等方或对等方节点。每个对等方都维护数据库记录的副本,并且在分布式对等方之间没有达成共识的情况下,没有单个对等方可以修改数据库记录。例如,对等方可以执行一致性协议以验证区块链存储事务,将存储事务分组为区块,并在区块上构建哈希链。该过程通过根据需要对存储事务进行排序以便保持一致性,从而形成帐本。在各种实施方式中,可使用许可的和/或无许可的区块链。在公共或无许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链可涉及本机加密货币并基于诸如工作证明(PoW)等各种协议来使用共识。另一方面,许可的区块链数据库提供了在共享共同目标但不完全信任彼此的一组实体之间的安全交互,诸如交换资金、商品、信息等的企业。
本申请可以利用操作任意的、可编程的逻辑的区块链,其被定制为分散存储方案并且被称为“智能合约”或“链码”。在某些情况下,可能存在被称为系统链码的用于管理功能和参数的专用链码。应用程序还可利用作为可信分布式应用程序的智能合约,该智能合约利用区块链数据库的防篡改特性和节点之间的底层协定,这被称为背书或背书策略。与该应用程序相关联的区块链事务在被提交给区块链之前可被“背书”,而未背书的事务被忽略。背书策略允许链码以背书所必需的对等方节点集合的形式指定事务的背书者。当客户机将事务发送到背书策略中指定的对等方时,执行事务以验证事务。在验证之后,事务进入排序阶段,在该排序阶段中使用一致性协议来产生被分组成区块的背书事务的有序序列。
本申请可以利用作为区块链系统的通信实体的节点。“节点”可以执行逻辑功能,其意义在于不同类型的多个节点可以在同一物理服务器上运行。节点被分组在信任域中,并且与以各种方式控制它们的逻辑实体相关联。节点可包括不同类型,诸如向背书者(例如,对等方)提交事务调用并向排序服务(例如,排序节点)广播事务建议的客户机或提交客户机节点。另一种类型的节点是对等方节点,其可接收客户端提交的事务、提交事务并维护区块链事务账本的状态和副本。对等方也可以具有背书者的角色,尽管这不是必需的。排序服务节点或排序节点是为所有节点运行通信服务的节点,并且当提交事务并修改区块链世界状态时,其实现交付保证,例如广播到系统中的每个对等方节点,这是初始区块链事务的另一名称,其通常包括控制和设置信息。
本申请可以利用账本,该账本是区块链的所有状态转换的排序的、防篡改的记录。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等方节点等)提交的链码调用(即,事务)产生。每个参与方(诸如对等方节点)可以维护账本的副本。事务可以导致一组资产键-值对被提交给账本作为一个或多个操作数,诸如创建、更新、删除等。账本包括用于以区块存储不可改变的有序记录的区块链(也称为链)。账本还包括维护区块链的当前状态的状态数据库。
该应用程序可以利用作为事务日志的链,该事务日志被构造为哈希链接的区块,并且每个区块包含N个事务的序列,其中N等于或大于1。区块报头包括区块事务的哈希,以及先前区块报头的哈希。以这种方式,可以对账本上的所有事务进行排序并且将其加密地链接在一起。因此,在不破坏哈希链接的情况下,不可能篡改账本数据。最近添加的区块链区块的哈希表示在其之前到来的链上的每个事务,使得可以确保所有对等方节点处于一致且可信的状态。该链可被存储在对等方节点文件系统(即,本地、附加存储、云等)上,从而高效地支持区块链工作负荷的仅附加性质。
同时,区块链系统存储关于不可变账本的数据,通过非信任参与者提供对不可变账本的分布式和分散式访问,建立对非信任参与者之间同意的共识要求,使得没有一个实体可以在没有来自其他实体同意的情况下改变不可变账本,调用智能合约等。区块链由同意将区块(其中存储有数据)添加到不可变账本的参与者的网络形成。在被添加之前,该区块被链接到不可变账本上的前一区块,从而形成链。区块链的这种不可变且不可破坏的性质使得其免受伪造的信息和黑客的侵害。分散的性质还给予它独特的无信任质量,因为各方在他们可以安全交易之前不需要建立信任。
不可变账本的当前状态表示包括在链事务日志中的所有键的最新值。由于当前状态表示通道已知的最近键值,所以它有时被称为世界状态。链码调用针对账本的当前状态数据执行事务。为了使这些链码交互作用有效,可将键的最新值存储在状态数据库中。状态数据库可以简单地是链的事务日志中的索引查看,因此可以在任何时间从链中重新生成。在对等方节点启动时,并且在接受事务之前,可以自动恢复(或者如果需要的话,可以生成)状态数据库。
区块链网络可以包括许多区块链对等方,每个区块链对等方持有区块链账本的副本/复制品。区块链网络使用共识协议来确保区块链账本的状态跨所有区块链对等方是一致的。一种通常用于达成共识的算法是实用拜占廷容错(pBFT)。在pBFT共识中,一个或多个主对等方充当其余对等方(本文中称为后续对等方或共识对等方)的领导者。每个主对等方(领导者)保持区块链账本的内部状态,如后续对等方所做的那样。
当从客户机接收到将数据存储到区块链的请求时,主对等方创建提议并将该提议多播到与主对等方分组在一起的后续对等方。接下来,后续对等方彼此共享该提议以确保存在关于区块链提议的同意。当达成同意时,后续对等方(和主对等方)将区块链建议提交到它们的内部账本,并将响应转发到客户机。
“查看”是给定的区块链对等方充当主对等方的时间段。查看改变是从一个主对等方切换到另一个主对等方的过程。例如,下一主对等方可以是根据区块链对等方在链上文件中的顺序等以循环方式等选择的后续对等方。主对等方和后续对等方都可以通过在链上文件中存储标识下一个主对等方的查看编号来跟踪下一个主对等方。除了通过一系列查看移动之外,对等方还通过一系列序列号移动,其中序列号表示要存储在区块链中的下一区块的区块编号。
为了执行查看改变,当检测到主对等方进入超时、发生错误活动等时,区块链对等方(后续对等方)可请求查看改变。随着更多的区块链对等方检测到故障活动,它们也发出查看改变消息。这里,组内的区块链对等方彼此广播查看改变消息。当接收到足够的查看改变消息时,新主对等方启动新的查看。
查看改变消息可以是轻量级消息,其包括在不提供区块链的任何内容/状态的情况下请求主对等方中的改变指示。当在区块链对等方中接收到查看改变消息的预定阈值时,区块链对等方将包括区块链的当前检查点的查看数据消息发送到新主对等方,从而使得新主对等方能够在故障主对等方停止的地方重新开始。
为了确保查看数据消息内的区块链的当前检查点由区块链对等方的共识达成一致,新主对等方必须收集具有区块链的相同检查点的2f+1个查看数据消息。在这种情况下,“f”是在具有总共“n”个节点的区块链网络内可能有故障的可能节点的总数,并且n=3f+1。在利用区块链检查点接收到2f+1个查看数据消息之后,新主对等方可向包含查看数据消息并指示后续对等方移动到新主对等方的所有区块链对等方广播新查看消息。
正如在查看改变消息的情况下,新主对等方必须在可以发送新查看消息之前等待接收2f+1查看数据消息。其原因在于,查看数据消息包括区块链的当前状态和发送查看数据消息的区块链对等方的签名。为了新主对等方确保足够的区块链对等方对区块链的当前状态达成一致,主对等方必须等待,直到接收到包括区块链的最新状态的至少预定阈值的查看数据消息(例如,2f+1)。数字2f+1意味着即使存在‘f’个故障节点,正确/未故障数据消息的数量也将至少为f+1(即,至少多于f一个)。因此,主对等方可以确保,对于2f+1查看数据消息,大多数/法定数量的非故障对等方对账本状态达成一致。查看改变过程的缺点在于,新主对等方必须等待2f+1查看改变消息,并且同样等待2f+1查看数据消息(包括账本的检查点)。结果,在查看改变过程期间消耗了相当大量的时间。
示例实施例克服了这些缺点,并且使得当对区块链的更新在进行中(即,在进行中)时能够发生更快的查看改变。具体地,示例性实施例利用在对区块链账本的进行中更新期间使用的准备消息的内容来包括从其他区块链对等方收集的签名。这些签名可以被添加到查看改变消息。查看改变消息还可被更新以包括对进行中的区块链的建议改变。
因此,最初由区块链对等方发送以开始查看改变过程的查看改变消息可包括来自大多数区块链对等方的证据处于对区块链的相同更新过程中。
在这种情况下,当新主对等方收集2f+1个查看改变消息时,可以确保至少f+1个查看改变消息来自非故障节点。此外,新主对等方在发送新的查看消息之前可能仅需要等待包括区块链的检查点/当前状态的一个查看数据消息(而不是2f+1查看数据消息)。在这种情况下,通过等待一个查看数据消息,新主对等方可以确保对查看改变消息中所识别的区块链状态的进行中改变与查看数据消息中的区块链的当前状态/检查点相匹配。因此,对于其中发生查看改变进行中的区块链过程,可以节省大量时间。此外,仅需要处理一个检查点消息而不是2f+1。
为了实现对区块链状态的进行中更新的查看改变过程的改进,示例性实施例将改变引入到在pBFT共识过程期间使用的准备消息和在查看改变过程期间使用的查看改变消息两者。
图1A示出了根据示例性实施例的用于执行查看改变的区块链网络100。参考图1A,区块链网络100包括多个区块链对等方112、114、116和118,它们共享区块链110的管理,该区块链可以包括诸如图7A的示例中所示的哈希链接的区块链和状态数据库等。区块链网络100可以是需要批准访问区块链110的许可的区块链。区块链对等方112-118授予对区块链110的访问。区块链网络100不包括集中式管理,而是由区块链对等方112-118的组以分散的方式协作地管理。区块链110跨区块链对等方112-118中的每一个被复制。此外,使用共识来确保在区块链对等方112-118上存储的副本的状态之间存在一致性。
在该示例中,区块链对等方112-118基于实用拜占廷容错(pBFT)共识协议进行操作。在这种情况下,区块链对等方112-118在其中标识当数据被添加到区块链110时用作领导者的主对等方。主对等方112可以从客户端120接收将新事务存储到区块链110的请求。同时,其余区块链对等方可以被称为参与领导者对等方的“追随者”。pBFT共识即使在存在故障节点时也能起作用。在这里的示例中,假设最多f个故障节点可存在于包括n个节点的区块链网络中,其中n等于或大于3f+1.因此,为了在区块链对等方之间确保共识,至少2f+1个节点必须达成一致。也就是说,如果f个节点有故障,则2f确保至少一半节点没有故障。此外,通过添加一个,它确保了总是存在比故障节点更多的无故障节点。
图1B示出了根据示例性实施例的由图1A的区块链网络执行的共识过程100B。在该示例中,基于在区块链对等方112-118之间达成的共识,将新块添加到图1A所示的区块链110。在该示例中,区块链对等方112是区块链对等方112-118的当前主区块链对等方。然而,主区块链随时间变化。例如,每个对等方112-118可以基于循环方法等花时间作为主要方。此外,尽管为了便于描述,在该示例中示出了具有一个主对等方的4个区块链对等方,但是应当理解,区块链网络可以具有许多个区块链对等方,包括同时服务于跟随者对等方的不同子集的多个主对等方。
参考图1B,主对等方112可以从客户端120接收将新的事务存储到区块链110的请求。在图中省略了该步骤。在预准备阶段131中,主对等方112可以将事务排序成区块,并将排序的事务的列表广播到其他区块链对等方114、116和118。
在准备阶段132,区块链对等方114、116和118可接收事务的有序列表。每个区块链对等方(114、116和118)可计算新创建的区块的哈希码,其包括事务的哈希和要添加到状态数据库的世界最终状态,并将包括所得哈希的准备消息广播到网络中的其他区块链对等方(114、116和118)。因此,区块链对等方可以从其他区块链对等方接收准备消息。
当区块链对等方接收到预定阈值的准备消息(例如,2f+1)时,在提交阶段133中,区块链对等方可生成提交消息并将提交消息传送到其他区块链对等方。当区块链对等方接收到预定阈值的提交消息时,区块链对等方可将区块提交到区块链110的本地副本,该副本包括区块链以及对状态数据库的更新。
根据各种实施例,可以在每个查看(例如,pBFT共识轮次)期间改变主对等方。例如,如果已经经过了预定的时间量而主对等方没有向后续对等方广播请求,则可以使用查看改变协议来替换主对等方。如果需要,大多数诚实节点可以投票赞成当前主节点的合法性,并用在线的下一个主节点来代替它。
图1C示出了根据示例性实施例的由图1A的区块链网络执行的查看改变过程100C。在该示例中,主对等方112被检测为有故障的。例如,客户端120可以向主对等方112提交请求,然后其在预定的时间段内、超时等未能响应。当随后的区块链对等方114、116和118怀疑主对等方112已变得有故障时,区块链对等方114、116和118可发送查看改变消息141。在相关技术中,查看改变消息可以是包括区块链账本的最新检查点的重量级查看改变消息。例如,最近的检查点可包括区块链的当前状态。作为另一个例子,查看改变消息可以是仅包括下一查看序列号(即,下一主对等方的标识符)的轻量查看改变消息。
当区块链对等方114、116和118接收到足够的查看改变消息(例如,2f+1)时,区块链对等方可提交查看数据消息142。查看数据消息142可以仅在查看改变消息141是轻量级消息时使用。查看数据消息142可以被签名并用作下一阶段的证据。查看数据消息142包括区块链的最近检查点和任何下一提议(进行中的提议)(如果存在的话)。然而,查看数据消息142仅被发送到新的查看主对等方,在该示例中,新的查看主对等方是区块链对等方114。在接收到足以满足预定阈值(例如,2f+1)的查看改变消息142之后,新的主对等方114广播新查看消息143,其包括来自其他区块链对等方的预定阈值的查看数据消息142,从而用作新查看的有效性的证据。
图2A示出了根据示例实施例的区块链结构配置200。参考图2A,区块链架构200可包括某些区块链组件,例如,一组区块链节点202。区块链节点202可包括一个或多个节点204-210(这四个节点仅通过示例来描述)。这些节点参与多个活动,诸如区块链事务增加和验证过程(共识)。区块链节点204-210中的一个或多个可基于背书策略背书事务,并可为体系结构200中的所有区块链节点提供排序服务。区块链节点可发起区块链认证并设法写入存储在区块链层216中的区块链不可变账本,其副本也可存储在基础物理基础设施214上。区块链配置可包括一个或多个应用程序224,其链接到应用编程接口(API)222以访问和执行存储的程序/应用程序代码220(例如,链码、智能合约等),其可根据参与者所寻求的定制配置来创建,并且可维护其自己的状态、控制其自己的资产、以及接收外部信息。这可以被部署为事务,并且经由附加到分布式账本而被安装在所有区块链节点204-210上。
区块链基础或平台212可包括区块链数据、服务(例如,密码信任服务、虚拟执行环境等)的各层,并支持可用于接收和存储新的事务并提供对试图访问数据条目的审核器的访问的物理计算机基础设施。区块链层216可展示提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问接口。密码信任服务218可用于验证诸如资产交换事务等事务并保持信息私密。
图2A的区块链架构配置可经由区块链平台212所暴露的一个或多个接口以及所提供的服务来处理和执行程序/应用程序代码220。代码220可以控制区块链资产。例如,代码220可以存储和传送数据,并且可以由节点204-210执行,以智能合约和具有条件或其它代码元素的关联链码的形式服从于其执行。作为非限制性示例,可以创建智能合约以执行提醒、更新和/或服从改变、更新等的其他通知。智能合约本身可以用于识别与账本的授权和访问要求以及使用相关联的规则。例如,智能合约(或执行智能合约的逻辑的链码)可以读取区块链数据226,其可以由包括在区块链层216中的一个或多个处理实体(例如,虚拟机)处理以生成包括要被写入区块链的数据的结果228。物理基础设施214可以用于检索本文所述的任何数据或信息。
智能合约可以经由高级应用程序和编程语言来创建,并且然后被写入区块链中的区块。智能合约可以包括向区块链(例如,区块链对等方的分布式网络)注册、存储和/或复制的可执行代码。事务是智能合约代码的执行,其可以响应于与智能合约相关联的条件被满足而被执行。智能合约的执行可以触发对数字区块链账本状态的可信修改。由智能合约执行引起的对区块链账本的修改可以通过一个或多个共识协议在整个区块链对等方的分布式网络中自动复制。
智能合约可以以键-值对的格式将数据写入区块链。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用它们。智能合约代码可以将各种逻辑操作的输出写入区块链内的一个或多个区块中。该代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入到区块链的数据可以是公共的和/或可以被加密并被维护为私有的。由智能合约使用/生成的临时数据由所供应的执行环境保持在存储器中,然后一旦标识了区块链所需的数据就被删除。
链码可以包括智能合约的代码解释(例如,逻辑)。例如,链码可以包括智能合约中的逻辑的封装和可部署版本。如这里所述,链码可以是部署在计算网络上的程序代码,其中它在共识过程期间由链式验证器一起执行和验证。链码可以接收哈希,并从区块链中检索与通过使用先前存储的特征提取器创建的数据模板相关联的哈希。如果哈希标识符的哈希与从所存储的标识符模板数据创建的哈希匹配,则链码向所请求的服务发送授权密钥。链码可以向区块链写入与密码细节相关联的数据。
图2B示出了根据一示例实施例的区块链的节点之间的区块链事务流250的示例。参考图2B,事务流可包括客户端节点260向背书对等方节点281发送事务建议291。背书对等方281可以验证客户端签名并执行链码功能以发起事务。输出可以包括链码结果、在链码中读取的一组键/值版本(读取集)以及在链码中写入的一组键/值(写入集)。这里,背书对等方281可以确定是否背书该事务建议。如果批准,则将建议响应292连同背书签名一起发送回客户机260。客户机260将背书组装成事务有效载荷293,并将其广播到排序服务节点284。然后,排序服务节点284将排序的事务作为区块在通道上传递给所有对等方281-283。在提交到区块链之前,每个对等方281-283可以验证事务。例如,对等方可以检查背书策略以确保指定对等方的正确分配已经签署了结果并对照事务有效载荷293来认证签名。
再次参考图2B,客户端节点通过构造请求并向作为背书者的对等方节点281发送请求来发起事务291。客户端260可以包括利用支持软件开发工具包(SDK)的应用,其利用可用的API来生成事务建议。该建议是请求调用链码功能,以便可以将数据读取和/或写入到账本(即,写入用于资产的新的键值对)。SDK可以用作填补将事务建议封装为适当的架构化格式(例如,远程过程调用(RPC)上的协议缓冲区),并采用客户端的密码证书来产生事务建议的唯一签名。
作为响应,背书对等方节点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。可以验证区块内的数据部分以确保背书策略被满足并且确保自从读取集由事务执行生成以来不存在对读取集变量的账本状态的改变。此外,在步骤295中,每个对等方节点281-283将区块附加到通道的链上,并且对于每个有效事务,写入集被提交到当前状态数据库。可以发出事件,以通知客户机应用程序该事务(调用)已经被不可变地附加到链,以及通知该事务是有效还是无效。
图3A示出了许可的区块链网络300的示例,其特征在于分布式、分散式对等结构。在该示例中,区块链用户302可向许可的区块链304发起事务。在该示例中,事务可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用程序、直接通过API等来发出。网络可以提供对诸如审核员的调节器306的访问。区块链网络运营商308管理成员许可,诸如将调节器306注册为“审核员”并且将区块链用户302注册为“客户端”。审核员可以被限制为仅查询账本,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者310可以编写链码和客户端应用程序。区块链开发者310可通过接口直接将链码部署到网络。为了在链码中包括来自传统数据源312的凭证,开发者310可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等方节点314连接到许可的区块链304。在进行任何事务之前,对等方节点314从管理用户角色和许可的证书授权机构316检索用户的登记和事务证书。在一些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链304上交易。同时,可能需要试图利用链码的用户验证他们在传统数据源312上的凭证。为了确认用户的授权,链码可以通过传统的处理平台318使用带外连接到该数据。
图3B示出了许可的区块链网络320的另一示例,其特征在于分布式、分散式对等结构。在该示例中,区块链用户322可向许可的区块链324提交事务。在该示例中,事务可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用程序、直接通过API等来发出。网络可以提供对诸如审核员的调节器326的访问。区块链网络运营商328管理成员许可,诸如将调节器326登记为“审核员”并且将区块链用户322登记为“客户端”。审核员可以被限制为仅查询账本,而客户端可以被授权部署、调用和查询某些类型的链码。
区块链开发者330编写链码和客户端应用。区块链开发器330可通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的凭证,开发者330可使用带外连接来访问数据。在该示例中,区块链用户322通过对等方节点334连接到网络。在进行任何事务之前,对等方节点334从证书管理机构336检索用户的登记和事务证书。在一些情况下,区块链用户必须拥有这些数字证书以便在许可的区块链324上交易。同时,可能需要试图使用链码的用户验证他们在传统数据源332上的证书。为了确认用户的授权,链码可以通过传统的处理平台338使用带外连接到该数据。
在一些实施方式中,本文的区块链可以是无许可的区块链。与需要允许加入的许可的区块链相反,任何人都可以加入无许可的区块链。例如,为了加入无许可区块链,用户可以通过提交事务并因此向账本添加条目来创建个人地址并开始与网络交互。另外,所有各方都可以选择在系统上运行节点并采用挖掘协议来帮助验证事务。
图3C示出了由包括多个节点354的无许可区块链352处理事务的过程350。发送者356期望经由无许可区块链352向接收者358发送支付或一些其他形式的价值(例如,契约、医疗记录、合同、货物、服务、或能够被封装在数字记录中的任何其他资产)。在一个实施例中,发送方设备356和接收方设备358中的每一个可以具有提供用户界面控制和事务参数显示的数字钱包(与区块链352相关联)。作为响应,事务在整个区块链352中被广播到节点354。取决于区块链352的网络参数,节点基于由无许可区块链352的创建者建立的规则(其可以是预定义的或动态分配的)来验证360事务。例如,这可以包括验证所涉及各方的身份等。可以立即验证事务,或者可以将其与其事务一起放入队列中,并且节点354基于一组网络规则来确定事务是否有效。
在结构362中,有效事务被形成为区块并用锁(哈希)来密封。该过程可以通过挖掘节点354中的节点来执行。挖掘节点可利用专用于挖掘和创建无许可区块链352的区块的附加软件。每个区块可以由使用网络商定的算法创建的哈希(例如,256位的数字等)来标识。每个区块可以包括报头、指向链中先前区块报头的哈希的指针或引用、以及一组有效事务。对前一区块哈希的引用与安全独立区块链的创建相关联。
在区块可被添加到区块链之前,必须验证这些区块。对无许可区块链352的验证可包括作为从区块报头导出的谜题的解的工作证明(PoW)。尽管在图3C的示例中未示出,但是用于验证区块的另一过程是标桩证明(proof of stake)。与工作证明不同,其中算法奖励解决数学问题的挖掘器,利用标桩证明,根据其财富以确定性方式选择新区块的创建者,也被定义为“标桩”。然后,由所选择/挑选的节点执行类似的证明。
通过挖掘364,节点试图通过对一个变量进行递增改变来求解该区块,直到该解满足网络范围的目标。这创建了PoW,从而确保正确的应答。换句话说,潜在的解决方案必须证明在解决问题时计算资源被耗尽。在某些类型的无许可区块链中,挖掘器可因正确挖掘区块而被奖励价值(例如,硬币等)。
这里,除了区块链接之外,PoW过程使得区块链的修改极其困难,因为攻击者必须修改所有后续区块以便接受一个区块的修改。此外,随着新的区块被挖掘,修改区块的难度增加,并且后续区块的数量增加。通过分布366,成功验证的区块通过无许可区块链352分布,并且所有节点354将区块添加到多数链,其是无许可区块链352的可审计账本。此外,由发送者356提交的事务中的值被存放或以其他方式转移到接收者设备358的数字钱包。
图4A示出了根据示例实施例的用于区块链共识的准备消息410和提交消息420的格式。例如,准备消息410和提交消息420可以用于替换图1B中所示的pBFT共识过程100B中的传统准备和提交消息。参考图4A,准备消息410可包括表示下一主对等方(例如,来自预定义列表等)的查看编号412,以及表示要添加的区块链中的下一区块的区块编号的序列号413。例如,如果区块链上最近存储的区块是区块#15,则序列号413将存储表示区块#16是要添加的下一个区块的值16。
根据各种实施例,准备消息410还可包括要被添加到区块链的最新建议411的哈希。相关技术的准备消息不包括最新建议的哈希。这里,最新建议411可表示要被添加到区块链并处于区块链对等方之间的共识过程中的事务内容/数据块。例如,事务建议411可包括作为要被添加到区块链账本的区块链事务的结果而要被更新读取/写入的键-值对。通过哈希最新建议411,准备消息410的大小保持较小,同时仍然提供处于被更新(进行中)的过程中的区块链账本的当前状态的证据。
准备消息410还包括创建准备消息410的区块链对等方的签名414。签名414是在最近建议411、查看编号412和序列号413的哈希之上。因此,签名414验证区块链对等方具有区块链的以下状态。如以下进一步解释的,准备消息410还包括哈希谜题415。
在接收到足够的准备消息410之后,区块链对等方可创建并发送提交消息420。提交消息包括要被添加到区块链账本的区块链建议421的摘要、表示下一主对等方(例如,来自预定义列表等)的查看编号422、以及表示要被添加的区块链中的下一区块的区块编号的序列号423。这里,查看编号422和序列号423对应于准备消息410中的查看编号412和序列号413。提交消息420还包括对在准备消息410内提供的哈希谜题415的解424。
当区块链对等方收集到足够的提交消息420时,区块链对等方可更新区块链。例如,当从组中的法定数量的区块链对等方接收到提交消息420时,执行区块链的更新(例如,由摘要421标识的)。在该示例中,对区块链对等方所使用的区块链更新的证明是基于收集的提交消息和相应的准备消息的,所述准备消息包括证明了区块链的状态改变的区块链对等方的签名。
在示例实施例中,哈希谜题415可以用于替换提交消息420上的签名。每个发送区块链对等方发送准备消息410,还添加其签名414。
在区块链共识中,系统需要一种验证区块链对等方也已发送提交消息420的方式。通常,这是通过对提交消息进行签名来完成的。然而,发送区块链对等方已经将签名414添加到准备消息。因此,签署提交消息420不是那么安全,因为它再次暴露签名。相反,发送区块链对等方可用签名414签署准备消息410,并且还添加哈希谜题415,诸如y=Hash(x),其中‘x’是随机秘密。
然后,发送区块链对等方可向提交消息420内的哈希谜题415(其中,解=X)揭示解424。为了验证哈希谜题415,接收区块链对等方哈希在来自发送区块链对等方的提交消息420中提供的解424,以确定它是否在准备消息410中达到哈希谜题415的相同值。如果解424的哈希版本与哈希谜题415相同,则接收区块链对等方知道相同发送区块链对等方发送了提交消息420和准备消息410。
通过修改准备消息410以包括标识区块链状态的进行中改变的最新建议序列411,并且还包括发送区块链对等方的签名414,可如图4B的示例中构造的新查看改变消息430。参考图4B,查看改变消息430包括对块链状态的进行中改变的哈希建议431。哈希建议431被用于节省表示对区块链的状态改变所需的数据量。这里,哈希建议431可以包括在当前主对等方经历超时/故障之前处于被添加到区块链账本的过程中的内容的区块/事务的哈希。查看改变消息430还包括元数据432,其具有关于区块链状态的信息,包括查看编号(下一个主对等方)、序列号(链中的下一个区块)等。
另外,查看改变消息432还包括在准备阶段期间从准备消息410收集的区块链对等方的签名433、434和435。签名433、434和435对应于准备消息410中的签名414。因此,查看改变消息430可经由签名433、434和435提供经由哈希建议431的对区块链的进行中改变的证明、经由元数据432的区块链的当前状态、以及对哈希建议431和状态432达成一致的区块链对等方的数目。响应于检测到当前主对等方442有故障,查看改变消息432可由图4C所示的组中的每个区块链对等方(例如,区块链对等方444、446和448中的任一个)而构建。例如,响应于对来自客户机450的向区块链账本添加数据的请求超时来检测故障主对等方442。在这种情况下,超时可能发生在正在生成新数据的过程中的某点,但是在新数据被添加到区块链之前。
如图4C的过程400C中进一步所示,基于元数据432与查看改变消息430一起选择新主对等方。这里,新的主对等方被标识为区块链对等方444。因此,后续对等方446和448生成并且向新主对等方444发送查看改变消息432,请求改变区块链的查看。当新主对等方444从区块链对等方的预定阈值(例如,2f+1)接收到查看改变消息430时,新主对等方444可以基于包括在查看改变消息中的哈希建议431来验证对区块链账本的进行中改变。因此,新主对等方444仅需要一个查看数据消息449来验证区块链的最新状态。
在该示例中,查看数据消息449包括区块链的检查点。如果查看数据消息449中的检查点匹配法定数量的查看改变消息中的哈希建议431,则新的主对等方444可以确保区块链对等方不在区块链“后面”并且处于区块链的当前/最近改变。因此,新主对等方444可以向剩余的区块链对等方442、446和448发送新查看消息,通知它们查看已经被改变到新主对等方444。因此,新主对等方444不需要等待2f+1查看数据消息,而是仅需要等待一个查看数据消息449来验证区块链的状态。
简而言之,在收集了2f+1查看改变消息430之后,新主对等方444知道来自哈希建议431和元数据432的最新建议序列是什么。一些对等方可能在后面,并且可能是向新主对等方发送查看数据消息的第一个对等方。新主对等方444在其可以继续之前必须等待来自更新的后续对等方的查看数据消息。
在这里的示例中,当足够的后续对等方已经从其他后续对等方接收到2f+1准备消息时,新主对等方仅需要等待一个查看数据消息。即,如果2f+1个在后对等方已经接收到具有最新建议哈希和后续对等方的签名的2f+1个准备消息,则查看改变消息可以用足够的改变证明来构造。然而,如果没有足够的后续对等方接收到准备消息(即,小于2f+1),则没有足够的关于正在进行中的最近哈希建议的证明。因此,新主对等方必须等待2f+1查看数据消息,如图1C中所示的过程100C中那样。
图5A示出了根据示例实施例的基于查看改变消息执行查看改变的方法500。作为非限制性示例,方法500可由在区块链对等方等上运行的程序等来执行。参考图5A,在502,该方法可包括接收查看改变消息,其请求从区块链的先前主对等方到主对等方的查看改变。例如,查看改变消息可从区块链网络内的后续对等方接收。
在504,该方法可以包括由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中。例如,区块链状态改变可包括存储在要被添加到区块链的数据块内的区块链事务。事务可以包括更新、删除、添加等区块链的值的键值对,并且其被存储在区块链账本的状态数据库中。
在506,方法可包括基于接收的查看数据消息验证区块链状态的改变对应于区块链的最近改变。例如,区块链的状态改变可从接收自后续对等方的查看数据消息中被标识,并且查看数据消息包括其中具有对区块链进行中改变的区块链的状态。在508,该方法可包括向其他后续对等方发送新查看消息,该消息包括区块链状态的进行中改变。例如,发送可以包括响应于仅接收到一个查看数据消息而发送新查看消息。
在一些实施例中,对区块链状态的进行中改变可包括要提交的建议数据块。在一些实施例中,所述识别还可以包括验证已经从预定阈值的后续对等方接收到查看改变消息。在一些实施例中,对于每个查看改变消息,元数据可以包括下一查看编号和区块链的哈希改变。在一些实施例中,查看数据消息可以包括由主对等方广播并由后续对等方接收的多个准备消息。在一些实施例中,验证可以包括验证区块链的状态的进行中改变被包括在查看数据消息内存储的预定数量的准备消息中。
在一些实施例中,进行中改变可以是对块链状态的改变,该改变尚未被提交给接收查看改变和查看数据消息的对等方。然而,在某些情况下,改变可能已经被提交。通过收集标识进行中改变的消息,对等方可确保当已经提交进行中改变的区块链对等方不可用时不同的改变不被提交给区块链。
图5B示出了根据示例实施例的生成查看改变消息的方法510。例如,方法510可由在区块链对等方上运行的程序等来执行。参考图5B,在512中,该方法可包括确定区块链的当前主对等方已变为故障对等方。例如,区块链对等方可以在区块链网络的多个区块链对等方之间执行的共识过程期间检测到当前主对等方已经超时等。
在514,该方法可包括由当前主对等方标识区块链的状态改变正在进行中。例如,对等方可能已经从当前主对等方接收到预准备消息,该消息包括其中的区块链状态的进行中改变。在516,该方法可包括生成查看改变消息,该查看改变消息包括下一查看编号和对区块链状态的进行中改变的哈希。此外,在518,该方法可包括将查看改变消息传送给新主对等方。
在一些实施例中,所述方法还可包括在查看改变消息内存储区块链的其他后续对等方的签名,所述签名对所述区块链状态的进行中改变达成一致。在一些实施例中,在拜占庭容错(BFT)共识的准备阶段期间,收集区块链状态的进行中改变和签名。例如,区块链状态的进行中改变包括要被添加到区块链的新区块。
图5C示出了根据示例实施例的生成准备消息的方法520。参考图5C,在522,该方法可包括从主对等方接收包括要被添加到区块链的建议数据的预准备消息。在524,该方法可包括生成准备消息,该准备消息包括要被添加到区块链的建议数据的哈希和共识对等方的签名。在526,该方法可包括将共识对等方的哈希谜题添加到准备消息。在528,该方法可包括将具有哈希谜题的准备消息发送到区块链的多个其它共识对等方。
在一些实施例中,该方法还可包括基于从其他共识对等方接收到的准备消息来确定预定阈值的其他共识对等方同意将建议数据添加到区块链中。在一些实施例中,该方法还可包括生成包括对添加到准备消息的哈希谜题的解的提交消息,并且将提交消息发送到多个其它共识对等方。在一些实施例中,提交消息不包括共识对等方的签名。在一些实施例中,该方法可以包括经由预定义秘密值的哈希来生成哈希谜题。在一些实施例中,该方法还可以包括从其他共识对等方接收准备消息,其中所接收的准备消息包括由其他相应共识对等方添加的哈希谜题。
图5D示出了根据示例实施例的生成查看数据消息的方法530。参考图5D,在532,方法可包括接收查看改变消息,其包括下一查看值和对区块链状态的进行中改变的哈希。响应于接收到查看改变消息的预定阈值,在534中,该方法可包括生成查看数据消息,该查看数据消息包括来自具有对区块链状态的进行中改变的证据的其他后续对等方的签名的准备消息。在536,该方法可包括向主对等方发送所生成的查看数据消息,该查看数据消息包括签名的准备消息。
在一些实施例中,该方法还可包括在拜占庭容错(BFT)共识的准备阶段期间收集签名的准备消息。在一些实施例中,签名的准备消息可包括元数据,该元数据包括对区块链状态的进行中改变的哈希和新主对等方的查看编号。在一些实施例中,签名的准备消息还包括由其它后续对等方添加的哈希谜题。在一些实施例中,该方法还包括在主对等方故障之前从主对等方接收区块链状态的进行中改变。
图6A示出了根据示例实施例的包括被配置为执行各种操作的物理基础设施610的示例系统600。参考图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写入或读取的输出或写入信息。模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
图6C图示了根据示例实施例的被配置成利用契约方之间的智能合约配置和被配置成在区块链上实施智能合约条款的中介服务器的示例系统。参考图6C,配置650可以表示由明确标识一个或多个用户设备652和/或656的智能合约630驱动的通信会话、资产转移会话或过程或规程。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由作为智能合约事务各方的实体652和656中的一个或多个进行数字签名。智能合约执行的结果可以作为区块链事务被写入区块链620。智能合约630驻留在区块链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图示了根据示例实施例的新区块被添加到分布式账本720的过程700,并且图7B图示了根据示例实施例的用于区块链的新数据块结构730的内容。参照图7A,客户端(未示出)可以向区块链节点711、712和/或713提交事务。客户端可以是从任何源接收的指令,以在区块链720上制定活动。作为示例,客户端可以是代表请求者(例如设备、人或实体)行动以提议对区块链的事务的应用。多个区块链对等方(例如,区块链节点711、712和713)可维护区块链网络的状态和分布式账本720的副本。在区块链网络中可以存在不同类型的区块链节点/对等方,包括对模拟并认可由客户机提出的事务的对等方进行背书,以及对验证认可、确认事务并将事务提交给分布式帐本720的对等方进行提交。在该示例中,区块链节点711、712和713可以执行背书方节点、提交者节点或两者的角色。
分布式账本720包括以区块存储不可改变的有序记录的区块链,以及维护区块链722的当前状态的状态数据库724(当前世界状态)。每个通道可以存在一个分布式账本720,并且每个对等方为其成员的每个通道维护其自己的分布式账本720的副本。区块链722是事务日志,其被构造为哈希链接的区块,其中每个区块包含N个事务的序列。区块可以包括诸如图7B中所示的各种组件。可以通过在当前区块的区块报头内添加先前区块报头的哈希来产生区块的链接(图7A中的箭头所示)。这样,区块链722上的所有事务被排序并被密码地链接在一起,从而防止篡改区块链数据而不破坏哈希链接。此外,由于链接,区块链722中的最后一个区块表示在其之前到来的每个事务。区块链722可以存储在对等文件系统(本地或附加存储)上,对等文件系统支持仅附加区块链工作负荷。
区块链722和分布式账本722的当前状态可以被存储在状态数据库724中。这里,当前状态数据表示区块链722的链事务日志中曾经包括的所有密钥的最新值。链码调用针对状态数据库724中的当前状态执行事务。为了使这些链码交互非常有效,所有关键字的最新值都存储在状态数据库724中。状态数据库724可以包括区块链722的事务日志中的索引查看,因此,可以在任何时间从链中重新生成索引查看。在接受事务之前,状态数据库724可以在对等方启动时自动恢复(或者如果需要的话生成)。
背书节点从客户机接收事务并基于模拟结果背书该事务。背书节点持有模拟事务建议的智能合约。当背书节点背书事务时,背书节点创建事务背书,该事务背书是从背书节点到客户端应用程序的指示所模拟的事务的背书的签名响应。背书事务的方法取决于可在链码内指定的背书策略。背书策略的一个例子是“大多数背书对等方必须背书该事务”。不同通道可以具有不同的背书策略。背书事务由客户机应用程序转发给排序服务710。
排序服务710接受背书的事务,将它们排序成块,并将这些块传递给提交对等方。例如,当达到事务的阈值、定时器超时或另一条件时,排序服务710可以发起新的阻止。在图7A的示例中,区块链节点712是已经接收到用于存储在区块链720上的新数据块730的提交对等方。区块链中的第一区块可以被称为起源区块,起源区块包括关于区块链、其成员、存储在其中的数据等的信息。
排序服务710可以由排序节点集群组成。排序服务710不处理事务、智能合约或维护共享账本。相反,排序服务710可以接受背书的事务并指定将这些事务提交给分布式账本720的顺序。区块链网络的体系结构可被设计成使得“排序”的特定实现(例如,Solo、Kafka、BFT等)变为可插式组件。
以一致的顺序将事务写入分布式帐本720。事务的顺序被建立以确保对状态数据库724的更新在被提交给网络时是有效的。与通过密码难题的求解或挖掘来进行排序的加密货币区块链系统(例如Bitcoin等)不同,在该示例中,分布式帐本720的各方可以选择最适合该网络的排序机制。
当排序服务710初始化新数据块730时,新数据块730可被广播到提交对等方(例如,区块链节点711、712和713)。作为响应,每个提交对等方通过检查以确保读集合和写集合仍然匹配状态数据库724中的当前世界状态,来验证新数据块730内的事务。具体地,提交对等方可以确定在背书者模拟事务时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等方确认事务时,事务被写入分布式账本720上的区块链722,并且用来自读写集的写数据更新状态数据库724。如果事务失败,即,如果提交对等方发现读-写集合不匹配状态数据库724中的当前世界状态,则排序成区块的事务将仍然包括在该区块中,但它将被标记为无效,并且状态数据库724将不被更新。
参考图7B,存储在分布式账本720的区块链722上的新数据块730(也称为数据块)可以包括多个数据段,诸如区块报头740、区块数据750(区块数据部分)和区块元数据760。应当理解,图7B中所示的各种所示块及其内容,例如新数据块730及其内容,仅仅是示例,而不意味着限制示例实施例的范围。在常规块中,数据段可将N个事务(例如,1、10、100、500、1000、2000、3000等)的事务信息存储在区块数据750内。
新数据块730可包括到区块报头740内的先前区块(例如,图7A中的区块链722上的)的链接。具体地,区块报头740可包括先前区块报头的哈希。区块报头740还可以包括唯一的区块编号、新数据块730的区块数据750的哈希等。新数据块730的区块编号可以是唯一的,并且以各种顺序分配,诸如从零开始的递增/顺序。
区块元数据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-Damagard算法、HAIFA算法、Merkle-tree算法、基于随机数(nonce-based)的算法和非抗冲突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可以等于原始文件,或者可以是起源区块中原始文件的修改版本,这取决于例如所执行的处理类型。所执行的处理类型可在块与块之间变化。处理可以涉及例如对先前区块中的文件的任何修改,诸如编辑信息或以其他方式改变文件的内容、从文件中取走信息、或向文件添加或附加信息。
附加地或替换地,处理可仅涉及从先前区块复制文件、改变文件的存储位置、从一个或多个先前区块分析文件、将文件从一个存储或存储器位置移动到另一个存储或存储器位置、或相对于区块链的文件和/或其相关联的元数据执行动作。涉及分析文件的处理可以包括例如附加、包括或者关联各种分析、统计或与文件相关联的其他信息。
其它区块中其它区块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是基于先前讨论的任何类型的信息计算的哈希值或其他值。例如,对于任何给定区块i,该区块的值可以被更新以反映针对该区块执行的处理,例如,新的哈希值、新的存储位置、相关联的文件的新的元数据、控制或访问的传送、标识符、或要添加的其他动作或信息。尽管每个区块中的值被示为与文件和报头的数据的元数据分开,但是在另一实施例中,该值可以部分或全部基于该元数据。
一旦形成了区块链770,在任何时间点,通过向区块链查询跨区块的值的事务历史,可以获得文件的不可改变的监管链。该查询或跟踪过程可以开始于对当前最多包括的区块(例如,最后(第N)区块)的值进行解密,然后继续对其他区块的值进行解密,直到到达起源区块并且恢复原始文件为止。解密也可涉及解密每个区块中的报头和文件以及相关联的元数据。
基于在每个区块中发生的加密类型来执行解密。这可以涉及私钥、公钥或公钥-私钥对的使用。例如,当使用非对称加密时,区块链参与者或网络中的处理器可使用预定算法生成公钥和私钥对。公钥和私钥通过某种数学关系彼此相关联。公钥可以被公开分发以用作从其他用户接收消息的地址,例如IP地址或家庭地址。私钥保持秘密并且用于对发送到其他区块链参与者的消息进行数字签名。签名被包括在消息中,以便接收者可以使用发送者的公钥来验证。这样,接收者可以确信只有发送者可以发送该消息。
生成密钥对可类似于在区块链上创建帐户,但不必实际上在任何地方注册。而且,在区块链上执行的每个事务由发送者使用其私钥来数字地签名。该签名确保只有账户的所有者能够跟踪和处理(如果在由智能合约确定的许可范围内)区块链的文件。
图8A和8B示出了可结合和用于本文的区块链的使用情况的另外的示例。具体地,图8A示出了存储机器学习(人工智能)数据的区块链810的示例800。机器学习依赖于大量的历史数据(或训练数据)来构建用于对新数据进行准确预测的预测模型。机器学习软件(例如,神经网络等)通常可以筛选数百万条记录以找出非直观模式。
在图8A的示例中,主机平台820构建和部署用于资产830的预测监控的机器学习模型。这里,主机平台820可以是云平台、工业服务器、web服务器、个人计算机、用户设备等。资产830可以是任何类型的资产(例如,机器或设备等),诸如飞机、机车、涡轮机、医疗机械和设备、油气设备、船、舰、车辆等。作为另一个例子,资产830可以是非有形资产,例如股票、货币、数字硬币、保险等。
区块链810可以用于显著地改进机器学习模型的基于经训练的机器学习模型的训练过程802和预测过程804两者。例如,在802中,历史数据可以由资产830本身(或通过媒介,未示出)存储在区块链810上,而不是要求数据科学家/工程师或其他用户来收集数据。这可显著减少主机平台820在执行预测模型训练时所需的收集时间。例如,使用智能合约,数据可以直接且可靠地从其起源地直接传递到区块链810。通过使用区块链810来确保所收集的数据的安全性和所有权,智能合约可以直接将数据从资产发送到使用该数据来构建机器学习模型的个体。这允许在资产830之间共享数据。
所收集的数据可基于共识机制存储在区块链810中。共识机制拉入(许可节点)以确保正被记录的数据被验证和准确。记录的数据是时间标记的、密码签名的和不可变的。因此,它是可审计的、透明的和安全的。在某些情况下(即,供应链、保健、物流等),添加直接写入区块链的IoT设备可以增加被记录的数据的频率和准确性。
此外,在所收集的数据上训练机器学习模型可以由主机平台820进行若干轮细化和测试。每轮可以基于附加数据或先前未被考虑以帮助扩展机器学习模型的知识的数据。在802中,不同的训练和测试步骤(以及与其相关联的数据)可由主机平台820存储在区块链810上。机器学习模型的每个细化(例如,变量、权重等的改变)可以被存储在区块链810上。这提供了模型如何被训练以及什么数据被用于训练模型的可验证的证明。此外,当主机平台820已经实现最终训练的模型时,所得模型可存储在区块链810上。
在已经训练了模型之后,可以将其部署到现场环境,在现场环境中,可以基于最终训练的机器学习模型的执行来进行预测/决策。例如,在804中,机器学习模型可以用于诸如飞机、风力涡轮机、保健机器等资产的基于条件的维护(CBM)。在该示例中,从资产830反馈的数据可以被输入机器学习模型,并且被用于进行事件预测,诸如故障事件、错误代码等。通过在主机平台820处执行机器学习模型所做出的确定可被存储在区块链810上以提供可审计/可验证的证明。作为一个非限制性示例,机器学习模型可以预测资产830的一部分的未来故障/失败,并且创建替换该部分的警报或通知。该决定背后的数据可由主机平台820存储在区块链810上。在一个实施例中,本文描述和/或描绘的特征和/或动作可以在区块链810上或相对于其发生。
区块链的新事务可被一起聚集到新的区块中并被添加到现有的哈希值。然后,对其进行加密,以创建用于新区块的新哈希。当对事务进行加密时,将其添加到下一个事务列表,等等。结果是每个都包含所有先前区块的哈希值的区块链。存储这些区块的计算机定期比较它们的哈希值以确保它们都一致。任何不同意的计算机都丢弃引起问题的记录。这种方法对于确保区块链的防篡改是有益的,但它不是完美的。
游戏该系统的一种方式是不诚实的用户改变他们喜爱的事务列表,但是保持哈希不变。这可以通过强力来完成,换句话说,通过改变记录、加密结果、以及查看哈希值是否相同来完成。如果不是,则反复地尝试直到找到匹配的哈希。区块链的安全性基于这样的信念,即普通计算机仅能在完全不切实际的时间尺度上,诸如宇宙年龄上执行这种强力攻击。相反,量子计算机快得多(快1000倍),因此造成大得多的威胁。
图8B示出了实现量子密钥分发(QKD)以防止量子计算攻击的量子安全区块链852的示例850。在该示例中,区块链用户可使用QKD验证彼此的身份。这使用诸如光子的量子粒子发送信息,窃听者在不破坏量子粒子的情况下不能复制该量子粒子。这样,发送者和接收者通过区块链可以确信彼此的身份。
在图8B的示例中,存在四个用户854、856、858和860。每对用户可以在他们之间共享密钥862(即,QKD)。由于在该示例中有四个节点,因此存在六对节点,并且因此使用六个不同的密钥862,包括QKDAB、QKDAC、QKDAD、QKDBC、QKDBD和QKDCD。每对可以通过使用诸如光子的量子粒子发送信息来创建QKD,窃听者在不破坏QKD的情况下不能复制QKD。这样,一对用户可以确信彼此的身份。
区块链852的操作基于两个过程:(i)事务的创建,以及(ii)聚集新事务的区块的构造。可以类似于传统的区块链网络创建新的事务。每个事务可以包含关于发送者、接收者、创建时间、要转移的金额(或价值)、证明发送者具有用于操作的资金的参考事务的列表等的信息。然后,将该事务记录发送到所有其它节点,在所有其它节点中,该事务记录被输入未确认事务池。这里,两方(即,854-860中的一对用户)通过提供他们的共享密钥862(QKD)来认证事务。该量子签名可以被附加到每个事务,使得极难篡改它。每个节点检查其关于区块链852的本地副本的条目,以验证每个事务具有足够的资金。然而,事务还没有被确认。
不是对区块执行传统的挖掘过程,而是可以使用广播协议以分散的方式创建区块。在预定的时间段(例如,几秒、几分钟、几小时等),网络可以将广播协议应用于任何未确认的事务,从而实现关于事务的正确版本的拜占庭协定(共识)。例如,每个节点可以拥有私有值(该特定节点的事务数据)。在第一轮中,节点向彼此发送它们的私有值。在随后的轮次中,节点传送它们在前一轮次中从其它节点接收的信息。这里,诚实节点能够在新的区块内创建完整的事务集。该新的区块可被添加到区块链852。在一个实施例中,本文描述和/或描绘的特征和/或动作可在区块链852上或相对于其发生。
图9示出了支持在此描述和/或描绘的示例实施例中的一个或多个的示例系统900。系统900包括计算机系统/服务器902,其可与许多其它通用或专用计算系统环境或配置一起操作。适合与计算机系统/服务器902一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型计算机系统、以及包括任何上述系统或设备的分布式云计算环境等。
计算机系统/服务器902可以在计算机系统可执行指令的一般上下文中描述,诸如由计算机系统执行的程序模块。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器902可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
如图9所示,云计算节点900中的计算机系统/服务器902以通用计算设备的形式示出。计算机系统/服务器902的组件可以包括但不限于一个或多个处理器或处理单元904、系统存储器906以及将包括系统存储器906在内的各种系统组件耦合到处理器904的总线。
总线表示若干类型的总线结构中的任何一种的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线体系结构中的任何一种的处理器或局部总线。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线。
计算机系统/服务器902通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器902访问的任何可用介质,并且它包括易失性和非易失性介质、可移动和不可移动介质。在一个实施例中,系统存储器906实现其它附图的流程图。系统存储器906可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(RAM)910和/或高速缓存912。计算机系统/服务器902还可以包括其它可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为示例,存储系统914可被提供用于从不可移动、非易失性磁介质(未示出且通常被称为“硬盘驱动器”)读取和向其写入。尽管未示出,但是可以提供用于从可移动、非易失性磁盘(例如,“软盘”)读取和向其写入的磁盘驱动器,以及用于从诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘读取或向其写入的光盘驱动器。在这种情况下,每个都可以通过一个或多个数据介质接口连接到总线。如下面将进一步描绘和描述的,存储器906可以包括至少一个程序产品,该程序产品具有一组(例如,至少一个)程序模块,该组程序模块被配置成执行本申请的各种实施例的功能。
作为示例而非限制,具有一组(至少一个)程序模块918的程序/实用程序916以及操作系统、一个或多个应用程序、其它程序模块和程序数据可被存储在存储器906中。操作系统、一个或多个应用程序、其它程序模块和程序数据或其某种组合中的每一个可包括联网环境的实现。程序模块918通常执行如本文所述的应用的各种实施例的功能和/或方法。
如本领域技术人员将理解的,本申请的各方面可以被实现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合软件和硬件方面的实施例的形式,其在这里可以被统称为“电路”、“模块”或“系统”。此外,本申请的各方面可以采取在其上包含计算机可读程序代码的一个或多个计算机可读介质中包含的计算机程序产品的形式。
计算机系统/服务器902还可以与一个或多个外部设备920通信,诸如键盘、定点设备、显示器922等;一个或多个设备,其使得用户能够与计算机系统/服务器902交互;和/或使计算机系统/服务器902能够与一个或多个其它计算设备通信的任何设备(例如,网卡、调制解调器等)。这种通信可以经由I/O接口924发生。此外,计算机系统/服务器902可以经由网络适配器926与诸如局域网(LAN)、通用广域网(WAN)和/或公共网络(例如,因特网)之类的一个或多个网络通信。如所描绘的,网络适配器926经由总线与计算机系统/服务器902的其他组件通信。应当理解,尽管未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器902结合使用。实例包括但不限于:微码、设备驱动程序、冗余处理单元、外部磁盘驱动器阵列、RAID系统、磁带驱动器和数据档案存储系统等。
尽管在附图中示出并在前述详细描述中描述了系统、方法和非瞬态计算机可读介质中的至少一个的示例性实施例,但是将理解,本申请不限于所公开的实施例,而是能够进行如所附权利要求书所阐述和定义的众多重新布置、修改和替换。例如,各附图的系统的能力可由本文描述的模块或组件中的一个或多个或以分布式架构来执行,并且可包括发射机、接收机或两者的配对。例如,由各个模块执行的所有或部分功能可以由这些模块中的一个或多个执行。此外,本文描述的功能可以在各种时间执行,并且可以与模块或组件内部或外部的各种事件相关。而且,在各种模块之间发送的信息可以经由以下中的至少一个在模块之间发送:数据网络、因特网、语音网络、因特网协议网络、无线设备、有线设备和/或经由多个协议。而且,由任何模块发送或接收的消息可以直接和/或经由一个或多个其他模块发送或接收。
本领域技术人员将理解,“系统”可以被实现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其他合适的计算设备、或设备的组合。将上述功能呈现为由“系统”执行不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式来实现。
应当注意,本说明书中描述的一些系统特征已经被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以被实现为包括定制超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管或其他分立组件的现成半导体的硬件电路。模块还可以在可编程硬件设备中实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。
模块还可以至少部分地以由各种类型的处理器执行的软件来实现。可执行代码的标识单元例如可以包括计算机指令的一个或多个物理或逻辑块,其例如可以被组织为对象、过程或函数。然而,标识模块的可执行代码不需要物理地位于一起,而是可以包括存储在不同位置的不同指令,当这些指令逻辑地结合在一起时,包括该模块并实现该模块的规定目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其他这样的介质。
实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在若干不同的代码段上、在不同的程序之间、以及跨若干存储器设备。类似地,操作数据可以在模块内被标识和示出,并且可以以任何合适的形式被体现并且被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。
容易理解,如在本文附图中一般性描述和示出的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述不是要限制所要求保护的本申请的范围,而仅仅是本申请的所选实施例的代表。
本领域的普通技术人员将容易理解,可以用不同顺序的步骤和/或用配置不同于所公开的配置的硬件元件来实践以上内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说,某些修改、变化和替代构造将是显而易见的。
尽管已经描述了本申请的优选实施例,但是应当理解,所描述的实施例仅是说明性的,并且当考虑到其全部范围的等同物和修改(例如,协议、硬件设备、软件平台等)时,本申请的范围仅由所附权利要求来限定。
Claims (20)
1.一种装置,包括:
网络接口,其被配置为接收查看改变消息,所述查看改变消息请求从区块链的先前主对等方到主对等方的查看改变;以及
处理器,被配置为由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中,其中网络接口还被配置为向后续对等方发送包括区块链状态的进行中改变的新查看消息。
2.根据权利要求1所述的装置,其中网络接口被配置为响应于仅接收到一个查看数据消息而发送新查看消息。
3.根据权利要求1所述的装置,其中区块链状态的进行中改变包括建议的数据块。
4.根据权利要求1所述的装置,其中处理器还被配置为验证已经从预定阈值的后续对等方接收到的查看改变消息。
5.根据权利要求1所述的装置,其中,对于每个查看改变消息,元数据包括下一查看编号和区块链的哈希改变。
6.根据权利要求1所述的装置,其中查看数据消息包括由后续对等方从其他对等方接收的多个准备消息。
7.根据权利要求6所述的装置,其中处理器被配置为验证区块链状态的进行中改变被包括在存储在查看数据消息内的预定数量的签名的准备消息中。
8.根据权利要求1所述的装置,还包括:
识别当前主对等方正在进行的区块链状态改变,并且生成包括下一查看编码和区块链状态的进行中改变的哈希的查看改变消息。
9.根据权利要求8所述的装置,其中处理器还被配置为在查看改变消息内存储区块链的其他后续对等方的签名,所述签名对区块链状态的进行中改变达成一致。
10.如权利要求8所述的装置,其中在实用拜占庭容错(pBFT)共识的准备阶段内收集区块链状态的进行中改变和签名。
11.根据权利要求8所述的装置,其中处理器被配置为基于从所述当前主对等方接收的预准备消息来识别区块链状态的进行中改变。
12.根据权利要求1所述的装置,还包括:
网络接口还被配置为从主对等方接收包括要被添加到区块链的建议数据的预准备消息;以及
处理器还被配置为生成准备消息,所述准备消息包括要被添加到区块链的建议数据的哈希和共识对等方的签名,将共识对等方的哈希谜题添加到准备消息,以及将具有哈希谜题的所述准备消息传送到区块链的多个其他共识对等方。
13.根据权利要求12所述的装置,其中处理器还被配置为基于从其他共识对等方接收的准备消息来确定预定阈值的其他共识对等方同意要被添加到区块链的建议数据。
14.如权利要求12所述的装置,其中处理器被进一步配置成生成包括添加到准备消息的哈希谜题的解的提交消息,并将提交消息传送到所述多个其他共识对等方。
15.如权利要求12所述的装置,其中提交消息不包括共识对等方的签名。
16.根据权利要求12所述的装置,其中处理器被配置为经由预定义的秘密值的哈希来生成哈希谜题。
17.根据权利要求12所述的装置,其中处理器还被配置为从所述其他共有对等方接收准备消息,其中所接收的准备消息包括由其他相应共识对等方添加的哈希谜题。
18.一种主对等方的方法,包括:
接收请求从区块链的先前主对等方到主等方的查看改变消息;
由先前主对等方基于所接收的查看改变消息的元数据来识别区块链的状态改变正在进行中;
基于所接收的查看数据消息验证区块链的状态改变对应于区块链的最近改变;以及
向后续对等方发送新查看消息,所述新查看消息包括区块链状态的进行中改变。
19.根据权利要求18所述的方法,其中发送包括响应于仅接收到一个查看数据消息而发送新查看消息。
20.根据权利要求18所述的方法,其中区块链状态的进行中改变包括建议的数据块。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/851,537 US11250021B2 (en) | 2020-04-17 | 2020-04-17 | Faster view change for blockchain |
US16/851,537 | 2020-04-17 | ||
PCT/IB2021/053029 WO2021209890A1 (en) | 2020-04-17 | 2021-04-13 | Faster view change for blockchain |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115699054A true CN115699054A (zh) | 2023-02-03 |
Family
ID=78082226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180018928.0A Pending CN115699054A (zh) | 2020-04-17 | 2021-04-13 | 区块链的更快查看改变 |
Country Status (9)
Country | Link |
---|---|
US (3) | US11250021B2 (zh) |
JP (1) | JP2023520859A (zh) |
KR (1) | KR20220149702A (zh) |
CN (1) | CN115699054A (zh) |
CA (1) | CA3171999A1 (zh) |
DE (1) | DE112021000608T5 (zh) |
GB (1) | GB2610107A (zh) |
IL (1) | IL296314A (zh) |
WO (1) | WO2021209890A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713133B2 (en) * | 2018-06-11 | 2020-07-14 | Vmware, Inc. | Linear view-change BFT |
CN111526216B (zh) * | 2020-07-03 | 2020-09-22 | 支付宝(杭州)信息技术有限公司 | 联盟链中的共识方法和系统 |
US11080412B1 (en) | 2020-08-20 | 2021-08-03 | Spideroak, Inc. | Efficiently computing validity of a block chain |
CN114760198B (zh) * | 2022-01-17 | 2023-03-24 | 清华大学 | 一种基于区块链网络的共识方法、装置及系统 |
CN114466034B (zh) * | 2022-03-21 | 2022-09-02 | 北京航空航天大学 | 一种基于匿名主节点的区块链共识方法 |
CN114900529A (zh) * | 2022-06-09 | 2022-08-12 | 上海万向区块链股份公司 | 区块敲定方法及系统 |
CN114826592B (zh) * | 2022-06-22 | 2022-10-14 | 腾讯科技(深圳)有限公司 | 基于区块链的密钥生成方法、装置、电子设备和可读介质 |
CN117033146B (zh) * | 2023-10-10 | 2023-12-08 | 北京安天网络安全技术有限公司 | 指定共识合约执行进程的识别方法、装置、设备及介质 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711B (zh) | 2016-08-28 | 2019-04-30 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
US10565570B2 (en) | 2016-09-27 | 2020-02-18 | The Toronto-Dominion Bank | Processing network architecture with companion database |
US10713963B2 (en) | 2017-05-25 | 2020-07-14 | International Business Machines Corporation | Managing lifelong learner events on a blockchain |
US10761877B2 (en) | 2017-07-21 | 2020-09-01 | Intel Corporation | Apparatuses, methods, and systems for blockchain transaction acceleration |
US10887090B2 (en) * | 2017-09-22 | 2021-01-05 | Nec Corporation | Scalable byzantine fault-tolerant protocol with partial tee support |
CA2995772A1 (en) | 2018-02-21 | 2019-08-21 | Beijing Tiande Technologies Limited | A method of block building based on byzantine consensus via four rounds of communication |
CN110569395A (zh) | 2018-05-18 | 2019-12-13 | 北京天德科技有限公司 | 一种稳定可靠的区块链拜占庭共识流程设计方法 |
CN109246194B (zh) | 2018-08-13 | 2021-06-08 | 佛山市顺德区中山大学研究院 | 基于多领导节点的实用拜占庭容错区块链共识方法及系统 |
CN109167661B (zh) | 2018-09-27 | 2021-04-13 | 福建福链科技有限公司 | 一种应用于联盟链的拜占庭容错共识方法及终端 |
CN109246122A (zh) | 2018-09-29 | 2019-01-18 | 上海海事大学 | 一种基于谣言传播协议的拜占庭容错区块链生成方法 |
RU2724181C1 (ru) | 2018-11-07 | 2020-06-22 | Алибаба Груп Холдинг Лимитед | Упрощение консенсуса в цепочках блоков по принципу практичной отказоустойчивости на основе византийского соглашения и синхронизации узлов |
SG11201906834SA (en) * | 2018-12-13 | 2019-08-27 | Alibaba Group Holding Ltd | Achieving consensus among network nodes in a distributed system |
CN109981565B (zh) | 2019-01-29 | 2021-10-15 | 广州中国科学院软件应用技术研究所 | 基于Meta-BFT共识机制的区块链平台及实现方法 |
EP3701701A4 (en) * | 2019-06-05 | 2020-12-30 | Alibaba Group Holding Limited | CONSENSUS SYSTEM AND PROCESS |
CN110730204B (zh) * | 2019-09-05 | 2022-09-02 | 创新先进技术有限公司 | 区块链网络中删除节点的方法和区块链系统 |
US11411721B2 (en) * | 2019-09-27 | 2022-08-09 | Cypherium Blockchain Inc. | Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system |
-
2020
- 2020-04-17 US US16/851,537 patent/US11250021B2/en active Active
-
2021
- 2021-04-13 GB GB2217087.2A patent/GB2610107A/en active Pending
- 2021-04-13 KR KR1020227033104A patent/KR20220149702A/ko active Search and Examination
- 2021-04-13 CA CA3171999A patent/CA3171999A1/en active Pending
- 2021-04-13 IL IL296314A patent/IL296314A/en unknown
- 2021-04-13 JP JP2022557974A patent/JP2023520859A/ja active Pending
- 2021-04-13 WO PCT/IB2021/053029 patent/WO2021209890A1/en active Application Filing
- 2021-04-13 DE DE112021000608.8T patent/DE112021000608T5/de active Pending
- 2021-04-13 CN CN202180018928.0A patent/CN115699054A/zh active Pending
-
2022
- 2022-01-12 US US17/574,313 patent/US11775556B2/en active Active
-
2023
- 2023-08-26 US US18/456,481 patent/US20230409598A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220138225A1 (en) | 2022-05-05 |
GB2610107A (en) | 2023-02-22 |
KR20220149702A (ko) | 2022-11-08 |
GB202217087D0 (en) | 2022-12-28 |
IL296314A (en) | 2022-11-01 |
US11775556B2 (en) | 2023-10-03 |
US11250021B2 (en) | 2022-02-15 |
US20210326352A1 (en) | 2021-10-21 |
US20230409598A1 (en) | 2023-12-21 |
WO2021209890A1 (en) | 2021-10-21 |
AU2021254870A1 (en) | 2022-09-22 |
DE112021000608T5 (de) | 2022-12-01 |
CA3171999A1 (en) | 2021-10-21 |
JP2023520859A (ja) | 2023-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775556B2 (en) | Faster view change for blockchain | |
CN114365116A (zh) | 来自私有区块链的更新的链外通知 | |
US11251938B2 (en) | Blockchain verification using non-consecutive blocks | |
US11362826B2 (en) | Endorsement process for non-deterministic application | |
US20210232568A1 (en) | Index structure for blockchain ledger | |
CN115211093A (zh) | 数据对象的有效阈值存储 | |
US11580098B2 (en) | Multi-client transaction validation | |
CN111881109B (zh) | 数据库可合并分类账 | |
US11379472B2 (en) | Schema-based pruning of blockchain data | |
US11507535B2 (en) | Probabilistic verification of linked data | |
US11151123B2 (en) | Offline verification with document filter | |
US11343313B1 (en) | Fault tolerant periodic leader rotation for blockchain | |
CN114450708A (zh) | 基于现有链码的链码推荐 | |
CN115605868A (zh) | 跨网身份提供 | |
US11683185B2 (en) | Entity certification management | |
CN116361823A (zh) | 用于隐私保护的区块链的选择性审计处理 | |
US11314729B2 (en) | Multi-candidate data structure for transaction validation | |
AU2021254870B2 (en) | Faster view change for blockchain | |
US11249949B2 (en) | Batch processing | |
CN114128214B (zh) | 用于配置区块链的安全层 | |
US11856109B2 (en) | Entity certification management | |
US20230087602A1 (en) | Privacy-preserving state reference | |
US20210248272A1 (en) | Document verification | |
CN116529723A (zh) | Dlt网络的自动合并 | |
CN114128214A (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 |