分区的防篡改数据存储装置中的跨分区调用的制作方法

文档序号:33079622发布日期:2023-01-31 17:28阅读:30来源:国知局
分区的防篡改数据存储装置中的跨分区调用的制作方法
分区的防篡改数据存储装置中的跨分区调用
1.相关申请的交叉引用
2.本专利申请要求于2019年12月2日提交的题为“分区的防篡改数据存储装置中的跨分区调用(cross-partition calls in partitioned,tamper-evident data stores)”的美国临时申请62/942,622的权益。每个前述专利申请的全部内容通过引用结合于此。
技术领域
3.本公开总体上涉及防篡改数据存储装置,并且更具体地,涉及分区的防篡改数据存储装置中的跨分区调用。


背景技术:

4.防篡改数据存储装置通常用于以在不在数据结构中留下修改的证据的情况下随后进行修改在计算上通常是不可行的方式记录数据。通常,这些数据存储装置将所记录的数据条目与基于这些条目的单向函数的输出相关联。单向函数的输出和未来某个时间点的条目之间的不一致性指示篡改。通常可以通过基于条目的当前版本重新计算单向函数以确定输出是否与数据存储装置中存在的相匹配来检查篡改。如果其不匹配,则潜在地指示篡改。
5.单向函数通常表现出在给定输出的情况下计算输入(例如以反转函数)的相对高的计算复杂度(例如时间复杂度或存储复杂度方面),但是表现出根据给定输入计算输出的相对低的计算复杂度。通常,这些函数反转在计算上是昂贵的,通常到了商业上不可行的程度。例如,许多单向函数在利用消费级、最先进的中央处理单元的情况下需要超过10年的计算时间来确定产生预定输出的输入。为了进一步强化数据结构,这些单向函数的输入和输出可以与各种变化的值(如时间戳)链接和组合,以放大反转计算所需的计算复杂度。
6.结果,对防篡改数据结构中的条目的改变导致与基于那些条目的各种单向函数的输出在内部不一致的条目。篡改通常可以通过审核器过程检测,该审核器过程基于当前条目重新计算单向函数的结果并确定该结果是否与数据存储装置中已经存在的那些结果一致。对条目的改变以计算上不可避免的方式(例如通过定制经修改的条目来产生单向函数的相同输出)将防篡改数据存储装置再现为内部不一致。


技术实现要素:

7.以下是本技术的一些方面的非穷举列表。这些和其他方面在以下公开内容中描述。
8.一些方面包括一种过程,包括:利用计算机系统由与分布式计算平台的防篡改数据存储装置的第一分区的第一子分区相关联的第一程序获得第一请求,以读取存储在(i)分布式计算平台的防篡改数据存储装置的第一分区的第二子分区或者(ii)分布式计算平台的防篡改数据存储装置的第二分区中的数据,其中:防篡改数据存储装置包括多个分区,包括第一分区和第二分区,多个分区中的每一个对应于加密散列指针的不同的有向非循环
图,分布式计算平台被配置成将在分布式计算平台上执行的程序与分区和分区的子分区相关联,分布式计算平台被配置成防止程序读取程序与其不相关联的子分区或分区中的数据,并且能够在分布式计算平台上执行的程序被授权将程序状态写入到相应程序与其相关联的子分区和分区;利用计算机系统,利用分布式计算平台在其上执行的一组对等计算节点中的对等计算节点的子集确定第一程序被授权从第二子分区或第二分区读取;以及响应于确定,使得所请求的数据从第二子分区或第二分区被读取并被提供给第一程序。
9.一些方面包括具有操作码的虚拟机,该操作码被配置成通过响应于操作码的自变量改变指向状态字典树的指针来实现跨分区或跨子分区调用。
10.一些方面包括存储指令的有形的、非暂时性的机器可读介质,这些指令在由数据处理装置执行时使得数据处理装置执行包括以上提及的过程的操作。
11.一些方面包括一种系统,该系统包括:一个或多个处理器;以及存储指令的存储器,这些指令在由处理器执行时使得处理器实现以上提及的过程的操作。
附图说明
12.当根据以下附图阅读本技术时,将会更好地理解本技术的以上提及的各方面和其他方面,在附图中,相似的数字表示相似或相同的元件:
13.图1是描绘根据本技术的一些实施例的可以通过其在防篡改数据存储装置中进行跨分区调用的过程的示例的流程图;
14.图2是描绘根据本技术的一些实施例的可以通过其在防篡改数据存储装置中进行跨子分区调用的过程的示例的流程图;
15.图3a和图3b是根据本技术的一些实施例的防篡改数据存储装置的示例的示意图;
16.图4是根据本技术的一些实施例的其中可以实施图3a和图3b的数据存储装置以及图1和图2的过程的分布式计算平台的示例的物理和逻辑架构框图;
17.图5是描绘根据本技术的一些实施例的可以由图4的分布式计算平台实施的访问控制的框图;以及
18.图6是描绘可以通过其实施上述技术的计算设备的示例的框图。
19.虽然本技术容易受到各种修改和替代性形式的影响,但是其具体实施例在附图中以示例的方式示出,并且将在此详细描述。附图可能不是按比例绘制的。然而,应当理解的是,附图及其详细描述并不旨在将本技术限制于所公开的特定形式,而是相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代性方案。
具体实施方式
20.为了减轻本文描述的问题,发明人必须发明解决方案并且在某些情况下同样重要的是认识到在密码学和分布式计算领域中被其他人忽略(或尚未预见)的问题。事实上,发明人希望强调认识到新出现的这些问题的困难,并且如果行业趋势如发明人预期那样继续,这些问题将在未来变得更加明显。进一步,因为解决了多个问题,所以应该理解的是,一些实施例是特定于问题的,并且不是所有实施例都解决了本文描述的传统系统的每个问题或者提供了本文描述的每个益处。也就是说,下面描述了解决这些问题的各种排列的改进。
21.在某些情况下,防篡改数据结构是分区的。在具有某些形式的分区的情况下,可能会阻止与一个分区相关联的程序访问(例如,读取或写入)另一分区中的数据。出于各种原因进行分区。示例包括促进例如其中基于角色和权限限制访问的组织(或其他实体)内的数据安全性。示例还包括促进由其中一个组织不希望其他组织中的成员访问其共享数据存储装置中的数据的多个组织的成员共享地使用防篡改数据存储装置。这种多租户用例与许多基于区块链的架构特别相关,在这些架构中,组织经由将状态持久保存到防篡改数据结构的程序进行协调和合作。示例包括在分布式计算平台上执行的智能合约,该智能合约利用一个或多个区块链来将程序状态再现为防篡改的。不同的用户可能希望约束由分布式计算平台存储的哪些数据可以被智能合约、区块链或由分布式计算平台对其进行操作的其他区块链的其他用户访问。
22.在某些情况下,某些类型的分区被编码到通过其实施分布式计算平台和防篡改数据存储装置的基础结构中。例如,智能合约和其他程序可以由在对等计算节点上运行的虚拟机来执行,并且这些虚拟机可以被配置成约束程序对防篡改数据存储装置的一个分区中(如单个区块链、区块链的子集或对应于该分区的虚拟地址空间中)的数据的访问。通常,虚拟机的指令集不支持响应于由虚拟机执行的程序中的指令的操作而改变分区的标识符。
23.在某些用例中,分区可能会带来挑战。可能期望程序能够对该程序的分区之外的某些防篡改数据能够读取访问,并且在某些情况下,可能期望限制由同一分布式计算平台执行的一些其他程序访问该同一数据。在某些场景下,程序(如智能合约)的输入既可由不同的程序可选择性地访问又可由防篡改数据存储装置可验证地不变地存储可能是有用的。示例包括将发布的数据(如天气预报、市场数据、体育赛事结果等)作为输入的智能合约。进一步,在某些情况下,发布该数据的各方可能希望限制对订阅了所发布的数据的这些实体或对由这些实体部署的程序的访问。通常,分区排除了这种用例,并提供对分区的访问的相对粗粒度的控制,例如在具有单个级别的分区的情况下并且不支持分区的子分区。最后,许多分区在基于区块链的计算平台(或其他分布式计算平台)中利用约束可以被执行来防止对数据的跨分区访问的有效操作的集合的指令集来实施。通常,这种平台在缺少访问程序的原生分区之外的数据的操作码的虚拟机内执行智能合约和其他程序,因为系统被设计成阻止对外部分区的访问。前述内容都不应被视为暗示放弃任何技术,或者本文所述的方法不可以与具有这些或其他所描述的特征的其他方法结合使用。
24.为了减轻这些问题,一些实施例执行下面参考图1描述的控制对防篡改数据存储装置中的数据的跨分区访问的过程。存储可以采取各种形式,包括存储在加密散列指针的有向非循环图的叶节点中的条目(例如,链上条目)和由存储在这样的图中的加密散列摘要再现为防篡改的条目(例如,链外条目)。一些实施例执行下面参考图2描述的控制对防篡改数据存储装置中的数据的跨子分区访问的过程,例如跨同一分区的子分区,其中子分区在分区内施加各种形式的访问控制。在一些实施例中,利用如参考图3a和图3b描述的那些数据结构的数据结构,将数据再现为防篡改的。在一些实施例中,这些过程可以在如下面参考图4描述的那些逻辑和物理架构的逻辑和物理架构上执行,保持如参考图5描述的那些数据隐私和访问控制的数据隐私和访问控制,并且在如参考图6描述的那些计算设备的计算设备上执行。
25.在一些实施例中,像本文描述的其他过程和功能一样,图1的过程10可以被实施为
存储在有形的、非暂时性的机器可读介质上的计算机代码,使得当代码的指令由一个或多个处理器执行时,可以实现所描述的功能。指令可以分布在存储器的多个物理实例上,例如在不同的计算设备中、或者在存储器的单个设备或单个物理实例中,所有这些与单数术语“介质”的使用一致。在一些实施例中,操作可以以不同于所描述的顺序的顺序来执行,一些操作可以在过程执行的每个实例被执行多次,一些操作可以被省略,附加的操作可以被添加,一些操作可以被并发执行,而其他操作可以被串行执行,这些中的任何一个不是暗示本文描述的任何其他特征也不可变化。
26.在一些实施例中,过程10可以在分布式计算平台上执行,该分布式计算平台可操作来将状态持久保存到分布式防篡改数据存储装置,如一个或多个基于区块链的计算平台或其他分布式应用,如swarm、dat、星际文件系统等。这种计算平台的示例包括axcore、ethereum、hyperledger(例如,sawtooth、fabric或iroha等)、corda、openchain、stellar、neo、libra、bitcoin和eos。在一些实施例中,分布式计算平台是图灵完备分布式计算平台,该平台可操作来利用可验证计算技术以分布式方式在计算平台上执行智能合约(或其他程序)。例如,计算可以在计算平台的多个对等节点(如这些节点的随机或伪随机选择的子集或全部)中的每一个上复制,并且可以就计算的结果达成共识,使得阻止恶意行动者干扰由其控制之外的对等节点进行的计算的结果。
27.在一些实施例中,底层计算硬件可能是不可信的,并且可以应用各种共识算法来以不要求任何一个计算设备可信的方式确定计算的结果和在其上执行的各种过程的状态。
28.一些实施例可以执行各种共识算法(例如,paxos、raft、hotstuff、蜜獾拜占庭容错、实用拜占庭容错或helix)。在某些情况下,对等节点的子集可以参与共识确定。在某些情况下,对等节点可以确定各自的角色,包括领导者、候选人和追随者,并且设备可以利用单调增加的号(如任期号)来确定角色方面的变化的序列。在每次任期号递增时,对等节点可以选举新的领导者。在选举中,对等节点可以向其他对等节点发送投票请求。多数票持有者可以被指定为当前任期增量的领导者。对等节点之间的消息可以包括发送对等节点的任期号,并且具有陈旧任期号(相对于接收对等节点)的请求可以被拒绝。在一些实施例中,领导者节点可以周期性地向追随者节点广播心跳消息,并且追随者节点可以响应于确定自上一个心跳消息以来在阈值时间量内没有接收到心跳消息而触发选举。
29.在一些实施例中,对等节点参与共识的授权可以通过对等节点向其他对等节点展示某种形式的证明来确定。在一些实施例中,该证明是工作证明,例如,通过用加密散列函数计算对某个阈值数量的数字的散列冲突,或者该证明可以是例如权益证明或存储证明。在一些实施例中,证明拥有秘密值,如用于签署与节点公钥相关联的值(例如,伪随机质询)的加密密钥对的私钥。
30.在一些实施例中,该过程利用一个或多个智能合约或其他程序来实施。在一些实施例中,这可以包括例如从开发者获得智能合约的源代码版本,例如以如solidity、java、scala、go等语言编码的源代码版本。在一些实施例中,创建智能合约可以包括将智能合约解释成用于分布式计算平台的对等节点的虚拟机的字节码形式。解释可以包括解析字节码,形成抽象语法树表示,以及通过将树中的条目映射到目标运行时环境的操作码(对应于字节码)(以及这种操作码的参数)将抽象语法树转换成字节码表示。在一些实施例中,该字节码可以编码虚拟机的各种操作码,并且在一些实施例中,这些操作码中的一些可以是跨
分区或跨子分区操作码,如下面参考图1和图2更详细描述的那些操作码。术语智能合约被广泛用于指源代码编码和字节码编码两者或它们的其他转换(例如,编译成机器代码)。例如,对“智能合约”和“该智能合约”的引用可以分别指智能合约的源代码形式和智能合约的字节码形式,或者两个引用中的源代码或字节码实例。编码可以演变格式,同时仍然承载相同的标签。
31.智能合约可以是脚本或其他类型的程序,并且智能合约可以包括对局部和全局状态的引用,后者潜在地在多个智能合约或其他类型的程序之间共享,而前者与其他智能合约隔离。在一些实施例中,给定的智能合约可以具有子例程,如其方法或函数。在一些实施例中,智能合约可以采用自变量,并且不同的方法或函数可以采用不同的自变量。在一些实施例中,在执行时,智能合约可以将状态持久保存到它在其上执行的分布式计算平台的防篡改数据存储装置,如以下更详细描述的那样。
32.在一些实施例中,创建智能合约可以包括部署智能合约。在一些实施例中,智能合约可以被部署到分布式计算平台的地址,该地址唯一地标识智能合约并将其与其他智能合约和其他实体进行区分,如分布式计算平台上的钱包地址或其他分布式计算平台上的外部账户。该地址可以是开放系统互连模型(osi模型)中的应用层地址。在一些实施例中,该地址基于外部账户的公钥、部署智能合约的账户的地址以及随机数(例如,随着每次部署而递增的计数器)(例如,基于其的加密散列)。
33.在一些实施例中,智能合约的地址由智能合约本身以不同于智能合约编码的散列的形式显式定义。在一些实施例中,通过将消息(或其他事务)寻址到该地址并附加各种自变量和被唤出的子例程的标识符,到达唤出子例程而不是主函数的程度,智能合约可以在分布式计算平台上被调用。
34.一些实施例可以载入其中智能合约被创建或以其他方式被部署到防篡改数据存储装置的事务,例如通过记录事务的信息中的一些或所有。在一些实施例中,事务的日志可以包括智能合约的代码的加密散列,从而将对该代码的改变再现为防篡改的,并且一些实施例可以执行该代码的成员资格的加密证明(例如,merkle证明)以在每次唤出智能合约时验证不存在篡改。在一些实施例中,分布式防篡改数据存储装置可以包括各种组件防篡改数据结构,如merkle树和字典树,如参考图3a和图3b更详细描述的那样。树可以将数据存储在叶节点中,而字典树可以将数据存储在沿着到叶节点的路径的节点中,例如,其中前缀存储在更靠近根节点的第一节点中,条目的中间部分存储在远离根节点的下一节点中,以及后缀存储在定义路径的叶节点中,而共享相同前缀和中间部分的另一条目的不同后缀可以存储在穿过字典树的前两个节点的其他路径中。
35.在一些实施例中,不同的字典树可以将根节点记载在区块链中的块链的相同块中(例如,存储在其中或具有基于它们的存储在其中的值的加密散列)。在某些情况下,那些不同的字典树可以包括状态字典树、收据字典树和事务字典树。在一些实施例中,部署智能合约的事务可以被载入到事务字典树,例如在沿着字典树的路径的一组节点中,并且可以在状态字典树中(如在沿着字典树的路径的一组节点中)创建对应于唤出智能合约时智能合约的地址的条目。在一些实施例中,状态字典树中的该条目可以包括专用于智能合约并存储智能合约的局部状态的存储字典树的存储根,而状态字典树可以用作分布式计算平台的全局状态的一部分,或者状态字典树可以用作下面参考图5讨论的域或子空间中的一个的
全局状态的一部分,其中不同的域或子空间具有不同的状态字典树。
36.一些实施例可以利用加密累加器或其他单向成员资格函数来实施成员资格的加密证明。示例包括双线性累加器、虚二次类群累加器、准交换散列函数、rsa累加器等。例如,这种加密累加器可以用来代替下面讨论的特定于块的字典树(其也是加密累加器的示例)。
37.在一些实施例中,分布式计算平台在智能合约被唤出时通过执行智能合约并将经更新的状态持久保存到防篡改数据存储装置来进行响应。在一些实施例中,分布式计算平台可以托管多个智能合约,如同时托管超过5个、超过10个、超过100个或超过10000个智能合约。这些智能合约可以由超过2个、超过5个、超过10个、超过100个或超过1000个不同的智能合约创建者创建。在一些实施例中,在创建图或调用图中,智能合约可以创建或唤出一组智能合约,并且那些智能合约可以创建或唤出另一组智能合约等。
38.图5中示出了分区和子分区的示例,其中分区由域例示,并且子分区由子空间例示。在一些实施例中,所有这些不同程序的状态可被持久保存(例如,以在唤出实例之间幸存的方式存储)到相同的防篡改数据存储装置,在某些情况下,在智能合约的不同子群组的其不同指定子集中,如根据以下参考图5描述的域和子空间架构。在一些实施例中,给定的智能合约可以被各自在分布式计算平台上具有不同的地址的多个不同的实体唤出多次,如超过5次或超过10次,这些实体从该平台向智能合约的地址发送唤出智能合约的事务。不同的实体和不同的唤出在不同的时间可以唤出智能合约中的不同功能,例如,不同的子例程来随着时间的推移演变智能合约的状态。在某些情况下,这些事务中的每一个可以被载入到区块链的当前块的事务字典树中。所载入的事务可以用于同步新的对等计算节点。到分布式计算平台的后到达节点可以通过重放自防篡改数据存储装置的开始时期以来的事务(例如,除了经受修剪的那些事务)来重新创建防篡改数据存储装置的当前状态,以到达与存储在其他对等节点上的版本同步的局部存储器中的防篡改数据存储装置的当前版本。在一些实施例中,到分布式计算平台的后到达节点可以通过对照块的根散列来协调状态而不重放事务,来重新创建防篡改数据存储装置的当前状态。
39.在一些实施例中,通常对智能合约的指令的执行的请求可以利用在分布式计算平台上传送的事务或其他消息来执行。在分布式计算平台的场景下的任期传输和传送等不一定要求发射器和接收器处于不同的物理位置。相反,在存储在计算平台的每个节点(或具有包括这种存储的指定角色的子集)上的数据中物理表示的一个账户可以将事务传输到也在该计算平台上的每个节点中存储的数据中物理表示的另一账户。因此,传输可以发生在账户层,而不必要求发送者和接收者在不同的物理位置。在一些实施例中,通过其唤出智能合约的功能的事务可以被载入到防篡改数据存储装置中,例如,载入在沿着与正被编写的当前块相关联的事务字典树的路径的一组节点中、或者在merkle树的叶节点中。在一些实施例中,事务可以包括远程程序调用,该远程程序调用具有自变量和被唤出的智能合约的子例程的标识符以及唯一标识符,如将智能合约与部署到平台的其他智能合约区分开的智能合约的地址以及分布式计算平台中的唤出实体的地址。
40.在一些实施例中,作为响应,分布式计算平台可以执行智能合约的所唤出的功能。在一些实施例中,这可以包括在确定执行所唤出的功能之前,确定唤出方是否具有修改下面参考图5描述的域(或其他分区)的子空间(或其他子分区)中的智能合约的程序状态的授权。在一些实施例中,执行所唤出的功能可以导致智能合约的程序状态从过去的第一时间
处的第一程序状态演变到通过执行所唤出的功能而产生的第二程序状态。示例包括改变账户中多个erc-20(例如,可替代的、竞争性的)加密令牌(或其他数字载体资产)的余额、确定是否已经接收契约事务中的签名、创建或以其他方式修改不可替代的加密资产(例如,如erc 721,不可替代的、竞争性的加密令牌)等。程序状态可以包括变量的值,其状态影响智能合约或其他智能合约的程序流中的分支。程序状态可以包括各种不同类型的变量的范围从整数、布尔值、字符串值等的值,并且程序状态可包括更多特征丰富的数据结构,如二进制大对象(blob)、字典、列表、数组等。归因于这些项的值可以用作程序状态,并且程序状态可以随着时间的推移而演变,因为那些值通过智能合约的执行而改变。一些程序状态可能对于子例程是局部的,一些程序状态可能对于智能合约是局部的,但是对于每个子例程是能够访问的(例如,在智能合约的上下文中是全局的,但是在分布式计算平台的上下文中是局部的)。一些程序状态相对于子空间(或其他子分区)、域(或其他分区)或分布式计算平台可以是全局的,其中前两个示例相对于其他子空间(或其他子分区)或其他域(或其他分区)是局部的。
41.在一些实施例中,程序状态可以包括短暂程序状态和持久程序状态,后者在唤出智能合约的实例之间幸存,而前者在某些情况(例如,智能合约在其上执行的虚拟机的垃圾收集例程)下可以在唤出之间被丢弃。在一些实施例中,短暂程序状态可以存储在存储字典树中。存储字典树的根加密散列可以被存储(例如,作为将变量名映射到它们所承载的值的键值对)在对应于智能合约的唤出实例的状态字典树中的条目的存储根字段中,如以下参考图3a和图3b更详细描述的那样。
42.一些实施例可以在智能合约执行期间或之后,将对程序状态的更新附加到防篡改数据存储装置。在一些实施例中,这可以包括更新对应于在分布式计算平台上具有地址的不同实体的账户的记录。在一些实施例中,更新可以包括更新状态字典树以指示智能合约被唤出的实例,并添加指向智能合约被唤出的先前实例的指针,如以下参考图3a和图3b更详细描述的那样。在一些实施例中,更新还可以包括对以上描述的状态字典树的更新,包括对存储字典树的存储根值,并且在某些情况下,这可以包括对收据字典树和事务字典树的相对应的更新,如下面参考图3a和图3b所述。在一些实施例中,这些更新可以利用基于更新的单向函数计算的图(例如,在加密散列指针或嵌套密文的非循环有向图中)来再现为防篡改的,其中一个密文包含多个密文,该多个密文各自包含再现为防篡改的更多密文值。
43.加密散列指针的非循环有向图可以采取各种形式,包括链表、跳表、字典树以及它们的组合。在一些实施例中,图呈关联数据结构的形式。在一些实施例中,图包括具有内容的多个节点。在一些实施例中,图的节点的子集或所有节点可以具有被再现为防篡改的内容,并且节点的子集可以具有基于通过有向边链接到相应节点的其他节点的加密散列的内容,如指向具有加密散列所基于的内容的节点的指针。示例包括图中的相邻节点的内容的加密散列和时间戳。在一些实施例中,该图可以被构造成提供对各个条目的相对快速的访问,例如利用具有各自对应于相应的字典树(如基数字典树或merkle树)的带有内容的节点的跳表。
44.可以使用各种不同类型的加密散列函数。示例包括sha-2、sha-3、blake2等。在某些情况下,加密散列函数利用单向函数确定性地将任意长度的输入映射到固定长度的输出。在一些实施例中,散列函数基于merkle

构造,或者一些实施例可以避免这种
架构以减轻长度扩展攻击的风险。在某些情况下,固定长度的输出大于或等于4字节、8字节、16字节、32字节、64字节、128字节、256字节、512字节或1028字节。
45.在唤出智能合约之前、期间或之后,一些实施例可以包括执行成员资格的加密证明以验证不存在篡改。在一些实施例中,这可以包括例如在沿着基数字典树的路径的一组指定节点处,验证防篡改数据存储装置中不存在指定条目的篡改。一些实施例可以沿着终止于指定条目的路径重新计算加密散列指针的节点序列的加密散列值,并确认加密散列值对应于由指定条目产生的那些值。在检测到由当前条目产生的加密散列值不对应于有向非循环图中存在的那些值时,一些实施例可以确定篡改已经发生并发出警报或阻止事务。替代性地,在确定加密散列值与有向非循环图中当前存在的那些值相匹配时,一些实施例可以确定篡改没有发生,并许可事务完成或发出确认事件。
46.在一些实施例中,部署到分布式计算平台的智能合约的子集或全部可以包括修剪子例程,如于2019年9月27日提交的题为“修剪防篡改数据存储装置中的条目”的美国临时专利申请62/907,271中描述的修剪子例程,该申请的内容通过引用结合于此。
47.图1示出了过程10的示例,通过该过程,一个分区(如其子分区或未子分区的分区)原生(例如在其中具有程序状态的地址空间)的程序(如智能合约)可以访问另一分区(如其子分区或未子分区的分区)的数据(如其他程序或记录)。在一些实施例中,过程10在唤出程序的帐户利用具有程序的自变量及其地址的事务进行跨分区调用时被执行。在一些实施例中,程序可以包括对其他程序的调用或对其他分区中的地址处的记录的调用(如访问请求)。在一些实施例中,进行调用的程序可以具有原生分区,该原生分区可以是程序可以访问并记录其状态的防篡改数据存储装置的默认分区。在一些实施例中,程序还可以具有原生子分区,例如如下面描述的那些原生子分区,由此对给定分区的访问被分段以隔离和控制对不同子分区中的数据的访问。在某些情况下,子分区可以以任意深度的嵌套(例如,包括3、4、5或更多个级别)进行进一步分区。
48.在一些实施例中,进行调用的程序可以是由本文描述的分布式计算平台中的一个执行的程序。在一些实施例中,程序可以具有一个且仅有一个原生分区。在一些实施例中,程序可以具有多个原生分区。在某些情况下,程序也可以访问其他分区中的程序可以访问的共享分区,像所有其他分区一样。在一些实施例中,原生分区是区块链或其中存储了程序的程序代码并且在唤出程序时更新程序的状态的加密散列指针的其他有向非循环图。在某些情况下,每个分区对应于不同的区块链或加密散列指针的其他有向非循环图。
49.在一些实施例中,通过向原生分区中的程序的地址发送事务来唤出程序。在一些实施例中,例如默认地不在原生分区中的程序可能不能访问存储在原生分区中的数据,包括访问唤出经受图1的过程的程序。在一些实施例中,例如,程序可能默认地不能访问存储在除了程序的原生分区之外的分区(例如,非共享分区)中的数据(例如,程序或记录)。例如,默认地,过程10中引用的程序可以在第一分区中执行,并且默认地可能不能访问存储在同一分布式计算平台的第二分区中的数据。
50.在一些实施例中,过程10可以包括从原生分区中的程序获得跨分区调用,如框12所指示那样。在一些实施例中,调用可以是远程程序调用、应用程序接口(api)请求、对某一地址处的数据的读请求、函数调用、另一程序的调用或通过其可以访问数据(例如读取、使得执行或写入数据)的各种其他编程调用。在一些实施例中,跨分区调用利用程序中的唤出
另一程序或者以其他方式请求对不同于该程序的原生分区的另一分区中的数据的访问的一行代码来实施。
51.在一些实施例中,当处于源代码形式时,跨分区调用编译成或被解释成可由程序在其中执行的虚拟机执行的操作码。在某些情况下,操作码从跨分区调用中获取各种自变量。在一些实施例中,自变量包括不同于原生分区的另一分区的标识符,该标识符在也包括原生分区的防篡改数据存储装置的多个分区当中唯一地标识被调用的分区。在一些实施例中,自变量还包括被调用的分区内的子分区(例如,子子子分区)的标识符,在某些情况下,该标识符可以利用如下面参考图2描述的那些技术的技术来访问,在某些情况下可以结合图1的操作来访问。在一些实施例中,自变量还包括地址或解析为在被调用的分区中对其请求访问的数据的地址的标识符,其可以包括程序(如被调用的分区中的智能合约和被调用的程序的各种自变量)的地址。
52.在某些情况下,在给定的分区级别下,数据驻留在一个且仅一个分区中。在某些情况下,分区类似于具有分区和子分区的单个全局层级结构的分层文件系统中的目录操作。在某些情况下,分区对应于数据库文件系统中的条目,其中数据单元利用元数据标记,通过该元数据将访问控制附加到该数据。在这样的实施例中,给定的数据单元(例如,记录或程序)可以驻留在各自对应于具有与该数据单元相关联的不同组的访问控制的不同标签的多个分区中。在某些情况下,一个分区可以被虚拟地安装为另一分区内的子分区,以继承安装它的分区的访问控制。
53.在一些实施例中,通过其实施跨分区调用的操作码可以由程序在其中执行的虚拟机来检测。在一些实施例中,虚拟机可以通过解析操作码的自变量来标识被调用的分区,以对检测到操作码做出响应。虚拟机的一些实施例然后可以改变当前工作目录、虚拟地址空间、被引用状态字典树或指向虚拟机的上下文的其他指针,以引用被调用的分区,并且在某些情况下,引用其中被调用的子分区,如操作码的自变量所标识的那样。在一些实施例中,操作码或唤出操作码的指令可以进一步使得被调用的分区中的功能被唤出,例如通过利用api请求调用被调用的分区原生的程序。
54.在一些实施例中,调用是提交给数据发布者的智能合约的api请求,如查询。例如,调用智能合约可以基于不同分区中(例如,不同分区原生)的发布者智能合约返回的值来引用和执行计算。示例包括对使得其由数据发布者从专有数据集可用于专有数据集的订户的市场数据、天气数据、体育数据等进行操作的智能合约。在某些情况下,发布的数据由公共数据源提供,如政府实体。
55.在一些实施例中,可以由发布者对所返回的发布的数据进行加密签名。例如,返回的数据可以使用发布者的私有加密密钥来加密签名,并且私钥可以对应于公共加密密钥,通过该公共加密密钥,调用智能合约可以验证从发布者的智能合约接收的数据的真实性。例如,可以通过利用调用程序确认加密签名对应于数据提供者的公钥,并且所提供的数据的(设置有所提供的数据的)加密签名的散列摘要对应于由调用程序计算的所接收的数据的散列摘要,来验证数据。
56.在一些实施例中,api请求包括部署调用智能合约的实体或唤出所部署的智能合约的实体的访问凭证,例如当调用或部署调用程序时作为自变量被传递通过。在一些实施例中,通过api请求唤出的数据发布者智能合约(或其他程序)可以接收这些凭证,并在提供
对数据请求的响应之前验证这些凭证。api请求或其他调用可以以各种格式来表达,包括结构化查询语言请求、xpath请求、json(javascript
tm
对象符号)查询请求或各种基于表述性状态转移的api请求。
57.在某些情况下,可以使用附加技术来验证响应是对由调用程序进行的调用的响应,而不是对例如由威胁行动者进行的其他调用的响应。调用可以包括已经利用数据发布者的公共加密密钥加密的质询(如相对高熵的随机值),例如超过64位的熵,并且响应可以包括质询值的纯文本版本或重新加密的纯文本版本。调用程序可以确认所接收的质询值与所发送的质询值相匹配,以验证对调用的响应对应于所发送的请求,而不是旨在从合法来源返回不正确数据的某个其他请求(例如,利用稍旧的市场数据替换响应)。
58.所返回的数据可以用于多种用途。示例包括基于所发布的市场数据计算智能合约,如伦敦银行同业拆借利率(libor)、给定交易所的证券收盘价、给定交易所的给定商品的收盘价、给定交易所的给定商品期权合约的收盘价等。在某些情况下,调用程序可能从几个发布者请求相同的值,并计算结果的集中趋势的度量(如平均值、众数或中值)以用于其他计算。示例还包括基于体育比赛结果、政治竞赛结果、保险和基于天气的期货合约等的计算。例如,智能合约可以响应于响应调用的数据是否指示已满足托管标准、智能合约的一方已赢得竞猜、期权合约的标准已满足等而确定是否将加密令牌从一个钱包地址转移到另一钱包地址。
59.在一些实施例中,跨分区调用可以利用专用于进行跨分区调用的程序来实施。在一些实施例中,每个分区可以包括链接器程序,例如如共享子分区中的链接器智能合约。在一些实施例中,链接器程序可以在其程序状态中包括链接器程序可以访问的其他分区或子分区的清单。在一些实施例中,链接器程序的程序状态可以包括原生分区、原生子分区、程序、子程序或帐户到其他分区、子分区、程序或子程序的映射。映射可以具有指示对访问的授权限制的链接。示例包括读取访问、写入访问、删减访问、对读取速率有阈值约束的读取访问、对删减速率有阈值约束的删减访问、或对写入速率有阈值约束的写入访问。在某些情况下,取决于链接器程序的程序状态中的访问控制的映射,链接器程序可以向给定的其他分区许可对原生分区中的每个其他程序的访问,或者在某些情况下,原生分区中的各种程序的子集可以具有对其他分区的不同子集的不同级别或实例的访问。在一些实施例中,对访问控制的改变可以被载入到防篡改数据存储装置中,例如在原生分区中,在某些情况下具有被授权许可访问的实体的加密签名。在某些情况下,这种签名可以被附加到访问请求上,并且在许可访问之前由被所调用的分区进行验证。
60.一些实施例可以通过遍历调用图来标识一组终端分区来获取由跨分区调用发起的调用图中的一组终端分区的清单,如框14所指示那样。在某些情况下,从原生分区到第二分区的调用可以唤出第二分区中(在某些情况下在任意大深度和复杂度的调用图中)的程序,然后该程序对第三分区和第四分区进行调用。在这种场景下,所标识的一组终端分区将包括第二分区、第三分区和第四分区,即使初始调用仅针对第二分区。在某些情况下,调用图可能相对较大,从而从初始调用到原生分区之外的单个分区扩展到超过5个、超过20个或超过50个的不同分区中。在某些情况下,遍历是深度优先或广度优先的,例如利用递归实施。
61.一些实施例然后可以如下文所描述那样处理所标识的终端分区中的每一个。一些
实施例可以确定是否有更多的终端分区要处理,如框16所指示那样。一旦确定存在,一些实施例可以选择尚未被处理的下一终端位置,如框18所指示那样。一些实施例然后可以确定所选择的终端分区是否可由在框12中标识的调用程序访问,如框22所指示那样。在某些情况下,这可以包括询问如以上描述的链接器程序的程序状态中的访问控制映射。在确定不支持所请求的访问时,一些实施例可以抛出错误或其他异常,如框24所指示那样,并且在某些情况下,调用程序可以包括指定响应于错误要执行的逻辑的错误处理例程。
62.在确定所选择的终端分区是可访问的之后,一些实施例可以继续执行一组操作,通过该组操作,从原生分区确定性地访问终端分区。确定性地访问另一分区中的数据可能在分布式计算平台中带来挑战,例如当访问对于其状态由不同于原生分区的一组对等计算节点的一组对等计算节点管控的分区时。在某些情况下,分布式计算平台的对等计算节点的不同子集可能在不同时间对防篡改数据存储装置的分区的状态有不同的看法。依赖错误的子集可能导致智能合约或其他程序的不同参与者具有不一致的预期。例如,对等计算节点的第一子集可能已经在给定时刻确定给定数据节点(如区块链中的块)已经被添加到加密散列指针的有向非循环图(如区块链),而对等计算节点的第二子集可能还没有确定给定数据节点已经被添加到加密散列指针的有向非循环图。(术语“数据节点”和“计算节点”分别由单词“数据”和“计算”修饰,以区分所引用的两种不同类型的图,即加密散列指针的有向非循环图,以及分布式计算平台在其上执行的对等计算节点的网络)。询问对等计算节点的这些不同子集的智能合约或其他程序的对方可能具有净输出计算的结果不同的预期,并且调用程序的结果可能基于不同子集当中的任意(例如随机)选择而不确定。
63.为了使调用程序的输入具有确定性,一些实施例可以执行如参考框26和框28描述的那些操作的操作,以确定关于被调用的分区的状态的共识位置。在一些实施例中,共识是被调用的分区的确定被调用的分区内的关于被调用的分区的状态的共识的对等计算节点当中的共识。在一些实施例中,在不同的对等计算节点群体之间确定共识,例如,在原生分区的确定关于原生分区的状态的共识并且具有访问被调用的分区中的数据的授权(例如以如下文描述的观察者角色)的对等计算节点当中确定。
64.一些实施例可以查询原生分区的校验方对等计算节点以获得所讨论的所选择的终端分区的最近块,如框26所指示那样。在某些情况下,(原生分区的)校验方对等计算节点可以确定关于原生分区的状态的共识。在某些情况下,同一组对等计算节点(或其子集)可以在所选择的终端分区中具有观察者角色。在一些实施例中,为了将数据提交给所选择的终端分区,被查询的对等计算节点可以不代表所选择的终端分区参与关于所选择的终端分区的状态的共识。在一些实施例中,例如,因为对等计算节点中的一些还没有接收关于新块的信息或者还没有校验新块,所以原生分区的不同的被查询对等计算节点可以具有被指定为终端分区的最近块的不同块。结果,对等计算节点的第一子集可以将第一块指定为最近块,而对等计算节点的不同子集可以将第二块指定为最近块。在一些实施例中,这些指定可以包括终端分区的其他块当中的块的唯一标识符,并且该标识符可以指示块的序列(或者与指示块的序列的值相关联),例如具有时间戳或者块的计数中的块号。在一些实施例中,每个校验方对等计算节点可以向其他校验方对等计算节点中的全部报告其各自的查询结果。在一些实施例中,分区是不采取区块链的形式的加密散列指针的有向非循环图,并且在这种情况下,实施例仍然可以确定最近所添加的数据节点,即使该添加的数据节点本身不
一定是块。
65.一些实施例可以在原生分区的校验方对等节点当中确定关于终端分区的最近块的共识,如框28所指示那样。在一些实施例中,这可以包括基于序列的指示和查询结果来确定最近块,对于该最近块,所有校验方对等计算节点已经返回了指示相应的块已经被添加到所选择的终端分区的查询结果。在其他示例中,共识结果可以是对于其超过阈值量的校验方对等计算节点已经返回了指示相应块已经被添加到所选择的终端分区的查询结果的共识结果。例如,阈值可以是原生分区中服务于校验方功能的大多数或多个对等计算节点。如果给定块在查询结果中被标识或者被指定为相对于所标识的块更早的块,则查询结果可以指示给定块已经被添加到终端位置。例如,如果给定的校验方对等计算节点指示已经添加了块号9,则该校验方对等计算节点也可能已经指示也已经添加了块8至块1。在某些情况下,被原生分区的校验方对等计算节点确定为最近的块可能不同于例如,落后于被所讨论的终端分区的校验方对等计算节点指定为最近的块。
66.一些实施例然后可以从由框28的共识确定指定为最近的块中访问所选择的终端分区中的数据,如框30所示。在一些实施例中,这可以包括从状态字典树中检索数据或者在所选择的终端分区中的标识块的状态字典树中的地址处调用智能合约。访问可能包括读取或写入值,或者调用智能合约来唤出其功能,或者调用一些其他类型的程序。在一些实施例中,访问最近块中的数据可以包括在确信数据在后续块中没有被修改的情况下,例如在确定该数据在先前块中的所指定的最近块之间没有被改变时,访问先前块中的数据。访问数据可以包括引起调用api、调用api、引起接收结果或接收结果。例如,人们可以通过请求和接收响应而不执行在权威储存库中读取和写入位的干预动作来“访问数据”,尽管“访问数据”也与肯定地执行在权威储存库中读取和写入位的动作一致。一些实施例可以通过访问第二分区中的子分区、访问未被子分区的第二分区或访问未被子分区的第二分区的一部分,从第一分区访问分布式计算平台的防篡改数据存储装置的第二分区。
67.一些实施例然后可以返回到框16,并确定是否存在更多的终端分区。在一些实施例中,框14和框16的操作可以合并,因为在通过唤出调用其他程序的程序来访问数据的情况下同时遍历调用图,这并不意味着本文描述的任何其他操作也可以不与以其他方式变化的其他操作合并。在确定存在更多的终端分区要处理时,可以重复以上描述的操作。
68.在确定没有更多的终端分区要处理时,一些实施例可以继续到框32,并基于来自跨分区调用的所访问的数据来计算调用程序的输出,如框32所指示那样。输出可以采取多种形式,包括在账户之间转移加密令牌、更新分类账以指示发生转移的事务等。
69.一些实施例可以将来自框32的程序输出与关于最近的一个或多个块的共识结果相关联地存储在原生分区中,如框34所指示那样。在一些实施例中,这个数据可以存储在如下所述的状态字典树的状态字典树中。
70.一些实施例可以随后接收确定程序输出的成员资格的加密证明的请求,如框36所指示那样。在某些情况下,这可能是确定原生分区中不存在篡改的审计的结果。
71.一些实施例可以作为响应确定程序输出的成员资格的加密证明,如框38所指示那样。在一些实施例中,这可以包括重新计算程序输出并验证加密散列函数输出与存储在对应于原生应用的加密散列指针的有向非循环图中的加密散列指针中的那些输出相匹配。一些实施例还可以验证所标识的最近块中的加密散列指针,以确认程序的重新计算的输出是
基于来自未经受篡改的调用的输入,例如通过检索所标识的最近块中的值,该所标识的最近块可能不再是最近块,因为终端分区可能已经添加了附加块,或者以其他方式将附加数据节点附加到它们各自的、加密散列指针的有向非循环图。
72.图2示出了通过其实施跨子分区调用的过程50的示例。在一些实施例中,调用可以跨越子分区和分区两者,或者调用可以跨越同一分区内的子分区。在一些实施例中,可以在如以上描述的那些情况下发起调用,例如利用引用可经由另一子分区中的api访问的数据或存储在另一子分区中的记录中的数据的各种类型的智能合约。在一些实施例中,过程50包括从原生子分区中的程序获得跨子分区调用,如框52所指示那样。程序可以在原生分区的原生子分区中,且该原生分区可以具有几个子分区。在一些实施例中,子分区中的一些可以是所有子分区可以访问的共享分区,而其他子分区对于其他子分区中的程序可能是不可访问的。
73.在一些实施例中,过程50包括确定子分区对于程序是否是可访问的,如框54所指示那样。一些实施例可以在如以上描述的共享子分区的共享子分区中包括链接器程序,该链接器程序可以使用如以上描述的那些操作的操作来确定链接器程序的映射是否指示该程序被授权访问被调用的子分区中的数据。在确定访问不被许可时,一些实施例可以继续到框56并抛出错误,在某些情况下,该错误可以由调用程序的错误处理子例程来处理。
74.替代性地,在确定子分区可访问时,一些实施例可以继续访问所选择的子分区中的数据,如框58所指示那样。同样,访问可以采取以上描述的各种形式。
75.一些实施例可以基于来自跨子分区调用的所访问的数据来计算程序输出,如框60所指示那样。一些实施例然后可以将程序输出存储在原生子分区中,如框62所指示那样。随后,一些实施例可以接收确定程序输出的成员资格的加密证明的请求,如框64所指示那样。一些实施例可以通过确定程序输出的成员资格的加密证明来响应,如框66所指示那样,每个实施例与以上描述的方法一致。
76.在一些实施例中,子分区可以在同一原生分区内,并且因此,对等计算节点可以具有关于被添加到原生分区的最近块的原生共识,从而使得访问请求具有确定性。在调用跨子分区和跨分区的情况下,可以实施如上面参考图1中的框26至框30描述的那些操作的操作,以使访问请求具有确定性。类似地,所描述的操作还可以涉及链式和分支的一组跨子分区调用,并且一些实施例可以利用如上面参考框16至框22描述的那些操作的操作来遍历调用图。
77.图3a和图3b是示出防篡改数据存储装置的分区的示例的框图。在某些情况下,防篡改数据存储装置可能包括几个这样的分区。在一些实施例中,防篡改数据存储装置可以是分布式分类账,如一个或多个区块链,诸如以上描述的基于区块链的计算平台的那些区块链。图3a和图3b描绘了区块链中的块的序列以及具有存储在那些相应块中的根散列的加密散列指针的相关字典树。所示的箭头对应于指针(例如,加密散列),并且带有标记为a和b的圆圈的字母示出了两个数据结构在何处由加密散列指针或其他指针联接。在所示示例中,块是连续的,但是在许多商业实施例中,预期来自给定智能合约的唤出的数据可以在唤出之间跳过几个块。在所示示例中,防篡改数据存储装置102包括由加密散列指针连接的块104和块105的链表。在这个示例中,块104可以在时间上晚于块105创建。
78.在一些实施例中,数据存储装置102可以被表征为加密散列指针的有向非循环图。
有向非循环图的节点的子集可以形成链表或跳表,诸如标记为块104和块105的那些节点。在一些实施例中,这个表的每个节点可以包括作为内容的多个值,包括各个块被创建时的时间戳、连接这些节点108的边所指向的前一节点的内容的加密散列、被称为状态字典树118的加密散列值的字典树的根值110、作为被称为收据字典树的加密散列值字典树124的根值的加密散列112以及作为被称为事务字典树122的加密散列值字典树的根值的加密散列值114。在一些实施例中,每个块104和105可以具有通过对应于加密散列值相应字典树的根值(例如merkle根)的加密散列指针直接连接到其上的三个或更多个字典树。
79.在一些实施例中,状态字典树118可以包括通过2、3、4、5、6或更多个分支层级级别从根节点向叶节点散开的多个级别的加密散列指针。在一些实施例中,叶节点可以各自对应于智能合约的账户地址或其唤出实例。在一些实施例中,状态字典树118的这种叶节点(或其路径)可以包括图3a中示出的字段126。地址可以是智能合约或唤出实例的地址,随机数值可以是智能合约已被唤出的次数的计数,代码散列值可以是智能合约130的字节码表示的加密散列,存储散列可以是存储对智能合约的程序状态(其在唤出实例之间是短暂的)进行编码的键值对的加密散列指针120的字典树的merkle根。在一些实施例中,这些字段包括指向对应于智能合约的先前唤出的较早状态字典树中的条目中的先前条目的前趋指针,以及其中智能合约被唤出的事务的加密散列,其可以是事务字典树122中的条目的地址。
80.在一些实施例中,事务字典树122类似地包括从根节点向叶节点散开的多个级别的加密散列指针,到这些节点的路径对应于唤出或部署智能合约的各个事务。叶节点可以包括作为内容的多个字段,包括收据字典树124中的对应于记载加密令牌的消费的记录的条目的加密散列值,通过该加密令牌来计量分布式计算平台的计算的使用,诸如以太坊中的燃料或用于计量使用的任何其他合适的技术或其任何组合。在一些实施例中,对应于事务字典树叶节点的条目还包括表单字段,该表单字段指示从其发送事务的实体的地址或其他标识符以及指定事务(例如指示哪个子例程被唤出及其自变量)的数据,连同被唤出的智能合约的地址。
81.一些实施例包括条目132,这些条目包括指示谁发布了事务的条目。在一些实施例中,事务字典树122中的条目的收据散列可以标识沿着收据字典树124中记载可归因于相对应的事务的加密令牌的消费的路径的一组节点。
82.在一些实施例中,给定块的状态字典树中的条目可以包括指向对应于给定智能合约的先前唤出的先前条目的指针,如图3a和图3b之间通过具有字母b的圆所连接的那样。在一些实施例中,前趋指针可以标识较早块105的状态字典树中的条目138。在这个示例中,叶节点138的前趋条目指向空地址,从而指示序列的结束和智能合约到分布式计算平台的初始部署。该块可以链接到分别对应于状态字典树、收据字典树和事务字典树(如上所讨论的那样)的类似的一组字典树142、146和144。
83.图4示出了分布式计算平台200的示例物理和逻辑架构。在一些实施例中,可能没有对计算平台行使控制的集中机构,并且计算可以通过在不同计算设备上执行的多个不同对等计算节点应用202的ad hoc协作来实施,或者在某些情况下,多个不同对等节点应用可以在单个计算设备上执行,例如,在不同虚拟机或容器中执行。在一些实施例中,分布式计算平台200是无许可(例如,公共)计算平台,在该计算平台中,有权访问对等节点应用的程序代码的任何人都可以通过安装和执行该应用来参与。在一些实施例中,分布式计算平台
可以是私有分布式计算平台,诸如其中对等计算节点通过证明拥有与区块链计算平台200的许可租户相关联的私有加密密钥来向其他计算节点认证自己的平台。示出了五个对等计算节点200,但是商业实施例预期包括多得多,例如超过10个、超过100个或超过1000个。在一些实施例中,多个租户可以具有授权其对等节点参与的认证凭证,诸如超过2个、超过5个、超过10个或超过100个租户。在一些实施例中,对等计算节点可以被共定位或地理上分布,例如在不同的数据中心或不同的内部部署的计算硬件集合上执行。
84.在某些情况下,对等节点202的不同子集可以具有不同的角色和权限。在某些情况下,对等节点202中的一些可以作为可以访问例如域中的所有数据(如下面参考图5所描述的那样)的校验方来操作。在某些情况下,校验方对等节点可以参与共识确定并执行智能合约。观察者对等节点可能具有较少的特权,例如,访问域(其他类型的分区)或子空间(其他类型的子分区)中的数据的权利,而不参与共识或执行智能合约。在某些情况下,给定的对等节点202可以在一个域中是校验方,而在另一域中是观察者。
85.在一些实施例中,每个对等计算节点200可以执行虚拟机204的实例,诸如以太坊虚拟机、ewasm虚拟机、各种其他合适的虚拟机(例如java
tm
虚拟机)或虚拟机的各种组合。在一些实施例中,虚拟机可操作来执行对虚拟机的一组操作码进行编码的字节码。在某些情况下,以源代码编写的智能合约可以被解释成字节码,虚拟机204随后可以将该字节码编译成适用于底层计算硬件的机器代码,从开发者那里抽象出处理器和其他硬件中的差异。在一些实施例中,虚拟机204在对等计算节点202中的每一个上可以是相同的。在一些实施例中,虚拟机可以包括被配置成将源代码解释成字节码的解释器206、被配置成执行智能合约并更新存储在防篡改数据存储装置210中的智能合约的状态的状态机208。在一些实施例中,智能合约在执行期间的一些短暂状态可以存储在虚拟机204的堆栈数据结构212中,而其他短暂状态可以存储在由虚拟机分配给智能合约的过程的随机存取存储器中。在某些情况下,不同的操作码可以具有由虚拟机分配给它的不同的燃料成本,该虚拟机可以计算执行的燃料成本并更新收据字典树中的记录以指示燃料消耗。在一些实施例中,虚拟机204可以被配置成响应对应于跨分区或跨子分区调用的操作码,如以上讨论的那些。
86.图5描绘了可以利用上述数据存储装置和分布式计算平台实施的隐私和许可数据模型的示例。在一些实施例中,不同的对等节点具有不同的角色,并且在某些情况下,同时一些对等节点负责确定共识、意愿,并且其他对等节点仅仅能够询问计算的结果。在一些实施例中,对等节点(如校验方节点)的子集可以管控由其他节点(如观察者节点)对存储在分布式计算平台中的数据的各种形式的访问。在一些实施例中,各种租户和其中的用户账户的角色和权限可以被映射到其中的不同域232和不同子空间234,使得给定租户或给定租户的给定用户可以被许可从事或被阻止读取、写入或修剪给定域232或其子空间234中的条目。在一些实施例中,域232和子空间映射234可以覆盖在相同的防篡改数据结构上,使得不同的实体可以对该数据结构的不同子集进行不同类型的访问。或者在某些情况下,隐私和访问控制可以利用其他数据模型实施,如hyperledger实施方式中的通道。
87.图6是示出根据本技术的实施例的示例性计算系统1000的图。本文描述的系统和方法的各个部分可以包括类似于计算系统1000的一个或多个计算机系统或在类似于该计算系统的一个或多个计算机系统上执行。进一步,本文描述的过程和模块可以由类似于计算系统1000的一个或多个处理系统的一个或多个处理系统来执行。
88.计算系统1000可以包括经由输入/输出(i/o)接口1050耦接到系统存储器1020、输入/输出i/o设备接口1030和网络接口1040的一个或多个处理器(例如,处理器1010a至处理器1010n)。处理器可以包括单个处理器或多个处理器(例如,分布式处理器)。处理器可以是能够运行或以其他方式执行指令的任何合适的处理器。处理器可以包括实行程序指令以执行计算系统1000的算术、逻辑和输入/输出操作的中央处理单元(cpu)。处理器可以执行为程序指令创建执行环境的代码(例如,处理器固件、协议栈、数据库管理系统、操作系统或它们的组合)。处理器可以包括可编程处理器。处理器可以包括通用或专用微处理器。处理器可以从存储器(例如,系统存储器1020)接收指令和数据。计算系统1000可以是包括一个处理器(例如,处理器1010a)的单处理器系统,或者包括任何数量的合适处理器(例如,1010a至1010n)的多处理器系统。可以采用多个处理器来提供本文描述的技术的一个或多个部分的并行或顺序执行。本文描述的诸如逻辑流程的过程可以由运行一个或多个计算机程序以通过对输入数据进行操作并生成相对应的输出来执行功能的一个或多个可编程处理器执行。本文描述的过程可以由专用逻辑电路系统来执行,并且装置也可以实施为专用逻辑电路系统,例如fpga(现场可编程门阵列)或asic(专用集成电路)。计算系统1000可以包括多个计算设备(例如,分布式计算机系统)来实施各种处理功能。
89.i/o设备接口1030可以提供用于将一个或多个i/o设备1060连接到计算机系统1000的接口。i/o设备可以包括接收输入(例如,来自用户)或输出信息(例如,给用户)的设备。i/o设备1060可以包括例如呈现在显示器(例如,阴极射线管(crt)或液晶显示器(lcd)监控器)、定点设备(例如,计算机鼠标或轨迹球)、键盘、小键盘、触摸板、扫描设备、语音识别设备、手势识别设备、打印机、音频扬声器、麦克风、照相机等上的图形用户界面。i/o设备1060可以通过有线或无线连接连接到计算机系统1000。i/o设备1060可以从远程位置连接到计算机系统1000。例如,位于远程计算机系统上的i/o设备1060可以经由网络和网络接口1040连接到计算机系统1000。
90.网络接口1040可以包括提供计算机系统1000到网络的连接的网络适配器。网络接口1040可以促进计算机系统1000和连接到网络的其他设备之间的数据交换。网络接口1040可以支持有线或无线通信。网络可以包括电子通信网络,诸如互联网、局域网(lan)、广域网(wan)、蜂窝通信网络等。
91.系统存储器1020可以被配置成存储程序指令1100或数据1110。程序指令1100可以由处理器(例如,处理器1010a至处理器1010n中的一个或多个)执行,以实施本技术的一个或多个实施例。指令1100可以包括计算机程序指令模块,用于实施本文针对各种处理模块描述的一种或多种技术。程序指令可以包括计算机程序(其在某些形式中被称为程序、软件、软件应用、脚本或代码)。计算机程序可以以编程语言编写,包括编译或解释语言、或者声明性或过程性语言。计算机程序可以包括适用于在计算环境中使用的单元,包括作为独立程序、模块、组件或子例程。计算机程序可能对应于也可能不对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中(例如,存储在标记语言文档中的一个或多个脚本)、存储在专用于所讨论的程序的单个文件中、或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序可以被部署为在本地位于一个位点或者分布在多个远程位点并且通过通信网络互连的一个或多个计算机处理器上执行。
92.系统存储器1020可以包括其上存储有程序指令的有形程序载体。有形程序载体可以包括非暂时性计算机可读存储介质。非暂时性计算机可读存储介质可以包括机器可读存储设备、机器可读存储基底、存储器设备或它们的任意组合。非暂时性计算机可读存储介质可以包括非易失性存储器(例如,闪存、rom、prom、eprom、eeprom存储器)、易失性存储器(例如,随机存取存储器(ram)、静态随机存取存储器(sram)、同步动态ram(sdram))、大容量存储器(例如,cd-rom和/或dvd-rom、硬盘驱动器)等。系统存储器1020可以包括其上可以存储有可由计算机处理器(例如,处理器1010a至处理器1010n中的一个或多个)执行以引起本文描述的主题和功能操作的程序指令的非暂时性计算机可读存储介质。存储器(例如,系统存储器1020)可以包括单个存储器设备和/或多个存储器设备(例如,分布式存储器设备)。提供本文描述的功能的指令或其他程序代码可以存储在有形的非暂时性计算机可读介质上。在某些情况下,整个指令集可以同时存储在介质上,或者在某些情况下,指令的不同部分可以在不同时间存储在同一介质上。
93.i/o接口1050可以被配置成协调处理器1010a至处理器1010n、系统存储器1020、网络接口1040、i/o设备1060和/或其他外围设备之间的i/o流量。i/o接口1050可以执行协议、定时或其他数据转变,以将来自一个组件(例如,系统存储器1020)的数据信号转换成适合由另一组件(例如,处理器1010a至处理器1010n)使用的格式。i/o接口1050可以包括对通过各种类型的外围总线附接的设备的支持,诸如外围组件互连(pci)总线标准或通用串行总线(usb)标准的变体。
94.本文描述的技术的实施例可以使用计算机系统1000的单个实例或被配置成托管实施例的不同部分或实例的多个计算机系统1000来实施。多个计算机系统1000可以提供本文描述的技术的一个或多个部分的并行或顺序处理/执行。
95.本领域技术人员将会理解,计算机系统1000仅仅是说明性的,并不旨在限制本文描述的技术的范围。计算机系统1000可以包括可以执行或以其他方式提供本文描述的技术的性能的设备或软件的任何组合。例如,计算机系统1000可以包括云计算系统、数据中心、服务器机架、服务器、虚拟服务器、台式计算机、膝上型计算机、平板计算机、服务器设备、客户端设备、移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、车载计算机或全球定位系统(gps)等,或者是它们的组合。计算机系统1000也可以连接到未示出的其他设备,或者可以作为独立系统操作。此外,在一些实施例中,由所示出的组件提供的功能可以被组合在更少的组件中或者分布在附加组件中。类似地,在一些实施例中,可以不提供所示出的组件中的一些的功能,或者其他附加功能可能是可用的。
96.本领域技术人员还将理解,尽管各种项被示出为在使用时存储在存储器中或存储装置上,但是出于存储器管理和数据完整性的目的,这些项或它们的一部分可以在存储器和其他存储设备之间传输。替代性地,在其他实施例中,软件组件中的一些或所有可以在另一设备上的存储器中执行,并且经由计算机间通信与所示出的计算机系统通信。系统组件或数据结构中的一些或所有也可以存储(例如,作为指令或结构化数据)在计算机可访问的介质或便携式物品上,以由适当的驱动器读取,其各种示例如在上文中描述。在一些实施例中,存储在与计算机系统1000分离的计算机可访问介质上的指令可以经由传输介质或信号(诸如电信号、电磁信号或数字信号)传输到计算机系统1000,经由通信介质(诸如网络或无线链路)传送。各种实施例还可以包括在计算机可访问介质上接收、发送或存储根据前述描
述实施的指令或数据。因此,本技术可以利用其他计算机系统配置来实践。
97.在框图中,所示出的组件被描绘为离散的功能块,但是实施例不限于其中如所示出的那样组织本文描述的功能的系统。由组件中的每一个提供的功能可以由软件或硬件模块来提供,这些软件或硬件模块与当前描绘的不同地进行组织,例如,这种软件或硬件可以混合、结合、复制、分解、分布(例如分布在数据中心内或地理上分布)、或者以其他方式不同地组织。本文描述的功能可以由执行存储在有形的、非暂时性的机器可读介质上的代码的一个或多个计算机的一个或多个处理器来提供。在某些情况下,尽管使用了单数术语“介质”,但是指令可以分布在与不同计算设备相关联的不同存储设备上,例如其中每个计算设备具有指令的不同子集,这是与本文中的单数术语“介质”的使用相一致的实施方式。在某些情况下,第三方内容递送网络可以托管通过网络传送的信息中的一些或所有,在这种情况下,在信息(例如,内容)被供应或以其他方式提供的程度上,可以通过发送指令从内容递送网络检索该信息来提供该信息。
98.读者应该理解,本技术描述了几种独立有用的技术。申请人不是将这些技术分离多个独立的专利申请,而是将这些技术分组到单个文件中,因为它们的相关主题对申请过程中的经济性有用。但是这些技术的不同优点和各方面不应该混为一谈。在某些情况下,实施例解决了本文提到的所有缺陷,但是应当理解的是,这些技术是独立有用的,并且一些实施例仅解决了这些问题的子集或者提供了对于阅读本公开的本领域技术人员来说是显而易见的其他未提及的益处。由于成本限制,本文公开的一些技术目前可能不要求保护,而可能在以后的申请中要求保护,诸如继续申请或通过修改本权利要求。类似地,由于篇幅限制,本文件的发明部分的摘要和发明内容不应被视为包含所有这些技术或这些技术的所有方面的全面列表。
99.应当理解,说明书和附图并不旨在将本技术限制于所公开的特定形式,而是相反,本发明旨在覆盖落入由所附权利要求限定的本技术的精神和范围内的所有修改、等同物和替代性方案。鉴于本说明书,本技术的各个方面的进一步修改和替代性实施例对于本领域技术人员将是显而易见的。因此,本说明书和附图仅被解释为说明性的,并且出于教导本领域技术人员的目的是实行本技术的一般方式。应当理解,本文示出和描述的本技术的形式将被视为实施例的示例。元件和材料可以替代本文示出和描述的那些元件和材料,零件和过程可以颠倒或省略,并且本技术的某些特征可以独立使用,所有这些对于受益于本技术的本说明书的本领域技术人员来说是显而易见的。在不脱离所附权利要求中描述的本技术的精神和范围的情况下,可以对本文描述的元素进行改变。本文使用的标题仅用于组织目的,并不意味着用于限制说明书的范围。
100.如在整个申请中所使用的那样,单词“可以”是在许可的意义上使用的(即,意味着有可能),而不是强制的意义上使用的(即,意味着必须)。词语“包括(include、including、includes)”等意味着包括但不限于。如贯穿本技术所使用的那样,单数形式“一(a)”、“一个(an)”和“该(the)”包括复数指示物,除非内容明确地另外指出。因此,例如,对“一个元素(an element)”或“一元素(a element)”的引用包括两个或更多个元素的组合,尽管对于一个或多个元素使用了其他术语和短语,诸如“一个或多个”。除非另有说明,术语“或”是非排他性的,即涵括“和”和“或”。描述条件关系的术语,例如,“响应于x、y”、“在x时,y”、“如果x,y”、“当x,y”等涵括了这样的因果关系,其中先行条件是必要的因果条件,先行条件是充分
的因果条件,或者先行条件是结果的促成的因果条件,例如,“状态x发生在条件y获得时”是“x仅在y时发生”和“x在y和z时发生”的类属。这种条件关系不限于直接跟随先行条件获得的结果,因为一些结果可能被延迟,并且在条件语句中,先行条件与它们的结果相连,例如,先行条件与结果发生的可能性相关。多个属性或功能被映射到多个对象(例如,一个或多个处理器执行步骤a、b、c和d)的陈述涵括所有这些属性或功能被映射到所有这些对象,以及属性或功能的子集被映射到属性或功能的子集(例如,所有处理器各自执行步骤a至步骤d,以及其中处理器1执行步骤a,处理器2执行步骤b和步骤c的一部分,以及处理器3执行步骤c的一部分和步骤d的情况),除非另有说明。类似地,对执行步骤a的“计算机系统”和执行步骤b的“计算机系统”的引用可以包括执行这两个步骤的计算机系统内的相同计算设备或执行步骤a和步骤b的计算机系统内的不同计算设备。进一步,除非另有说明,否则一个值或动作“基于”另一条件或值的陈述涵括条件或值是唯一因素的实例和条件或值是多个因素中的一个因素的实例。除非另有说明,否则某些集合的“每个”实例具有某些性质的陈述不应被理解为排除较大集合的某些相同或相似成员不具有该属性的情况,即每个不一定意味着每一个。关于所陈述的步骤的序列的限制不应被理解为权利要求,除非明确规定,例如利用明确的语言,如“在执行x之后,执行y”,与可能被不适当地认为暗示序列限制的陈述相反(如“对项执行x,对x过的项执行y”)用于使权利要求更可读的目的,而不是规定序列。涉及“a、b和c中的至少z个”等(例如,“a、b或c中的至少z个”)的陈述是指所列类别(a、b和c)中的至少z个,并且不要求每个类别中至少z个单元。除非另外特别说明,否则从讨论中显而易见的是,应该理解的是,贯穿本说明书讨论,利用诸如“处理”、“计算(computing、calculating)”、“确定”等术语是指特定装置的动作或过程,诸如专用计算机或类似的专用电子处理/计算设备。参照几何构造描述的特征(如“平行”、“垂直/正交”、“正方形”、“圆柱形”等)应被解释为涵括基本体现几何构造的性质的项,例如,对“平行”表面的引用涵括基本平行的表面。参照说明书中的范围来确定这些几何构造的与柏拉图理想的偏离的许可范围,并且在没有参照使用领域中的工业规范说明这些范围的情况下,并且在没有参照指定特征的制造领域中的工业规范定义这些范围的情况下,并且在没有定义这些范围的情况下,基本上体现几何构造的特征应该被解释为包括该几何构造的定义属性的15%以内的那些特征。术语“第一”、“第二”、“第三”、“给定”等(如果在权利要求中使用的话)是用于区分或以其他方式标识,而不是示出顺序或编号限制。如在本领域的普通使用中的情况,参考对人类而言显著的用途描述的数据结构和格式不需要以人类可理解的格式呈现来构成所描述的数据结构或格式,例如文本不需要以unicode或ascii呈现或甚至编码来构成文本;不需要显示或解码图像、地图和数据可视化来分别构成图像、地图和数据可视化;语音、音乐和其他音频不需要通过扬声器发出或被解码来分别构成语音、音乐或其他音频。计算机实施的指令、命令等不限于可执行代码,并且可以以使得功能被唤出的数据的形式来实施,例如,以函数的自变量或api调用的形式。
101.在本专利中,在任何美国专利、美国专利申请或其他材料(例如,文章)通过引用结合的程度上,这些材料的文本仅通过引用结合到这些材料与本文阐述的陈述和附图之间不存在冲突的程度。在这种冲突的情况下,以本文件的文本为准,并且本文件中的术语不应由于那些术语在通过引用结合的其他材料中的使用方式而被给予较窄的解读。
102.参考以下列举的实施例将更好地理解本技术:
103.1、一种存储指令的有形的、非暂时性机器可读介质,指令在由一个或多个处理器执行时实现包括以下操作:利用计算机系统由与分布式计算平台的防篡改数据存储装置的第一分区的第一子分区相关联的第一程序获得第一请求,以读取存储在(i)分布式计算平台的防篡改数据存储装置的第一分区的第二子分区或者(ii)分布式计算平台的防篡改数据存储装置的第二分区中的数据,其中:防篡改数据存储装置包括多个分区,包括第一分区和第二分区,多个分区中的每一个对应于加密散列指针的不同的有向非循环图,分布式计算平台被配置成将在分布式计算平台上执行的程序与分区和分区的子分区相关联,分布式计算平台被配置成防止程序读取程序与其不相关联的子分区或分区中的数据,并且能够在分布式计算平台上执行的程序被授权将程序状态写入到相应程序与其相关联的子分区和分区;利用计算机系统,利用分布式计算平台在其上执行的一组对等计算节点中的对等计算节点的子集确定第一程序被授权从第二子分区或第二分区读取;以及响应于确定,利用计算机系统使得所请求的数据从第二子分区或第二分区被读取并被提供给第一程序。
104.2、根据实施例1的介质,其中:第一请求是读取存储在分布式计算平台的防篡改数据存储装置的第一分区的第二子分区中的数据的请求;并且确定第一程序被授权从第二子分区或第二分区读取包括确定第一程序被授权从第二子分区读取。
105.3、根据实施例1的介质,其中:第一请求是读取存储在分布式计算平台的防篡改数据存储装置的第二分区中的数据的请求;并且确定第一程序被授权从第二子分区或第二分区读取包括确定第一程序被授权从第二分区读取。
106.4、根据实施例3的介质,其中:第一请求是读取存储在第二分区的第三子分区中的数据的请求;并且确定第一程序被授权从第二分区读取包括确定第一程序被授权从第三子分区读取。
107.5、根据实施例3的介质,其中:使得所请求的数据被读取包括获得被确定为已经被添加到对应于第二分区的加密散列指针的有向非循环图的最近数据节点的标识符,标识符将最近数据节点与对应于第二分区的加密散列指针的有向非循环图的其他数据节点区分开;以及在第一分区中与所请求的数据相关联地存储标识符。
108.6、根据实施例5的介质,其中获得被确定为已经被添加到对应于第二分区的加密散列指针的有向非循环图的最近数据节点的标识符包括:利用请求由相应对等计算节点确定为已经被添加到对应于第二分区的加密散列指针的有向非循环图的相应最近数据节点的查询来查询分布式计算平台的确定关于第二分区的状态的共识的对等计算节点的子集;以及基于分布式计算平台的确定关于第二分区的状态的共识的对等计算节点的子集的多个查询响应来确定最近数据节点。
109.7、根据实施例6的介质,其中基于多个查询响应来确定最近数据节点包括:确定对等计算节点的第一子集已经确定第一数据节点是最近数据节点;确定对等计算节点的第二子集已经确定第二数据节点是最近数据节点;以及获得与第一数据节点相关联的、指示数据节点以其被添加到对应于第二分区的加密散列指针的有向非循环图的顺序的第一值;获得与第二数据节点相关联的、指示数据节点以其被添加到对应于第二分区的加密散列指针的有向非循环图的顺序的第二值;以及基于第一值和第二值的比较,确定第二数据节点在第一数据节点之前被添加到对应于第二分区的加密散列指针的有向非循环图,以及作为响应,选择第二数据节点作为最近数据节点,以及使得从第二数据节点读取所请求的数据。
110.8、根据实施例5的介质,其中获得被确定为已经被添加到对应于第二分区的加密散列指针的有向非循环图的最近数据节点的标识符包括:获得分布式计算平台的确定关于第二分区的状态的共识的所有对等计算节点同意的已经被添加到对应于第二分区的加密散列指针的有向非循环图的数据节点的标识符,以及作为响应,使得从分布式计算平台的确定关于第二分区的状态的共识的所有对等计算节点同意的已经被添加到对应于第二分区的加密散列指针的有向非循环图的所标识的数据节点读取所请求的数据。
111.9、根据实施例1至8中任一项的介质,其中操作还包括利用分布式计算平台执行与第一子分区相关联的第一程序;以及利用分布式计算平台在执行第一程序的同时执行与第二子分区相关联的第二程序。
112.10、根据实施例1至9中任一项的介质,其中:分布式计算平台的对等计算节点具有一组角色中的一个或多个角色;一组角色中的角色与分区或子分区相关;一组角色包括校验方角色和观察者角色;由分布式计算平台许可持有校验方角色的对等计算节点确定关于与其相关地持有校验方角色的分区或子分区的状态的共识;并且由分布式计算平台许可持有观察者角色的对等计算节点读取与其相关地持有观察者角色的分区或子分区的状态。
113.11、根据实施例10的介质,其中:由分布式计算平台许可持有校验方角色的对等计算节点通过执行和与其相关地持有校验方角色的子分区相关联的程序来确定关于与其相关地持有校验方角色的子分区的状态的共识。
114.12、根据实施例10的介质,其中:分布式计算平台的第一对等计算节点与第一子分区相关地持有校验方角色;第一对等计算节点执行第一程序;分布式计算平台的第一对等计算节点与第二子分区或第二分区相关地持有观察者角色;并且第一对等计算节点读取所请求的数据。
115.13、根据实施例12的介质,其中:分布式计算平台的第二对等计算节点与第一子分区相关地持有校验方角色;第二对等计算节点执行第一程序;并且执行第一程序包括基于由第一对等计算节点执行第一程序的输出和由第二对等计算节点执行第一程序的输出来确定第一程序的共识输出。
116.14、根据实施例1至13中任一项的介质,其中第一程序通过调用与共享子分区相关联的第二程序来获得所请求的数据,存储在共享子分区中的第二程序和数据能够由与第一分区的多个不同子分区相关联的程序访问。
117.15、根据实施例1至14中任一项的介质,其中操作还包括:利用由分布式计算平台的对等计算节点执行的虚拟机检测第一程序的字节码表示中的操作码,其中虚拟机在存储器中具有标识从其中读取程序状态的状态字典树的标识符,状态字典树是对应于第一分区的加密散列指针的有向非循环图的一部分;响应于检测到操作码,利用虚拟机确定操作码或操作码的自变量指示请求是从第二分区读取数据;以及响应于确定操作码或操作码的自变量指示请求是从第二分区读取数据,改变标识符以标识作为对应于第二分区的加密散列指针的有向非循环图的一部分的另一状态字典树。
118.16、根据实施例1至15中任一项的介质,其中:所请求的数据是由数据发布者发布的数据;并且确定第一程序被授权从第二子分区或第二分区读取包括确定部署第一程序的实体订阅了由数据发布者发布的数据。
119.17、根据实施例16的介质,其中:数据发布者是市场数据提供者;并且第一程序是
具有基于由市场数据提供者发布的市场数据的当前状态来计算第一程序的输出的逻辑的智能合约。
120.18、根据实施例1的介质,操作还包括:由与分布式计算平台的防篡改数据存储装置的第一分区的第一子分区相关联的第二程序获得第二请求,以读取存储在(i)分布式计算平台的防篡改数据存储装置的第一分区的第二子分区或者(ii)分布式计算平台的防篡改数据存储装置的第二分区中的数据;利用分布式计算平台在其上执行的一组对等计算节点中的对等计算节点的子集确定第二程序未被授权从第二子分区或第二分区读取;以及响应于确定,防止所请求的数据被提供给第二程序。
121.19、一种方法,包括:根据实施例1至18中任一项的操作。
122.20、一种系统,包括:一个或多个处理器;以及存储指令的存储器,这些指令在由处理器执行时使得处理器实现包括以下操作:根据实施例1至18中任一项的操作。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1