用于经许可的区块链的随机节点选择的制作方法

文档序号:30498344发布日期:2022-06-22 12:23阅读:267来源:国知局
用于经许可的区块链的随机节点选择的制作方法

1.本技术总体上涉及将数据存储在区块链上,并且更具体地涉及从经许可的区块链中随机地选择对等节点子集以执行基于背书的区块链数据的过程。


背景技术:

2.集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。该位置通常是中央计算机,例如台式中央处理单元(cpu)、服务器cpu或大型计算机。在集中式数据库上存储的信息典型地可从多个不同点来访问。多个用户或客户端工作站可以例如基于客户端/服务器配置而在集中式数据库上同时工作。集中式数据库由于其单个位置而易于管理、维护和控制,尤其是出于安全目的。在集中式数据库内,数据冗余被最小化,因为所有数据的单个存储位置也意味着给定数据集仅具有一个主要记录。
3.然而,集中式数据库面临显著的缺点。例如,集中式数据库具有单个故障点。具体地,如果没有容错考虑并且硬件故障发生(例如,硬件、固件和/或软件故障),则数据库内的所有数据丢失并且所有用户的工作被中断。此外,集中式数据库高度依赖于网络连接性。结果,连接越慢,每个数据库访问所需的时间量增加。另一个缺点是当集中式数据库由于单个位置而经历高流量时发生瓶颈。此外,集中式数据库提供对数据的有限访问,因为数据库维护数据的仅一个副本。因此,多个设备不能同时访问同一条数据而不产生重写所存储数据的重大问题或风险。此外,因为数据库存储系统具有最小数据冗余至没有数据冗余,所以除了通过手动操作从备份存储取得之外,意外地丢失的数据非常难以取得。
4.一种类型的区块链是遵循执行、排序和验证范例的经许可的区块链。在此环境中,由对等方(背书方节点)子集推测性地执行客户端交易,对等方子集将模拟执行的结果发送回客户端,客户端使用这些结果作为对交易提议的输入以存储在区块链上。交易可以被排序,然后被添加到由对等节点提交到区块链分类账的区块。此处,提交节点可以验证背书方节点的签名并且还再次执行交易。随着区块链网络的扩展,背书交易所需的节点的数目也可能增长。结果是为了增加安全性而在性能上折衷。具体地,背书所需的更多节点/签名意味着更安全的交易。然而,这也意味着存在要在提交时验证的更多签名。因此,所需要的是克服这些缺点和限制的解决方案。


技术实现要素:

5.一个示例实施例提供了一种系统,所述系统包括处理器和网络接口中的一个或多个,所述处理器被配置为进行以下操作中的一个或多个:取得在区块链上存储的数据区块的区块散列;基于所述区块散列的值,从所述区块链的区块链网络中随机地确定要作为背书方的对等组织子集;以及从客户端向随机确定的背书方组织子集发送区块链存储请求;以及所述网络接口被配置为:将来自所述随机确定的背书方组织子集的模拟响应收集到存储请求提议中。
6.另一个示例实施例提供一种方法,该方法包括以下操作中的一个或多个:取得在
区块链上存储的数据区块的区块散列;基于所述区块散列的值,从所述区块链的区块链网络中随机地确定要作为背书方的对等组织子集;以及从客户端向随机确定的背书方对等组织子集发送区块链存储请求;以及将来自所述随机确定的背书方对等组织子集的模拟响应收集到存储请求提议中。
7.另一个示例实施例提供一种包括指令的非暂时性计算机可读介质,所述指令在由处理器读取时使得所述处理器执行以下中的一项或多项:取得在区块链上存储的数据区块的区块散列;基于所述区块散列的值,从所述区块链的区块链网络中随机地确定要作为背书方的对等组织子集;以及从客户端向随机确定的背书方对等组织子集发送区块链存储请求;以及将来自所述随机确定的背书方对等组织子集的模拟响应收集到存储请求提议中。
附图说明
8.图1是示出根据示例实施例的用于随机地选择用于背书的对等组织的计算环境的图;
9.图2a是示出根据示例实施例的区块链架构配置的图;
10.图2b是示出根据示例实施例的区块链交易流程的图;
11.图3a是示出根据示例实施例的经许可的区块链网络的图;
12.图3b是示出根据示例实施例的另一个经许可的区块链网络的图;
13.图3c是示出根据示例实施例的无许可区块链网络的图;
14.图4a是示出根据示例实施例的从区块链取得散列以用于随机地选择背书方组织的过程的图;
15.图4b是示出根据示例实施例的向区块链网络中的组织分配唯一标识符的过程的图;
16.图4c是示出根据示例实施例的将散列分解成段以及基于段来识别背书方组织的过程的图;
17.图5是示出根据示例实施例的随机地选择要作为背书方的对等组织的方法的图;
18.图6a是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的示例系统的图;
19.图6b是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的另一个示例系统的图;
20.图6c是示出根据示例实施例的被配置为利用智能合约的另一个示例系统的图;
21.图6d是示出根据示例实施例的被配置为利用区块链的又一个示例系统的图;
22.图7a是示出根据示例实施例的新区块被添加到分布式分类账的过程的图;
23.图7b是示出根据示例实施例的新数据区块的内容的图;
24.图7c是示出根据示例实施例的用于数字内容的区块链的图;
25.图7d是示出根据示例实施例的可表示区块链中的区块的结构的区块的图;
26.图8a是示出根据示例实施例的存储机器学习(人工智能)数据的示例区块链的图;
27.图8b是示出根据示例实施例的示例量子安全区块链的图;
28.图9是示出支持一个或多个示例实施例的示例系统的图。
具体实施方式
29.将容易理解的是,如在本文的附图中总体描述和图示的,本发明的组件可以以各种不同的配置来布置和设计。因此,如附图中表示的方法、装置、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述并不旨在限制所要求保护的申请的范围,而是仅仅表示所选择的实施例。
30.在一个或多个实施例中,如贯穿本说明书所描述的特征、结构、或特性可以以任何适合的方式被组合或移除。例如,贯穿本说明书的短语“示例实施例”、“一些实施例”或其他类似语言的使用是指以下事实:结合实施例所描述的特定特征、结构或特性可以被包括在至少一个实施例中。因此,贯穿本说明书出现的短语“示例实施例”、“在一些实施例中”、“在其它实施例中”、或其它类似语言不一定都指同一组实施例,并且在一个或多个实施例中,可以任何合适的方式组合或去除所描述的特征、结构、或特性。此外,在图中,元件之间的任何连接可以允许单向和/或双向通信,即使所描绘的连接是单向或双向箭头。而且,在附图中描绘的任何设备可以是不同的设备。例如,如果移动设备被示为发送信息,则有线设备也可被用于发送该信息。
31.此外,尽管在实施例的描述中可以使用术语“消息”,但是本技术可以应用于许多类型的网络和数据。此外,尽管在示例性实施例中可以描述特定类型的连接、消息和信令,但是本技术不限于特定类型的连接、消息和信令。
32.示例实施例提供方法、系统、组件、非暂时性计算机可读介质、设备、和/或网络,这些方法、系统、组件、非暂时性计算机可读介质、设备、和/或网络涉及一种用于经准许的区块链中的背书方节点的随机化选择过程。
33.在一个实施例中,本技术利用作为分布式存储系统的分散式数据库(诸如区块链),该分布式存储系统包括彼此通信的多个节点。分散式数据库包括与能够在互不信任的各方之间维护记录的分布式分类账相类似的仅附加不可变数据结构。不可信方在本文中称为对等方或对等节点。每个对等方维护数据库记录的副本,并且没有单个对等方可以在没有在分布式对等方之间达成共识的情况下修改数据库记录。例如,对等方可以执行一致协议以验证区块链存储交易,将存储交易分组成块,以及在块上建立散列链。为了一致性,该过程根据需要通过排序存储交易而形成分类账。在不同实施例中,可以使用经许可的和/或无许可区块链。在公共或无许可区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链可以涉及原生加密货币并且使用基于不同协议(诸如工作证明(pow))的共识。另一方面,经许可的区块链数据库提供共享共同目标但不完全相互信任的一组实体(诸如交换资金、商品、信息等的企业)之间的安全交互。
34.本技术可以利用操作任意的可编程逻辑的区块链,其被定制为分散式存储方案并且被称为“智能合约”或“链码”。在一些情况下,可存在被称为系统链码的用于管理功能和参数的专用链码。本技术还可以利用智能合约,智能合约是可信的分布式应用,其利用区块链数据库的防篡改特性和节点之间的基础协议(该基础协议被称为背书或背书策略)。与本技术相关联的区块链交易在被提交至区块链之前可以被“背书”,而未被背书的交易被忽略。背书策略允许链码以对于背书必需的对等节点集合的形式指定用于交易的背书方。当客户端将交易发送给在背书策略中指定的对等方时,该交易被执行以验证该交易。在验证之后,交易进入排序阶段,其中使用共识协议来产生被分组成块的背书交易的有序序列。
35.本技术可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可在同一物理服务器上运行的意义上,“节点”可执行逻辑功能。节点被分组在信任域中并且与以不同方式控制这些节点的逻辑实体相关联。节点可以包括不同的类型,诸如向背书方(例如,对等方)提交交易调用以及向排序服务(例如,排序节点)广播交易提议的客户端或提交-客户端节点。另一类型的节点是对等节点,对等节点可接收客户端提交的交易、提交交易并维持区块链交易的分类账的状态和副本。对等方也可以具有背书方的作用,尽管这不是必需的。排序服务节点或排序器是运行用于所有节点的通信服务的节点,并且该节点实现递送保证,诸如在提交交易和修改区块链的世界状态时向系统中的每个对等节点广播,该世界状态是初始区块链交易(其通常包括控制和设置信息)的另一个名称。
36.本技术能够利用分类账,分类账是区块链的所有状态转变的排序防篡改记录。状态转变可以由参与方(例如,客户端节点、排序节点、背书方节点、对等节点等)提交的链码调用(即,交易)引起。每个参与方(诸如对等节点)可维护分类账的副本。交易可以导致一组资产键-值对作为一个或多个操作数(诸如创建、更新、删除等)被提交到分类账。分类账包括用于在块中存储不可变的排序记录的区块链(也称为链)。分类账还包括维护区块链的当前状态的状态数据库。
37.本技术可以利用作为交易日志的链,该交易日志被构造为散列链接的块,并且每个块包含具有n个交易的序列,其中n等于或大于1。块头部包括块的交易的散列以及前一个块的头部的散列。以这种方式,分类账上的所有交易可被排序和加密地链接在一起。因而,不可能篡改分类账数据而不破坏散列链。最近添加的区块链块的散列表示链上的在该块之前已经出现的每个交易,从而使得可以确保所有对等节点都处于一致且可信的状态。链可以被存储在对等节点文件系统(即,本地的、附加的存储、云等)上,从而有效地支持区块链工作负载的仅附加性质。
38.不可变分类账的当前状态表示被包括在链交易日志中的所有键的最新值。因为当前状态表示通道已知的最新键值,所以有时将其称为世界状态。链码调用执行针对分类账的当前状态数据的交易。为了使这些链码交互高效,键的最新值可以被存储在状态数据库中。状态数据库可以简单地是到链的交易日志中的索引视图,因此可以在任何时间从链中重新生成状态数据库。在对等节点启动后并且在交易被接受之前,可以自动恢复(或者生成(如果需要的话))状态数据库。
39.根据不同实施例,背书方组织(例如,具有区块链对等节点)可例如由客户端、对等节点等基于已经存储在区块链分类账上的数据(例如,数据区块的散列值等)来随机选择。对组织的随机化选择可以使用区块链的成员已知的过程来执行。其余的成员节点可以通过使用相同的数据散列来执行相同的过程而验证对背书方组织的随机选择,由此确保背书方组织选择的随机化的完整性。
40.本文描述和描绘的即时解决方案(instant solutions)的一些益处包括减少需要在交易中存储在执行-排序型的较大经许可的区块链网络内的数据量。具体地,通过选择随机的对等组织子集,攻击者提前对这些随机选择的组织进行攻击的可能性非常低。因此,安全背书策略需要较少的组织。此外,即时解决方案提高了对等方的安全性,因为侵入对等方的攻击者必须在随机的对等方选择过程出现之前计算出随机的对等方选择过程,这是非常困难的。
41.一些经许可的区块链遵循执行-排序-验证范例,其中不是所有对等方在区块验证时执行交易,而是在网络中的对等方(例如,背书方节点)的子集上推测性地执行交易,并且诸如数据中的预期变化之类的计算结果由执行对等方签名,此后计算结果被发送到排序节点,排序节点将交易批处理成区块。在提交时,区块被传输到对等节点,其中只要执行结果被正确地签名,每个对等节点就验证执行结果是正确的。
42.这样的经许可的区块链的示例是hyperledger结构,其中客户端使用软件开发工具包(sdk),sdk将包含智能合约的名称和对智能合约交易的输入的交易提议发送到背书方对等节点。背书方推测性地执行交易、在读写集合上签名(也称为“背书”)并且将背书传输回客户端,客户端使用背书来构造交易。交易接着由客户端发送到将交易批处理成区块的排序服务。区块被传播到对等方,这些对等方验证交易执行的各方面,包括执行结果是否被可接受的对等方子集签名,以及交易的读取集合自从它的推测执行以来是否未改变。前者被称为“背书策略”,并且其作用是强制根据网络的安全假设在足够的对等方上正确地执行交易,并且有时也考虑交易所联系的业务关系。
43.在区块链网络中具有执行每个背书的组织/对等节点的可信核心可确保所有交易执行的合理性,然而,这需要与区块链网络的本质相矛盾的不合理的信任假设,其中不存在对外国方的完全信任。
44.作为非限制性示例,区块链网络可以要求在对手方之间的交易被若干管理域中的对等方所背书。在a公司向b公司转账的协议中,一般由a公司的对等方、b公司的对等方、诸如c公司之类的审计组织的对等方模拟并签名交易。在该示例中,公司a和b将想要确保它们的余额根据业务交易而相应地被更新,并且审计方的对等方经常被涉及,使得系统中的流通货币的总量保持相同,否则,对等方a和b可恶意地达成协议,其中货币不从a公司的账户扣除,而b公司的账户增加。因此,来自每个相应组织(a、b和c)的对等方可能被要求对交易进行背书,以便交易被网络中的所有对等方认为是有效的,并且因此交易的执行结果在提交时被应用。
45.虽然这种背书策略很好地绑定到业务流程,但它可能不适用于所有威胁模型,特别是考虑组织被其他组织侵入的威胁模型。如果在该示例中,组织a或b侵入审计方组织c中,则侵入方可以串通并构建交易执行结果,在交易执行结果中,a的账户余额保持不变且b的账户余额增加,并且使组织c的(有危害的)对等方对执行结果签名,并且交易然后将被网络中的所有对等方视为有效。为此,通常增加需要对交易签名的组织的多样性,并且通过这样做,增加获得足够的(有危害的和恶意的)组织以便对非法交易执行进行背书的难度。
46.随着区块链网络的扩展和更多的组织加入,在安全和性能之间发生权衡。例如,为了交易被认为是有效的,需要来自不同组织的签名越多,背书策略变得越安全。然而,这也意味着在提交时存在要验证的更多签名,并且更多签名还意味着公共密钥(并且在hyperledger结构中,整个x509证书)也需要存在于交易中,这增加了交易大小,并且增加了背书方对等方的总体执行负荷。这三个因素(更多的签名验证、更大的交易、额外的交易执行和签名)中的每一者对系统性能造成不利影响。此外,网络中的组织越多,攻击者侵入组织或影响组织串通越容易(机会越多),而需要来自不同组织的签名越少,攻击者开展攻击变得越容易。
47.另一个似乎合理的用例是需要带有大量(几十甚至一百)组织的区块链网络的用
例,这些组织彼此不完全信任,但仍希望在执行-排序范例中确保正确的智能合约执行。对于该示例,从性能和可扩展性的观点来看,包括大部分组织的背书策略,或者实际上在组织数量方面在某种程度上线性的任何背书策略是不切实际的。结果,要求恒定数量的组织(例如,100个组织当中的10个)以进行背书的背书策略是仅有的可行解决方案,然而,很有可能的是,相对少量的组织可以被侵入,或者可能串通以伪造未根据智能合约业务规则执行的交易,以便促进它们的相互利益,从而损害网络的数据完整性。
48.这种攻击的重要实现者是这样的事实,即,提交交易提议给对等方(用于背书)的客户端在选择背书方时具有完全的自由,因此客户端可以在所概述的攻击中作为共犯而发挥积极作用。如果提交对等方能够迫使客户端选择随机的背书对等方子集,则这一担忧可被减轻。此外,区块链不能依赖于将要由客户端本身选择的随机性,否则客户端可以只是重新迭代(随机)选择,直到该选择产生期望的被破坏的对等方。相反,随机性必须来自客户端未完全控制(并且其可以随后被验证)的源。
49.示例实施例通过要求客户端(或诸如对等节点的某个其他实体)基于在已经存储在区块链上的已知/可验证数据上执行的已知算法来从网络中随机选择对等组织而将随机性引入到背书方对等组织选择过程中。基于区块链网络中的组织的数量,唯一标识符(数值)可以被分配给每个组织。为了从区块链网络中选择背书方组织子集,客户端可以被要求使用来自前一组区块的区块散列值。区块散列可以被用于生成随机数(例如,二进制数)。二进制随机数可被分段成位值的段。第一位值可以从二进制随机数中被切片并被转换成十进制值,该十进制值可以直接或间接被映射到组织的唯一标识符。可以重复该过程(从二进制随机数取另一切片),直到随机地确定足够的背书方组织。客户端随后可依赖于这些背书方节点来执行交易的背书。
50.在该即时解决方案中描述的另一个益处是对区块间隔的使用,该区块间隔基本上指定了区块链上的可以用作区块散列的区块子集(最近存储的区块)。客户端可以取得区块链分类账的当前高度,以及生成基于区块链分类账的当前高度除以区块间隔值的完整性值。所产生的完整性值可以与交易一起被存储,并且可以被用于验证客户端从区块链分类账上由区块间隔所指示的最近存储的区块中选择了区块。
51.图1示出了根据示例性实施例的用于随机地选择对等节点以用于交易的背书的计算环境100。参见图1,计算环境100包括具有n个对等节点110的经许可的区块链。在该示例中,n个对等节点110中的任一个可用作交易的背书方。每个对等方参与它自己的组织(图中未示出),例如,对等方1在组织1中,对等方2在组织2中,等等。根据不同实施例,可迫使客户端120随机地选择对等组织子集并随后从该组n个对等节点110中选择对等节点来执行背书。此外,随机地确定要选择哪些对等组织的过程可以基于已经存储在区块链上的可验证数据,诸如在图4a-4c的示例中描述的一个或多个区块散列值。在图1的示例中,客户端120从n个对等节点110中随机地选择对等方2、3、5和8。
52.在一些实施例中,用于执行随机选择的逻辑可以被内置到客户端120的软件开发工具包(sdk)中,该软件开发工具包从对等节点或排序器提取最新区块(或来自最近存储的区块子集中的区块)并且然后使用该信息来计算对组织的随机化选择。作为另一示例,用于执行随机选择的逻辑可被内置到sdk能够查询的可信对等方中,并且充当计算针对客户端的选择的服务。此外,n个对等节点110中的每一个可包括内置在其中的随机选择过程,使得
当到了将交易(及交易的相应的块)提交至区块链的时间时,n个对等节点110还可验证该随机选择过程。
53.例如,区块散列可由散列函数(诸如sha-256、md5等)生成。所产生的散列值是具有特定大小(诸如128位、256位、512位等)的字母和字符的串。根据不同实施例,散列值可以用于诸如通过伪随机数生成器(prng)来生成二进制随机数。所产生的二进制随机数可包括与区块散列相同的数量的位,但代替字母和数字的组合,随机数可仅包括二进制数一(1)和零(0)。例如,下面示出了64位散列值。
54.hash=as7r430pohvb21msw98210pplhnmbn30431trewq9820pksgreder084321abyx09
55.在此,区块散列可以充当prng的种子值,prng将散列值转换成二进制随机数。例如,prng可以包括用于生成二进制数序列的算法,该二进制数序列的属性近似于二进制随机数序列的属性。prng生成的序列不是真正随机的,因为它完全由被称为prng的种子(其可以包括真正随机值)的初始值(区块散列)来确定。根据上述散列创建的二进制prng的示例如下所示:
56.prng=1100101000101110100010110101001011001010010010010101001010001
57.可以基于从区块散列中创建的prng的值来执行随机对等方选择过程。例如,可以基于多少个对等组织被包括在网络中,向n个对等组织110中的每个对等组织分配唯一标识符。唯一标识符可以是数字(十进制等)。例如,可以向n个组织中的每个组织分配从0到n-1的唯一标识符。同时,可以从二进制格式的prng中移除数据段/块,并且将其转换成十进制形式。数据段的大小可以是log2(n)位,或以2为基数的对数(log),其对应于f(x)=2
x
的反函数。例如,如果对等组织的数目是20(即,n=20),则可以向每个对等组织分配从0至19的唯一值,而数据段大小可以是log2(20)=4.32,其被凑整至5位。
58.相应地,可以从prng中移除前5个位(在本示例中为10001)并且将其转换成十进制(为17)。这对应于对等组织18的唯一标识符。如果系统需要选择5个背书方组织,则可以重复该过程,直到通过从二进制随机数取走附加位段并且通过该过程运行这些附加位段来确定5个不同的唯一标识符为止。如果二进制随机数在随机地识别足够的组织之前耗尽了位,则可以再次对区块散列进行散列,并且重复该过程,或者可以选择另一个区块散列并且重复该过程。
59.强制的随机对等方选择可被包括在区块链网络(诸如具有大量组织的区块链网络)的背书策略中。因此,侵入足够的组织以便满足背书策略是不切实际的。背书策略不限于任何特定的组织集合,而是可包括对背书策略认为可接受的同一个交易执行进行背书的任何足够大的组织子集。还应当理解,本文中描述的技术和机制能够应用于其中组织选择更窄的其他模型。
60.此外,n个对等组织中的每一个可以验证随机背书方节点选择过程。换言之,提交对等方可验证背书方节点确实是随机的。因为用作种子来生成随机数的散列是从存储在区块链上的区块散列来确定的,所以区块链网络中的对等节点可取得相同的区块散列并执行相同的二进制随机数生成。然后,对等方中的每一个对等方可以将区块散列分段,并且将段映射到唯一的组织id,以确保相同的组织id被客户端所选择,由此验证正确的背书方节点是基于它们的从二进制随机数导出的对应组织而选择的。
61.例如,令n为组织的数量,k<n为必须对交易进行背书以便满足背书策略的组织的数量。为了伪造可由网络对等方验证的交易,攻击者将需要侵入/说服n个组织中的k个组织,意味着攻击者可选择任意k个组织且将它们作为目标。然而,侵入临时针对攻击者随机选择的k个组织无疑困难得多。本文描述的背书策略迫使攻击者仅选择被随机地选择的k个组织的受限组合(与选择他/她选择的n个组织中的任意k个组织形成对照),并且在如下面进一步描述的每t个区块之后,组织的组合可以根据区块链自身的内容不断(并且随机)改变。例如,每个连续的t个区块的序列可以用于定义针对n个组织中的k个组织的选择的几个组合,并且为了使交易被视为有效,交易需要被k个组织的组合所背书,以使得交易在最后的t个块中被发现。
62.在本文中,“最后t个块”可被称为目标间隔约束,其中,t是区块间隔值。例如,背书策略可以包括为了交易被有效地背书,必须基于来自在区块链上存储的最后t个块的区块散列来执行随机对等方选择过程的约束。为了验证这一点,客户端或对等方可以包括交易中的完整性值,诸如分类账的当前高度(h)除以区块间隔值(t)。然后,在验证时,提交对等方检查它的当前高度(h)除以t(并且凑整到最近的最低整数)等于该数目,并且如果不是,则交易被视为无效。该约束规定交易在被提交以被包括在将来的块中之前不能被客户端持有太久,并且基本上,如果在高度h被模拟的交易在区块链已推进超过t个区块之后进入区块,则使该交易无效。该约束的使用可在很大程度上增加安全性保证。
63.根据不同实施例,基于本文提供的改变,如果攻击者想要伪造交易,那么攻击者将被迫接管随机选择的组织,这可由于接管组织所花费的时间而不能达到。在此,可能已经形成了新的t个区块,并且如果伪造交易将从旧组织(在形成t个区块之前)的背书形成,则伪造交易将在提交时被无效,因为该交易的背书集将不会在由最后t个区块引发的组织的任何组合中找到。作为另一个选项,攻击者可能需要接管预先选择的组织,并且等待形成将来自该预先准备的背书集的背书声明为有效的t个区块。然而,这可能需要很长时间来发生或者根本不发生。这还通过将交易的完整性值记录到与区块链高度除以区块间隔值t相对应的块中而被阻碍。此操作将要求攻击者猜测将引发攻击者预先准备的背书方集合的t个块的正确间隔。然而,如果其他(非恶意)方正在向区块链提交交易,则不可能事先预测t个区块的间隔,因为该间隔取决于随机输入(由诚实方选择的交易,该交易包含随机性)。
64.示例实施例可以使用输出256个位的安全散列函数来生成区块散列(该技术可以被修改为适合不同长度的散列函数),将最后t个连续区块的散列表示为h0、h1、h2…ht-1
,以及将背书方组织表示为o0,o1,o2,...,o
n-1
。为了编码唯一的组织id,系统可以使用log2(n)个位,而为了编码k个组织,系统可以获取至少k个数目的log2(n)个位。最后t个连续区块的散列以下列方式定义k个组织的第一组合:系统可以初始化数字的空集合s以表示组织的id,并且取区块散列(诸如h
t-1
)的最低log2(n)个位并将其表示为b0,并且将b0的数字表示添加至s。系统然后可以取区块散列的下一个log2(n)个位并且将其表示为b1,并且然后如果b1存在于s中,则系统可以丢弃b1,否则系统可以将b1添加到s中。然后,系统可以继续该过程并且移动到区块散列的下一个log2(n)个位,直到系统找到k个不同的id或者系统用完区块散列h
t-1
中的位。如果系统没有足够的不同id,则系统可以对区块散列进行重新散列或取得前一个区块散列并开始取得更多的唯一id。
65.在区块链网络在该网络中包括100个对等组织并且需要来自10个组织的背书的示
例中,n=100并且k=10。此外,目标间隔约束将区块散列限于来自最后12个区块,区块间隔值为t=12。在该示例中,最后12个区块规定组织的选择,意味着对于每个交易,有多达t个区块散列被用于识别k个组织以进行背书。例如,区块链可维持每秒2000个交易的吞吐量。在本示例中,应用具有大约3秒来对交易进行背书并且发送交易以便被包括在下一个区块中。单个区块散列将不包含10个不同的数字(意味着当使用256位的散列大小时,8位的所有32个序列将总体上具有小于10个数字)的概率非常小,因为存在要从中选择的100个标识符和32个8位的间隔。此外,如果区块散列产生少于k个标识符(如看到的,这以低概率发生),则系统可以将散列再一次应用于区块的散列并且然后继续使用该散列。可替代地,可以使用伪随机数生成器(prng)以区块散列作为种子来进行数目推导。
66.图2a示出根据示例实施例的区块链架构配置200。参照图2a,区块链架构200可包括特定区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅通过示例来描绘)。这些节点参与许多活动,诸如区块链交易添加和确认过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略对交易进行背书,以及可以为架构200中的所有区块链节点提供排序服务。区块链节点可发起区块链认证并试图写入被存储在区块链层216中的区块链不可变分类账,区块链不可变分类账的副本也可存储在支持物理基础设施214上。区块链配置可以包括被链接到应用编程接口(api)222以访问和执行所存储的程序/应用代码220(例如,链码、智能合约等)的一个或多个应用224,所存储的程序/应用代码220可以根据参与者寻求的定制配置来创建并且可以维护它们自己的状态、控制它们自己的资产以及接收外部信息。这可以被部署为交易并且经由附加到分布式分类账而被安装在所有区块链节点204-210上。
67.区块链基础或平台212可包括不同层的区块链数据、服务(例如,加密信任服务、虚拟执行环境等)和支持物理计算机基础设施,支持物理计算机基础设施可用于接收和存储新交易并向试图访问数据条目的审核方提供访问。区块链层216可以暴露接口,该接口提供对处理程序代码和参与物理基础设施214所必需的虚拟执行环境的访问。密码信任服务218可用于验证交易(诸如资产交换交易)并保持信息私有。
68.图2a的区块链架构配置可经由通过区块链平台212暴露的一个或多个接口和提供的服务来处理和执行程序/应用代码220。代码220可以控制区块链资产。例如,代码220可以存储和传输数据,并且可以由节点204-210以智能合约和相关联的链码的形式来执行,该链码具有经受它的执行的条件或其他代码元素。作为非限制性实例,可以创建智能合约以执行提醒、更新和/或经历改变、更新等的其他通知。智能合约本身可用于识别与分类账的授权和访问要求以及使用相关联的规则。例如,读取数据226可以由在区块链层216中包括的一个或多个处理实体(例如,虚拟机)处理以创建要被写入到区块链的包括写入数据228的处理结果。物理基础设施214可用于取得本文所述的任何数据或信息。
69.智能合约可以经由高级应用和编程语言来创建,并且然后被写到区块链中的区块。智能合约可以包括利用区块链(例如,分布式区块链对等方网络)来注册、存储和/或复制的可执行代码。交易是智能合约代码的执行,该执行可以响应于满足与智能合约相关联的条件而被完成。执行智能合约可以触发对数字区块链分类账的状态的可信修改。由智能合约执行引起的对区块链分类账的修改可以通过一个或多个共识协议在整个分布式区块链对等方网络中被自动复制。
70.智能合约可以以键-值对的格式向区块链写入数据。此外,智能合约代码可以读取存储在区块链中的值,并在应用操作中使用这些值。智能合约代码可以将不同逻辑操作的输出写入到区块链中。代码可以用于在虚拟机或其他计算平台中创建临时数据结构。被写入区块链的数据可以是公共的和/或可以被加密并被维持为私有。由智能合约使用/生成的临时数据由供应的执行环境保存在存储器中,然后一旦识别了区块链需要的数据,该临时数据就被删除。
71.链码可以包括具有附加特征的智能合约的代码解释。如本文所描述的,链码可以是被部署在计算网络上的程序代码,其中链码在共识过程期间由链验证器一起执行和验证。链码接收散列并且从区块链中取得与通过使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列和从所存储的标识符模板数据创建的散列相匹配,则链码向所请求的服务发送授权密钥。链码可以向区块链写入与加密细节相关联的数据。
72.图2b示出根据示例实施例的在区块链的节点之间的区块链交易流程250的示例。参考图2b,交易流程可包括由应用客户端节点260向一个或多个进行背书的对等节点(例如,对等节点281和283)发送的交易提议291。根据不同实施例,应用客户端节点260可以基于(例如,经由对等节点等)从区块链的区块取得的散列值而随机地选择进行背书的对等组织,如本文的示例中所述。例如,区块散列可以被转换成二进制随机数。二进制数可以被分解成位段,位段从二进制随机数中被切片并用于识别进行背书的对等节点。应用客户端节点260可识别k个背书方节点并将交易提议291发送到进行背书的对等节点。进行背书的对等节点可以验证客户端签名并且执行链码函数以发起交易。输出可以包括链码结果、在链码中读取的键/值版本集合(读取集合)、以及在链码中写入的键/值集合(写入集合)。如果被批准,提议响应292连同背书签名一起被发送回客户端260。客户端260将背书组装成交易有效载荷293并将其广播至排序服务节点284以用于达成共识。然后,排序服务节点284将交易排序到区块中,并且在通道上将区块传播到所有对等方281-283。在提交到区块链之前,每个对等方281-283可以验证背书方对等节点选择过程确实是随机的,并验证交易。例如,对等方可以基于相同的区块散列来执行它们自己的随机选择过程以验证选择了正确的背书方节点,以及还检查背书策略以确保指定对等方的正确分配已经对结果进行签名并针对交易有效载荷293认证了签名。
73.再次参见图2b,在290,客户端节点260基于在区块链上存储的区块的区块散列,随机地选择k个背书方对等组织(例如,对等节点281和对等节点283)。客户端节点260通过构建请求并将请求发送到在290中被随机选择为背书方的背书方对等节点281和283来发起交易291。客户端260可以包括利用所支持的软件开发工具包(sdk)的应用,该sdk利用可用的api来生成交易提议。提议是调用链码函数以使得数据可以被读取和/或写入到分类账(即,为资产写入新的键值对)的请求。sdk可以充当垫片(shim)以将交易提议封装成适当的架构化格式(例如,远程过程调用(rpc)上的协议缓冲器)并采用客户端的加密证书来产生交易提议的唯一签名。
74.作为响应,进行背书的对等节点281和283可以验证(a)交易提议形成良好,(b)交易在过去尚未被提交(重放攻击保护),(c)签名有效,以及(d)提交者(在该实例中,客户端260)被适当地授权以在该通道上执行所提议的操作。进行背书的对等节点281和283可以将交易提议输入作为对所调用的链码函数的自变量(arguments)。然后,对照当前状态数据库
执行链码以产生包括响应值、读集合和写集合的交易结果。然而,此时没有对分类账进行更新。在292中,值集合以及相应的进行背书的对等节点281和283的签名作为提议响应292被传递回客户端260的sdk,sdk解析有效载荷以供应用消费。
75.作为响应,客户端260的应用检查/验证进行背书的对等方签名,并且比较提议响应以确定提议响应是否相同。如果链码仅查询了分类账,则应用将检查查询响应并且通常将不向排序节点服务284提交交易。如果客户端应用旨在将交易提交给排序节点服务284以更新分类账,则应用确定在提交之前所指定的背书策略是否已被满足(即,交易所必需的所有对等节点是否对该交易进行了背书)。在此,客户端可以仅包括交易的多方中的一方。该架构使得即使应用选择不检查响应或以其他方式转发未背书的交易,背书策略仍将由对等方强制执行并在提交验证阶段得到保持。
76.在成功检查之后,在步骤293,客户端260将背书组装成交易并在交易消息内将交易提议和响应广播至排序节点284。交易可包含读/写集合、随机选择的背书对等方签名和通道id。排序节点284不需要检查交易的全部内容以便执行它的操作,相反,排序节点284可以简单地从网络中的所有通道接收交易,按通道对交易按时间顺序进行排序,并且每通道创建交易区块。
77.交易的区块被从排序节点284递送到通道上的所有对等节点281-283。区块内的交易294被验证以确保任何背书策略被满足并确保自从由交易执行生成读集合以来,分类账状态针对读集合变量没有改变。区块中的交易被标记为有效或无效。
78.根据不同实施例,在步骤295,对等节点281-283中的每一个可验证由客户端节点260执行的随机背书方组织选择过程。例如,对等节点281-283中的每一个可以根据来自290的随机选择来检查包括在该区块中的交易是否被对等方模拟和背书。此外,如果随机选择被成功验证,则在步骤296中,每个对等节点281-283将区块附加到通道的链,并且对于每个有效交易,写入集合被提交到当前状态数据库。发出事件以向客户端应用通知交易(调用)已经被不可变地附加到链,以及通知交易被验证还是被无效。
79.图3a示出了以分布式、分散式对等架构为特征的经许可的区块链网络300的示例。在该示例中,区块链用户302可以向经许可的区块链304发起交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用sdk的客户端侧应用、直接通过api等来发布。网络可以提供对诸如审核方之类的监管方306的访问。区块链网络运营商308管理成员许可,诸如将监管方306登记为“审核方”以及将区块链用户302登记为“客户端”。审核方可以被限于仅查询分类账,而客户端可以被授权以部署、调用和查询特定类型的链码。
80.区块链开发者310可写入链码和客户端侧应用。区块链开发者310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的证书,开发者310可使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点314连接到经许可的区块链304。在进行任何交易之前,对等节点314从管理用户角色和许可的证书授权机构316取得用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书以便在经许可的区块链304上进行交易。同时,尝试利用链码的用户可能被要求在传统数据源312上验证他们的凭证。为了确认用户的授权,链码可以使用通过传统处理平台318到该数据的带外连接。
81.图3b示出了以分布式、分散式对等架构为特征的经许可的区块链网络320的另一
个示例。在该示例中,区块链用户322可以向经许可的区块链324提交交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用sdk的客户端侧应用、直接通过api等来发布。网络可以提供对诸如审核方之类的监管方326的访问。区块链网络运营商328管理成员许可,诸如将监管方326登记为“审核方”以及将区块链用户322登记为“客户端”。审核方可以限于仅查询分类账,而客户端可以被授权以部署、调用和查询特定类型的链码。
82.区块链开发者330写入链码和客户端侧应用。区块链开发者330可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的凭证,开发者330可以使用带外连接来访问数据。在该示例中,区块链用户322通过对等节点334连接到网络。在进行任何交易之前,对等节点334从证书授权机构336取得用户的登记和交易证书。在一些情况下,区块链用户必须拥有这些数字证书以便在经许可的区块链324上进行交易。同时,尝试利用链码的用户可能被要求在传统数据源332上验证他们的凭证。为了确认用户的授权,链码可以使用通过传统处理平台338到该数据的带外连接。
83.在一些实施例中,本文中的区块链可以是无许可区块链。与要求许可以便加入的经许可的区块链相比,任何人都可以加入无许可区块链。例如,为了加入无许可区块链,用户可以创建个人地址并通过提交交易并因此将条目添加到分类账来开始与网络交互。此外,所有各方具有在系统上运行节点以及采用挖掘协议来帮助验证交易的选择。
84.图3c示出了由包括多个节点354的无许可区块链352处理的交易的过程350。发送方356希望经由无许可区块链352向接收方358发送支付或某一其他形式的价值(例如,契约、医疗记录、合同、商品、服务或可被封装在数字记录中的任何其他资产)。在一个实施例中,发送方设备356和接收方设备358中的每一个可具有提供用户界面控制和交易参数的显示的数字钱包(与区块链352相关联)。作为响应,交易贯穿区块链352被广播至节点354。取决于区块链352的网络参数,节点基于无许可区块链352创建者建立的规则(其可以是预定义的或动态分配的)来验证360交易。例如,这可以包括验证所涉及的各方的身份等。可以立即验证交易,或者可以将交易与其他交易放置在队列中,并且节点354基于一组网络规则来确定交易是否有效。
85.在结构362中,有效交易被形成为块并且被用锁(散列)来密封。该过程可以通过挖掘节点354之中的节点来执行。挖掘节点可以利用另外的软件,该软件特别地用于针对无许可区块链352挖掘和创建区块。每个区块可以由使用由网络商定的算法创建的散列(例如,256位数等)来标识。每个区块可以包括头部、指向链中的前一个区块的头部的散列的指针或参考、以及一组有效交易。对前一个区块的散列的参考与区块的安全独立链的创建相关联。
86.在区块可以被添加到区块链之前,区块必须被验证。针对无许可区块链352的验证可包括工作证明(pow),pow是从区块的头部导出的谜题的解。虽然在图3c的示例中未示出,但是用于验证区块的另一个过程是权益证明。与工作证明(其中算法奖励解决数学问题的挖掘者)不同,对于权益证明,新区块的创建者根据其财富(也被定义为“权益”)以确定性方式被选择。然后,由所选择的/所选节点执行类似的证明。
87.利用挖掘364,节点尝试通过对一个变量进行增量改变直到解满足全网络目标来求解区块。这产生pow,从而确保正确答案。换言之,潜在的解必须证明在求解该问题时计算资源被耗尽。在一些类型的无许可区块链中,可以向挖掘者奖励用于正确挖掘区块的价值
(例如,钱币等)。
88.在此,pow过程连同区块的成链一起使得区块链的修改极其困难,因为攻击者必须修改所有后续区块以便使对一个区块的修改被接受。此外,随着新区块被挖掘,修改区块的难度增加,并且后续区块的数量增加。通过分发366,被成功验证的区块被分发通过无许可区块链352,并且所有节点354将该区块添加到作为无许可区块链352的可审计分类账的多数链中。此外,由发送方356提交的交易中的值被存入或以其他方式被转移到接收方设备358的数字钱包。
89.图4a示出根据示例实施例的从区块链410取得散列以用于随机地选择背书方组织的过程400a。参照图4a,随机对等方选择过程由客户端420执行,客户端420想要提交交易以存储在区块链410上。还应当理解,随机组织选择过程可由对等节点或其他服务而不是客户端420来执行。在此,客户端420可以从管理区块链410的区块链网络的对等节点(未示出)或排序服务(未示出)取得一个或多个区块(和区块散列)。随机对等方选择过程可包括指定区块链410上可从中取得区块散列的区块子集的约束。换言之,约束(在本文中也称为目标间隔约束)可指定最近被添加到区块链的区块的预定数量(区块间隔值412)。在此实例中,区块间隔值412等于五(例如,t=5)。因此,必须从包括在被添加到区块链分类账的最后五(5)个区块内的一个或多个区块中取得区块散列。
90.在此实例中,客户端420可以从被包括在区块间隔412中的任何区块中选择区块散列。在一些情况下,客户端420可以自动选择最近添加到区块链410的区块,但是实施例不限于此。为了验证客户端420已经选择了来自区块间隔412内的区块,客户端420可以提交等于区块链分类账(i)的当前高度除以区块间隔值412(t)的完整性值。如果区块链分类账高度是50(例如,h=50),并且区块间隔值是5(例如,t=5),则完整性值将是(h/t)=(50/5)=10。图4b示出了由图4a中的客户端420选择的区块的区块散列430。在此,区块散列430包括256位的字符和数字,诸如sha256散列。此散列值430可以是用于二进制随机数生成器的种子,该二进制随机数生成器基于区块散列430的值,将散列值430转换为伪随机二进制数440。如在图4c的实例中进一步描述的,随机二进制数可以用于识别背书方对等方。
91.参照图4b,示出了将唯一标识符分配给对等组织的过程。在该示例中,区块链网络包括十六个(例如,n=16)对等组织。每个对等方可被分配唯一标识符。因此,16个组织可被分配从0到n-1的值,如在唯一id 450的表中所示。在此实例中,唯一id 450中的每一者被表示为十进制值,但也可被表示为二进制值。
92.图4c示出根据实例实施例的将随机二进制数440分解成具有基于区块链中组织数目的大小的二进制位段441并基于二进制位段441来识别背书节点的过程400c。在该实例中,随机数440具有256个位(与用作种子的散列值430相同)。为了识别组织,客户端420可基于区块链网络中的组织的数量,将随机二进制数440分段成更小的块或位大小。例如,对数函数log2(n)个位可规定二进制位段441的大小。在此实例中,位段441被赋予log2(16)=4个位的大小。
93.位段441的二进制数可被转换成可被映射至对等组织的唯一id450中的一个的十进制值。例如,第一位段具有随机数“1011”,其可被转换成映射到对等组织12的唯一id的十进制值11。可重复将二进制段转换成十进制值并将这些值映射至对等组织的唯一id的过程,直到已识别足够的唯一id(和相应的组织)以满足背书策略。在本例中,需要的背书方数
量为k=4。结果,从随机二进制数440的前四个段识别出组织12、组织9、组织11和组织6。因此,该过程可以结束,并且客户端420可以向从随机选择过程识别的四个组织(12、9、11和6)中的每一个的节点提交交易提议。
94.如果二进制位段转换为十进制值导致映射到先前位段的重复的唯一id,则该位段可以被丢弃。系统继续寻找可以获得的前四个不同的唯一id。如果客户端420用完二进制位段(当所需的节点/背书方的数量较大时可能更常见),则客户端420可以从块间隔412抓取另一个区块散列或者客户端420可以对当前散列进行重新散列,以及生成新的随机数并再次开始该过程以识别所需的剩余数量的背书方节点。
95.图5示出了根据示例性实施例的随机地选择要作为背书方的对等组织的方法500。参考图5,在510中,该方法可以包括取得在区块链上存储的数据区块的区块散列。例如,执行该方法的系统(诸如客户端)、智能合约、区块链对等节点等可被限制为从最近存储的预定数量的区块中选择区块散列。区块的间隔可以被称为区块间隔值。例如,如果区块间隔值是10,则该方法只能从在区块链上存储的最后10个区块之中的一个或多个区块中选择区块散列。在执行此操作时,安全性防止攻击者使用较旧的/过时的散列。
96.在520中,该方法可以包括基于区块散列的值,从区块链的区块链网络中随机地确定要作为背书方的对等组织子集。例如,随机地确定可包括:将区块散列转换成二进制随机数;将二进制随机数分解成多个位段;以及基于多个位段中的一个或多个位段,识别对等组织子集。
97.在530中,该方法可以包括从客户端向随机确定的背书方对等节点子集发送区块链存储请求。此外,在540中,该方法可以包括将来自随机确定的背书方对等节点子集的模拟响应收集到存储请求提议中。尽管图5中未示出,但是在一些实施例中,该方法还可以包括向区块链的排序器服务发送包括所收集的来自随机确定的背书方对等节点子集的模拟响应的存储请求提议。
98.根据不同实施例,该识别可以包括:基于多少个对等节点被包括在区块链网络内,向多个对等节点之中的每个对等节点分配唯一标识符;将来自多个位段中的位段转换成十进制值;以及将位段的十进制值映射到对等节点中的一个对等节点的唯一标识符。位段可以是从二进制随机数序列中被切除的特定大小的位。系统然后可以识别哪个组织对应于唯一标识符并且从该组织选择对等方作为交易的背书方节点。在一些实施例中,可以基于多少个组织被包括在区块链网络内,选择位段的大小。
99.在一些实施例中,该方法还可以包括:确定识别区块链上的能够从中取得区块散列的最近区块子集的区块间隔值。在一些实施例中,该方法还可以包括:选择在由区块间隔值识别的最近区块子集内的区块;以及从所选择的在由区块间隔值识别的区块子集内的区块中取得区块散列。在一些实施例中,该方法还可以包括:基于区块链的当前高度和区块间隔值,生成完整性值;以及将完整性值存储在存储请求提议内。存储请求提议可以被发送到排序器节点,排序器节点将存储请求提议包括在数据区块中,并将该数据区块分发到区块链的提交节点,在该提交节点,该数据区块可以被存储在区块链分类账上。
100.根据不同实施例,方法500可以包括在图5中未明确示出的附加步骤。例如,客户端可以将响应组装成交易提议,并将该交易提议发送到区块链的排序服务。排序服务可将交易提议添加到区块并将该区块发送到区块链网络内的所有提交对等节点。作为响应,提交
对等方中的每一个可验证被包括在该区块中的交易是否被对等方根据随机选择过程来模拟和背书。如果检查成功,则由提交对等方将交易添加到分类账,否则不添加交易。
101.图6a示出了包括被配置为执行根据示例性实施例的各种操作的物理基础设施610的示例系统600。参考图6a,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留在区块链620上),智能合约630可以执行包括在任何示例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
102.图6b示出了被配置为执行根据示例实施例的各种操作的另一个示例系统640。参考图6b,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留在区块链620上),智能合约630可以执行包括在任何示例实施例中的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是相同的模块。
103.图6c示出根据示例实施例的被配置为在订约方之间利用智能合约配置的示例系统和被配置为在区块链上强制执行智能合约条款的调解服务器。参考图6c,配置650可以表示由明确识别一个或多个用户设备652和/或656的智能合约630驱动的通信会话、资产转移会话或处理或过程。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要作为智能合约交易的各方的实体652和656中的一个或多个的数字签名。智能合约执行的结果可以作为区块链交易被写到区块链620。智能合约630驻留在可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上的区块链620上。
104.图6d示出了根据示例实施例的包括区块链的系统660。参考图6d的示例,应用编程接口(api)网关662提供用于访问区块链逻辑(例如,智能合约630或其他链码)和数据(例如,分布式分类账等)的公共接口。在该示例中,api网关662是用于通过将一个或多个实体652和656连接至区块链对等方(即,服务器654)来对区块链执行交易(调用、查询等)的公共接口。在此,服务器654是区块链网络对等组件,该区块链网络对等组件保存世界状态和分布式分类账的副本,从而允许客户端652和656查询关于世界状态的数据以及将交易提交到区块链网络中,在区块链网络中,根据智能合约630和背书策略,进行背书的对等方将运行智能合约630。
105.以上实施例能够以硬件、由处理器执行的计算机程序、固件或以上项的组合来实现。计算机程序可体现在计算机可读介质(例如存储介质)上。例如,计算机程序可以驻留在随机存取存储器(“ram”)、闪存、只读存储器(“rom”)、可擦除可编程只读存储器(“eprom”)、电可擦除可编程只读存储器(“eeprom”)、寄存器、硬盘、可移动盘、紧凑盘只读存储器(“cd-rom”)、或本领域已知的任何其他形式的存储介质中。
106.示意性存储介质可耦接到处理器,使得处理器可从存储介质读取信息和将信息写入到存储介质。在替代方案中,存储介质可与处理器成一体。处理器和存储介质可驻留在专用集成电路(“asic”)中。在替代方案中,处理器和存储介质可作为离散组件而驻留。
107.图7a示出根据示例实施例的新区块被添加到分布式分类账720的过程700,图7b示出根据示例实施例的用于区块链的新数据区块结构730的内容。参考图7a,客户端(未示出)可向区块链节点711、712和/或713提交交易。客户端可以是从任何源接收的指令以制定在区块链720上的活动。作为示例,客户端可以是代表请求者(诸如设备、个人或实体)行动的应用,以提议针对区块链的交易。多个区块链对等方(例如,区块链节点711、712和713)可以维护区块链网络的状态和分布式分类账720的副本。在区块链网络中可存在不同类型的区块链节点/对等方,包括模拟并背书由客户端提出的交易的进行背书的对等方以及验证背书、验证交易和提交交易到分布式分类账720的提交对等方。在此实例中,区块链节点711、712和713可执行背书方节点、提交方节点或两者的角色。
108.分布式分类账720包括在区块中存储不可变的排序记录的区块链和维护区块链722的当前状态的状态数据库724(当前世界状态)。每个通道可以存在一个分布式分类账720,并且每个对等方针对它们作为成员的每个通道而维护它自己的分布式分类账720副本。区块链722是交易日志,该交易日志被构造为散列链接的区块,其中每个区块包含具有n个交易的序列。区块可包括诸如图7b中所示的各种组件。区块的链接(由图7a中的箭头示出)可以通过在当前区块的区块头部内添加先前区块的头部的散列来生成。以此方式,区块链722上的所有交易被排序并被加密地链接在一起,从而防止篡改区块链数据而不破坏散列链接。此外,由于链接,区块链722中的最新区块代表在它之前出现的每个交易。区块链722可以被存储在支持仅附加的区块链工作负载的对等文件系统(本地或附加存储)上。
109.区块链722的当前状态和分布式分类账720可以被存储在状态数据库724中。此处,当前状态数据表示曾经被包括在区块链722的链交易日志中的所有键的最新值。链码调用对照状态数据库724中的当前状态来执行交易。为了使这些链码交互极其高效,所有键的最新值被存储在状态数据库724中。状态数据库724可以包括到区块链722的交易日志中的索引视图,因此可以在任何时间从链中重新生成该索引视图。在交易被接受之前,在对等方启动时,状态数据库724可自动被恢复(或者被生成,如果需要的话)。
110.背书节点从客户端接收交易,并基于模拟结果对交易进行背书。背书节点持有模拟交易提议的智能合约。当背书节点对交易进行背书时,背书节点创建交易背书,该交易背书是指示模拟交易的背书的从背书节点到客户端应用的签名响应。对交易进行背书的方法取决于可以在链码中指定的背书策略。背书策略的示例是“多数背书对等方必须对交易进行背书”。不同的通道可具有不同的背书策略。客户端应用将经背书的交易转发至排序服务710。
111.排序服务710接受经背书的交易,将它们排序到区块中,以及向提交对等方递送区块。例如,当已经达到交易阈值、定时器超时或另一条件时,排序服务710可以发起新区块。在图7a的示例中,区块链节点712是提交对等方,其已接收到新数据区块730以供存储在区块链720上。区块链中的第一个区块可以被称为创世区块,其包括关于区块链、其成员、存储在其中的数据等的信息。
112.排序服务710可以包括排序器集群。排序服务710不处理交易、智能合约或维护共享分类账。相反,排序服务710可以接受经背书的交易并且指定这些业务被提交到分布式分类账720的顺序。可以设计区块链网络的架构,使得

排序’(例如,solo、kafka、bft等)的具体实现变成可插拔组件。
113.交易以一致的顺序被写到分布式分类账720。交易的顺序被确立以确保对状态数据库724的更新在这些更新被提交至网络时是有效的。与其中通过求解密码谜题或挖掘而发生排序的加密货币区块链系统(例如,bitcoin(比特币)等)不同,在本示例中,分布式分类账720的各方可以选择最适合该网络的排序机制。
114.当排序服务710初始化新数据区块730时,新数据区块730可以被广播到提交对等方(例如,区块链节点711、712和713)。作为响应,每个提交对等方通过检查以确保读取集和写入集仍匹配状态数据库724中的当前世界状态来验证新数据区块730内的交易。具体地,提交对等方可以确定当背书方模拟交易时存在的读数据是否与状态数据库724中的当前世界状态相同。当提交对等方验证了交易时,交易被写到分布式分类账720上的区块链722,并且状态数据库724被用来自读-写集合的写数据来更新。如果交易失败,即,如果提交对等方发现读-写集合与状态数据库724中的当前世界状态不匹配,则被排序到区块中的交易将仍然被包括在该区块中,但该交易将被标记为无效,并且状态数据库724将不被更新。
115.参考图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的区块号可以是唯一的并且以不同顺序被分配,诸如从零开始的递增/顺序排序。
116.区块数据750可以存储被记录在新数据区块730内的每个交易的交易信息。例如,交易数据可以包括以下中的一个或多个:交易的类型、版本、时间戳、分布式分类账720的通道id、交易id、时期、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、客户端(创建者)标识(诸如公钥和证书),客户端的签名、背书方的身份、背书方签名、提议散列、链码事件、响应状态、命名空间、读取集合(由交易读取的键和版本的列表等),写入集合(键和值的列表等)、开始键、结束键、键列表、merkel树查询概要等。可针对n个交易中的每个交易存储交易数据。
117.在一些实施例中,被包括在区块数据750中的每个交易还可存储区块间隔值752,区块间隔值752等于提交交易的对等节点的块高度除以区块链的区块间隔值。区块间隔值752可以被用于验证随机化背书方节点选择过程是使用来自在区块间隔值752内的区块的区块散列值来执行的。区块间隔值752包括本文中描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因而,区块间隔值752可以被存储在分布式分类账720上的区块的不可变日志中。在区块链上存储区块间隔值752的一些益处反映在本文公开和描绘的不同实施例中,并且包括确保随机对等方选择过程的完整性。
118.区块元数据760可存储元数据的多个字段(例如,作为字节阵列等)。元数据字段可以包括关于区块创建的签名、对最后配置区块的参考、标识区块内的有效和无效交易的交易过滤器、对区块进行排序的排序服务的存留的最后偏移等。签名、最后配置块、以及排序器元数据可以由排序服务710来添加。同时,区块的提交者(诸如区块链节点712)可以基于
背书策略、读/写集合的验证等来添加有效性/无效性信息。交易过滤器可包括大小等于区块数据750中的交易的数量的字节阵列和标识交易是否有效/无效的验证码。
119.图7c示出了根据本文描述的实施例的用于数字内容的区块链770的实施例。数字内容可包括一个或多个文件和相关联的信息。文件可包含媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链的不可变的、仅附加的方面充当保护措施来保护数字内容的完整性、有效性和真实性,从而使数字内容适合用于法律程序(其中可接受性规则适用)或其中考虑证据或其中数字信息的呈现和使用以其他方式感兴趣的其他设置中。在这种情况下,数字内容可以被称为数字证据。
120.可以以各种方式形成区块链。在一个实施例中,数字内容可以被包括在区块链本身中以及可以从区块链本身来访问。例如,区块链的每个区块可以连同相关联的数字内容一起存储参考信息(例如,头部、值等)的散列值。然后,散列值和相关联的数字内容可以一起被加密。因此,每个区块的数字内容可以通过解密区块链中的每个区块来访问,并且每个区块的散列值可以用作参考前一个区块的基础。这可以说明如下:
[0121][0122]
在一个实施例中,数字内容可以不被包括在区块链中。例如,区块链可在没有任何数字内容的情况下存储每个区块的内容的经加密的散列。数字内容可以被存储在与原始文件的散列值相关联的另一个存储区域或存储器地址中。另一个存储区域可以是用于存储区块链的同一个存储设备,或者可以是不同的存储区域或者甚至是单独的关系数据库。通过获得或查询感兴趣区块的散列值,然后在存储区域中查找与该实际数字内容相对应地存储的值,可以参考或访问每个区块的数字内容。此操作可以例如由数据库网守(gatekeeper)来执行。这可以说明如下:
[0123][0124]
区块n散列值区块n散列值

内容
[0125]
在图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)进行以下描述。
[0126]
区块链中的区块7781、7782、

、778n中的每一个包括头部、文件的版本、以及值。作为区块链中的散列的结果,头部和值对于每个区块是不同的。在一个实施例中,该值可被包括在头部中。如下文更详细描述的,文件的版本可以是原始文件或原始文件的不同版本。
[0127]
区块链中的第一个区块7781被称为起源区块,并且包括头部7721、原始文件7741和初始值7761。用于起源区块以及实际上在所有后续区块中的散列方案可以变化。例如,第一区块7781中的所有信息可被一起散列并且一次散列,或者第一区块7781中的信息的每一个或一部分可被分开散列,然后可执行被分开散列的部分的散列。
[0128]
头部7721可以包括一个或多个初始参数,其例如可以包括版本号、时间戳、随机数、根信息、难度级、共识协议、持续时间、媒体格式、源、描述性关键字、和/或与原始文件7741和/或区块链相关联的其他信息。头部7721可以自动地(例如,通过区块链网络管理软件)或由区块链参与者手动地生成。与区块链中的其他区块7782至778n中的头部不同,起源区块中的头部7721不参考前一个区块,这只是因为不存在前一个区块。
[0129]
起源区块中的原始文件7741可以是例如在被包括在区块链中之前在具有或没有处理的情况下由设备捕获的数据。通过系统的接口从设备、媒体源或节点接收原始文件7741。原始文件7741与元数据相关联,元数据例如可以由用户、设备和/或系统处理器手动地或自动地生成。元数据可以被包括在与原始文件7741相关联的第一区块7781中。
[0130]
起源区块中的值7761是基于原始文件7741的一个或多个唯一属性生成的初始值。在一个实施例中,一个或多个唯一属性可以包括原始文件7741的散列值、原始文件7741的元数据、以及与文件相关联的其他信息。在一个实施例中,初始值7761可基于以下唯一属性:
[0131]
1)sha-2计算的原始文件的散列值
[0132]
2)发端设备id
[0133]
3)原始文件的开始时间戳
[0134]
4)原始文件的初始存储位置
[0135]
5)用于软件当前控制原始文件和相关联元数据的区块链网络成员id
[0136]
区块链中的其他区块7782至778n也具有头部、文件和值。然而,与第一区块7721不同,其他区块中的头部7722至772n中的每一个包括紧接在前的区块的散列值。紧接在前的区块的散列值可以仅是前一个区块的头部的散列或者可以是整个前一个区块的散列值。通过在剩余区块的每一个中包括前一个区块的散列值,可以在逐块的基础上执行从第n个区块返回到起源区块(和相关联的原始文件)的跟踪,如箭头780所指示的,以建立可审计的和不可变的监管链。
[0137]
其他区块中的头部7722至772n中的每一个还可以包括其他信息,例如,版本号、时间戳、随机数、根信息、难度级、共识协议、和/或总体上与对应的文件和/或区块链相关联的其他参数或信息。
[0138]
其他区块中的文件7742至774n可以等于原始文件或者可以是起源区块中的原始文件的修改版本,这取决于例如所执行的处理的类型。所执行的处理的类型可从区块到区块变化。该处理可以涉及例如对在前区块中的文件的任何修改,如编辑信息或以其他方式改
变文件的内容、将信息从这些文件移除、或将信息添加或附加到这些文件上。
[0139]
另外或可替代地,处理可以涉及只是从在前区块复制文件、改变文件的存储位置、分析来自一个或多个在前区块的文件、将文件从一个存储或存储器位置移动到另一个、或执行相对于区块链的文件和/或其相关联的元数据的动作。涉及分析文件的处理可以包括例如附加、包括或以其他方式将各种分析、统计或与该文件相关联的其他信息相关联。
[0140]
其他区块中的其他区块7762至776n中的每一个中的值是唯一的值,并且作为所执行的处理的结果都是不同的。例如,任何一个区块中的值对应于前一个区块中的值的更新版本。该更新反映在被赋值的区块的散列中。区块的值因此提供在区块中执行了什么处理的指示,以及还允许通过区块链返回到原始文件的跟踪。该跟踪确认文件在整个区块链中的监管链。
[0141]
例如,考虑先前区块中的文件的多个部分被编辑、阻挡或像素化以便保护在文件中显示的人的身份的情况。在这种情况下,包括被编辑文件的区块将包括与被编辑文件相关联的元数据,例如,如何执行编辑、谁执行编辑、编辑发生的时间戳等。元数据可以被散列以形成值。因为区块的元数据与被散列以形成前一个区块中的值的信息不同,所以这些值彼此不同且可在解密时被恢复。
[0142]
在一个实施例中,当发生以下任何一者或多者时,可以更新前一个区块的值(例如,计算新的散列值)以形成当前区块的值。在此示例实施例中,可以通过对以下指出的信息的全部或一部分进行散列来计算新的散列值。
[0143]
a)如果文件已经以任何方式被处理(例如,如果文件被编辑、复制、更改、访问或采取一些其他动作),则新sha-2计算的散列值
[0144]
b)文件的新存储位置
[0145]
c)所识别的与该文件相关联的新元数据
[0146]
d)从一个区块链参与者向另一个区块链参与者转移对文件的访问或控制
[0147]
图7d示出根据一个实施例的可表示区块链790中的区块结构的区块的实施例。该区块blocki包括头部772i、文件774i和值776i。
[0148]
头部772i包括前一个区块block
i-1
的散列值和附加参考信息,该附加参考信息例如可以是本文所讨论的任意类型的信息(例如,包括参考、特性、参数等的头部信息)。所有区块参考前一个区块的散列,当然起源区块除外。前一个区块的散列值可以仅是前一个区块中的头部的散列或前一个区块中的信息的全部或部分(包括文件和元数据)的散列。
[0149]
文件774i包括多个数据,如按顺序的数据1、数据2、

、数据n。使用描述与数据相关联的内容和/或特性的元数据1、元数据2、

、元数据n来标记数据。例如,每个数据的元数据可以包括用于指示数据的时间戳、处理数据、指示数据中描绘的人员或其他内容的关键词、和/或可以有助于作为整体建立文件的有效性和内容(特别是其使用数字证据)的其他特征的信息,例如,如结合以下讨论的实施例所描述的。除了元数据之外,每个数据可以被标记有对前一个数据的参考ref1、ref2、

、refn以防止篡改、文件中的间隙、以及通过文件的顺序参考。
[0150]
一旦元数据被分配给数据(例如,通过智能合约),在没有散列改变(这可以容易地被识别以用于无效)的情况下不能更改元数据。因此,元数据创建了可被访问以供区块链中的参与者使用的信息的数据日志。
[0151]
值776i是散列值或基于先前讨论的任何类型的信息计算的其他值。例如,对于任何给定区块blocki,该区块的值可被更新以反映针对该区块执行的处理,例如,新的散列值、新的存储位置、相关联的文件的新的元数据、控制或访问的转移、标识符、或将被添加的其他动作或信息。尽管每个区块中的值被示出为与文件的数据的元数据和头部分离,但是在另一个实施例中,该值可以部分地或整体地基于此元数据。
[0152]
一旦形成了区块链770,在任何时间点,可以通过查询区块链以获得跨区块的值的交易历史来获得文件的不可变监管链。该查询或跟踪过程可开始于解密最近被包括的区块(例如,最后(第n个)区块)的值,然后继续解密其他区块的值,直到到达起源区块并恢复原始文件为止。解密还可包括解密每个区块处的头部和文件以及相关联的元数据。
[0153]
解密是基于在每个区块中发生的加密的类型来执行的。这可涉及使用私钥、公钥、或公钥-私钥对。例如,当使用非对称加密时,网络中的区块链参与者或处理器可使用预定算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可公开被分发以用作从其他用户接收消息的地址,例如,ip地址或家庭地址。私钥保密并且用于对发送到其他区块链参与者的消息进行数字签名。签名被包括在消息中,使得接收方可以使用发送方的公钥来验证。这样,接收方可以确信只有发送方可能已经发送该消息。
[0154]
生成密钥对可类似于在区块链上创建账户,但不必实际上在任何位置进行注册。此外,在区块链上执行的每个交易由发送方使用它们的私钥进行数字签名。此签名确保仅账户的所有者能够跟踪和处理(如果在由智能合约所确定的许可的范围内)区块链的文件。
[0155]
图8a和图8b示出了可以在本文中并入和使用的区块链的用例的附加示例。具体地,图8a示出了存储机器学习(人工智能)数据的区块链810的示例800。机器学习依赖于大量历史数据(或训练数据)来构建预测模型以便对新数据进行准确预测。机器学习软件(例如,神经网络等)经常可以筛选数百万个记录以挖掘非直观模式。
[0156]
在图8a的示例中,主机平台820构建并部署用于资产830的预测监视的机器学习模型。在此,主机平台820可以是云平台、工业服务器、web服务器、个人计算机、用户设备等。资产830可以是任何类型的资产(例如,机器或设备等),诸如飞机、机车、涡轮机、医疗机器和设备、油气设备、客轮、船只、车辆等。作为另一示例,资产830可以是非有形资产,诸如股票、货币、数字币、保险等。
[0157]
可以使用区块链810来显著地改进机器学习模型的训练过程802和基于经训练的机器学习模型的预测过程804两者。例如,在802中,不是要求数据科学家/工程师或其他用户收集数据,而是历史数据可由资产830本身(或通过中间物,未示出)存储在区块链810上。这能够显著地减少主机平台820在执行预测模型训练时所需的收集时间。例如,使用智能合约,数据可以直接地并且可靠地从其起始位置直接传输到区块链810。通过使用区块链810来确保所收集的数据的安全性和所有权,智能合约可以直接将数据从资产发送到使用该数据来建立机器学习模型的个体。这允许在资产830之间共享数据。
[0158]
可以基于共识机制将所收集的数据存储在区块链810中。共识机制拉入(经许可的节点)以确保正在被记录的数据被验证并准确。所记录的数据被加时间戳、被加密地签名并且是不变的。因此,所记录的数据是可审计的、透明的并且是安全的。在特定情况下(即,供应链、医疗、物流等),添加直接写入区块链的iot设备能够增大被记录的数据的频率和准确度。
[0159]
此外,机器学习模型在所收集的数据上的训练可以由主机平台820采取多轮细化和测试。每个轮次可以基于附加数据或先前未被考虑的数据以帮助扩展机器学习模型的知识。在802中,不同的训练和测试步骤(以及与其相关联的数据)可以由主机平台820存储在区块链810上。机器学习模型的每个细化(例如,变量、权重等的变化)可以被存储在区块链810上。这提供了如何训练模型以及使用什么数据来训练模型的可验证证明。此外,当主机平台820已经获得最终训练的模型时,所得到的模型可以被存储在区块链810上。
[0160]
在模型已经被训练之后,模型可以被部署到现场环境,其中,模型可以基于最终训练的机器学习模型的执行来做出预测/决定。例如,在804中,机器学习模型可以用于诸如飞机、风力涡轮机、医疗机器等资产的基于条件的维护(cbm)。在该示例中,从资产830反馈的数据可以被输入到机器学习模型并且被用于进行事件预测,诸如故障事件、错误代码等。通过在主机平台820处执行机器学习模型而做出的判定可以被存储在区块链810上以提供可审核/可验证的证明。作为一个非限制性示例,机器学习模型可以预测资产830的一部分的未来崩溃/失败,并且创建替换该部分的警报或通知。此决策背后的数据可由主机平台820存储在区块链810上。在一个实施例中,本文描述和/或描绘的特征和/或动作可以在区块链810上或相对于区块链810发生。
[0161]
区块链的新交易可被一起收集到新区块中并被添加到现有散列值。然后将其加密以创建新区块的新散列。当交易被加密时,新散列被添加到下一交易列表,以此类推。结果是各自包含所有先前区块的散列值的区块的链。存储这些区块的计算机定期比较它们的散列值以确保它们全部一致。任何不一致的计算机丢弃引起该问题的记录。这种方法对于确保区块链的防篡改是良好的,但它不是完美的。
[0162]
对此系统施加诡计的一种方式是使不诚实的用户以他们的偏好改变交易列表,但是以保持散列不变的方式。这可以通过暴力完成,换言之,通过改变记录、加密结果以及查看散列值是否相同。并且如果不同,则反复地尝试,直到找到匹配的散列为止。区块链的安全性是基于这样的信念:普通计算机只能在完全不切实际的时间尺度(诸如宇宙的年龄)上执行这种暴力攻击。相比之下,量子计算机要快得多(快1000倍)并且因此造成大得多的威胁。
[0163]
图8b示出了实现量子密钥分发(qkd)以防止量子计算攻击的量子安全区块链852的示例850。在该示例中,区块链用户可以使用qkd来验证彼此的身份。qkd利用诸如光子的量子粒子发送信息,在不破坏量子粒子的情况下窃听者无法复制该信息。这样,发送方和接收方通过区块链可以确定彼此的身份。
[0164]
在图8b的示例中,存在四个用户854、856、858和860。每对用户可在它们之间共享密钥862(即,qkd)。由于在该示例中存在四个节点,因此存在六对节点,因此使用六个不同的密钥862,包括qkd
ab
、qkd
ac
、qkd
ad
、qkd
bc
、qkd
bd
和qkd
cd
。每个对可以通过使用量子粒子(例如光子)发送信息来创建qkd,在不破坏量子粒子的情况下窃听者无法复制该信息。这样,一对用户能够确定彼此的身份。
[0165]
区块链852的操作是基于以下两个过程:(i)交易的创建,以及(ii)聚集新交易的区块的构造。可以类似于传统的区块链网络来创建新交易。每个交易可以包含与发送方、接收方、创建时间、待转移的金额(或值)、证明发送方拥有用于操作的资金的参考交易列表等相关的信息。该交易记录然后被发送到所有其他节点,在其他节点处,该交易记录被输入到
未确认交易池中。在此,两方(即,854-860之中的一对用户)通过提供他们的共享密钥862(qkd)来认证交易。该量子签名可被附接至每个交易,使得交易非常难以篡改。每个节点相对于区块链852的本地副本检查它们的条目以验证每个交易具有足够的资金。然而,交易尚未被确认。
[0166]
可以使用广播协议以分散方式创建区块,而不是对区块执行传统的挖掘过程。在预定时间段(例如,秒、分钟、小时等),网络可将广播协议应用于任何未确认的交易,从而达成关于交易的正确版本的拜占庭协议(共识)。例如,每个节点可以拥有私有值(该特定节点的交易数据)。在第一轮中,节点将它们的私有值传送给彼此。在随后的轮次中,节点传送它们在前一个轮次从其他节点接收的信息。在此,诚实节点能够在新区块内创建完整的一组交易。此新的区块可以被添加到区块链852。在一个实施例中,本文描述和/或描绘的特征和/或动作可在区块链852上或相对于区块链852发生。
[0167]
图9示出了支持本文中描述和/或描绘的一个或多个示例实施例的示例系统900。系统900包括计算机系统/服务器902,其可与许多其他通用或专用计算系统环境或配置一起操作。适于与计算机系统/服务器902一起使用的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络pc、小型计算机系统、大型计算机系统和包括以上系统或设备中的任一个的分布式云计算环境等。
[0168]
计算机系统/服务器902可以在由计算机系统执行的诸如程序模块之类的计算机系统可执行指令的一般上下文中描述。一般而言,程序模块可包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器902可以在分布式云计算环境中实现,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。
[0169]
如图9所示,云计算节点900中的计算机系统/服务器902以通用计算设备的形式示出。计算机系统/服务器902的组件可以包括但不限于一个或多个处理器或处理单元904、系统存储器906、以及将包括系统存储器906的不同系统组件耦接至处理器904的总线。
[0170]
总线表示多个类型的总线结构中的任何一种或多种,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一种的处理器或局部总线。作为示例而非限制,此类体系结构包括工业标准体系结构(isa)总线、微通道体系结构(mca)总线、增强型isa(eisa)总线、视频电子标准协会(vesa)局部总线以及外围组件互连(pci)总线。
[0171]
计算机系统/服务器902通常包括各种计算机系统可读介质。这样的介质可以是可由计算机系统/服务器902访问的任何可用介质,并且其包括易失性和非易失性介质、可移动和不可移动介质。在一个实施例中,系统存储器906实现其他附图的流程图。系统存储器906可包括易失性存储器形式的计算机系统可读介质,诸如随机存取存储器(ram)910和/或高速缓存912。计算机系统/服务器902还可以包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅通过示例的方式,存储系统914可以被提供用于从不可移除的非易失性磁性介质(未示出,并且通常被称为“硬盘驱动器”)进行读取和写入。尽管未示出,可以提供用于从可移动非易失性磁盘(例如,“软盘”)读取或向其写入的磁盘驱动器,以及用于
从可移动非易失性光盘(如cd-rom、dvd-rom或其他光学介质)读取或向其写入的光盘驱动器。在这样的情况下,每一者可以通过一个或多个数据介质接口连接到总线。如以下将进一步描绘和描述的,存储器906可以包括具有被配置为用于执行本技术的不同实施例的功能的一组(例如,至少一个)程序模块的至少一个程序产品。
[0172]
具有一组(至少一个)程序模块918的程序/实用程序916以及操作系统、一个或多个应用程序、其他程序模块和程序数据可以被存储在存储器906中(作为示例而非限制)。操作系统、一个或多个应用程序、其他程序模块和程序数据中的每一个或它们的一些组合可以包括联网环境的实现方式。程序模块918通常执行如本文所述的本技术的不同实施例的功能和/或方法。
[0173]
如本领域技术人员将理解的,本技术的各方面可以体现为系统、方法或计算机程序产品。因此,本技术的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或者结合软件和硬件方面(在本文中可以统称为“电路”、“模块”或“系统”)的实施例的形式。此外,本技术的各方面可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码。
[0174]
计算机系统/服务器902还可以与一个或多个外部设备920(例如,键盘、指点设备、显示器922等)、和/或使用户能够与计算机系统/服务器902交互的一个或多个设备、和/或使计算机系统/服务器902能够与一个或多个其他计算设备通信的任何设备(例如,网卡、调制解调器等)进行通信。这样的通信可经由i/o接口924发生。此外,计算机系统/服务器902可以经由网络适配器926与诸如局域网(lan)、通用广域网(wan)和/或公共网络(例如,互联网)的一个或多个网络通信。如所描绘的,网络适配器926经由总线与计算机系统/服务器902的其他组件通信。应当理解,虽然未示出,但是其他硬件和/或软件组件可以与计算机系统/服务器902结合使用。示例包括但不限于:微码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器、以及数据归档存储系统等。
[0175]
虽然系统、方法和非暂时性计算机可读介质中的至少一个的示例实施例已经在附图中示出并且在前面的详细描述中描述,但是将理解的是,本技术不限于所公开的实施例,而是能够具有由以下权利要求阐述和限定的许多重新布置、修改和替换。例如,不同附图的系统的能力可由本文描述的或分布式架构中的一个或多个模块或组件来执行,并且可包括发射机、接收机或两者。例如,由单独模块执行的功能的全部或一部分可由这些模块中的一者或多者执行。此外,本文描述的功能可以在不同时间以及相对于在模块或组件内部或外部的不同事件来执行。此外,在各个模块之间被发送的信息可以经由数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多个协议中的至少一个在模块之间被发送。此外,由任何模块发送或接收的消息可直接和/或经由一个或多个其他模块被发送或接收。
[0176]
本领域技术人员将理解,“系统”可以体现为个人计算机、服务器、控制台、个人数字助理(pda)、蜂窝电话、平板计算设备、智能电话或任何其他合适的计算设备或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本技术的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的局部和分布式形式来实现。
[0177]
应注意,本说明书中所描述的系统特征中的一些已经被呈现为模块,以便更具体
地强调它们的实现无关性。例如,模块可以被实现为硬件电路,该硬件电路包括定制超大规模集成(vlsi)电路或门阵列、诸如逻辑芯片、晶体管之类的现成半导体、或其他分立组件。模块也可以在可编程硬件设备(诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等)中实现。
[0178]
模块也可以至少部分地在软件中实现以用于由不同类型的处理器执行。所识别的可执行代码单元可以例如包括可以例如被组织为对象、过程或函数的计算机指令的一个或多个物理或逻辑块。然而,所识别的模块的可执行文件不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,这些不同指令当逻辑地被结合在一起时构成该模块并且实现该模块的所声明的目的。此外,模块可存储在计算机可读介质上,计算机可读介质可以是(例如)硬盘驱动器、闪存设备、随机存取存储器(ram)、磁带或用于存储数据的任何其他此类介质。
[0179]
实际上,可执行代码的模块可以是单个指令或许多指令,以及甚至可以分布在几个不同的代码段上、在不同的程序之间、以及跨几个存储器设备。类似地,操作数据可以在本文中在模块内被识别和示出,可以以任何合适的形式体现以及被组织在任何合适类型的数据结构内。操作数据可以被收集为单个数据集,或者可以分布在不同位置上(包括在不同的存储设备上),以及可以至少部分地仅仅作为电子信号存在于系统或网络上。
[0180]
将容易理解的是,如在此的附图中总体上描述和展示的,本技术的这些组件可以按多种不同的配置来安排和设计。因此,实施例的详细描述不旨在限制所要求保护的本技术的范围,而仅代表本技术的所选实施例。
[0181]
本领域技术人员将容易理解,可以用不同顺序的步骤和/或用与所公开配置不同的配置中的硬件元件来实践以上内容。因此,虽然已经基于这些优选实施例描述了本技术,但是对于本领域技术人员而言显而易见的是,特定修改、变化和替代构造将是显而易见的。
[0182]
虽然已经描述了本技术的优选实施例,但是应当理解的是,所描述的实施例仅是说明性的,并且当考虑了对本技术的完全范围的等效物和修改物(例如,协议、硬件设备、软件平台等)时,本技术的范围将仅由所附权利要求书限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1