欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 数据库私有文档共享独创技术69440字

数据库私有文档共享

2021-02-07 04:58:14

数据库私有文档共享

  技术领域

  本申请总体上涉及用于区块链网络的防否认(non-repudiable)的文档共享,并且更具体地,涉及数据库私有文档共享。

  背景技术

  集中式数据库在一个位置处的单个数据库(例如,数据库服务器)中存储和维护数据。这个位置通常是中央计算机,例如,台式中央处理单元(CPU)、服务器CPU或大型计算机。存储在集中式数据库中的信息通常可以从多个不同的点访问。多个用户或客户端工作站可以在集中式数据库上同时工作,例如,基于客户端/服务器配置。集中式数据库由于其单个位置(特别地出于安全目的)而易于管理、维护和控制。在集中式数据库中,数据冗余被最小化,因为所有数据的单个存储位置也意味着给定的数据集仅具有一个主记录。

  然而,集中式数据库受到明显的缺点的影响。例如,集中式数据库具有单点故障。特别是,如果没有容错考虑,并且出现硬件故障(例如硬件、固件和/或软件故障),数据库内的所有数据丢失并且所有用户的工作被中断。此外,集中式数据库高度依赖于网络连接性。因此,连接越慢,每个数据库访问所需的时间量越长。另一缺点是,当集中式数据库由于单个位置而经历高流量时的瓶颈的出现。另外,集中式数据库提供对数据的有限访问,因为数据库仅维护数据的一个副本。因此,多个设备无法在同一时间访问同一条数据,而不带来重大问题或覆盖所存储的数据的风险。另外,由于数据库存储系统具有很少到没有的数据冗余,意外丢失的数据除了通过手动操作很难从备份存储装置中检索。由此,需要一种克服这些缺点和限制的解决方案。

  发明内容

  一个示例实施例提供了一种系统,该系统包括区块链网络,该区块链网络包括以下中的一个或多个:多个区块链节点或对等体,被配置为背书、排序和提交区块链交易;第一区块链客户端,被配置为执行以下操作中的一个或多个:向区块链网络生成用于传递文档的交易、使用共享密钥加密文档、通过私有通道传递加密的文档、以及传递用第一密钥加密的共享密钥;以及第二区块链客户端,通过私有通道耦合到第一区块链客户端,被配置为执行以下操作中的一个或多个:使用私有通道将第一密钥传递到第一区块链客户端,以及生成用于确认接收到加密的文档的交易。

  另一示例实施例提供了一种方法,该方法包括以下中的一个或多个:由第一区块链客户端向区块链网络生成用于传递文档的交易;由第二区块链客户端通过私有通道将第一密钥传递到第一区块链客户端,私有通道提供第一区块链客户端和第二区块链客户端之间的点对点连接;使用共享密钥加密文档;由第一区块链客户端通过私有通道传递加密的文档;由第二区块链客户端生成用于确认接收到加密的文档的交易;以及传递用第一密钥加密的共享密钥。

  另一示例实施例提供了一种包括指令的非暂时性计算机可读介质,当被处理器读取时,这些指令使得处理器执行以下操作中的一个或多个:由第一区块链客户端向区块链网络生成用于传递文档的交易;由第二区块链客户端通过私有通道将第一密钥传递到第一区块链客户端,该私有通道提供第一区块链客户端和第二区块链客户端之间的点对点连接;使用共享密钥加密文档;由第一区块链客户端通过私有通道传递加密的文档;由第二区块链客户端生成用于确认接收到加密的文档的交易;并传递用第一密钥加密的共享密钥。

  附图说明

  图1示出了根据示例实施例的包括数据库的文档共享系统的框图。

  图2A示出了根据示例实施例的示例区块链体系结构配置。

  图2B示出了根据示例实施例的区块链交易流。

  图3A示出了根据示例实施例的许可网络。

  图3B示出了根据示例实施例的另一许可网络。

  图4示出了根据示例实施例的用于执行文档共享的系统消息传送图。

  图5A示出了根据示例实施例的在区块链中共享文档的示例方法的流程图。

  图5B示出了根据示例实施例的在用户之间共享文档的示例方法的流程图。

  图6A示出了根据示例性实施例的被配置为执行本文描述的一个或多个操作的示例系统。

  图6B示出了根据示例性实施例的被配置为执行本文描述的一个或多个操作的另一示例系统。

  图6C示出了根据示例实施例的被配置为利用智能合约的另外的示例系统。

  图6D示出了根据示例实施例的被配置为利用区块链的又一示例系统。

  图7A示出了根据示例实施例的用于将新块添加到分布式分类账的过程。

  图7B示出了根据示例实施例的新数据块的内容。

  图7C示出了根据示例实施例的数字内容的区块链。

  图7D示出了根据示例实施例的可以代表区块链中的块的结构的块。

  图8示出了支持示例实施例中的一个或多个的示例系统。

  具体实施方式

  容易理解的是,如总体地描述和本文附图中示出的那样,本发明的组件可以以多种不同的配置来布置和设计。因此,如附图所示,方法、装置、非暂时性计算机可读介质和系统中的至少一个的实施例的以下详细描述不旨在限制所要求保护的应用的范围,而仅代表所选择的实施例。

  在一个或多个实施例中,贯穿本说明书描述的当前特征、结构或特性可以以任何合适的方式组合或移除。例如,在整个说明书中,短语“示例实施例”、“一些实施例”或其他类似语言的使用指的是结合实施例描述的特定特征、结构或特性可以包括在至少一个实施例中的事实。因此,在整个说明书中,短语“示例实施例”、“在一些实施例中”、“在其他实施例中”或其他类似的语言的出现不一定全部指同一实施例群组,并且所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合或移除。

  此外,虽然术语“消息”可能已经在实施例的描述中使用,但是该应用可以应用于许多类型的网络和数据。另外,虽然在示例性实施例中可以描述特定类型的连接、消息和信令通知,但是该应用不限于特定类型的连接、消息和信令通知。

  示例实施例提供了提供数据库私有文档共享的方法、系统、组件、非暂时性计算机可读介质、设备和/或网络。

  在一个实施例中,该应用利用分散式数据库(诸如区块链),该分散式数据库是包括彼此通信的多个节点的分布式存储系统。分散式数据库包括类似于分布式分类账的仅附接不可变(append-only immutable)数据结构,其能够维护相互不信任的各方之间的记录。不信任的各方在本文中被称为对等体或对等节点。每个对等体维护数据库记录的副本,在分布式对等体之间没有达成共识的情况下,任何单个对等体不能修改数据库记录。例如,对等体可以执行共识协议来校验区块链存储交易,将存储交易分组为块,并在块上构建散列链。为了一致性,该过程通过对存储交易(根据需要)进行排序来形成分类账。在各种实施例中,可以使用许可区块链和/或无许可区块链。在公开区块链或无许可区块链中,任何人都可以参与而无需特定身份。公共区块链通常涉及本地加密货币,并使用基于各种协议(诸如工作量证明(Proof of Work,PoW)的共识。另一方面,许可区块链数据库提供了实体群组之间的安全交互,这些实体共享共同的目标但彼此不完全信任,诸如交换资金、货物、信息等的企业。

  该应用可以利用这样的区块链,该区块链操作适合分散式存储方案并称为“智能合约”或“链码”的任意可编程逻辑。在某些情况下,管理功能和参数可能存在专门的链码,这些链码被称为系统链码。该应用可以进一步利用智能合约,这些智能合约是利用区块链数据库的防篡改属性和节点之间的基础协议的受信任的分布式应用,这被称为背书或背书策略。与此应用相关联的区块链交易可以在提交给区块链之前进行“背书”,而未背书的交易将被忽略。背书策略允许链码以背书所必需的一组对等节点的形式指定交易的背书者。当客户将交易发送到背书策略中指定的对等体时,执行交易以校验交易。在校验之后,交易进入排序阶段,在该阶段中使用共识协议来产生被分组为块的经背书的交易的有序序列。

  该应用可以利用作为区块链系统的通信实体的节点。在不同类型的多个节点可以在同一物理服务器上运行的意义上来说,“节点”可以执行逻辑功能。节点被分组在信任域中,并且与以各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,诸如向背书者(例如,对等体)递交交易调用并向排序服务(例如,排序节点)广播交易提议的客户端或提交客户端节点。另一种类型的节点是对等节点,其可以接收客户提交的交易、提交交易、并维护区块链交易的分类账的状态和副本。对等体也可以扮演背书者的角色,尽管这不是必需的。排序服务节点或排序者是为所有节点运行通信服务的节点,并且其实施了递送保证,诸如在提交交易和修改区块链的世界状态时向系统中的对等节点中的每一个进行广播,该世界状态是初始区块链交易的另一名称,其通常包括控制和设置信息。

  该应用可以利用作为区块链所有状态转换的有序的、防篡改的记录的分类账。状态转换可以由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)递交的链码调用(即,交易)产生。每个参与方(诸如对等节点)可以维护分类账的副本。交易可以导致一组资产键值对作为一个或多个操作数被提交到分类账,诸如创建、更新、删除等。分类账包括用来在块中存储不可变的、有序的记录的区块链(也称为链)。分类账还包括维护区块链的当前状态的状态数据库。

  该应用可以利用这样的链,该链是被构造为散列链接块的交易日志,并且每个块包含一系列N个交易,其中N等于或大于1。块头包括块的交易的散列,以及前一块的块头的散列。以这样的方式,分类账上的所有交易可以是有序的并以密码方式链接在一起。因此,在不破坏散列链接的情况下,不可能篡改分类账数据。最近添加的区块链块的散列表示链上的出现在它之前的每个交易,这使得可以确保所有对等节点处于共识和可信的状态。链可以被存储在对等节点文件系统(即,本地、附接的存储装置、云等)上,有效地支持区块链工作负载的仅附接性质。

  不可变分类账的当前状态表示链交易日志中包含的所有键的最新值。由于当前状态代表通道已知的最新键值,因此其有时被称为世界状态。链码调用针对分类账的当前状态数据执行交易。为了使这些链码交互有效,键的最新值可以被存储在状态数据库中。状态数据库可能仅是对链的交易日志的索引视图,因此其可以在任何时候从链中重新生成。状态数据库可以在对等节点启动时以及交易被接受之前自动恢复(或在需要时生成)。

  在文档共享领域,有几个问题或潜在问题必须解决。首先,针对敏感数据交易的记录保存方法并不强大。其次,当前记录敏感数据移交/交易的方法可能易遭受丢失或改变。第三,更改交易记录可能相对容易。第四,用于跟踪记录的集中式系统可能无法提供强有力的方法来验证外部相关方的信任。第五,敏感数据最好不要让公众看到——虽然增加访问控制有助于管理访问,但可能存在未经授权的访问的可能性。在这种情况下,最好不要把敏感文件暴露给没有“需要知道”的人。最后,当相关各方之间存在争议时,外部各方可能难以验证信任。

  本文描述和描绘的本解决方案的一些益处包括改进的验证和信任,提供了可以用于争议解决的强有力的证据,并且提供了用于传递文档和维护不可变记录的协议,以在保证防否认性的情况下通过私有消息传送通道交换敏感文档。区块链技术提供了为记录交易提供了防否认性的内在结构和操作。

  虽然传统数据库可以用于记录由与文档共享相关的各方和软件代理采取的所有动作,但传统数据库在集中式数据/记录存储装置方面有漏洞。这使得它不适合实施防否认和可验证的记录安全文件传递的方法。通过使用区块链技术,在区块链创造的记录无法逆转,因为区块链本质上是去中心化的。区块链技术还消除了有争议的情况下任何第三方验证交易的情形。

  本申请没有描述使用所公开的协议对计算机功能进行的功能改进。所公开的协议利用区块链技术,以便使双方能够通过可验证的交易共享敏感文档信息,同时不向区块链暴露敏感信息。

  本申请将以下信息存储在由灾难恢复提供商提供的每个客户的不可变分类账中。该信息包括但不限于发送者/接收者元信息(即,元数据)、正在被发送的加密的文档的散列值以及接收区块链客户端的加密密钥的散列值。

  图1示出了根据示例实施例的包括数据库的文档共享系统的框图。参考图1,网络100包括第一区块链客户端104A、第二区块链客户端104B以及一个或多个区块链节点或对等体108。尽管示出了两个区块链客户端104(被标识为区块链客户端104A和104B),但是应当理解的是,任何数量的区块链客户端104都可以存在于区块链网络100中——该网络可以是公共区块链网络或者许可区块链网络100。

  在所示实施例中,第一区块链客户端104A是文档116的提供者,并且第二区块链客户端104B是文档116的接收方。第一区块链客户端104A和第二区块链客户端104B可以具有共享的或公共的加密密钥124。第二区块链客户端104B还具有与第二区块链客户端104B相关联的第一密钥120。在一个实施例中,第一密钥120是与第二区块链客户端104B相关联的私钥。在另一实施例中,第一密钥120是与第一区块链客户端104A和第二区块链客户端104B两者相关联的共享密钥。

  除了区块链网络100之外,区块链客户端104A、104B通过私有通道112连接,该私有通道是区块链客户端104A和区块链客户端104B之间的点对点私有通信路径。在一个实施例中,私有通道112是区块链客户端104A、104B之间的虚拟专用网络(virtual privatenetwork,VPN)连接。在另一实施例中,私有通道112可以是使用云存储装置的通信路径,本申请公开了用于文档共享的通信协议,其使用区块链交易和通过私有通道112的通信的组合。

  区块链网络100可以包括任意数量的区块链节点或对等体108,它们被示为区块链节点或对等体108A到区块链节点或对等体108N。区块链节点或对等体108执行所有功能来建立和维护区块链网络100并处理区块链交易。这些功能包括但不限于背书交易、排序交易、提交交易等。每个区块链节点或对等体108包括共享分类账128的副本,其为包含区块链交易的所有块提供不可变的存储。区块链节点或对等体108A包括共享分类账128A,并且区块链节点或对等体108N包括共享分类账128N。

  第一区块链客户端104A通过经由区块链网络100向区块链节点或对等体108递交文档传递交易132来开始该过程。文档传递交易132指定第一和第二区块链客户端,并且可以标识文档116,但是不显示文档116的内容。第二区块链客户端104B然后向第一区块链客户端104A提供第一加密密钥136。第一区块链客户端104A使用共享密钥124加密文档116,并通过私有通道112将加密的文档140传输到第二区块链客户端104B。代替共享密钥124,在其他实施例中,可以使用公钥来加密文档116。

  响应于接收到加密的文档140,第二区块链客户端104B通过区块链网络100向区块链节点或对等体108生成确认交易144。确认交易144提供第二区块链客户端104B已经从第一区块链客户端104A接收到加密的文档140的确认,并且包括用共享密钥或公钥124加密的文档116的散列。

  响应于接收到确认交易144,第一区块链客户端104A通过区块链网络100向区块链节点或对等体108生成加密密钥交易152。加密密钥交易152提供用第一密钥120加密的共享密钥或公钥124。第一密钥120先前作为第一加密密钥136通过私有通道112被提供给第一区块链客户端104A。

  在替代性实施例中,不是第一区块链客户端104A通过区块链网络100向区块链节点或对等体108生成加密密钥交易152,而是第一区块链客户端104A用第一加密密钥136加密的共享密钥或公钥124,并通过私有通道112将加密密钥148传递到第二区块链客户端148。作为响应,第二区块链客户端104B可选地通过区块链网络100向区块链节点或对等体108生成第二确认交易144。第二确认交易144提供第二区块链客户端104B已经从第一区块链客户端104A接收到加密的加密密钥124的确认,并且包括用第一密钥136加密的加密密钥124的散列。

  图2A示出了根据示例实施例的区块链体系结构配置200。参考图2A,区块链体系结构200可以包括某些区块链元素,例如区块链节点202群组。区块链节点202可以包括一个或多个节点204-210(这四个节点仅通过示例来描绘)。这些节点参与许多活动,诸如区块链交易添加和校验过程(共识)。区块链节点204-210中的一个或多个可以基于背书策略来背书交易,并且可以为体系结构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链认证,并试图写入存储在区块链层216中的区块链不可变分类账,其副本也可以被存储在基础物理基础设施214上。区块链配置可以包括一个或多个应用224,这些应用链接到应用编程接口(application programming interface,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可以验证客户签名并执行链码功能来发起交易。输出可能包括链码结果、在链码中读取的一组键/值版本(读取集)、以及在链码中写入的该组键/值(写入集)。如果被批准,提议响应292连同背书签名一起被发送回客户端260。客户端260将背书组装到交易有效载荷293中,并将其广播到排序服务节点284。排序服务节点284然后将排序的交易作为块递送给通道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可以校验交易。例如,对等体可以检查背书策略,以确保指定对等体的正确分配已经对结果进行签名,并且对照交易有效载荷293认证了签名。

  再次参考图2B,客户端节点260通过构造请求并将其发送到作为背书者的对等节点281来发起交易291。客户端260可以包括利用支持的软件开发工具包(softwaredevelopment kit,SDK)的应用,其利用可用的API来生成交易提议。该建议是调用链码函数以便可以读取数据和/或将其写入分类账(即,为资产写入新的键值对)的请求。SDK可以用作小型函数库(shim),以将交易提议打包成适当体系结构的格式(例如,通过远程过程调用(remote procedure call,RPC)的协议缓冲器)并获取客户端的加密凭证来产生用于交易提议的唯一签名。

  作为响应,背书对等节点281可以验证(a)交易提议是良好形成的,(b)交易在过去还没有被提交(重放攻击保护),(c)签名是有效的,以及(d)递交者(在示例中是客户端260)被适当授权以在该通道上执行提议的操作。背书对等节点281可以将交易提议输入作为调用的链码函数的参量。然后,针对当前状态数据库执行链码,以产生包括响应值、读取集和写入集的交易结果。但是,此时不会对分类账进行更新。在292中,该组值连同背书对等节点281的签名作为提议响应292被传回客户端260的SDK,该客户端260解析应用要消费的有效载荷。

  作为响应,客户端260的应用审查/验证背书对等体签名,并比较提议响应以确定提议响应是否相同。如果链码仅查询分类账,则应用将审查查询响应,并且通常不会将交易递交给排序节点服务284。如果客户端应用旨在将交易提交给排序节点服务284以更新分类账,则该应用确定在递交之前是否已满足指定的背书策略(即,交易所需的所有对等节点是否背书了交易)。这里,客户可以只包括交易的多方中的一个。在这种情况下,每个客户可能具有自己的背书节点,并且每个背书节点需要背书交易。该体系结构使得即使应用选择不审查响应或以其他方式转发未背书的交易,背书策略仍将由对等体强制实施并在提交校验阶段得到支持。

  在成功审查之后,在步骤293中,客户端260将背书组装到交易中,并在交易消息中向排序节点284广播交易提议和响应。该交易可以包含读取/写入集、背书对等体签名和通道ID。排序节点284不需要为了执行其操作而审查交易的全部内容,而是排序节点284可以简单地从网络中的所有通道接收交易、按通道按时间顺序对它们进行排序、并且创建每个通道的交易块。

  交易块从排序节点284递送到通道上的所有对等节点281-283。块内的交易294被校验,以确保满足任何背书策略,并确保自交易执行生成读取集以来,读取集变量的分类账状态没有变化。块中的交易被标记为有效或无效。另外,在步骤295中,每个对等节点281-283将块附加到通道的链,并且对于每个有效交易,写入集被提交到当前状态数据库。发出事件以通知客户端应用交易(调用)已经不可变地附接到链,以及通知交易是经校验的还是未校验的。

  图3A示出了许可区块链网络300的示例,其特征在于分布式、分散式对等体系结构。在该示例中,区块链用户302可以发起到许可区块链304的交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过API等来发布。网络可以为监管者306(诸如审计员)提供访问。区块链网络运营商308管理成员许可,诸如将监管者306登记为“审计员”以及将区块链用户302注册为“客户端”。审计员仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。

  区块链开发者310可以写入链码和客户端侧应用。区块链开发者310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的凭证,开发者310可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点314连接到许可区块链304。在进行任何交易之前,对等节点314从管理用户角色和许可的证书授权机构316检索用户的登记和交易证书。在某些情况下,区块链用户必须拥有这些数字证书,以便在许可区块链304上进行交易。同时,试图利用链码的用户可能需要在传统数据源312上验证他们的凭证。为了确认用户的授权,链码可以通过传统的处理平台318对该数据使用带外连接。

  图3B示出了许可区块链网络320的另一示例,其特征在于分布式、分散式对等体系结构。在该示例中,区块链用户322可以向许可区块链324递交交易。在该示例中,交易可以是部署、调用或查询,并且可以通过利用SDK的客户端侧应用、直接通过API等来发布。网络可以为监管者326(诸如审计员)提供访问。区块链网络运营商328管理成员许可,诸如将监管者326登记为“审计员”以及将区块链用户322注册为“客户端”。审计员仅限于查询分类账,而客户端可以被授权部署、调用和查询某些类型的链码。

  区块链开发者330写入链码和客户端侧应用。区块链开发者330可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源332的凭证,开发者330可以使用带外连接来访问数据。在该示例中,区块链用户322通过对等节点334连接到网络。在进行任何交易之前,对等节点334从证书授权机构336检索用户的登记和交易证书。在某些情况下,区块链用户必须拥有这些数字证书,以便在许可区块链324上进行交易。同时,试图利用链码的用户可能需要在传统数据源332上验证他们的凭证。为了确认用户的授权,链码可以通过传统的处理平台338对该数据使用带外连接。

  图4示出了根据示例实施例的用于执行文档共享的系统消息传送图。参考图4,系统消息传送图400包括发送区块链客户端410、接收区块链客户端420和区块链网络430。

  发送区块链客户端410创建交易提议415,以提议向接收区块链客户端420发送文档,并将文档传递交易提议416提供给区块链网络430。区块链网络430背书交易提议425,并将经背书的交易426提供给发送区块链客户端410和接收区块链客户端420。

  接收区块链客户端420获得与接收区块链客户端420相关联的第一加密密钥435,并通过发送区块链客户端410和接收区块链客户端420之间的私有通道将第一加密密钥436传递给发送区块链客户端410。发送区块链客户端410在接收到第一加密密钥436之后,用第二加密密钥440加密与文档传递交易416相关的文档。加密的文档441通过私有通道被提供给接收区块链客户端420。第二加密密钥虽然通常是共享密钥,但也可以替代地是公共加密密钥。附加地,可以使用附加的共享通道来代替私有通道,诸如云存储装置。

  接收区块链客户端420接下来计算加密的文档441的散列,并且作为响应,生成到区块链网络430的确认交易446。区块链网络430背书交易450,并将经背书的交易451提供给发送区块链客户端410和接收区块链客户端420。

  发送区块链客户端410然后用第一加密密钥455加密第二加密密钥。在第一实施例中,发送区块链客户端410通过私有通道将加密密钥456传递到接收区块链客户端420。作为响应,接收区块链客户端420向区块链网络430生成第二确认交易(未示出)。在第二实施例中,发送区块链客户端410向区块链网络430生成包括加密密钥的加密密钥交易457。区块链网络430背书交易460,并将经背书的交易461提供给发送区块链客户端410和接收区块链客户端420。

  图5A示出了根据示例实施例的在区块链中共享文档的示例方法的流程图500。参考图5A,方法500可以包括以下步骤中的一个或多个。

  在框504,创建区块链交易提议以传递文档。区块链交易提议指定了文件发送者和文件接收者。一个或多个背书者节点或对等体背书交易提议并返回背书。

  在框508,文档接收者通过文档发送者和文档接收者之间的私有通信链接向文档发送者传递第一密钥。第一密钥对应于文档接收者并与其相关联。

  在框512,文档发送者使用文档发送者和文档接收者两者拥有的共享密钥或私钥对文档进行加密。

  在框516,文档发送者通过私有通信链接或通道将加密的文档传递给文档接收者。

  在框520,文档接收者生成提供接收文档的确认和散列的区块链交易。散列是用共享密钥或私钥加密的文档的散列。

  在框524,文档发送者生成区块链交易以提供由第一密钥加密的共享或私有密钥。所有交易被存储在区块链网络的共享分类账中的不可变块中。

  图5B示出了根据示例实施例的在用户之间共享文档的示例方法的流程图550。参考图5B,方法550可以包括以下步骤中的一个或多个。

  在框554,获得共享文档的请求。文档共享应用从企业的用户获得共享文档的请求。在一些实施例中,用户可以不与企业或组织相关联,而是可以简单地与计算环境中的特定用户账户相关联。

  在框558,提取文档布局。文档共享应用可以提取与文档文件相关联的文档布局。

  在框562,提取文档结构。文档共享应用可以提取与文档文件相关联的文档结构。

  在框566,标识共享目的地。文档共享应用可以标识与其共享文档的目的地。在一些实施例中,目的地可以包括电子邮件地址。在其他实施例中,目的地可以包括另一形式的用户标识符,利用该用户标识符可以标识向其共享文档的用户。

  在框570,生成具有安全限制的文档表示。文档共享应用可以基于文档布局和文档结构生成与文档相关联的文档表示。文档表示可以包括限制使用与文档的文档表示相关联的文档部分的安全限制。

  在框574,引用被传输到目的地。文档共享应用可以将对文档表示的引用(诸如超链接)传输到与共享文档的请求相关联的目的地。在一些实施例中,文档共享应用不需要为共享特定文档的每个请求生成新的文档表示。在一些实施例中,当用户创建特定文档或发起在数据存储中存储文档时,文档共享应用可以生成与文档相关联的文档表示,并且在接收到与另一用户共享文档的请求时,创建对文档表示的引用。

  图6A示出了示例系统600,其包括被配置为根据示例实施例执行各种操作的物理基础设施610。参考图6A,物理基础设施610包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留区块链620上),该智能合约可以执行示例实施例中的任何一个中包括的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示写入一个或多个智能合约630和/或区块链620或从其读取的写入或输出信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。进一步,模块612和模块614可以是相同的模块。

  图6B示出了根据示例实施例的被配置为执行各种操作的另一示例系统640。参考图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(其可以驻留区块链620上),该智能合约可以执行示例实施例中的任何一个中包括的任何操作步骤608(在模块612中)。步骤/操作608可以包括所描述或描绘的实施例中的一个或多个,并且可以表示写入一个或多个智能合约630和/或区块链620或从其读取的写入或输出信息。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。进一步,模块612和模块614可以是相同的模块。

  图6C示出了根据示例实施例的被配置为在签约方之间利用智能合约配置的示例系统,以及被配置为在区块链上强制实施智能合约条款的中介服务器。参考图6C,配置650可以表示由智能合约630驱动的通信会话、资产转移会话或过程或程序,该智能合约630明确标识一个或多个用户设备652和/或656。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可能需要由作为智能合约交易的各方的实体652和656中的一个或多个进行数字签名。智能合约执行的结果可以作为区块链交易被写入区块链620。智能合约630驻留在区块链620上,该区块链620可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。

  图6D示出了根据示例实施例的包括区块链的系统660。参考图6D的示例,应用编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或其他链码)和数据(例如,分布式分类账等)的公共接口。在该示例中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等体(即,服务器654)来在区块链上执行交易(调用、查询等)的公共接口。这里,服务器654是区块链网络对等组件,其保存世界状态的副本和分布式分类账,从而允许客户端652和656查询关于世界状态的数据以及将交易提交到区块链网络,其中,根据智能合约630和背书策略,背书对等体将运行智能合约630。

  上述实施例可以以硬件、以由处理器执行的计算机程序、以固件或以上述的组合来实施。计算机程序可以实现在计算机可读介质上,诸如存储介质。例如,计算机程序可以驻留在随机存取存储器(“random access memory,RAM”)、闪存、只读存储器(“read-onlymemory,ROM”)、可擦除可编程只读存储器(“erasable programmable read-only memory,EPROM”)、电可擦除可编程只读存储器(“electrically erasable programmable read-only memory,EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“compact diskread-only memory,CD-ROM”)或本领域已知的任何其他形式的存储介质中。

  示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替代性方案中,存储介质可以集成到处理器中。处理器和存储介质可以驻留在专用集成电路(“application specific integrated circuit,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是提交对等体,该提交对等体已经接收到新数据块730,以用于存储在区块链720上。区块链中的第一块可以被称为创世块,其包括关于区块链、其成员、存储在其中的数据等的信息。

  排序服务710可以由一群排序者构成。排序服务710不处理交易、智能合约或维护共享分类账。而是,排序服务710可以接受背书的交易,并指定这些交易被提交给分布式分类账720的顺序。区块链网络的体系结构可以被设计成使得“排序”的实现(例如,Solo、Kafka、BFT等)成为可插拔组件。

  交易以共识的顺序被写入分布式分类账720。建立交易的顺序,以确保对状态数据库724的更新在它们被提交给网络时是有效的。与通过解决加密难题或挖矿进行排序的加密货币区块链系统(如比特币等)不同,在该示例中,分布式分类账720的各方可以选择最适合该网络的排序机制。

  当排序服务710初始化新数据块730时,新数据块730可以被广播给提交对等体(例如,区块链节点711、712和713)。作为响应,每个提交对等体通过检查以确保读取集和写入集仍然匹配状态数据库724中的当前世界状态来校验新数据块730内的交易。具体地,提交对等体可以确定当背书者模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等体校验交易时,交易被写入分布式分类账720上的区块链722,并且状态数据库724用来自读取写入集的写入数据更新。如果交易失败,也就是说,如果提交对等体发现读取写入集与状态数据库724中的当前世界状态不匹配,则排序到块中的交易仍将被包括在该块中,但是它将被标记为无效,并且状态数据库724将不被更新。

  参考图7B,存储在分布式分类账720的区块链722上的新数据块730(也称为数据块)可以包括多个数据段,诸如块头740、块数据750和块元数据760。应当理解的是,图7B中示出的各种所描绘的块及其内容(诸如新数据块730及其内容)仅仅是示例,并不意味着限制示例实施例的范围。新数据块730可以将N(例如,1、10、100、500、1000、2000、3000等)个交易的交易信息存储在块数据750内。新数据块730还可以在块头740内包括到先前块(例如,在图7A中的区块链722上)的链接。特别地,块头740可以包括先前块的块头的散列。块头740还可以包括唯一的块编号、新数据块730的块数据750的散列等。新数据块730的块编号可以是唯一的,并以各种顺序分配,诸如从零开始的增量/有序顺序。

  块数据750可以存储记录在新数据块730内的每个交易的交易信息。例如,交易数据可以包括以下中的一个或多个:交易类型、版本、时间戳、分布式分类账720的通道ID、交易ID、时段、有效载荷可见性、链码路径(部署tx)、链码名称、链码版本、输入(链码和函数)、客户端(创建者)标识(诸如公钥和证书)、客户端的签名、背书者的身份、背书者签名、提议散列、链码事件、响应状态、名称空间、读取集(由交易读取的键和版本的列表)、写入集(键和值的列表等)、开始键、结束键、键列表、Merkel树查询概要等。可以针对N个交易中的每一个存储交易数据。

  在一些实施例中,块数据750还可以存储新数据762,该新数据向区块链722中的块的散列链接的链添加附加信息。附加信息包括本文描述或描绘的步骤、特征、过程和/或动作中的一个或多个。因此,新数据762可以被存储在分布式分类账720上的块的不可变日志中。存储这种新数据762的益处中的一些反映在本文公开和描绘的各种实施例中。尽管在图7B中,新数据762被描绘在块数据750中,但是也可以位于块头740或块元数据760中。

  块元数据760可以存储多个元数据字段(例如,作为字节数组等)。元数据字段可以包括块创建时的签名、对最新配置块的引用、标识块内有效和无效交易的交易过滤器、保持对块进行排序的排序服务的最新偏移等。签名、最新的配置块和排序者元数据可以由排序服务710添加。同时,块的提交者(诸如区块链节点712)可以基于背书策略、读取/写入集的验证等来添加有效性/无效性信息。交易过滤器可以包括大小等于块数据750中的交易的数量的字节数组和标识交易是否有效/无效的校验码。

  图7C示出了根据本文描述的实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关联的信息。文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其他形式的数字内容。区块链的不可变的、仅附接方面用作保护数字内容的完整性、有效性和真实性的安全措施,使其适合在可接受性规则在其中适用的法律诉讼中或者在其中考虑证据或其中数字信息的呈现和使用另外地是令人感兴趣的其他环境中使用。在这种情况下,数字内容可以被称为数字证据。

  区块链可以通过多种方式形成。在一个实施例中,数字内容可以包括在区块链本身中并从区块链本身进行访问。例如,区块链的每个块可以沿着相关联的数字内容存储引用信息的散列值(例如,头、值等)。散列值和相关联的数字内容然后可以一起被加密。因此,可以通过解密区块链中的每个块来访问每个块的数字内容,并且每个块的散列值可以用作引用先前块的基础。

  这可以说明如下:

  

  在一个实施例中,数字内容可以不包括在区块链中。例如,区块链可以存储没有任何数字内容的每个块的内容的加密散列。数字内容可以与原始文件的散列值相关联地存储在另一存储区域或存储器地址中。另一存储区域可以是用于存储区块链的相同存储设备,或者可以是不同的存储区域,或者甚至是分离关系的数据库。每个块的数字内容可以通过获得或查询感兴趣的块的散列值,并且然后在存储区域中查找该散列值来引用或访问,该散列值与实际数字内容相对应地存储。该操作可以由例如数据库网守来执行。这可以说明如下:

  

  在图7C的示例实施例中,区块链770包括以排序序列加密链接的多个块7781、7782、……、778N,其中N≥1。用于链接块7781、7782、……、778N的加密可以是多个键控或非键控散列函数中的任何一个。在一个实施例中,块7781、7782、……、778N受到散列函数的影响,该散列函数根据基于块中的信息的输入产生n位字母数字输出(其中n是256或另一数量)。这种散列函数的示例包括但不限于,SHA型(SHA代表安全散列算法)算法、Merkle-Damgard算法、HAIFA算法、Merkle树算法、基于随机数的算法和非抗碰撞的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依次包括多个数据,诸如Data 1、Data 2、…、Data N。数据用描述与数据相关联的内容和/或特性的元数据Metadata 1、Metadata 2、…、Metadata N来标记。例如,每个数据的元数据可以包括指示数据的时间戳、处理数据的信息、指示数据中描绘的人或其他内容的关键词、和/或可以有助于整体建立文件的有效性和内容的其他特征,以及特别是其使用数字证据,例如,如结合下面讨论的实施例所述。除了元数据之外,每个数据都可以用对先前数据的引用REF1、REF2、…、REFN来标记,以防止篡改、文件中的间隙以及通过文件的顺序引用。

  一旦元数据被分配给数据(例如,通过智能合约),元数据就不能在没有散列改变的情况下被改变,散列改变可以被容易地标识为无效。因此,元数据创建了可以被访问以便由参与者在区块链中使用的信息的数据日志。

  值776i是散列值或基于先前讨论的任何类型的信息计算的其他值。例如,对于任何给定的块Blocki,该块的值可以被更新以反映对该块执行的处理,例如,新的散列值、新的存储位置、相关联的文件的新的元数据、控制或访问的转移、标识符或要被添加的其他动作或信息。尽管每个块中的值被示出为与文件和头的数据的元数据分离,但是在另一实施例中,该值可以部分或全部地基于该元数据。

  一旦区块链770形成,则在任何时间点,可以通过在块上向区块链查询值的交易历史来获得文件的不可变的监管链。该查询或跟踪程序可以从解密最近包括的块(例如,最新(第N个)块)的值开始,并且然后继续解密其他块的值,直到到达创世块并且恢复原始文件。解密也可以涉及在每个块处解密头和文件以及相关联的元数据。

  解密是基于每个块中发生的加密类型来执行的。这可能涉及使用私钥、公钥或公钥-私钥对。例如,当使用非对称加密时,区块链参与者或网络中的处理器可以使用预定算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可以公开地分布以用作从其他用户接收消息的地址,例如,IP地址或家庭地址。私钥被保持为是秘密的,并且用于对发送给其他区块链参与者的消息进行数字签名。签名包含在消息中,使得接收方可以使用发送人的公钥进行验证。这样,接收方可以确定只有发送人可能发送此消息。

  生成密钥对可能类似于在区块链上创建账户,但实际上不必在任何地方注册。而且,在区块链执行的每一个交易由发送者使用其私钥进行数字签名。此签名确保只有帐户的所有者才能跟踪和处理(如果在由智能合约确定的许可范围内)区块链的文件。

  图8示出了支持本文描述和/或描绘的示例实施例中的一个或多个的示例系统800。系统800包括计算机系统/服务器802,其可与许多其他通用或专用计算系统环境或配置一起操作。适用于与计算机系统/服务器802一起使用的众所周知的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户机、胖客户机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子设备、网络PC、小型计算机系统、大型计算机系统以及包括上述任何系统或设备的分布式云计算环境等。

  计算机系统/服务器802可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般上下文中描述。一般而言,程序模块可以包括执行特定任务或实施特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器802可以在分布式云计算环境中实践,其中任务由通过通信网络链接的远程处理设备来执行。在分布式云计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机系统存储介质中。

  如图8所示,云计算节点800中的计算机系统/服务器802以通用计算设备的形式示出。计算机系统/服务器802的组件可以包括但不限于一个或多个处理器或处理单元804、系统存储器806以及将包括系统存储器806的各种系统组件耦合到处理器804的总线。

  总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

  计算机系统/服务器802典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器802访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。在一个实施例中,系统存储器906实现其他附图的流程图。系统存储器806可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)810和/或高速缓存存储器812。计算机系统/服务器812可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统814可以用于读写不可移动的、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。存储器806可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

  具有一组(至少一个)程序模块818的程序/实用工具816,可以存储在例如存储器28中,这样的程序模块818包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块818通常执行本申请所描述的各实施例中的功能和/或方法。

  如本领域技术人员将理解的那样,本申请的各方面可以被实现为系统、方法或计算机程序产品。因此,本申请的各方面可以采取完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)、或结合软件和硬件方面的实施例的形式,它们在本文中全部可以统称为“电路”、“模块”或“系统”。另外,本申请的各方面可以采取被实现在其上包含有计算机可读程序代码的一个或多个计算机可读介质中的计算机程序产品的形式。

  计算机系统/服务器802也可以与一个或多个外部设备820(例如键盘、指向设备、显示器822等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器802交互的设备通信,和/或与使得该计算机系统/服务器802能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过I/O接口824进行。并且,计算机系统/服务器802还可以通过网络适配器826与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器826通过总线与计算机系统/服务器802的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器802使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

  尽管系统、方法和非暂时性计算机可读介质中的至少一个的示例性实施例已经在附图中示出并在前面的详细描述中描述,但是应当理解的是,本申请不限于所公开的实施例,而是能够进行由所附权利要求所阐述和定义的许多重新排列、修改和替换。例如,各种附图的系统的能力可以由本文描述的模块或组件中的一个或多个来执行,或者在分布式体系结构中执行,并且可以包括发射器、接收器或发射器和接收器两者的对。例如,由各个模块执行的功能中的全部或部分可以由这些模块中的一个或多个执行。进一步,本文描述的功能可以在模块或组件内部或外部在不同时间以及与不同事件相关地执行。而且,在各种模块之间发送的信息可以经由数据网络、互联网、语音网络、互联网协议网络、无线设备、有线设备和/或经由多个协议中的至少一个在模块之间发送。而且,由任何模块发送或接收的消息可以直接和/或经由其他模块中的一个或多个发送或接收。

  本领域技术人员将理解,“系统”可以被实现为个人计算机、服务器、控制台、个人数字助理(personal digital assistant,PDA)、蜂窝电话、平板计算设备、智能手机或任何其他合适的计算设备、或设备的组合。将上述功能呈现为由“系统”执行并不旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以符合计算技术的本地化和分布式形式来实施。

  应当注意的是,本说明书中描述的系统特征中的一些已经被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以被实施为硬件电路,该硬件电路包括定制的超大规模集成(very large-scale integration,VLSI)电路或门阵列、现成半导体(诸如逻辑芯片、晶体管或其他分立元件)。模块也可以在可编程硬件设备中实施,诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备、图形处理单元等。

  模块也可以至少部分地在软件中实施,以便于由各种类型的处理器执行。可执行代码的被标识的单元可以例如包括计算机指令的一个或多个物理或逻辑块,其可以例如被组织为对象、程序或功能。然而,被标识的模块的可执行程序不需要物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时包括该模块并实现该模块的所陈述的目的。进一步,模块可以被存储在计算机可读介质上,该介质可以是例如硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其他这样的介质。

  实际上,可执行代码的模块可以是单个指令或许多指令,甚至可以分布在几个不同的代码段上、不同的程序之间以及分布几个存储器设备上。类似地,操作数据在本文中可以在模块中被标识和示出,并且可以以任何合适的形式被实现,并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集来收集,或者可以分布在不同的位置上,包括在不同的存储设备上,并且可以至少部分地仅仅作为电子信号存在于系统或网络上。

  容易理解的是,如本文附图中总体地描述和示出的那样,本申请的组件可以以各种不同的配置来排列和设计。因此,实施例的详细描述并不旨在限制所要求保护的应用的范围,而是仅仅代表所选择的应用的实施例。

  本领域的普通技术人员将容易理解,可以用处于不同顺序的步骤和/或用于处于不同于所公开的配置的硬件元件来实践上述内容。因此,尽管已经基于这些优选的实施例描述了本申请,但是对于本领域技术人员来说,某些修改、变化和替代结构将是显而易见的。

  虽然已经描述了本申请的优选的实施例,但是应当理解的是,所描述的实施例仅是说明性的,并且当考虑到所附权利要求的等同物和修改(例如,协议、硬件设备、软件平台等)的全部范围时,本申请的范围仅由所附权利要求来限定。

《数据库私有文档共享.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)