一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置与流程

2021-11-29 19:57:00 来源:中国专利 TAG:

用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置
1.相关申请的交叉引用
2.本技术要求2019年5月22日提交的标题为“methods and apparatus for implementing state proofs and ledger identifiers in a distributed database”的美国临时申请n0.62/851,368的优先权和权益,该申请通过引用整体并入本文。


背景技术:

3.这里描述的实施例总体涉及数据库系统,并且更特别地涉及用于跨网络中的多个设备的数据库系统中实现状态证明和分类帐(ledger)标识符的方法和装置。
4.一些已知的分布式数据库系统试图就分布式数据库内的值达成共识(例如,关于在这种分布式数据库内事务(transaction)发生或应被处理的顺序)。可以使用各种已知的共识方法和/或过程来确定共识。在标识了顺序之后,事务可以被处理以定义分布式数据库的状态和/或分布式数据库内的数据的状态。因为分布式数据库的多个设备和/或参与者可以存储分布式数据库的单独实例,所以很难在任何给定时间证实(verify)分布式数据库内的数据的状态。
5.因此,需要有效且高效地一次确定分布式数据库的状态的方法和装置。


技术实现要素:

6.在一些实施例中,一种方法可以包括在第一时间使用分布式数据库的第一地址簿计算分布式数据库的标识符。第一地址簿包括与在第一时间实现分布式数据库的第一计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括接收用于以下至少之一的事务:(1)将计算设备添加到第一计算设备集合,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。该方法还可以包括在第一时间之后的第二时间定义第二地址簿,该第二地址簿包括与第二计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括从第二计算设备集合中的计算设备接收与第二时间之后的分布式数据库的数据相关联的状态证明。该方法还可以包括通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行数字签名来证实分布式数据库的数据。
附图说明
7.图1是示出了根据实施例的可分布式数据库系统的框图。
8.图2是示出了根据实施例的分布式数据库系统的计算设备的框图。
9.图3是示出了根据实施例的分布式数据库系统的框图。
10.图4示出了根据实施例的与分布式数据库系统相关联的地址簿。
11.图5示出了根据实施例的与分布式数据库系统相关联的地址簿历史。
12.图6示出了根据实施例的与分布式数据库系统相关联的merkle树。
13.图7是根据实施例的用于定义状态证明的方法的流程图。
14.图8是根据实施例的用于证实分布式数据库内的数据的方法的流程图。
具体实施方式
15.本文描述了并在附图中示出了实施例的各个方面和变型的非限制性示例。
16.本文描述的一个或多个实施例总体涉及通过将分布式数据库的状态定义为merkle树并进一步使用状态证明和分类帐标识符高效地证实分布式数据库内的值来实现分布式数据库的方法、装置和系统。公开了在分布式数据库中实现状态证明和分类帐标识符的方法、装置和系统。
17.在一些实施例中,一种方法可以包括在第一时间使用分布式数据库的第一地址簿计算分布式数据库的标识符。第一地址簿包括与在第一时间实现分布式数据库的第一计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括接收用于以下至少一项的事务:(1)将计算设备添加到第一计算设备集合,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。该方法还可以包括在第一时间之后的第二时间定义第二地址簿,该第二地址簿包括与第二计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括从第二计算设备集合中的计算设备接收与第二时间之后的分布式数据库的数据相关联的状态证明。该方法还可以包括通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行数字签名来证实分布式数据库的数据。
18.在一些实施例中,一种装置包括存储器和可操作地耦合到存储器的处理器。存储器是与分布式数据库相关联的计算设备的存储器,该分布式数据库由计算设备集合经由可操作地耦合到计算设备集合的网络实现。处理器被配置为从计算设备集合中的计算设备接收与分布式数据库的状态相关联的状态证明。状态证明可以包括:(1)与状态相关联的数据;(2)与状态相关联的时间戳;(3)分布式数据库的第一标识符;以及(4)与分布式数据库相关联的地址簿集合。地址簿集合中的每个地址簿与一时间段期间的分布式数据库的版本相关联,该时间段不同于与和地址簿集合中的每个其余地址簿相关联的分布式数据库的版本相关联的时间段。地址簿集合具有时间顺序。处理器还被配置为通过以下确定在与时间戳相关联的时间处的数据的有效性:(1)基于存储在存储器中的分布式数据库的第二标识符,证实分布式数据库的第一标识符是正确的;(2)证实与状态相关联的数据已经由多个计算设备中的预定数量的计算设备数字签名;以及(3)除了地址簿集合中的初始地址簿之外,证实地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
19.在一些实施例中,非瞬态处理器可读介质存储表示要由处理器执行的指令的代码。该代码包括使处理器执行以下操作的代码:从经由网络实现分布式数据库的多个计算设备中的计算设备接收与分布式数据库的状态相关联的状态证明。状态证明可以包括:(1)被存储为该状态的merkle树的叶记录集合的数据;(2)与数据相关联的merkle路径;以及(3)与分布式数据库相关联的地址簿集合。地址簿集合中的每个地址簿与一时间段期间的分布式数据库的版本相关联,该时间段不同于与和地址簿集合中的每个其余地址簿相关联的分布式数据库的版本相关联的时间段。地址簿集合具有时间顺序。该代码包括使处理器
通过以下确定数据的有效性的代码:(1)证实merkle路径对于从merkle树的根到叶记录的序列是有效的;以及(2)除了地址簿集合中的初始地址簿之外,证实地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
20.如本文所使用的,模块可以是例如,与执行特定功能相关联的可操作地耦合的电组件的任何配件和/或集合,并且可以包括例如,存储器、处理器、电迹线、光连接器、软件(在硬件中执行)等。
21.如本说明书中所使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”包括复数指称。因此,例如,术语“模块”意指单个模块或模块的组合。例如,“网络”意指单个网络或网络的组合。
22.图1是示出根据实施例的分布式数据库系统100的高级框图。图1示出了跨四个计算设备(计算设备110、计算设备120、计算设备130和计算设备140)实现的分布式数据库100,但是应理解,分布式数据库100可以使用任何数量的计算设备的集合,包括图1中未示出的计算设备。网络105可以是被实现为有线网络和/或无线网络并且用于可操作地耦合计算设备110、120、130、140的任何类型的网络(例如,局域网(lan)、广域网(wan)、虚拟网络、电信网络)。如本文更详细地描述的,在一些实现方式中,例如,计算设备是经由互联网服务提供商(isp)和互联网(例如,网络105)彼此连接的个人计算机。在一些实现方式中,可以经由网络105在任何两个计算设备110、120、130、140之间定义连接。例如,如图1中所示,可以在计算设备110与计算设备120、计算设备130或计算设备140中任何一个之间定义连接。
23.在一些实现方式中,计算设备110、120、130、140可以经由中间网络和/或备用网络(图1中未示出)彼此通信(例如,向其发送数据和/或从其接收数据)以及与网络通信。这样的中间网络和/或备用网络可以是与网络105相同类型和/或不同类型的网络。
24.每个计算设备110、120、130、140可以是被配置为通过网络105通信(例如,向一个或多个其他计算设备发送数据和/或从其接收数据)的任何类型的设备,诸如例如计算实体(例如,诸如台式计算机、膝上型计算机等的个人计算设备)、移动电话、个人数字助理(pda)等。图1中示出了计算设备的示例。计算设备110包括存储器112、处理器111和输出设备113。存储器112可以是例如,随机存取存储器(ram)、存储器缓冲器、硬盘驱动器、数据库、可擦除可编程只读存储器(eprom)、电可擦除只读存储器(eeprom)、只读存储器(rom)等。在一些实现方式中,计算设备110的存储器112包括与分布式数据库的实例(例如,分布式数据库实例114)相关联的数据。在一些实现方式中,存储器112存储指令以使处理器执行与以下操作相关联的模块、过程和/或功能:实现状态证明和/或分类帐标识符(例如,对消息进行签名、定义状态证明、定义merkle树等)和/或向分布式数据库的另一实例(例如,计算设备120处的分布式数据库实例124)发送和/或从其接收同步事件的记录、和/或与其他计算设备的先前同步事件的记录、同步事件的顺序、事件内的事务的顺序、与标识同步事件和/或事务的顺序相关联的参数、和/或参数的值(例如,量化事务的数据库字段、量化事件发生顺序的数据库字段、和/或可以将其值存储在数据库中的任何其他适当的字段。
25.分布式数据库实例114例如可以被配置为操纵数据,包括存储、修改和/或删除数据。在一些实现方式中,分布式数据库实例114可以是一组阵列、一组数据结构、关系数据库、对象数据库、关系后数据库和/或任何其他适当类型的数据库或存储设备。例如,分布式
数据库实例114可以存储与任何特定功能和/或行业相关的数据。例如,分布式数据库实例114可以存储(例如,计算设备110的用户的)金融事务,包括与特定金融工具的所有权历史相关的值和/或值的向量。通常,向量可以是参数的任何值集合,并且参数可以是能够取不同值的任何数据对象和/或数据库字段。因此,分布式数据库实例114可以具有多个参数和/或字段,每个参数和/或字段与值的向量相关联。值的向量可用于确定该数据库实例114内的参数和/或字段的实际值。在某些情况下,分布式数据库实例114存储同步事件的记录、与其他计算设备的先前同步事件的记录、同步事件的顺序、事件内的事务的顺序、与标识同步事件和/或事务的顺序相关联的参数和/或值(例如,用于使用本文所描述的共识方法计算顺序)、参数的值(例如,量化事务的数据库字段、量化事件发生的顺序的数据库字段、和/或可以将其值存储在数据库中的任何其他适当字段)等。
26.在某些情况下,分布式数据库实例114还可以存储数据库状态变量和/或当前状态。当前状态可以是与事务结果相关联的状态、余额、条件等。类似地,状态可以包括由事务修改的数据结构和/或变量。在某些情况下,当前状态可以存储在单独的数据库和/或存储器112的一部分中。在某些情况下,当前状态可以存储在与计算设备110不同的计算设备的存储器中。在某些情况下,状态的至少一部分可以存储为merkle树和/或散列树,如本文更详细地描述的。
27.在某些情况下,分布式数据库实例114还可以用于实现其他数据结构,诸如一组(键,值)对。分布式数据库实例114记录的事务可以是例如添加、删除或修改一组(键,值)对中的(键,值)对。
28.在某些情况下,可以查询分布式数据库系统100或任何分布式数据库实例114、124、134、144。例如,查询可以由键组成,并且从分布式数据库系统100或分布式数据库实例114、124、134、144返回的结果可以是与键相关联的值。在某些情况下,分布式数据库系统100或任何分布式数据库实例114、124、134、144也可以通过事务来修改。例如,修改数据库的事务可以包含授权和/或请求修改事务的一方的数字签名。
29.分布式数据库系统100可以用于许多目的,例如,存储与分布式身份系统中的各种用户相关联的属性。例如,这样的系统可以使用用户的身份作为“键”,并使用与用户相关联的属性列表作为“值”。在某些情况下,身份可以是具有该用户已知的对应私有密钥的加密公共密钥。例如,每个属性可以由有权声明该属性的权威机构数字签名。例如,每个属性还可以利用与有权读取该属性的个体或个体组相关联的公共密钥来加密。一些键或值还可以附有经授权修改或删除键或值的各方的公共密钥列表。
30.在另一示例中,分布式数据库实例114可以存储与大型多人游戏(mmg)相关的数据,诸如游戏项目的当前状态和所有权。在某些情况下,分布式数据库实例114可以在计算设备110内实现,如图1中所示。在某些情况下,分布式数据库的实例可由计算设备访问(例如,经由网络),而不在计算设备中实现(图1中未示出)。
31.计算设备110的处理器111可以是被配置为运行和/或执行分布式数据库实例114的任何适当的处理设备。例如,处理器111可以被配置为响应于从计算设备120接收到信号来更新分布式数据库实例114,和/或使信号被发送到计算设备120。更具体地,处理器111可以被配置为响应于从另一计算设备接收到与事务相关联的同步事件、与同步事件的顺序相关联的记录等,执行模块、功能和/或过程以更新分布式数据库实例114。在一些实现方式
中,处理器111可以被配置为执行模块、函数和/或过程,以响应于接收到存储在分布式数据库的另一实例(例如,计算设备120处的分布式数据库实例124)中的参数的值而更新分布式数据库实例114,和/或使存储在计算设备110处的分布式数据库实例114中的参数的值被发送到计算设备120,在一些实现方式中,处理器111可以被配置为执行本文所描述的关于实现状态证明和/或分类帐标识符(例如,对消息进行签名、定义状态证明、定义merkle树等)的模块、功能和/或过程。在一些实现方式中,处理器111可以是通用处理器、现场可编程门阵列(fpga)、专用集成电路(asic)、数字信号处理器(dsp)等。
32.显示器113可以是任何适当的显示器,例如液晶显示器(lcd)、阴极射线管显示器(crt)等。在一些实现方式中,计算设备110、120、130、140中的任何一个包括另一个输出设备,作为显示器113、123、133、143的替代或附加。例如,计算设备110、120、130、140中的任何一个可以包括音频输出设备(例如,扬声器)、触觉输出设备等。在一些实现方式中,计算设备110、120、130、140中的任何一个包括输入设备,作为显示器113、123、133、143的替代或附加。例如,计算设备110、120、130、140中的任何一个可以包括键盘、鼠标等。
33.虽然在图1中示出为在单个计算设备内,但在某些情况下,被配置为执行模块、功能和/或过程以更新分布式数据库的处理器可以在与其相关联的分布式数据库分开的计算设备内。例如,在这种实例中,处理器可以经由网络可操作地耦合到分布式数据库实例。例如,处理器可以执行共识方法来标识事件和/或事务的顺序(例如,作为与其他分布式数据库实例同步的结果),并且可以通过网络向相关联的分布式数据库实例发送包括事件和/或事务的顺序的信号。然后,相关联的分布式数据库实例可以基于相关联的分布式数据库实例中的事务的顺序来存储事件的顺序、事务的顺序和/或状态变量。这样,与分布式数据库相关联的功能和存储可以是分布式的。此外,处理器可以在其分布式数据库实例中查询其相关联的分布式数据库实例、存储数据库状态变量和/或当前状态、和/或执行本文描述的其他适当的操作,即使在与具有实现与分布式数据库系统相关联的模块、功能和/或过程(例如,共识方法)的处理器的计算设备分离的计算设备中实现数据库时。在某些情况下,本文描述的功能和/或方法可以跨任何数量的计算设备(例如,在分布式计算环境和/或集群内)执行,并且这些功能和/或方法的结果和/或值可以存储在任何适当的计算设备的存储器和/或存储设备中。
34.计算设备120具有处理器121、存储器122和显示器123,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例124可以在结构和/或功能上类似于分布式数据库实例114。
35.计算设备130具有处理器131、存储器132和显示器133,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例134可以在结构和/或功能上类似于分布式数据库实例114。
36.计算设备140具有处理器141、存储器142和显示器143,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例144可以在结构和/或功能上类似于分布式数据库实例114。
37.虽然计算设备110、120、130、140被示为彼此相似,但是分布式数据库系统100每个计算设备可以不同于其他计算设备。分布式数据库系统100的每个计算设备110、120、130、140可以是例如计算实体(例如,诸如台式计算机、膝上型计算机等的个人计算设备)、移动
电话、个人数字助理(pda)等中的任何一个。例如,计算设备110可以是台式计算机,计算设备120可以是智能手机,并且计算设备130可以是服务器。
38.在一些实现方式中,计算设备110、120、130、140的一个或多个部分可以包括基于硬件的模块(例如,数字信号处理器(dsp)、现场可编程门阵列(fpga))和/或基于软件的模块(例如,存储在存储器中和/或在处理器处执行的计算机代码模块)。在一些实现方式中,与计算设备110、120、130、140相关联的一个或多个功能(例如,与处理器111、121、131、141相关联的功能)可以被包括在一个或多个模块中(例如,参见图2)。
39.分布式数据库系统100的属性,包括计算设备(例如,计算设备110、120、130、140)的属性、计算设备的数量和网络105,可以以任何数量的方式选择。在某些情况下,分布式数据库系统100的属性可以由分布式数据库系统100的管理员选择。在某些情况下,分布式数据库系统100的属性可以由分布式数据库系统100的用户共同选择。
40.因为使用了分布式数据库系统100,所以在计算设备110、120、130和140之间没有指定领导者。具体地,没有一个计算设备110、120、130或140被标识和/或选择为解决存储在计算设备110、120、130、140的分布式数据库实例111、12、131、141中的值之间的争议的领导者。相反,通过使用本文描述的事件同步过程、投票过程和/或方法,计算设备110、120、130、140可以共同汇聚于参数的值。
41.分布式数据库系统中没有领导者增加了分布式数据库系统的安全性。具体地,具有领导者的话,存在单个攻击点和/或失败点。如果恶意软件感染领导者和/或该领导者的分布式数据库实例处的参数值被恶意更改,则失败和/或不正确的值被传播到整个其他分布式数据库实例。然而,在无领导者系统中,没有单个攻击点和/或失败点。具体地,如果无领导者系统的分布式数据库实例中的参数包含一个值,则在该分布式数据库实例与系统中的其他分布式数据库实例交换值之后,该值将改变,如本文更详细地描述的。此外,本文描述的无领导者分布式数据库系统提高了汇聚速度,同时减少了在设备之间发送的数据量,如本文更详细地描述的。
42.图2示出了根据实施例的分布式数据库系统(例如,分布式数据库系统100)的计算设备200。在一些实现方式中,计算设备200可以类似于参照图1示出和描述的计算设备110、120、130、140。计算设备200包括处理器210和存储器220。处理器210和存储器220可操作地彼此耦合。在一些实现方式中,处理器210和存储器220可以分别类似于参照图1详细描述的处理器111和存储器112。如图2所示,处理器210包括数据库汇聚模块211和通信模块210,并且存储器220包括分布式数据库实例221。通信模块212使计算设备200能够与其他计算设备通信(例如,向其他计算设备发送数据和/或从其他计算设备接收数据)。在一些实现方式中,通信模块212(图1中未示出)使计算设备110能够与计算设备120、130、140通信。通信模块210可以包括和/或启用例如网络接口控制器(nic)、无线连接、有线端口等。因此,通信模块210可以建立和/或维护计算设备200与另一设备之间的通信会话(例如,经由诸如图1的网络105或互联网(未示出)的网络)。类似地,通信模块210可以使计算设备200能够向另一设备发送数据和/或从另一设备接收数据。
43.在某些情况下,数据库汇聚模块211可以与其他计算设备交换事件和/或事务,存储数据库汇聚模块211接收的事件和/或事务,并且基于由事件之间的引用模式定义的部分顺序来计算事件和/或事务的排序。每个事件可以是包含两个较早事件的加密散列的记录
(将该事件链接到两个较早事件及其祖先事件,反之亦然)、有效载荷数据(诸如要记录的事务)、诸如当前时间、其创建者声称是事件首次被定义的时间的时间戳(例如,日期和utc时间)之类的其他信息等。通信的计算设备中的每一个被称为“成员”或“散列图成员”。在某些情况下,由成员定义的第一个事件仅包括由另一个成员定义的单个事件的散列(或散列值)。在这种实例中,成员还没有先前的自散列(例如,由该成员先前定义的事件的散列)。在某些情况下,分布式数据库中的第一个事件不包括任何先前事件的散列(因为没有针对该分布式数据库的先前事件)。
44.在一些实现方式中,这两个较早事件的这种加密散列可以是基于使用事件作为输入的加密散列函数定义的散列值。具体地,在这样的实现方式中,事件包括特定的字节序列或串(其表示该事件的信息)。事件的散列可以是使用该事件的字节序列作为输入的散列函数返回的值。在一些实现方式中,与事件相关联的任何其他适当的数据(例如,标识符、序列号、表示事件的特定部分的字节等)可以被用作散列函数的输入,以计算该事件的散列。可以使用任何适当的散列函数来定义散列。在一些实现方式中,每个成员使用相同的散列函数,使得在每个成员处针对给定事件生成相同的散列。然后,该事件可以被定义和/或创建该事件的成员数字签名。
45.在某些情况下,这组事件及其互连可以形成有向无环图(dag)。在某些情况下,dag中的每个事件引用(例如,包含对后面内容的引用)零个或多个(例如,两个)较早事件(将该事件链接到较早事件及其祖先事件,反之亦然),并且每个引用严格地引用较早事件,使得不存在循环。在一些实现方式中,dag基于密码散列,因此该数据结构可以被称为散列图(本文也称为“散列dag”)。散列图直接对部分顺序进行编码,这意味着如果y包含x的散列,或者如果y包含包含x的散列的事件的散列,或者对于任意长度的这样的路径,则已知事件x出现在事件y之前。但是,如果没有从x到y或从y到x的路径,则部分顺序不会定义哪个事件先出现。因此,数据库汇聚模块可以根据部分顺序计算总顺序。这可以由计算设备使用的任何适当的确定性函数来完成,使得计算设备计算相同的顺序。在一些实现方式中,每个成员可以在每次同步之后重新计算该顺序,并且最终这些顺序可以汇聚,使得出现共识。
46.共识算法和/或方法可用于确定散列图中事件的顺序和/或存储在事件内的事务的顺序。在一些实现方式中,例如,在2016年12月21日提交的标题为“methods and apparatus for a distributed database within a network”的美国专利申请号15/387,048(现在为美国专利号9,646,029)中所示出和描述的共识算法和/或方法,可用于确定事件和/或事务的顺序。
47.事务顺序进而可以将数据库的状态定义为根据该顺序执行那些事务的结果。数据库的定义的状态可以被存储为数据库状态变量。在一些实现方式中,分布式数据库的实例(例如,分布式数据库实例114)存储散列图和/或事务、和/或事务的顺序、和/或事件、和/或事件的顺序、和/或由执行事务产生的状态。
48.在图2中,数据库汇聚模块211和通信模块212在图2中示为在处理器210中实现。在一些实现方式中,数据库汇聚模块211和/或通信模块212可以在存储器220中实现。在一些实现方式中,数据库汇聚模块211和/或通信模块212可以是基于硬件的(例如,asic、fpga等)。
49.图3是示出根据实施例的分布式数据库系统300(类似于参照图1示出和描述的分
布式数据库系统100)的框图。分布式数据库系统300可以使用经由网络305(结构上和/或功能上类似于参照图1示出和描述的网络105)连接的分布式数据库设备集合310、320、330、340(结构上和/或功能上类似于参照图1示出和描述的计算设备110、120、130、140)来实现。分布式数据库设备集合310、320、330、340中的每个分布式数据库设备可以存储分布式数据库的实例,执行共识方法和/或协议以标识分布式数据库中的事件和/或事务的顺序,与分布式数据库设备集合310、320、330、340中的其他分布式数据库设备交换事件,和/或执行与实现分布式数据库相关联的其他动作(如参照图1的计算设备110、120、130、140所描述的)。这样,分布式数据库设备310、320、330、340可以被称为共同实现分布式数据库和/或可以被称为是分布式数据库的设备或成员。在一些实现方式中,可以使用任意数量的分布式数据库设备来实现分布式数据库。
50.分布式数据库设备集合310、320、330、340中的每个分布式数据库设备可以连接和/或可操作地耦合到用户设备集合312、314、322、332、334、342的一个或多个用户设备。更具体地,如图3中所示,分布式数据库设备310可以连接和/或可操作地耦合到用户设备312和314;分布式数据库设备320可以连接和/或可操作地耦合到用户设备322;分布式数据库设备330可以连接和/或可操作地耦合到用户设备332和334;以及分布式数据库设备340可以连接和/或可操作地耦合到用户设备342。虽然在图3中被示为耦合到一个或两个用户设备,但是每个分布式数据库设备可以连接和/或可操作地耦合到任意数量的用户设备。
51.用户设备集合312、314、322、332、334、342中的每个用户设备可以是任何适合的计算设备,例如个人计算机、智能手机、平板电脑、服务器等。这样,用户设备集合312、314、322、332、334、342可以包括处理器和存储器(图3中未示出)。处理器可以是任何适合的处理器,例如通用处理器、fpga、asic、dsp等。存储器可以是存储要由处理器执行的指令的任何适合的存储器。处理器和存储器可以彼此可操作地耦合。用户设备集合312、314、322、332、334、342还可以包括通信模块(图3中未示出),通信模块可以使每个用户设备能够与其各自的分布式数据库设备310、320、330、340通信(例如,向其发送数据和/或从其接收数据)。更具体地,用户设备312和314可以从分布式数据库设备310发送和/或接收数据;用户设备322可以从分布式数据库设备320发送和/或接收数据;用户设备332和334可以从分布式数据库设备330发送和/或接收数据;以及用户设备342可以从分布式数据库设备340发送和/或接收数据。
52.用户设备312、314、322、332、334、342可以经由分布式数据库设备310、320、330、340中的一个或多个访问分布式数据库和/或与其交互。更具体地,用户设备312和314可以经由分布式数据库设备310访问分布式数据库和/或与其交互;用户设备332可以经由分布式数据库设备320访问分布式数据库和/或与其交互;用户设备332和334可以经由分布式数据库设备330访问分布式数据库和/或与其交互;以及用户设备342可以经由分布式数据库设备340访问分布式数据库和/或与其交互。例如,用户设备312可以经由分布式数据库设备340对分布式数据库进行改变和/或向其添加事务。类似地,用户设备312可以向分布式数据库设备310发送事务请求,请求分布式数据库设备310向分布式数据库添加事务。作为另一示例,用户设备312可以从分布式数据库设备310获得状态证明以证实分布式数据库中的数据,如本文更详细地描述的。因为用户设备312、314、322、332、334、342不是分布式数据库的成员,而是经由成员访问分布式数据库,所以用户设备312、314、322、332、334、342不执行共
识方法或以其他方式考虑分布式数据库中的事件和/或事务的共识。
53.正如事务可以改变分布式数据库中的数据和/或状态(如参照图1所描述的)一样,事务还可以通过添加、移除和/或修改分布式数据库的成员来修改分布式数据库的成员资格(例如,实现分布式数据库的分布式数据库设备集合)。在一些实现方式中,分布式数据库的成员可以通过从分布式数据库设备集合310、320、330、340添加和/或移除一个或多个分布式数据库设备来随时间改变。类似地,随着分布式数据库设备集合310、320、330、340中的分布式数据库设备从分布式数据库设备集合310、320、330、340中移除,和/或其他分布式数据库设备被添加到分布式数据库设备集合310、320、330、340,实现分布式数据库的分布式数据库设备集合310、320、330、340可以随时间改变。在某些情况下,所移除的分布式数据库设备可以稍后重新连接到分布式数据库系统。
54.地址簿可以用于在任何给定时间追踪分布式数据库的成员(即,实现分布式数据库的分布式数据库设备)。图4示出了根据实施例的与分布式数据库系统相关联的地址簿400。地址簿400包括图3的分布式数据库系统300中的每个分布式数据库设备310、320、330、340的条目。具体地,地址簿被定义为包括实现分布式数据库的分布式数据库设备集合(如关于图3示出和描述的分布式数据库设备310、320、330、340)的一组公共密钥(a、b、c和d)。在其中股权被用于确定共识(例如,设备的股权指示该设备对共识过程具有的影响力的量)的实现方式中,地址簿400还可以包括与每个分布式数据库设备相关联的股权量。
55.当事务从分布式数据库设备集合中添加、移除和/或修改分布式数据库设备时,事务可以改变和/或更新地址簿。例如,如果用于从分布式数据库移除分布式数据库设备340的事务被输入到分布式数据库并排序(例如,在分布式数据库的共识顺序内),则可以执行该事务并且可以从分布式数据库移除分布式数据库设备340。响应于该事务,可以定义不包括分布式数据库设备340的条目的新地址簿。对于另一示例,如果用于向分布式数据库添加新的分布式数据库设备的事务被输入到分布式数据库中并排序(例如,在分布式数据库的共识顺序内),则可以针对新的分布式数据库设备定义具有条目(例如,包括公共密钥和股权的量)的新地址簿。对于又一示例,如果用于改变与一个或多个分布式数据库设备相关联的股权量的事务被输入到分布式数据库中并排序,则可以定义反映股权变化的新地址簿。例如,如果股权反映由每个分布式数据库实例持有的加密货币硬币的量,则事务可以反映分布式数据库设备340向分布式数据库设备330转移5个硬币。在事务被排序和执行之后,可以定义反映分布式数据库设备340现在具有70个硬币而分布式数据库设备330具有35个硬币的新地址簿。
56.图5示出了根据实施例的与分布式数据库系统相关联的地址簿历史500。地址簿历史500可以是分布式数据库的每个地址簿的记录。具体地,每次定义(例如,如上所述)新地址簿时,可以将该地址簿的散列(或使用该地址簿作为散列函数的输入而计算的散列值)添加到地址簿历史500(例如,作为链)。因此,地址簿历史可以具有时间顺序,并且地址簿历史中的每个地址簿对于连续时间段的分布式数据库的版本可以是适用的和/或准确的。例如,地址簿502可以与第一时间段期间的分布式数据库的版本相关联,地址簿504可以与第一时间段之后的第二时间段期间的分布式数据库的版本相关联,地址簿506可以与第二时间段之后的第三时间段期间的分布式数据库的版本相关联,以及地址簿508可以与第三时间段之后的第四时间段期间的分布式数据库的版本相关联。因此,按照时间顺序,地址簿502可
以排第一,地址簿504可以排第二,地址簿506可以排第三,地址簿508可以排第四。
57.此外,地址簿的散列(或散列值)可以由紧接在前的地址簿的预定阈值数量的分布式数据库设备数字签名(例如,使用私有密钥)。这样的签名可以证明新地址簿的有效性。在某些情况下,每个分布式数据库设备可以分别对地址簿的散列进行签名。在某些情况下,可以聚合多个分布式数据库设备的签名以定义聚合签名。其他设备(例如,其他分布式数据库设备或用户设备)可以使用对地址簿散列进行签名的分布式数据库设备的(多个)公共密钥来证实(多个)签名。
58.预定阈值可以基于紧接在前的地址簿中的分布式数据库设备的总数量,或者基于紧接在前的地址簿中的每个分布式数据库设备所持有的股权量。此外,预定阈值可以是任何适合的阈值。例如,预定阈值可以与分布式数据库中的总股权的三分之二相关联。在某些情况下,预定阈值可以是分布式数据库设备和/或股权的任何其他适合百分比(例如,67%、70%、80%、90%、99%、三分之二、四分之三等)。参照图4,在一个示例中,如果预定阈值是分布式数据库中的总股权的三分之二,并且分别具有公共密钥a和d以及股权100和75的两个分布式数据库设备310和340对新地址簿进行了签名(例如,单独地和/或利用聚合签名),则可以发现地址簿是有效的。具体地,在这样的示例中,175的组合股权占分布式数据库的总股权255的三分之二以上。对于另一示例,如果预定阈值是分布式数据库的总成员的三分之二(而不是股权),则四个分布式数据库设备中的任何三个都需要对新地址簿进行签名以使新地址簿有效。
59.返回图5,初始或创始地址簿502可以被散列化以产生分布式数据库的分类帐标识符。类似地,初始或创始地址簿502可以用作散列函数的输入,以生成可以作为分类帐标识符的散列(或散列值)。如本文所述,该分类帐标识符稍后可以用作分布式数据库的唯一标识符。当事务改变地址簿502时(例如,添加成员、移除成员或修改成员的股权),新地址簿504的散列可以被地址簿502中的预定数量(基于总数量或股权量)的分布式数据库设备签名。类似地,当事务改变地址簿504时,新地址簿506的散列可以被地址簿504中的预定数量(基于总数量或股权量)的分布式数据库设备签名,并且当事务改变地址簿506时,新地址簿508的散列可以被地址簿506中的预定数量(基于总数量或股权量)的分布式数据库设备签名。因此,使用地址簿历史500可以容易地将每个地址簿的有效性追踪到初始和/或创始地址簿。
60.如上所示,分布式数据库设备集合310、320、330、340中的每个分布式数据库设备可以包括分布式数据库实例(类似于如参照图1示出和描述的分布式数据库实例114、124、134、144),分布式数据库实例存储诸如例如事务和/或事件的共识顺序和/或已经按照共识顺序执行事务之后的分布式数据库的状态之类的数据。事务和/或事件的顺序可以定义被存储为数据库状态变量的分布式数据库的状态。在一些实现方式中,分布式数据库的状态可以被分割成片段,每个片段都可以作为叶记录存储在merkle树中。
61.merkle树是散列的二叉树。图6示出了在merkle树600的每个叶节点处存储数据(即,数据w、数据x、数据y和数据z)的merkle树600。merkle树600内的其他节点包含该节点的子节点的连结内容的散列(或散列值)。例如,节点h
w
包含数据w(h
w
的唯一子节点)的散列;节点h
x
包含数据x的散列;节点h
y
包含数据y的散列;以及节点h
z
包含数据z的散列。此外,节点h
wx
包含连结的h
w
和h
x
的散列;节点h
yz
包含连结的h
y
和h
z
的散列;以及merkle树600的根节
点h
wxyz
包含连结的h
wx
和h
yz
的散列。
62.可以使用数据、数据的merkle路径和根节点来证实数据被包含在merkle树600的叶节点中。数据的merkle路径包括从数据到merkle树的根节点的顺序中的节点的每个兄弟节点。例如,数据w的merkle路径包括h
x
和h
yz
(分别是节点h
w
和h
wx
的兄弟节点,其中h
w
和h
wx
是从数据w到根节点h
wxyz
的节点序列)。具体地,基于数据w的merkle路径中的节点(即,节点h
x
和h
yz
)和根节点h
wxyz
,用户可以证实数据w在merkle树600中。例如,可以基于数据w的散列来计算h
w
;可以基于h
w
(先前计算的)和h
x
(作为merkle路径的一部分提供)的散列来计算h
wx
;以及可以基于h
wx
(先前计算的)和h
yz
(作为merkle路径的一部分提供)的散列来计算h
wxyz
。一旦计算出h
wxyz
,就可以将其与先前存储和/或提供的根节点的值进行比较。如果计算出的根节点对应于先前存储和/或提供的根节点的值,则数据x被证实为包含在具有该根节点h
wxyz
的merkle树内。
63.返回图3,如上所述,分布式数据库的状态可以被存储为merkle树。具体地,与分布式数据库的状态相关联的数据可以作为叶节点被存储在merkle树中。周期性地和/或零星地,实现分布式数据库(或其子集)的分布式数据库设备集合310、320、330、340可以对当前merkle树(即,包含分布式数据库的当前状态的merkle树)的根节点以及数据有效的日期和时间的共识时间戳一起进行数字签名。对merkle树的根节点进行签名的每个分布式数据库设备310、320、330、340可以将其签名发送到实现分布式数据库的分布式数据库设备集合中的其余分布式数据库设备。如果阈值数量(基于总数量或股权量)的分布式数据库设备310、320、330、340对merkle树的根节点进行了签名,则认为该组签名足以证明针对分布式数据库的该状态的merkle树根散列在给定时间戳的时间是有效的。在某些情况下,每个分布式数据库设备可以单独对merkle树的根节点进行签名。在某些情况下,可以聚合多个分布式数据库设备的签名以定义聚合签名。其他设备(例如,其他分布式数据库设备或用户设备)可以使用对merkle树的根节点进行签名的分布式数据库设备的(多个)公共密钥来证实(多个)签名。
64.在一些实现方式中,merkle树(例如,在给定时间的分布式数据库的状态)可以被存储和/或被实现在实现分布式数据库的分布式数据库设备集合310、320、330、340中。在这样的实现方式中,merkle树或分布式数据库的状态不被存储在用户设备集合312、314、322、332、334、342中。而是,merkle树和/或分布式数据库的状态可以通过向所连接的分布式数据库设备310、320、330、340发送请求来由用户设备集合312、314、322、332、334、342访问。此外,分布式数据库设备集合310、320、330、340中的分布式数据库设备和/或用户设备集合312、314、322、332、334、342中的用户设备可以使用状态证明来确定merkle树的叶节点中的数据的有效性。
65.状态证明可以用于证实数据在某时间被包含在分布式数据库的状态内。在一些实现方式中,状态证明可以是数据结构、消息和/或文件,其包括例如:
66.‑
来自分布式数据库的数据(例如,merkle树的叶节点的内容);
67.‑
该叶节点的merkle路径;
68.‑
merkle树何时有效的时间戳;
69.‑
在merkle树的根节点上实现分布式数据库的分布式数据库设备的(例如,满足预定阈值的)数字签名集合(单独的或组合的聚合签名);
70.‑
分布式数据库的当前地址簿;
71.‑
从当前地址簿到分布式数据库的初始和/或创始地址簿的地址簿历史;和/或
72.‑
分类帐标识符(即初始和/或创始地址簿的散列)。
73.在一些实现方式中,可以对状态证明中的数据的任何部分和/或状态证明中的数据的任何部分的散列(或散列值)进行签名。例如,在一些实现方式中,来自分布式数据库的数据(例如,merkle树的叶节点的内容)或数据的散列值可以被实现分布式数据库的预定数量的分布式数据库设备签名(单独的或组合的聚合签名)。此外,在一些实现方式中,状态证明的时间戳、当前地址簿、地址簿历史、分类帐标识符和/或任何其他部分(或状态证明的任何部分的散列值)可以被实现分布式数据库的预定数量的分布式数据库设备签名(单独的或组合的聚合签名)。这样的签名可以用于证实状态证明是有效的(例如,使用签署分布式数据库设备的(多个)公共密钥)。
74.在一些实现方式中,用户设备(例如,用户设备312、314、322、332、334、342)可以请求状态证明,以证实分布式数据库包含特定数据。具体地,用户设备可以请求其所连接到的分布式数据库设备(例如,分布式数据库设备310、320、330、340)提供针对给定数据片段的状态证明。然后,用户设备(例如,用户设备的处理器)可以证实状态证明是正确的,并且分布式数据库在给定时间戳的时间处确实包含merkle树的叶节点中的数据。具体地,在某些情况下,用户设备(例如,用户设备的处理器)可以通过以下方式证实状态证明:
75.‑
证实状态证明中的分类帐标识符与分布式数据库(例如,存储在用户设备的存储器中)的已知分类帐标识符匹配;
76.‑
证实分类帐标识符对应于状态证明的地址簿历史的初始和/或创始地址簿的散列;
77.‑
证实状态证明的地址簿历史中的每个地址簿(除初始和/或创始地址簿以外)被状态证明的地址簿历史中紧接在前的地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;
78.‑
证实merkle树根、状态证明、状态证明中的数据和/或状态证明的时间戳被分布式数据库的当前地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;和/或
79.‑
证实merkle树的存储数据的叶节点的merkle路径对于从merkle树的根到叶记录的序列是有效的。
80.在这样的证实之后,用户设备(例如,用户设备的处理器)可以确认merkle树叶中作为状态证明的一部分的数据到时间戳为止是有效的并且在分布式数据库中。如果这样的证实成功,则用户设备(例如,用户设备的处理器)可以将数据处理为有效(例如,对数据执行任何其他适用的动作)。例如,用户设备可以将数据存储在本地数据库中,在将来的计算中使用该数据等。如果这样的证实失败,则用户设备(例如,用户设备的处理器)可以丢弃数据和/或将数据标记为无效。如果数据被标识为无效,则用户设备可以将作为数据源的设备标记为不可信任,用户设备可以向相关联的分布式数据库设备提供数据源不可信任的通知,用户设备可以确定不存储该数据,用户设备可以确定在将来的计算中不使用该数据,可以自动向用户设备的用户提供关于数据为无效的警报,等等。
81.如果分布式数据库设备集合中的绝大多数(例如,三分之二)在每个时间点都是诚
实的(例如,不复制、分叉和/或拆分原始分布式数据库),则对于给定分类帐标识符仅存在一个分布式数据库。如果用户试图生成原始分布式数据库的副本、分叉和/或拆分原始分布式数据库,这违反了诚实的分布式数据库设备所允许的操作,则原始分布式数据库的副本不能具有与原始分布式数据库的副本相关联的唯一改变,并且仍然创建与原始数据库的分类帐标识符匹配的状态证明。因此,分类帐标识符充当原始分布式数据库的唯一名称和/或标识符,该名称和/或标识符不会随着原始分布式数据库的内容改变而改变。分类帐标识符仅唯一地标识一个这样的原始分布式数据库。如果第三方和/或用户设备被给予针对一条信息和/或数据的状态证明,则该第三方和/或用户设备可以证实该条信息和/或数据,即使该状态证明是由不可信的分布式数据库设备或恶意的分布式数据库设备构造的。
82.在一些实现方式中,分布式数据库设备可以断开连接,然后作为分布式数据库的一部分重新连接。在这样的实现方式中,分布式数据库设备(例如,分布式数据库设备的处理器)可以使用状态证明作为重新连接事件的一部分,以更新其分布式数据库实例和/或证实其分布式数据库实例中的数据。在一些实现方式中,分布式数据库设备使用的状态证明不包括具有数据的叶节点的merkle路径,但在其他方面可以与用户设备用来证实数据的状态证明相同。具体地,当分布式数据库设备在断开连接一段时间后重新连接到网络时,该分布式数据库设备可以从另一分布式数据库设备接收状态证明。重新连接的分布式数据库设备(例如,重新连接的分布式数据库设备的处理器)可以:
83.‑
证实状态证明中的分类帐标识符匹配分布式数据库的已知分类帐标识符(例如,存储在重新连接的分布式数据库设备的存储器中);
84.‑
证实分类帐标识符对应于状态证明的地址簿历史的初始和/或创始地址簿的散列;
85.‑
证实状态证明的地址簿历史中的每个地址簿(除初始和/或创始地址簿以外)被状态证明的地址簿历史中紧接在前的地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;和/或
86.‑
证实merkle树根、状态证明、状态证明中的数据和/或状态证明的时间戳被分布式数据库的当前地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名。
87.然而,重新连接的分布式数据库设备可以不证实merkle路径。因此,分布式数据库设备使用的状态证明可以不包括具有数据的叶节点的merkle路径。可以进行merkle树的根节点的证实,以确保重新连接的分布式数据库设备的状态是正确的,并且与状态证明中的merkle树的状态匹配。一旦被证实,重新连接的分布式数据库设备就会证实重新连接的分布式数据库设备正在存储分布式数据库的正确状态。
88.图7是示出如上所述定义状态证明的方法700的流程图。这样的方法可以是存储在存储器(例如,图2的存储器220)中并由与分布式数据库相关联和/或实现分布式数据库的计算设备(例如,计算设备200)的处理器(例如,图2的处理器210)执行的代码。方法700包括:在702,将分布式数据库的状态定义为merkle树。该状态可以基于在实现分布式数据库的计算设备和/或分布式数据库设备之间交换并且以共识顺序执行的事务和/或事件。此外,该状态可以是由分布式数据库实现的共识算法和/或协议的结果。
89.在704,可以对merkle树的根散列进行签名。具体地,计算设备可以利用该计算设
备的私有密钥对merkle树的根节点的散列进行数字签名。在一些实现方式中,实现分布式数据库的每个分布式数据库设备可以将其签名发送到实现分布式数据库的其他分布式数据库设备。在一些实现方式中,如果分布式数据库设备从其他分布式数据库设备的绝大多数(和/或大于阈值的数量的分布式数据库设备)接收签名,则认为该组签名足以证明merkle树根散列在给定时间戳的时间是有效的。在使用分布式数据库设备的股权而非总数量的实现方式中,如果分布式数据库设备从共同具有分布式数据库的总股权的绝大多数(和/或大于阈值的股权量)的分布式数据库设备接收签名,则认为该组签名足以证明merkle树根散列在给定时间戳的时间是有效的。签名可以使用签署计算设备的(多个)公共密钥来证实。
90.在706,可以使用merkle树和地址簿历史来定义状态证明。在一些实现方式中,如上所述,状态证明可以被定义为包括附加信息。在708,可以存储状态证明,使得可以使用状态证明来证实数据。更具体地,第三方可以使用状态证明来证实包括在分布式数据库中的信息和/或分布式数据库的状态。
91.图8是根据实施例的用于证实分布式数据库内的数据的方法800的流程图。这样的方法800可以使用存储在存储器(例如,图2的存储器220)中并由与分布式数据库相关联和/或实现分布式数据库的计算设备(例如,计算设备200)的处理器(例如,图2的处理器210)执行的代码来执行。方法800包括:在802,在第一时间并且使用由第一计算设备集合实现的分布式数据库的第一地址簿,计算分布式数据库的标识符。如上所述,在一些实现方式中,这可以是分布式数据库的分类帐标识符。这样的分类帐标识符可以是分布式数据库的初始和/或创始地址簿的散列。此外,在一些实现方式中,这样的标识符可以用作分布式数据库的唯一标识符。
92.在804,接收用于以下至少一项的事务:(1)向第一计算设备集合添加计算设备,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。这样的事务可以作为分布式数据库的事件的一部分来提供。可以将该事件提供给分布式数据库的其他计算设备和/或成员,使得可以针对该事件和/或事务定义共识顺序。第二计算设备集合可以是在按其共识顺序执行事务之后的分布式数据库的计算设备和/或成员的集合。
93.在806,在第一时间之后的第二时间,定义包括与第二计算设备集合的每个计算设备相关联的公共密钥的第二地址簿。在一些实现方式中,基于更新分布式数据库的计算设备和/或成员的事务来定义该第二地址簿。
94.在808,从第二计算设备集合的计算设备接收与在第二时间之后的分布式数据库的数据相关联的状态证明。如上所述,可以定义这样的状态证明,使得计算设备可以使用状态证明来证实作为分布式数据库的状态的一部分的数据。
95.在810,通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行了数字签名来证实分布式数据库的数据。预定数量的计算设备可以是第一计算设备集合中的绝大多数计算设备。此外,在一些实现方式中,如上关于状态证明所描述的附加信息可以用于证实分布式数据库的数据。
96.在某些情况下,用户和/或用户设备(例如,用户设备的处理器)可以使用证实方法来证实分布式数据库的数据。证实方法可以包括证实分类帐标识符与已知分类帐标识符匹
配。证实方法还可以包括证实分类帐标识符等于创始地址簿的散列。证实方法还可以包括证实状态证明的地址簿历史中的每个地址簿(除创始地址簿以外)被紧接在前的地址簿中的计算设备集合中的预定数量(例如,基于总数或总股权)的计算设备签名。证实方法还可以包括证实用于存储数据的merkle树的根节点被第二计算设备集合中的绝大多数和/或预定数量的计算设备签名。证实方法还可以包括证实对于从merkle树的根节点到merkle树的存储待证实的数据的叶节点的节点序列,merkle路径是有效的。
97.尽管以上描述为使用散列图并在事件内存储和交换事务,但在其他情况下,任何其他适合的分布式数据库和/或分布式分类帐技术可以用于实现上述方法以便于状态证明。例如,在其他情况下,可以使用诸如区块链、paxos、raft、比特币、以太坊等技术来实现这些方法。
98.尽管以上描述为包含两个先前事件的散列(一个自散列和一个外来散列)的事件,但在其他实施例中,成员可以与两个其他成员同步以创建和/或定义包含三个先前事件(一个自散列和两个外来散列)的散列的事件。在其他实施例中,任何数量的成员的先前事件的任何数量的事件散列可以被包括在事件内。在一些实施例中,不同的事件可以包括先前事件的不同数量的散列。例如,第一事件可以包括两个事件散列,而第二事件可以包括三个事件散列。
99.虽然以上将事件描述为包括先前事件的散列(或加密散列值),但在其他实施例中,可以创建和/或定义事件以包括指针、标识符和/或对先前事件的任何其他适合引用。例如,可以创建和/或定义事件以包括与先前事件相关联并用于标识先前事件的序列号,从而链接事件。在一些实施例中,这样的序列号可以包括例如与创建和/或定义事件的成员相关联的标识符(例如,媒体访问控制(mac)地址、网际协议(ip)地址、分配的地址等)以及由该成员定义的事件的顺序。例如,具有标识符10并且事件是由该成员创建和/或定义的第15个事件的成员可以向该事件分配标识符1015。在其他实施例中,可以使用任何其他适合的格式来为事件分配标识符。
100.虽然上面已经描述了各种实施例,但是应当理解,它们仅作为示例而不是限制来呈现。在上述方法指示某些事件按特定顺序发生的情况下,可以修改某些事件的定序。此外,在可能的情况下,某些事件可以在并行过程中并发执行,就和如上所述按顺序执行那样。
101.本文描述的一些实施例涉及具有非瞬态计算机可读介质(也可以称为非瞬态处理器可读介质)的计算机存储产品,非瞬态计算机可读介质上具有用于执行各种计算机实现的操作的指令或计算机代码。计算机可读介质(或处理器可读介质)在其本身不包括瞬态传播信号(例如,在诸如空间或电缆的传输介质上携带信息的传播电磁波)的意义上是非瞬态的。介质和计算机代码(也可以称为代码)可以是针对特定一个或多个目的设计和构造的那些。非瞬态计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带的磁存储介质;诸如致密盘/数字视频盘(cd/dvd)、致密盘只读存储器(cd

rom)和全息设备的光存储介质;诸如光盘的磁光存储介质;载波信号处理模块;以及被特别配置为存储和执行程序代码的硬件设备,诸如专用集成电路(asic)、可编程逻辑器件(pld)、只读存储器(rom)和随机存取存储器(ram)设备。本文描述的其他实施例涉及计算机程序产品,其可以包括例如本文讨论的指令和/或计算机代码。
102.计算机代码的示例包括但不限于:微代码或微指令、诸如由编译器产生的机器指令、用于产生web服务的代码、以及包含由计算机使用解释器执行的更高级指令的文件。例如,实施例可以使用命令式编程语言(例如,c、fortran等)、函数式编程语言(haskell、erlang等)、逻辑编程语言(例如,prolog)、面向对象编程语言(例如,java、c 等),或其他适合的编程语言和/或开发工具来实现。计算机代码的附加示例包括但不限于控制信号、加密代码和压缩代码。
103.虽然以上已经描述了各种实施例,但是应理解,它们仅作为示例而非限制来呈现,并且可以在形式和细节上进行各种改变。本文描述的装置和/或方法的任何部分可以以除互斥组合之外的任何组合来组合。本文描述的实施例可以包括所描述的不同实施例的功能、组件和/或特征的各种组合和/或子组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献