CN113711202A - 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置 - Google Patents

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

Info

Publication number
CN113711202A
CN113711202A CN202080030289.5A CN202080030289A CN113711202A CN 113711202 A CN113711202 A CN 113711202A CN 202080030289 A CN202080030289 A CN 202080030289A CN 113711202 A CN113711202 A CN 113711202A
Authority
CN
China
Prior art keywords
distributed database
computing devices
data
address book
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202080030289.5A
Other languages
English (en)
Inventor
L·C·贝尔德三世
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hydra Hashitou Co.,Ltd.
Original Assignee
Swirlds Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Swirlds Inc filed Critical Swirlds Inc
Publication of CN113711202A publication Critical patent/CN113711202A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/14Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using a plurality of keys or algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/30Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • H04L9/3255Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures using group based signatures, e.g. ring or threshold signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3297Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种方法包括在第一时间通过使用分布式数据库的第一地址簿计算分布式数据库的标识符。该方法包括接收用于以下至少之一的事务:(1)将计算设备添加到第一计算设备集合,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。该方法包括在第二时间定义第二地址簿。该方法包括接收与第二时间之后的分布式数据库的数据相关联的状态证明。该方法包括通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行数字签名,来证实分布式数据库的数据。

Description

用于在分布式数据库中实现状态证明和分类帐标识符的方法 和装置
相关申请的交叉引用
本申请要求2019年5月22日提交的标题为“Methods and Apparatus forImplementing State Proofs and Ledger Identifiers in a Distributed Database”的美国临时申请N0.62/851,368的优先权和权益,该申请通过引用整体并入本文。
背景技术
这里描述的实施例总体涉及数据库系统,并且更特别地涉及用于跨网络中的多个设备的数据库系统中实现状态证明和分类帐(ledger)标识符的方法和装置。
一些已知的分布式数据库系统试图就分布式数据库内的值达成共识(例如,关于在这种分布式数据库内事务(transaction)发生或应被处理的顺序)。可以使用各种已知的共识方法和/或过程来确定共识。在标识了顺序之后,事务可以被处理以定义分布式数据库的状态和/或分布式数据库内的数据的状态。因为分布式数据库的多个设备和/或参与者可以存储分布式数据库的单独实例,所以很难在任何给定时间证实(verify)分布式数据库内的数据的状态。
因此,需要有效且高效地一次确定分布式数据库的状态的方法和装置。
发明内容
在一些实施例中,一种方法可以包括在第一时间使用分布式数据库的第一地址簿计算分布式数据库的标识符。第一地址簿包括与在第一时间实现分布式数据库的第一计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括接收用于以下至少之一的事务:(1)将计算设备添加到第一计算设备集合,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。该方法还可以包括在第一时间之后的第二时间定义第二地址簿,该第二地址簿包括与第二计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括从第二计算设备集合中的计算设备接收与第二时间之后的分布式数据库的数据相关联的状态证明。该方法还可以包括通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行数字签名来证实分布式数据库的数据。
附图说明
图1是示出了根据实施例的可分布式数据库系统的框图。
图2是示出了根据实施例的分布式数据库系统的计算设备的框图。
图3是示出了根据实施例的分布式数据库系统的框图。
图4示出了根据实施例的与分布式数据库系统相关联的地址簿。
图5示出了根据实施例的与分布式数据库系统相关联的地址簿历史。
图6示出了根据实施例的与分布式数据库系统相关联的Merkle树。
图7是根据实施例的用于定义状态证明的方法的流程图。
图8是根据实施例的用于证实分布式数据库内的数据的方法的流程图。
具体实施方式
本文描述了并在附图中示出了实施例的各个方面和变型的非限制性示例。
本文描述的一个或多个实施例总体涉及通过将分布式数据库的状态定义为Merkle树并进一步使用状态证明和分类帐标识符高效地证实分布式数据库内的值来实现分布式数据库的方法、装置和系统。公开了在分布式数据库中实现状态证明和分类帐标识符的方法、装置和系统。
在一些实施例中,一种方法可以包括在第一时间使用分布式数据库的第一地址簿计算分布式数据库的标识符。第一地址簿包括与在第一时间实现分布式数据库的第一计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括接收用于以下至少一项的事务:(1)将计算设备添加到第一计算设备集合,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。该方法还可以包括在第一时间之后的第二时间定义第二地址簿,该第二地址簿包括与第二计算设备集合中的每个计算设备相关联的公共密钥。该方法还可以包括从第二计算设备集合中的计算设备接收与第二时间之后的分布式数据库的数据相关联的状态证明。该方法还可以包括通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行数字签名来证实分布式数据库的数据。
在一些实施例中,一种装置包括存储器和可操作地耦合到存储器的处理器。存储器是与分布式数据库相关联的计算设备的存储器,该分布式数据库由计算设备集合经由可操作地耦合到计算设备集合的网络实现。处理器被配置为从计算设备集合中的计算设备接收与分布式数据库的状态相关联的状态证明。状态证明可以包括:(1)与状态相关联的数据;(2)与状态相关联的时间戳;(3)分布式数据库的第一标识符;以及(4)与分布式数据库相关联的地址簿集合。地址簿集合中的每个地址簿与一时间段期间的分布式数据库的版本相关联,该时间段不同于与和地址簿集合中的每个其余地址簿相关联的分布式数据库的版本相关联的时间段。地址簿集合具有时间顺序。处理器还被配置为通过以下确定在与时间戳相关联的时间处的数据的有效性:(1)基于存储在存储器中的分布式数据库的第二标识符,证实分布式数据库的第一标识符是正确的;(2)证实与状态相关联的数据已经由多个计算设备中的预定数量的计算设备数字签名;以及(3)除了地址簿集合中的初始地址簿之外,证实地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
在一些实施例中,非瞬态处理器可读介质存储表示要由处理器执行的指令的代码。该代码包括使处理器执行以下操作的代码:从经由网络实现分布式数据库的多个计算设备中的计算设备接收与分布式数据库的状态相关联的状态证明。状态证明可以包括:(1)被存储为该状态的Merkle树的叶记录集合的数据;(2)与数据相关联的Merkle路径;以及(3)与分布式数据库相关联的地址簿集合。地址簿集合中的每个地址簿与一时间段期间的分布式数据库的版本相关联,该时间段不同于与和地址簿集合中的每个其余地址簿相关联的分布式数据库的版本相关联的时间段。地址簿集合具有时间顺序。该代码包括使处理器通过以下确定数据的有效性的代码:(1)证实Merkle路径对于从Merkle树的根到叶记录的序列是有效的;以及(2)除了地址簿集合中的初始地址簿之外,证实地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
如本文所使用的,模块可以是例如,与执行特定功能相关联的可操作地耦合的电组件的任何配件和/或集合,并且可以包括例如,存储器、处理器、电迹线、光连接器、软件(在硬件中执行)等。
如本说明书中所使用的,除非上下文另有明确指示,否则单数形式“一”、“一个”和“该”包括复数指称。因此,例如,术语“模块”意指单个模块或模块的组合。例如,“网络”意指单个网络或网络的组合。
图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中任何一个之间定义连接。
在一些实现方式中,计算设备110、120、130、140可以经由中间网络和/或备用网络(图1中未示出)彼此通信(例如,向其发送数据和/或从其接收数据)以及与网络通信。这样的中间网络和/或备用网络可以是与网络105相同类型和/或不同类型的网络。
每个计算设备110、120、130、140可以是被配置为通过网络105通信(例如,向一个或多个其他计算设备发送数据和/或从其接收数据)的任何类型的设备,诸如例如计算实体(例如,诸如台式计算机、膝上型计算机等的个人计算设备)、移动电话、个人数字助理(PDA)等。图1中示出了计算设备的示例。计算设备110包括存储器112、处理器111和输出设备113。存储器112可以是例如,随机存取存储器(RAM)、存储器缓冲器、硬盘驱动器、数据库、可擦除可编程只读存储器(EPROM)、电可擦除只读存储器(EEPROM)、只读存储器(ROM)等。在一些实现方式中,计算设备110的存储器112包括与分布式数据库的实例(例如,分布式数据库实例114)相关联的数据。在一些实现方式中,存储器112存储指令以使处理器执行与以下操作相关联的模块、过程和/或功能:实现状态证明和/或分类帐标识符(例如,对消息进行签名、定义状态证明、定义Merkle树等)和/或向分布式数据库的另一实例(例如,计算设备120处的分布式数据库实例124)发送和/或从其接收同步事件的记录、和/或与其他计算设备的先前同步事件的记录、同步事件的顺序、事件内的事务的顺序、与标识同步事件和/或事务的顺序相关联的参数、和/或参数的值(例如,量化事务的数据库字段、量化事件发生顺序的数据库字段、和/或可以将其值存储在数据库中的任何其他适当的字段。
分布式数据库实例114例如可以被配置为操纵数据,包括存储、修改和/或删除数据。在一些实现方式中,分布式数据库实例114可以是一组阵列、一组数据结构、关系数据库、对象数据库、关系后数据库和/或任何其他适当类型的数据库或存储设备。例如,分布式数据库实例114可以存储与任何特定功能和/或行业相关的数据。例如,分布式数据库实例114可以存储(例如,计算设备110的用户的)金融事务,包括与特定金融工具的所有权历史相关的值和/或值的向量。通常,向量可以是参数的任何值集合,并且参数可以是能够取不同值的任何数据对象和/或数据库字段。因此,分布式数据库实例114可以具有多个参数和/或字段,每个参数和/或字段与值的向量相关联。值的向量可用于确定该数据库实例114内的参数和/或字段的实际值。在某些情况下,分布式数据库实例114存储同步事件的记录、与其他计算设备的先前同步事件的记录、同步事件的顺序、事件内的事务的顺序、与标识同步事件和/或事务的顺序相关联的参数和/或值(例如,用于使用本文所描述的共识方法计算顺序)、参数的值(例如,量化事务的数据库字段、量化事件发生的顺序的数据库字段、和/或可以将其值存储在数据库中的任何其他适当字段)等。
在某些情况下,分布式数据库实例114还可以存储数据库状态变量和/或当前状态。当前状态可以是与事务结果相关联的状态、余额、条件等。类似地,状态可以包括由事务修改的数据结构和/或变量。在某些情况下,当前状态可以存储在单独的数据库和/或存储器112的一部分中。在某些情况下,当前状态可以存储在与计算设备110不同的计算设备的存储器中。在某些情况下,状态的至少一部分可以存储为Merkle树和/或散列树,如本文更详细地描述的。
在某些情况下,分布式数据库实例114还可以用于实现其他数据结构,诸如一组(键,值)对。分布式数据库实例114记录的事务可以是例如添加、删除或修改一组(键,值)对中的(键,值)对。
在某些情况下,可以查询分布式数据库系统100或任何分布式数据库实例114、124、134、144。例如,查询可以由键组成,并且从分布式数据库系统100或分布式数据库实例114、124、134、144返回的结果可以是与键相关联的值。在某些情况下,分布式数据库系统100或任何分布式数据库实例114、124、134、144也可以通过事务来修改。例如,修改数据库的事务可以包含授权和/或请求修改事务的一方的数字签名。
分布式数据库系统100可以用于许多目的,例如,存储与分布式身份系统中的各种用户相关联的属性。例如,这样的系统可以使用用户的身份作为“键”,并使用与用户相关联的属性列表作为“值”。在某些情况下,身份可以是具有该用户已知的对应私有密钥的加密公共密钥。例如,每个属性可以由有权声明该属性的权威机构数字签名。例如,每个属性还可以利用与有权读取该属性的个体或个体组相关联的公共密钥来加密。一些键或值还可以附有经授权修改或删除键或值的各方的公共密钥列表。
在另一示例中,分布式数据库实例114可以存储与大型多人游戏(MMG)相关的数据,诸如游戏项目的当前状态和所有权。在某些情况下,分布式数据库实例114可以在计算设备110内实现,如图1中所示。在某些情况下,分布式数据库的实例可由计算设备访问(例如,经由网络),而不在计算设备中实现(图1中未示出)。
计算设备110的处理器111可以是被配置为运行和/或执行分布式数据库实例114的任何适当的处理设备。例如,处理器111可以被配置为响应于从计算设备120接收到信号来更新分布式数据库实例114,和/或使信号被发送到计算设备120。更具体地,处理器111可以被配置为响应于从另一计算设备接收到与事务相关联的同步事件、与同步事件的顺序相关联的记录等,执行模块、功能和/或过程以更新分布式数据库实例114。在一些实现方式中,处理器111可以被配置为执行模块、函数和/或过程,以响应于接收到存储在分布式数据库的另一实例(例如,计算设备120处的分布式数据库实例124)中的参数的值而更新分布式数据库实例114,和/或使存储在计算设备110处的分布式数据库实例114中的参数的值被发送到计算设备120,在一些实现方式中,处理器111可以被配置为执行本文所描述的关于实现状态证明和/或分类帐标识符(例如,对消息进行签名、定义状态证明、定义Merkle树等)的模块、功能和/或过程。在一些实现方式中,处理器111可以是通用处理器、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、数字信号处理器(DSP)等。
显示器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中的任何一个可以包括键盘、鼠标等。
虽然在图1中示出为在单个计算设备内,但在某些情况下,被配置为执行模块、功能和/或过程以更新分布式数据库的处理器可以在与其相关联的分布式数据库分开的计算设备内。例如,在这种实例中,处理器可以经由网络可操作地耦合到分布式数据库实例。例如,处理器可以执行共识方法来标识事件和/或事务的顺序(例如,作为与其他分布式数据库实例同步的结果),并且可以通过网络向相关联的分布式数据库实例发送包括事件和/或事务的顺序的信号。然后,相关联的分布式数据库实例可以基于相关联的分布式数据库实例中的事务的顺序来存储事件的顺序、事务的顺序和/或状态变量。这样,与分布式数据库相关联的功能和存储可以是分布式的。此外,处理器可以在其分布式数据库实例中查询其相关联的分布式数据库实例、存储数据库状态变量和/或当前状态、和/或执行本文描述的其他适当的操作,即使在与具有实现与分布式数据库系统相关联的模块、功能和/或过程(例如,共识方法)的处理器的计算设备分离的计算设备中实现数据库时。在某些情况下,本文描述的功能和/或方法可以跨任何数量的计算设备(例如,在分布式计算环境和/或集群内)执行,并且这些功能和/或方法的结果和/或值可以存储在任何适当的计算设备的存储器和/或存储设备中。
计算设备120具有处理器121、存储器122和显示器123,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例124可以在结构和/或功能上类似于分布式数据库实例114。
计算设备130具有处理器131、存储器132和显示器133,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例134可以在结构和/或功能上类似于分布式数据库实例114。
计算设备140具有处理器141、存储器142和显示器143,它们可以在结构和/或功能上分别类似于处理器111、存储器112和显示器113。而且,分布式数据库实例144可以在结构和/或功能上类似于分布式数据库实例114。
虽然计算设备110、120、130、140被示为彼此相似,但是分布式数据库系统100每个计算设备可以不同于其他计算设备。分布式数据库系统100的每个计算设备110、120、130、140可以是例如计算实体(例如,诸如台式计算机、膝上型计算机等的个人计算设备)、移动电话、个人数字助理(PDA)等中的任何一个。例如,计算设备110可以是台式计算机,计算设备120可以是智能手机,并且计算设备130可以是服务器。
在一些实现方式中,计算设备110、120、130、140的一个或多个部分可以包括基于硬件的模块(例如,数字信号处理器(DSP)、现场可编程门阵列(FPGA))和/或基于软件的模块(例如,存储在存储器中和/或在处理器处执行的计算机代码模块)。在一些实现方式中,与计算设备110、120、130、140相关联的一个或多个功能(例如,与处理器111、121、131、141相关联的功能)可以被包括在一个或多个模块中(例如,参见图2)。
分布式数据库系统100的属性,包括计算设备(例如,计算设备110、120、130、140)的属性、计算设备的数量和网络105,可以以任何数量的方式选择。在某些情况下,分布式数据库系统100的属性可以由分布式数据库系统100的管理员选择。在某些情况下,分布式数据库系统100的属性可以由分布式数据库系统100的用户共同选择。
因为使用了分布式数据库系统100,所以在计算设备110、120、130和140之间没有指定领导者。具体地,没有一个计算设备110、120、130或140被标识和/或选择为解决存储在计算设备110、120、130、140的分布式数据库实例111、12、131、141中的值之间的争议的领导者。相反,通过使用本文描述的事件同步过程、投票过程和/或方法,计算设备110、120、130、140可以共同汇聚于参数的值。
分布式数据库系统中没有领导者增加了分布式数据库系统的安全性。具体地,具有领导者的话,存在单个攻击点和/或失败点。如果恶意软件感染领导者和/或该领导者的分布式数据库实例处的参数值被恶意更改,则失败和/或不正确的值被传播到整个其他分布式数据库实例。然而,在无领导者系统中,没有单个攻击点和/或失败点。具体地,如果无领导者系统的分布式数据库实例中的参数包含一个值,则在该分布式数据库实例与系统中的其他分布式数据库实例交换值之后,该值将改变,如本文更详细地描述的。此外,本文描述的无领导者分布式数据库系统提高了汇聚速度,同时减少了在设备之间发送的数据量,如本文更详细地描述的。
图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能够向另一设备发送数据和/或从另一设备接收数据。
在某些情况下,数据库汇聚模块211可以与其他计算设备交换事件和/或事务,存储数据库汇聚模块211接收的事件和/或事务,并且基于由事件之间的引用模式定义的部分顺序来计算事件和/或事务的排序。每个事件可以是包含两个较早事件的加密散列的记录(将该事件链接到两个较早事件及其祖先事件,反之亦然)、有效载荷数据(诸如要记录的事务)、诸如当前时间、其创建者声称是事件首次被定义的时间的时间戳(例如,日期和UTC时间)之类的其他信息等。通信的计算设备中的每一个被称为“成员”或“散列图成员”。在某些情况下,由成员定义的第一个事件仅包括由另一个成员定义的单个事件的散列(或散列值)。在这种实例中,成员还没有先前的自散列(例如,由该成员先前定义的事件的散列)。在某些情况下,分布式数据库中的第一个事件不包括任何先前事件的散列(因为没有针对该分布式数据库的先前事件)。
在一些实现方式中,这两个较早事件的这种加密散列可以是基于使用事件作为输入的加密散列函数定义的散列值。具体地,在这样的实现方式中,事件包括特定的字节序列或串(其表示该事件的信息)。事件的散列可以是使用该事件的字节序列作为输入的散列函数返回的值。在一些实现方式中,与事件相关联的任何其他适当的数据(例如,标识符、序列号、表示事件的特定部分的字节等)可以被用作散列函数的输入,以计算该事件的散列。可以使用任何适当的散列函数来定义散列。在一些实现方式中,每个成员使用相同的散列函数,使得在每个成员处针对给定事件生成相同的散列。然后,该事件可以被定义和/或创建该事件的成员数字签名。
在某些情况下,这组事件及其互连可以形成有向无环图(DAG)。在某些情况下,DAG中的每个事件引用(例如,包含对后面内容的引用)零个或多个(例如,两个)较早事件(将该事件链接到较早事件及其祖先事件,反之亦然),并且每个引用严格地引用较早事件,使得不存在循环。在一些实现方式中,DAG基于密码散列,因此该数据结构可以被称为散列图(本文也称为“散列DAG”)。散列图直接对部分顺序进行编码,这意味着如果Y包含X的散列,或者如果Y包含包含X的散列的事件的散列,或者对于任意长度的这样的路径,则已知事件X出现在事件Y之前。但是,如果没有从X到Y或从Y到X的路径,则部分顺序不会定义哪个事件先出现。因此,数据库汇聚模块可以根据部分顺序计算总顺序。这可以由计算设备使用的任何适当的确定性函数来完成,使得计算设备计算相同的顺序。在一些实现方式中,每个成员可以在每次同步之后重新计算该顺序,并且最终这些顺序可以汇聚,使得出现共识。
共识算法和/或方法可用于确定散列图中事件的顺序和/或存储在事件内的事务的顺序。在一些实现方式中,例如,在2016年12月21日提交的标题为“Methods andApparatus for a Distributed Database within a Network”的美国专利申请号15/387,048(现在为美国专利号9,646,029)中所示出和描述的共识算法和/或方法,可用于确定事件和/或事务的顺序。
事务顺序进而可以将数据库的状态定义为根据该顺序执行那些事务的结果。数据库的定义的状态可以被存储为数据库状态变量。在一些实现方式中,分布式数据库的实例(例如,分布式数据库实例114)存储散列图和/或事务、和/或事务的顺序、和/或事件、和/或事件的顺序、和/或由执行事务产生的状态。
在图2中,数据库汇聚模块211和通信模块212在图2中示为在处理器210中实现。在一些实现方式中,数据库汇聚模块211和/或通信模块212可以在存储器220中实现。在一些实现方式中,数据库汇聚模块211和/或通信模块212可以是基于硬件的(例如,ASIC、FPGA等)。
图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可以被称为共同实现分布式数据库和/或可以被称为是分布式数据库的设备或成员。在一些实现方式中,可以使用任意数量的分布式数据库设备来实现分布式数据库。
分布式数据库设备集合310、320、330、340中的每个分布式数据库设备可以连接和/或可操作地耦合到用户设备集合312、314、322、332、334、342的一个或多个用户设备。更具体地,如图3中所示,分布式数据库设备310可以连接和/或可操作地耦合到用户设备312和314;分布式数据库设备320可以连接和/或可操作地耦合到用户设备322;分布式数据库设备330可以连接和/或可操作地耦合到用户设备332和334;以及分布式数据库设备340可以连接和/或可操作地耦合到用户设备342。虽然在图3中被示为耦合到一个或两个用户设备,但是每个分布式数据库设备可以连接和/或可操作地耦合到任意数量的用户设备。
用户设备集合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发送和/或接收数据。
用户设备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不执行共识方法或以其他方式考虑分布式数据库中的事件和/或事务的共识。
正如事务可以改变分布式数据库中的数据和/或状态(如参照图1所描述的)一样,事务还可以通过添加、移除和/或修改分布式数据库的成员来修改分布式数据库的成员资格(例如,实现分布式数据库的分布式数据库设备集合)。在一些实现方式中,分布式数据库的成员可以通过从分布式数据库设备集合310、320、330、340添加和/或移除一个或多个分布式数据库设备来随时间改变。类似地,随着分布式数据库设备集合310、320、330、340中的分布式数据库设备从分布式数据库设备集合310、320、330、340中移除,和/或其他分布式数据库设备被添加到分布式数据库设备集合310、320、330、340,实现分布式数据库的分布式数据库设备集合310、320、330、340可以随时间改变。在某些情况下,所移除的分布式数据库设备可以稍后重新连接到分布式数据库系统。
地址簿可以用于在任何给定时间追踪分布式数据库的成员(即,实现分布式数据库的分布式数据库设备)。图4示出了根据实施例的与分布式数据库系统相关联的地址簿400。地址簿400包括图3的分布式数据库系统300中的每个分布式数据库设备310、320、330、340的条目。具体地,地址簿被定义为包括实现分布式数据库的分布式数据库设备集合(如关于图3示出和描述的分布式数据库设备310、320、330、340)的一组公共密钥(A、B、C和D)。在其中股权被用于确定共识(例如,设备的股权指示该设备对共识过程具有的影响力的量)的实现方式中,地址簿400还可以包括与每个分布式数据库设备相关联的股权量。
当事务从分布式数据库设备集合中添加、移除和/或修改分布式数据库设备时,事务可以改变和/或更新地址簿。例如,如果用于从分布式数据库移除分布式数据库设备340的事务被输入到分布式数据库并排序(例如,在分布式数据库的共识顺序内),则可以执行该事务并且可以从分布式数据库移除分布式数据库设备340。响应于该事务,可以定义不包括分布式数据库设备340的条目的新地址簿。对于另一示例,如果用于向分布式数据库添加新的分布式数据库设备的事务被输入到分布式数据库中并排序(例如,在分布式数据库的共识顺序内),则可以针对新的分布式数据库设备定义具有条目(例如,包括公共密钥和股权的量)的新地址簿。对于又一示例,如果用于改变与一个或多个分布式数据库设备相关联的股权量的事务被输入到分布式数据库中并排序,则可以定义反映股权变化的新地址簿。例如,如果股权反映由每个分布式数据库实例持有的加密货币硬币的量,则事务可以反映分布式数据库设备340向分布式数据库设备330转移5个硬币。在事务被排序和执行之后,可以定义反映分布式数据库设备340现在具有70个硬币而分布式数据库设备330具有35个硬币的新地址簿。
图5示出了根据实施例的与分布式数据库系统相关联的地址簿历史500。地址簿历史500可以是分布式数据库的每个地址簿的记录。具体地,每次定义(例如,如上所述)新地址簿时,可以将该地址簿的散列(或使用该地址簿作为散列函数的输入而计算的散列值)添加到地址簿历史500(例如,作为链)。因此,地址簿历史可以具有时间顺序,并且地址簿历史中的每个地址簿对于连续时间段的分布式数据库的版本可以是适用的和/或准确的。例如,地址簿502可以与第一时间段期间的分布式数据库的版本相关联,地址簿504可以与第一时间段之后的第二时间段期间的分布式数据库的版本相关联,地址簿506可以与第二时间段之后的第三时间段期间的分布式数据库的版本相关联,以及地址簿508可以与第三时间段之后的第四时间段期间的分布式数据库的版本相关联。因此,按照时间顺序,地址簿502可以排第一,地址簿504可以排第二,地址簿506可以排第三,地址簿508可以排第四。
此外,地址簿的散列(或散列值)可以由紧接在前的地址簿的预定阈值数量的分布式数据库设备数字签名(例如,使用私有密钥)。这样的签名可以证明新地址簿的有效性。在某些情况下,每个分布式数据库设备可以分别对地址簿的散列进行签名。在某些情况下,可以聚合多个分布式数据库设备的签名以定义聚合签名。其他设备(例如,其他分布式数据库设备或用户设备)可以使用对地址簿散列进行签名的分布式数据库设备的(多个)公共密钥来证实(多个)签名。
预定阈值可以基于紧接在前的地址簿中的分布式数据库设备的总数量,或者基于紧接在前的地址簿中的每个分布式数据库设备所持有的股权量。此外,预定阈值可以是任何适合的阈值。例如,预定阈值可以与分布式数据库中的总股权的三分之二相关联。在某些情况下,预定阈值可以是分布式数据库设备和/或股权的任何其他适合百分比(例如,67%、70%、80%、90%、99%、三分之二、四分之三等)。参照图4,在一个示例中,如果预定阈值是分布式数据库中的总股权的三分之二,并且分别具有公共密钥A和D以及股权100和75的两个分布式数据库设备310和340对新地址簿进行了签名(例如,单独地和/或利用聚合签名),则可以发现地址簿是有效的。具体地,在这样的示例中,175的组合股权占分布式数据库的总股权255的三分之二以上。对于另一示例,如果预定阈值是分布式数据库的总成员的三分之二(而不是股权),则四个分布式数据库设备中的任何三个都需要对新地址簿进行签名以使新地址簿有效。
返回图5,初始或创始地址簿502可以被散列化以产生分布式数据库的分类帐标识符。类似地,初始或创始地址簿502可以用作散列函数的输入,以生成可以作为分类帐标识符的散列(或散列值)。如本文所述,该分类帐标识符稍后可以用作分布式数据库的唯一标识符。当事务改变地址簿502时(例如,添加成员、移除成员或修改成员的股权),新地址簿504的散列可以被地址簿502中的预定数量(基于总数量或股权量)的分布式数据库设备签名。类似地,当事务改变地址簿504时,新地址簿506的散列可以被地址簿504中的预定数量(基于总数量或股权量)的分布式数据库设备签名,并且当事务改变地址簿506时,新地址簿508的散列可以被地址簿506中的预定数量(基于总数量或股权量)的分布式数据库设备签名。因此,使用地址簿历史500可以容易地将每个地址簿的有效性追踪到初始和/或创始地址簿。
如上所示,分布式数据库设备集合310、320、330、340中的每个分布式数据库设备可以包括分布式数据库实例(类似于如参照图1示出和描述的分布式数据库实例114、124、134、144),分布式数据库实例存储诸如例如事务和/或事件的共识顺序和/或已经按照共识顺序执行事务之后的分布式数据库的状态之类的数据。事务和/或事件的顺序可以定义被存储为数据库状态变量的分布式数据库的状态。在一些实现方式中,分布式数据库的状态可以被分割成片段,每个片段都可以作为叶记录存储在Merkle树中。
Merkle树是散列的二叉树。图6示出了在Merkle树600的每个叶节点处存储数据(即,数据W、数据X、数据Y和数据Z)的Merkle树600。Merkle树600内的其他节点包含该节点的子节点的连结内容的散列(或散列值)。例如,节点HW包含数据W(HW的唯一子节点)的散列;节点HX包含数据X的散列;节点HY包含数据Y的散列;以及节点HZ包含数据Z的散列。此外,节点HWX包含连结的HW和HX的散列;节点HYZ包含连结的HY和HZ的散列;以及Merkle树600的根节点HWXYZ包含连结的HWX和HYZ的散列。
可以使用数据、数据的Merkle路径和根节点来证实数据被包含在Merkle树600的叶节点中。数据的Merkle路径包括从数据到Merkle树的根节点的顺序中的节点的每个兄弟节点。例如,数据W的Merkle路径包括HX和HYZ(分别是节点HW和HWX的兄弟节点,其中HW和HWX是从数据W到根节点HWXYZ的节点序列)。具体地,基于数据W的Merkle路径中的节点(即,节点HX和HYZ)和根节点HWXYZ,用户可以证实数据W在Merkle树600中。例如,可以基于数据W的散列来计算HW;可以基于HW(先前计算的)和HX(作为Merkle路径的一部分提供)的散列来计算HWX;以及可以基于HWX(先前计算的)和HYZ(作为Merkle路径的一部分提供)的散列来计算HWXYZ。一旦计算出HWXYZ,就可以将其与先前存储和/或提供的根节点的值进行比较。如果计算出的根节点对应于先前存储和/或提供的根节点的值,则数据X被证实为包含在具有该根节点HWXYZ的Merkle树内。
返回图3,如上所述,分布式数据库的状态可以被存储为Merkle树。具体地,与分布式数据库的状态相关联的数据可以作为叶节点被存储在Merkle树中。周期性地和/或零星地,实现分布式数据库(或其子集)的分布式数据库设备集合310、320、330、340可以对当前Merkle树(即,包含分布式数据库的当前状态的Merkle树)的根节点以及数据有效的日期和时间的共识时间戳一起进行数字签名。对Merkle树的根节点进行签名的每个分布式数据库设备310、320、330、340可以将其签名发送到实现分布式数据库的分布式数据库设备集合中的其余分布式数据库设备。如果阈值数量(基于总数量或股权量)的分布式数据库设备310、320、330、340对Merkle树的根节点进行了签名,则认为该组签名足以证明针对分布式数据库的该状态的Merkle树根散列在给定时间戳的时间是有效的。在某些情况下,每个分布式数据库设备可以单独对Merkle树的根节点进行签名。在某些情况下,可以聚合多个分布式数据库设备的签名以定义聚合签名。其他设备(例如,其他分布式数据库设备或用户设备)可以使用对Merkle树的根节点进行签名的分布式数据库设备的(多个)公共密钥来证实(多个)签名。
在一些实现方式中,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树的叶节点中的数据的有效性。
状态证明可以用于证实数据在某时间被包含在分布式数据库的状态内。在一些实现方式中,状态证明可以是数据结构、消息和/或文件,其包括例如:
-来自分布式数据库的数据(例如,Merkle树的叶节点的内容);
-该叶节点的Merkle路径;
-Merkle树何时有效的时间戳;
-在Merkle树的根节点上实现分布式数据库的分布式数据库设备的(例如,满足预定阈值的)数字签名集合(单独的或组合的聚合签名);
-分布式数据库的当前地址簿;
-从当前地址簿到分布式数据库的初始和/或创始地址簿的地址簿历史;和/或
-分类帐标识符(即初始和/或创始地址簿的散列)。
在一些实现方式中,可以对状态证明中的数据的任何部分和/或状态证明中的数据的任何部分的散列(或散列值)进行签名。例如,在一些实现方式中,来自分布式数据库的数据(例如,Merkle树的叶节点的内容)或数据的散列值可以被实现分布式数据库的预定数量的分布式数据库设备签名(单独的或组合的聚合签名)。此外,在一些实现方式中,状态证明的时间戳、当前地址簿、地址簿历史、分类帐标识符和/或任何其他部分(或状态证明的任何部分的散列值)可以被实现分布式数据库的预定数量的分布式数据库设备签名(单独的或组合的聚合签名)。这样的签名可以用于证实状态证明是有效的(例如,使用签署分布式数据库设备的(多个)公共密钥)。
在一些实现方式中,用户设备(例如,用户设备312、314、322、332、334、342)可以请求状态证明,以证实分布式数据库包含特定数据。具体地,用户设备可以请求其所连接到的分布式数据库设备(例如,分布式数据库设备310、320、330、340)提供针对给定数据片段的状态证明。然后,用户设备(例如,用户设备的处理器)可以证实状态证明是正确的,并且分布式数据库在给定时间戳的时间处确实包含Merkle树的叶节点中的数据。具体地,在某些情况下,用户设备(例如,用户设备的处理器)可以通过以下方式证实状态证明:
-证实状态证明中的分类帐标识符与分布式数据库(例如,存储在用户设备的存储器中)的已知分类帐标识符匹配;
-证实分类帐标识符对应于状态证明的地址簿历史的初始和/或创始地址簿的散列;
-证实状态证明的地址簿历史中的每个地址簿(除初始和/或创始地址簿以外)被状态证明的地址簿历史中紧接在前的地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;
-证实Merkle树根、状态证明、状态证明中的数据和/或状态证明的时间戳被分布式数据库的当前地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;和/或
-证实Merkle树的存储数据的叶节点的Merkle路径对于从Merkle树的根到叶记录的序列是有效的。
在这样的证实之后,用户设备(例如,用户设备的处理器)可以确认Merkle树叶中作为状态证明的一部分的数据到时间戳为止是有效的并且在分布式数据库中。如果这样的证实成功,则用户设备(例如,用户设备的处理器)可以将数据处理为有效(例如,对数据执行任何其他适用的动作)。例如,用户设备可以将数据存储在本地数据库中,在将来的计算中使用该数据等。如果这样的证实失败,则用户设备(例如,用户设备的处理器)可以丢弃数据和/或将数据标记为无效。如果数据被标识为无效,则用户设备可以将作为数据源的设备标记为不可信任,用户设备可以向相关联的分布式数据库设备提供数据源不可信任的通知,用户设备可以确定不存储该数据,用户设备可以确定在将来的计算中不使用该数据,可以自动向用户设备的用户提供关于数据为无效的警报,等等。
如果分布式数据库设备集合中的绝大多数(例如,三分之二)在每个时间点都是诚实的(例如,不复制、分叉和/或拆分原始分布式数据库),则对于给定分类帐标识符仅存在一个分布式数据库。如果用户试图生成原始分布式数据库的副本、分叉和/或拆分原始分布式数据库,这违反了诚实的分布式数据库设备所允许的操作,则原始分布式数据库的副本不能具有与原始分布式数据库的副本相关联的唯一改变,并且仍然创建与原始数据库的分类帐标识符匹配的状态证明。因此,分类帐标识符充当原始分布式数据库的唯一名称和/或标识符,该名称和/或标识符不会随着原始分布式数据库的内容改变而改变。分类帐标识符仅唯一地标识一个这样的原始分布式数据库。如果第三方和/或用户设备被给予针对一条信息和/或数据的状态证明,则该第三方和/或用户设备可以证实该条信息和/或数据,即使该状态证明是由不可信的分布式数据库设备或恶意的分布式数据库设备构造的。
在一些实现方式中,分布式数据库设备可以断开连接,然后作为分布式数据库的一部分重新连接。在这样的实现方式中,分布式数据库设备(例如,分布式数据库设备的处理器)可以使用状态证明作为重新连接事件的一部分,以更新其分布式数据库实例和/或证实其分布式数据库实例中的数据。在一些实现方式中,分布式数据库设备使用的状态证明不包括具有数据的叶节点的Merkle路径,但在其他方面可以与用户设备用来证实数据的状态证明相同。具体地,当分布式数据库设备在断开连接一段时间后重新连接到网络时,该分布式数据库设备可以从另一分布式数据库设备接收状态证明。重新连接的分布式数据库设备(例如,重新连接的分布式数据库设备的处理器)可以:
-证实状态证明中的分类帐标识符匹配分布式数据库的已知分类帐标识符(例如,存储在重新连接的分布式数据库设备的存储器中);
-证实分类帐标识符对应于状态证明的地址簿历史的初始和/或创始地址簿的散列;
-证实状态证明的地址簿历史中的每个地址簿(除初始和/或创始地址簿以外)被状态证明的地址簿历史中紧接在前的地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名;和/或
-证实Merkle树根、状态证明、状态证明中的数据和/或状态证明的时间戳被分布式数据库的当前地址簿中的阈值数量(基于总数量或某一股权量)的分布式数据库设备签名。
然而,重新连接的分布式数据库设备可以不证实Merkle路径。因此,分布式数据库设备使用的状态证明可以不包括具有数据的叶节点的Merkle路径。可以进行Merkle树的根节点的证实,以确保重新连接的分布式数据库设备的状态是正确的,并且与状态证明中的Merkle树的状态匹配。一旦被证实,重新连接的分布式数据库设备就会证实重新连接的分布式数据库设备正在存储分布式数据库的正确状态。
图7是示出如上所述定义状态证明的方法700的流程图。这样的方法可以是存储在存储器(例如,图2的存储器220)中并由与分布式数据库相关联和/或实现分布式数据库的计算设备(例如,计算设备200)的处理器(例如,图2的处理器210)执行的代码。方法700包括:在702,将分布式数据库的状态定义为Merkle树。该状态可以基于在实现分布式数据库的计算设备和/或分布式数据库设备之间交换并且以共识顺序执行的事务和/或事件。此外,该状态可以是由分布式数据库实现的共识算法和/或协议的结果。
在704,可以对Merkle树的根散列进行签名。具体地,计算设备可以利用该计算设备的私有密钥对Merkle树的根节点的散列进行数字签名。在一些实现方式中,实现分布式数据库的每个分布式数据库设备可以将其签名发送到实现分布式数据库的其他分布式数据库设备。在一些实现方式中,如果分布式数据库设备从其他分布式数据库设备的绝大多数(和/或大于阈值的数量的分布式数据库设备)接收签名,则认为该组签名足以证明Merkle树根散列在给定时间戳的时间是有效的。在使用分布式数据库设备的股权而非总数量的实现方式中,如果分布式数据库设备从共同具有分布式数据库的总股权的绝大多数(和/或大于阈值的股权量)的分布式数据库设备接收签名,则认为该组签名足以证明Merkle树根散列在给定时间戳的时间是有效的。签名可以使用签署计算设备的(多个)公共密钥来证实。
在706,可以使用Merkle树和地址簿历史来定义状态证明。在一些实现方式中,如上所述,状态证明可以被定义为包括附加信息。在708,可以存储状态证明,使得可以使用状态证明来证实数据。更具体地,第三方可以使用状态证明来证实包括在分布式数据库中的信息和/或分布式数据库的状态。
图8是根据实施例的用于证实分布式数据库内的数据的方法800的流程图。这样的方法800可以使用存储在存储器(例如,图2的存储器220)中并由与分布式数据库相关联和/或实现分布式数据库的计算设备(例如,计算设备200)的处理器(例如,图2的处理器210)执行的代码来执行。方法800包括:在802,在第一时间并且使用由第一计算设备集合实现的分布式数据库的第一地址簿,计算分布式数据库的标识符。如上所述,在一些实现方式中,这可以是分布式数据库的分类帐标识符。这样的分类帐标识符可以是分布式数据库的初始和/或创始地址簿的散列。此外,在一些实现方式中,这样的标识符可以用作分布式数据库的唯一标识符。
在804,接收用于以下至少一项的事务:(1)向第一计算设备集合添加计算设备,(2)从第一计算设备集合移除计算设备,或(3)修改第一计算设备集合中的计算设备,以定义第二计算设备集合。这样的事务可以作为分布式数据库的事件的一部分来提供。可以将该事件提供给分布式数据库的其他计算设备和/或成员,使得可以针对该事件和/或事务定义共识顺序。第二计算设备集合可以是在按其共识顺序执行事务之后的分布式数据库的计算设备和/或成员的集合。
在806,在第一时间之后的第二时间,定义包括与第二计算设备集合的每个计算设备相关联的公共密钥的第二地址簿。在一些实现方式中,基于更新分布式数据库的计算设备和/或成员的事务来定义该第二地址簿。
在808,从第二计算设备集合的计算设备接收与在第二时间之后的分布式数据库的数据相关联的状态证明。如上所述,可以定义这样的状态证明,使得计算设备可以使用状态证明来证实作为分布式数据库的状态的一部分的数据。
在810,通过确认第一计算设备集合中的预定数量的计算设备已经对第二地址簿进行了数字签名来证实分布式数据库的数据。预定数量的计算设备可以是第一计算设备集合中的绝大多数计算设备。此外,在一些实现方式中,如上关于状态证明所描述的附加信息可以用于证实分布式数据库的数据。
在某些情况下,用户和/或用户设备(例如,用户设备的处理器)可以使用证实方法来证实分布式数据库的数据。证实方法可以包括证实分类帐标识符与已知分类帐标识符匹配。证实方法还可以包括证实分类帐标识符等于创始地址簿的散列。证实方法还可以包括证实状态证明的地址簿历史中的每个地址簿(除创始地址簿以外)被紧接在前的地址簿中的计算设备集合中的预定数量(例如,基于总数或总股权)的计算设备签名。证实方法还可以包括证实用于存储数据的Merkle树的根节点被第二计算设备集合中的绝大多数和/或预定数量的计算设备签名。证实方法还可以包括证实对于从Merkle树的根节点到Merkle树的存储待证实的数据的叶节点的节点序列,Merkle路径是有效的。
尽管以上描述为使用散列图并在事件内存储和交换事务,但在其他情况下,任何其他适合的分布式数据库和/或分布式分类帐技术可以用于实现上述方法以便于状态证明。例如,在其他情况下,可以使用诸如区块链、PAXOS、RAFT、比特币、以太坊等技术来实现这些方法。
尽管以上描述为包含两个先前事件的散列(一个自散列和一个外来散列)的事件,但在其他实施例中,成员可以与两个其他成员同步以创建和/或定义包含三个先前事件(一个自散列和两个外来散列)的散列的事件。在其他实施例中,任何数量的成员的先前事件的任何数量的事件散列可以被包括在事件内。在一些实施例中,不同的事件可以包括先前事件的不同数量的散列。例如,第一事件可以包括两个事件散列,而第二事件可以包括三个事件散列。
虽然以上将事件描述为包括先前事件的散列(或加密散列值),但在其他实施例中,可以创建和/或定义事件以包括指针、标识符和/或对先前事件的任何其他适合引用。例如,可以创建和/或定义事件以包括与先前事件相关联并用于标识先前事件的序列号,从而链接事件。在一些实施例中,这样的序列号可以包括例如与创建和/或定义事件的成员相关联的标识符(例如,媒体访问控制(MAC)地址、网际协议(IP)地址、分配的地址等)以及由该成员定义的事件的顺序。例如,具有标识符10并且事件是由该成员创建和/或定义的第15个事件的成员可以向该事件分配标识符1015。在其他实施例中,可以使用任何其他适合的格式来为事件分配标识符。
虽然上面已经描述了各种实施例,但是应当理解,它们仅作为示例而不是限制来呈现。在上述方法指示某些事件按特定顺序发生的情况下,可以修改某些事件的定序。此外,在可能的情况下,某些事件可以在并行过程中并发执行,就和如上所述按顺序执行那样。
本文描述的一些实施例涉及具有非瞬态计算机可读介质(也可以称为非瞬态处理器可读介质)的计算机存储产品,非瞬态计算机可读介质上具有用于执行各种计算机实现的操作的指令或计算机代码。计算机可读介质(或处理器可读介质)在其本身不包括瞬态传播信号(例如,在诸如空间或电缆的传输介质上携带信息的传播电磁波)的意义上是非瞬态的。介质和计算机代码(也可以称为代码)可以是针对特定一个或多个目的设计和构造的那些。非瞬态计算机可读介质的示例包括但不限于:诸如硬盘、软盘和磁带的磁存储介质;诸如致密盘/数字视频盘(CD/DVD)、致密盘只读存储器(CD-ROM)和全息设备的光存储介质;诸如光盘的磁光存储介质;载波信号处理模块;以及被特别配置为存储和执行程序代码的硬件设备,诸如专用集成电路(ASIC)、可编程逻辑器件(PLD)、只读存储器(ROM)和随机存取存储器(RAM)设备。本文描述的其他实施例涉及计算机程序产品,其可以包括例如本文讨论的指令和/或计算机代码。
计算机代码的示例包括但不限于:微代码或微指令、诸如由编译器产生的机器指令、用于产生web服务的代码、以及包含由计算机使用解释器执行的更高级指令的文件。例如,实施例可以使用命令式编程语言(例如,C、Fortran等)、函数式编程语言(Haskell、Erlang等)、逻辑编程语言(例如,Prolog)、面向对象编程语言(例如,Java、C++等),或其他适合的编程语言和/或开发工具来实现。计算机代码的附加示例包括但不限于控制信号、加密代码和压缩代码。
虽然以上已经描述了各种实施例,但是应理解,它们仅作为示例而非限制来呈现,并且可以在形式和细节上进行各种改变。本文描述的装置和/或方法的任何部分可以以除互斥组合之外的任何组合来组合。本文描述的实施例可以包括所描述的不同实施例的功能、组件和/或特征的各种组合和/或子组合。

Claims (32)

1.一种装置,包括:
与分布式数据库相关联的计算设备的存储器,所述分布式数据库通过多个计算设备经由可操作地耦合到所述多个计算设备的网络实现;以及
处理器,可操作地耦合到所述存储器,并且被配置为:
从所述多个计算设备中的计算设备接收与所述分布式数据库的状态相关联的状态证明,所述状态证明包括:
与所述状态相关联的数据,
与所述状态相关联的时间戳,
所述分布式数据库的第一标识符,以及
与所述分布式数据库相关联的地址簿集合,所述地址簿集合中的每个地址簿与一时间段期间的所述分布式数据库的版本相关联,所述时间段不同于与和所述地址簿集合中的每个其余地址簿相关联的所述分布式数据库的版本相关联的时间段,所述地址簿集合具有时间顺序;以及
通过以下确定与所述时间戳相关联的时间处的数据的有效性:
基于存储在所述存储器中的所述分布式数据库的第二标识符,证实所述分布式数据库的所述第一标识符是正确的,
证实与所述状态相关联的数据已经被所述多个计算设备中的预定数量的计算设备数字签名,以及
除了所述地址簿集合中的初始地址簿之外,证实所述地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
2.如权利要求1所述的装置,其中,所述处理器被配置为接收所述状态证明,作为所述计算设备与所述分布式数据库重新连接的一部分。
3.如权利要求1所述的装置,其中,所述处理器被配置为响应于确定所述数据无效而丢弃所述数据。
4.如权利要求1所述的装置,其中,所述处理器被配置为响应于确定所述数据有效而将所述数据处理为有效。
5.如权利要求1所述的装置,其中,所述状态与Merkle树相关联,所述数据被存储为所述Merkle树的叶记录,所述处理器被配置为通过以下确定所述数据在所述时间处的有效性:
对于从Merkle树根到所述叶记录的序列,证实Merkle路径是有效的。
6.如权利要求1所述的装置,其中,所述分布式数据库的所述第二标识符是使用所述初始地址簿计算的散列值。
7.如权利要求1所述的装置,其中,与所述状态相关联的数据是存储在所述分布式数据库中的数据的一部分。
8.如权利要求1所述的装置,其中,与所述数据相关联的数字签名是与所述多个计算设备中已经对所述数据进行数字签名的每个计算设备相关联的聚合签名。
9.如权利要求1所述的装置,其中,所述多个计算设备中的所述计算设备是所述多个计算设备中的第一计算设备,
所述多个计算设备中的第二计算设备使用与所述第二计算设备相关联的私有密钥对所述数据进行数字签名,所述处理器被配置为证实所述第二计算设备已经使用与所述第二计算设备相关联的公共密钥对所述数据进行数字签名。
10.如权利要求1所述的装置,其中:
所述地址簿集合中的每个地址簿是公共密钥集合,所述公共密钥集合中的每个密钥与股权量相关联,
对于所述地址簿集合中的每个地址簿,与该地址簿相关联的公共密钥集合中的每个公共密钥与多个计算设备中实现与所述地址簿相关联的时间段期间的所述分布式数据库的版本的计算设备相关联。
11.如权利要求1所述的装置,其中,所述处理器被配置为响应于接收到包括以下至少之一的事件而定义新地址簿:
将计算设备添加到所述多个计算设备的事务,
从所述多个计算设备移除计算设备的事务,或者
更新与所述多个计算设备中的计算设备相关联的股权量的事务。
12.如权利要求1所述的装置,其中,所述多个计算设备中的所述预定数量的计算设备基于所述多个计算设备内的计算设备的总数量。
13.如权利要求1所述的装置,其中,所述多个计算设备中的所述预定数量的计算设备基于与所述多个计算设备的每个计算设备相关联的股权。
14.如权利要求1所述的装置,其中,证实与所述状态相关联的数据已被数字签名包括证实与所述状态相关联的数据的散列值已被所述多个计算设备中的所述预定数量的计算设备数字签名。
15.如权利要求1所述的装置,其中,所述多个计算设备中的所述计算设备是所述多个计算设备中的第一计算设备,
与所述分布式数据库相关联的计算设备是实现所述分布式数据库的所述多个计算设备中的第二计算设备。
16.如权利要求1所述的装置,其中,与所述分布式数据库相关联的所述计算设备(1)与所述分布式数据库的用户相关联,(2)不在实现所述分布式数据库的所述多个计算设备中,并且(3)可操作地耦合到实现所述分布式数据库的所述多个计算设备中的计算设备。
17.一种存储表示将由处理器执行的指令的代码的非瞬态处理器可读介质,所述代码包括使处理器执行以下操作的代码:
从经由网络实现分布式数据库的多个计算设备中的计算设备接收与所述分布式数据库的状态相关联的状态证明,所述状态证明包括:
被存储为所述状态的Merkle树的叶记录集合的数据,
与所述数据相关联的Merkle路径,以及
与所述分布式数据库相关联的地址簿集合,所述地址簿集合中的每个地址簿与一时间段期间的所述分布式数据库的版本相关联,所述时间段不同于与和所述地址簿集合中的每个其余地址簿相关联的所述分布式数据库的版本相关联的时间段,所述地址簿集合具有时间顺序;以及
通过以下确定所述数据的有效性:
对于从Merkle树的根到叶记录的序列,证实所述Merkle路径是有效的,以及
除了所述地址簿集合中的初始地址簿之外,证实所述地址簿集合中的每个地址簿被与所述地址簿集合中按照所述时间顺序紧接在前的地址簿相关联的计算设备集合中的预定数量的计算设备数字签名。
18.如权利要求17所述的非瞬态处理器可读介质,其中,使所述处理器进行接收的所述代码包括使所述处理器响应于证实发送到所述计算设备的数据的请求而接收所述状态证明的代码。
19.如权利要求17所述的非瞬态处理器可读介质,还包括使所述处理器执行以下操作的代码:
响应于确定所述数据无效而忽略所述数据。
20.如权利要求17所述的非瞬态处理器可读介质,其中,使所述处理器确定所述数据的有效性的代码包括使所述处理器执行以下操作的代码:
证实所述多个计算设备中的预定数量的计算设备已经对所述Merkle树的根进行数字签名。
21.如权利要求17所述的非瞬态处理器可读介质,其中,证实所述Merkle路径包括使用与从所述Merkle树的叶记录到根的序列上的每个节点的兄弟节点集合相关联的散列值集合。
22.如权利要求17所述的非瞬态处理器可读介质,其中,使所述处理器确定所述数据的有效性的代码包括使所述处理器执行以下操作的代码:
证实所述数据的散列值已经被所述多个计算设备中的预定数量的计算设备数字签名。
23.如权利要求17所述的非瞬态处理器可读介质,其中,所述计算设备集合中的所述预定数量的计算设备基于与所述计算设备集合中的每个计算设备相关联的股权。
24.一种方法,包括:
在第一时间,使用分布式数据库的第一地址簿计算所述分布式数据库的标识符,所述第一地址簿包括与在所述第一时间实现所述分布式数据库的第一多个计算设备中的每个计算设备相关联的公共密钥;
接收用于以下至少之一的事务:(1)向所述第一多个计算设备添加计算设备,(2)从所述第一多个计算设备移除计算设备,或(3)修改所述第一多个计算设备中的计算设备,以定义第二多个计算设备;
在所述第一时间之后的第二时间,定义第二地址簿,所述第二地址簿包括与所述第二多个计算设备中的每个计算设备相关联的公共密钥;
从所述第二多个计算设备中的计算设备接收与所述第二时间之后的所述分布式数据库的数据相关联的状态证明;以及
通过确认所述第一多个计算设备中的预定数量的计算设备已经对所述第二地址簿进行数字签名,证实所述分布式数据库的所述数据。
25.如权利要求24所述的方法,其中,所述第二多个计算设备中的所述计算设备是所述第二多个计算设备中的第一计算设备,
接收所述状态证明包括接收所述状态证明,作为所述第二多个计算设备中的第二计算设备与所述分布式数据库重新连接的一部分。
26.如权利要求24所述的方法,其中,计算包括以所述分布式数据库的所述第一地址簿作为输入、使用散列函数来计算所述标识符。
27.如权利要求24所述的方法,其中,证实所述数据还基于证实所述数据已经被所述第二多个计算设备中的预定数量的计算设备数字签名。
28.如权利要求24所述的方法,其中:
所述分布式数据库的标识符是所述分布式数据库的标识符的第一实例;
所述状态证明包括所述分布式数据库的标识符的第二实例;以及
证实所述数据包括证实所述分布式数据库的标识符的所述第一实例与所述分布式数据库的标识符的所述第二实例相匹配。
29.如权利要求24所述的方法,其中:
所述数据被存储为Merkle树的叶记录;
所述状态证明包括与所述数据相关联的Merkle路径;以及
证实所述数据包括证实对于从所述Merkle树的根到所述Merkle树的叶记录的序列,所述Merkle路径是有效的。
30.如权利要求24所述的方法,其中,所述状态证明是第一状态证明,并且所述数据是第一数据,所述方法还包括:
接收用于以下至少之一的事务:(1)向所述第二多个计算设备添加计算设备,(2)从所述第二多个计算设备移除计算设备,或(3)修改所述第二多个计算设备中的计算设备,以定义第三多个计算设备;
在所述第二时间之后的第三时间,定义第三地址簿,所述第三地址簿包括与所述第三多个计算设备中的每个计算设备相关联的公共密钥;
从所述第三多个计算设备中的计算设备接收与所述第三时间之后的所述分布式数据库的第二数据相关联的第二状态证明;以及
通过确认所述第二多个计算设备的预定数量的计算设备已经对所述第三地址簿进行数字签名并且所述第一多个计算设备的预定数量的计算设备已经对所述第二地址簿进行数字签名,证实所述分布式数据库的所述第二数据。
31.如权利要求24所述的方法,其中,所述第一多个计算设备的所述预定数量的计算设备基于所述第一多个计算设备内的计算设备的总数量。
32.如权利要求24所述的方法,其中,所述第一多个计算设备的所述预定数量的计算设备基于与所述第一多个计算设备中的每个计算设备相关联的股权。
CN202080030289.5A 2019-05-22 2020-05-22 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置 Pending CN113711202A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962851368P 2019-05-22 2019-05-22
US62/851,368 2019-05-22
PCT/US2020/034197 WO2020237140A1 (en) 2019-05-22 2020-05-22 Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database

Publications (1)

Publication Number Publication Date
CN113711202A true CN113711202A (zh) 2021-11-26

Family

ID=73456763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080030289.5A Pending CN113711202A (zh) 2019-05-22 2020-05-22 用于在分布式数据库中实现状态证明和分类帐标识符的方法和装置

Country Status (9)

Country Link
US (1) US11475150B2 (zh)
EP (1) EP3973407A4 (zh)
JP (1) JP2022532830A (zh)
KR (1) KR20220011161A (zh)
CN (1) CN113711202A (zh)
AU (1) AU2020279389A1 (zh)
CA (1) CA3134691A1 (zh)
SG (1) SG11202109729SA (zh)
WO (1) WO2020237140A1 (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
JP6966544B2 (ja) 2016-11-10 2021-11-17 スワールズ,インコーポレイテッド 匿名エントリを含む分散型データベースのための方法および装置
KR102433285B1 (ko) 2016-12-19 2022-08-16 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
KR102415097B1 (ko) 2017-07-11 2022-06-29 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
WO2019089742A1 (en) 2017-11-01 2019-05-09 Swirlds, Inc. Methods and apparatus for efficiently implementing a fast-copyable database
JP7157310B2 (ja) * 2018-06-27 2022-10-20 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US11611439B2 (en) * 2019-06-11 2023-03-21 Celo Foundation Tree structure for byzantine fault tolerance
US11587079B2 (en) * 2021-03-24 2023-02-21 Bank Of America Corporation Digital resource distribution network matrix for secure interactions
WO2023064557A1 (en) * 2021-10-15 2023-04-20 Chia Network Inc. Method for securing private structured databases within a public blockchain

Family Cites Families (141)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4309569A (en) 1979-09-05 1982-01-05 The Board Of Trustees Of The Leland Stanford Junior University Method of providing digital signatures
US5701480A (en) 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
JPH0798669A (ja) 1993-08-05 1995-04-11 Hitachi Ltd 分散データベース管理システム
US5495607A (en) 1993-11-15 1996-02-27 Conner Peripherals, Inc. Network management system having virtual catalog overview of files distributively stored across network domain
US6446092B1 (en) 1996-11-01 2002-09-03 Peerdirect Company Independent distributed database system
US5991414A (en) 1997-09-12 1999-11-23 International Business Machines Corporation Method and apparatus for the secure distributed storage and retrieval of information
US6728713B1 (en) 1999-03-30 2004-04-27 Tivo, Inc. Distributed database management system
US6594328B1 (en) 1999-07-28 2003-07-15 Motorola, Inc. Method and apparatus for facilitating an estimation of a carrier frequency error in a receiver of a wireless communication system
WO2001011843A1 (en) * 1999-08-06 2001-02-15 Sudia Frank W Blocked tree authorization and status systems
US6754845B2 (en) 2000-01-14 2004-06-22 International Business Machines Corporation Method of achieving optimistic multiple processor agreement in potentially asynchronous networks
US6584476B1 (en) 2000-04-22 2003-06-24 Oracle Corp. System and method for enforcing referential constraints between versioned database tables
EP1152330A1 (en) 2000-05-04 2001-11-07 Carels Innovative Software, BVBA/SPRL Process for automatically creating and controlling a set of graphical objects in a client server environment
US6966836B1 (en) 2000-11-16 2005-11-22 Ea.Com, Inc. Positive-return gambling
US6931431B2 (en) 2001-01-13 2005-08-16 International Business Machines Corporation Agreement and atomic broadcast in asynchronous networks
US20020143800A1 (en) 2001-01-24 2002-10-03 Henrik Lindberg Model view controller
US7711122B2 (en) 2001-03-09 2010-05-04 Arcot Systems, Inc. Method and apparatus for cryptographic key storage wherein key servers are authenticated by possession and secure distribution of stored keys
US7062490B2 (en) 2001-03-26 2006-06-13 Microsoft Corporation Serverless distributed file system
US7088821B2 (en) 2001-05-03 2006-08-08 Cheman Shaik Absolute public key cryptographic system and method surviving private-key compromise with other advantages
US8868467B2 (en) 2002-10-23 2014-10-21 Oleg Serebrennikov Method for performing transactional communication using a universal transaction account identifier assigned to a customer
JP2003202964A (ja) 2002-01-09 2003-07-18 Hitachi Ltd 計算機システムの制御方法、計算機システム、記憶装置の制御方法及び記憶装置
US7146009B2 (en) 2002-02-05 2006-12-05 Surety, Llc Secure electronic messaging system requiring key retrieval for deriving decryption keys
US7558883B1 (en) 2002-06-28 2009-07-07 Microsoft Corporation Fast transaction commit
RU2376635C2 (ru) 2002-10-23 2009-12-20 Закрытое акционерное общество "МедиаЛингва" Способ и система проведения транзакций в сети с использованием сетевых идентификаторов
US8311980B2 (en) 2002-12-09 2012-11-13 Hewlett-Packard Development Company, L.P. Namespace consistency for a wide-area file system
FI118619B (fi) 2003-05-16 2008-01-15 Jarmo Talvitie Menetelmä ja järjestelmä tiedon salaamiseksi ja tallentamiseksi
US7873684B2 (en) 2003-08-14 2011-01-18 Oracle International Corporation Automatic and dynamic provisioning of databases
JP4189332B2 (ja) 2004-01-30 2008-12-03 株式会社東芝 データベース管理システム、データベース管理方法、データベース登録要求プログラムおよびデータベース管理プログラム
CA2469598A1 (en) 2004-06-01 2005-12-01 Daniel W. Onischuk Computerized voting system
US7844745B1 (en) 2004-08-19 2010-11-30 Nortel Networks Limited Alternate home subscriber server (HSS) node to receive a request if a first HSS node cannot handle said request
US7389314B2 (en) 2004-08-30 2008-06-17 Corio, Inc. Database backup, refresh and cloning system and method
US7778970B1 (en) 2004-10-12 2010-08-17 Oracle America, Inc. Method and system for managing independent object evolution
US7555516B2 (en) 2004-11-23 2009-06-30 Microsoft Corporation Fast Paxos recovery
US7783664B2 (en) 2004-12-17 2010-08-24 Microsoft Corporation Method and system for protecting the consistency of information in a distributed file system
US9361311B2 (en) 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US20090157735A1 (en) * 2005-05-13 2009-06-18 Gentry Craig B Method and apparatus for secure and small credits for verifiable service provider metering
US7890508B2 (en) 2005-08-19 2011-02-15 Microsoft Corporation Database fragment cloning and management
US7636704B2 (en) 2005-08-26 2009-12-22 Emc Corporation Methods and apparatus for scheduling an action on a computer
US8533169B1 (en) 2005-09-21 2013-09-10 Infoblox Inc. Transactional replication
US7797457B2 (en) 2006-03-10 2010-09-14 Microsoft Corporation Leaderless byzantine consensus
JP5211342B2 (ja) 2007-01-12 2013-06-12 国立大学法人山梨大学 秘匿通信方法
US9104962B2 (en) 2007-03-06 2015-08-11 Trion Worlds, Inc. Distributed network architecture for introducing dynamic content into a synthetic environment
US20080256078A1 (en) 2007-04-10 2008-10-16 Venkat Bhashyam Secure distributed computing engine and database system
US7899188B2 (en) 2007-05-31 2011-03-01 Motorola Mobility, Inc. Method and system to authenticate a peer in a peer-to-peer network
WO2009009754A2 (en) 2007-07-12 2009-01-15 Cornell Research Foundation, Inc. Semantic transactions in online applications
US7877331B2 (en) 2007-09-06 2011-01-25 King Fahd University Of Petroleum & Minerals Token based new digital cash protocols with combined blind digital signature and pseudonym authentication
US7849223B2 (en) 2007-12-07 2010-12-07 Microsoft Corporation Virtually synchronous Paxos
US8176497B2 (en) 2008-01-16 2012-05-08 Dell Products, Lp Method to dynamically provision additional computer resources to handle peak database workloads
US8370391B2 (en) 2008-03-25 2013-02-05 Microsoft Corporation Functional updates for tree processing
US8037279B2 (en) 2008-06-12 2011-10-11 Oracle America, Inc. Method and system for cross-domain data sharing
JP5407209B2 (ja) 2008-07-28 2014-02-05 富士ゼロックス株式会社 文書管理装置、文書管理プログラム、及び文書管理システム
CN101334797B (zh) 2008-08-04 2010-06-02 中兴通讯股份有限公司 一种分布式文件系统及其数据块一致性管理的方法
US8533582B2 (en) 2009-03-20 2013-09-10 Xerox Corporation Trail-based data content discovery, organization, and processing
US8713038B2 (en) 2009-04-02 2014-04-29 Pivotal Software, Inc. Integrating map-reduce into a distributed relational database
US8571519B2 (en) 2009-05-07 2013-10-29 Nokia Corporation Method and apparatus for using pseudonyms
CN102667761B (zh) 2009-06-19 2015-05-27 布雷克公司 可扩展的集群数据库
GB0914815D0 (en) 2009-08-25 2009-09-30 Univ City Improvements relating to database replication protocols
EP2348449A3 (en) 2009-12-18 2013-07-10 CompuGroup Medical AG A computer implemented method for performing cloud computing on data being stored pseudonymously in a database
US8862617B2 (en) 2010-02-09 2014-10-14 Google Inc. System and method for replicating objects in a distributed storage system
US8380659B2 (en) 2010-02-09 2013-02-19 Google Inc. Method and system for efficiently replicating data in non-relational databases
US20130145426A1 (en) 2010-03-12 2013-06-06 Michael Wright Web-Hosted Self-Managed Virtual Systems With Complex Rule-Based Content Access
US20110250974A1 (en) 2010-04-07 2011-10-13 Gary Stephen Shuster Simulated gaming using prior game outcome
US8654650B1 (en) 2010-04-30 2014-02-18 Amazon Technologies, Inc. System and method for determining node staleness in a distributed system
JP5431261B2 (ja) 2010-07-23 2014-03-05 インターナショナル・ビジネス・マシーンズ・コーポレーション 情報管理システム、方法及びプログラム
US8880486B2 (en) 2010-07-27 2014-11-04 Sap Ag Distributed database system utilizing an extended two-phase-commit process
US20140310243A1 (en) 2010-08-16 2014-10-16 Mr. Steven James McGee Heart beacon cycle
US8600944B2 (en) 2010-09-24 2013-12-03 Hitachi Data Systems Corporation System and method for managing integrity in a distributed database
US8818963B2 (en) 2010-10-29 2014-08-26 Microsoft Corporation Halloween protection in a multi-version database system
WO2012070292A1 (ja) 2010-11-22 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散データベースの負荷均衡のためのコネクション配分を実現する情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラム
JP5948340B2 (ja) 2010-11-22 2016-07-06 ヒタチ データ システムズ エンジニアリング ユーケー リミテッドHitachi Data Systems Engineering Uk Limited データストレージシステムにおける、ファイルのクローニング及びデクローニング
US9805108B2 (en) 2010-12-23 2017-10-31 Mongodb, Inc. Large distributed database clustering systems and methods
JP5902716B2 (ja) 2011-01-10 2016-04-13 ストローン リミテッド 大規模記憶システム
US8799247B2 (en) * 2011-02-11 2014-08-05 Purdue Research Foundation System and methods for ensuring integrity, authenticity, indemnity, and assured provenance for untrusted, outsourced, or cloud databases
US8612386B2 (en) 2011-02-11 2013-12-17 Alcatel Lucent Method and apparatus for peer-to-peer database synchronization in dynamic networks
US8712975B2 (en) 2011-03-08 2014-04-29 Rackspace Us, Inc. Modification of an object replica
US8799248B2 (en) 2011-04-26 2014-08-05 Brian J. Bulkowski Real-time transaction scheduling in a distributed database
US8732140B2 (en) 2011-05-24 2014-05-20 Red Lambda, Inc. Methods for storing files in a distributed environment
US20130036089A1 (en) 2011-08-01 2013-02-07 Tagged, Inc. Systems and methods for asynchronous distributed database management
US20130110767A1 (en) 2011-10-26 2013-05-02 Nec Laboratories America, Inc. Online Transaction Processing
WO2013073020A1 (ja) 2011-11-16 2013-05-23 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
US9244717B2 (en) 2012-03-29 2016-01-26 Vmware, Inc. Method and system for visualizing linked clone trees
US9710501B2 (en) 2012-03-30 2017-07-18 Kinaxis Inc. Enhanced performance for large versioned databases
RU2510623C2 (ru) 2012-04-19 2014-04-10 Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) Способ репликации информации в распределенных базах данных с конкурентным распределением потоков
WO2014008495A2 (en) 2012-07-06 2014-01-09 Cornell University Managing dependencies between operations in a distributed system
CN102819585B (zh) 2012-07-31 2015-04-22 北大方正集团有限公司 一种xml数据库文档控制方法
FR2995437B1 (fr) 2012-09-07 2014-10-10 Commissariat Energie Atomique Dispositif de controle nucleaire pour reacteur refroidi au metal liquide de type rnr.
US8775464B2 (en) 2012-10-17 2014-07-08 Brian J. Bulkowski Method and system of mapreduce implementations on indexed datasets in a distributed database environment
US9760596B2 (en) 2013-05-13 2017-09-12 Amazon Technologies, Inc. Transaction ordering
US8886601B1 (en) 2013-06-20 2014-11-11 Palantir Technologies, Inc. System and method for incrementally replicating investigative analysis data
US10354325B1 (en) 2013-06-28 2019-07-16 Winklevoss Ip, Llc Computer-generated graphical user interface
WO2015008377A1 (ja) 2013-07-19 2015-01-22 富士通株式会社 状態復元プログラム、装置、及び支援方法
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US9251235B1 (en) 2013-09-11 2016-02-02 Amazon Technologies, Inc. Log-based synchronization
US9280591B1 (en) 2013-09-20 2016-03-08 Amazon Technologies, Inc. Efficient replication of system transactions for read-only nodes of a distributed database
RU2560810C2 (ru) 2013-11-01 2015-08-20 Илья Самуилович Рабинович Способ и система защиты информации от несанкционированного использования (ее варианты)
US10311152B2 (en) 2013-12-20 2019-06-04 Hitachi Vantara Corporation System for queue based object cloning
EP4027576B1 (en) 2014-01-13 2023-11-22 Visa International Service Association Efficient methods for protecting identity in authenticated transmissions
US10212226B2 (en) 2014-01-16 2019-02-19 Hewlett Packard Enterprise Development Lp Node cluster synchronization
US20150244795A1 (en) * 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US10334037B2 (en) 2014-03-31 2019-06-25 Yaana Technologies, Inc. Peer-to-peer rendezvous system for minimizing third party visibility and method thereof
US9519510B2 (en) 2014-03-31 2016-12-13 Amazon Technologies, Inc. Atomic writes for multiple-extent operations
US11270298B2 (en) 2014-04-14 2022-03-08 21, Inc. Digital currency mining circuitry
US10419457B2 (en) 2014-04-30 2019-09-17 Hewlett Packard Enterprise Development Lp Selecting from computing nodes for correlating events
US9189342B1 (en) 2014-05-29 2015-11-17 Emc Corporation Generic process for determining child to parent inheritance for fast provisioned or linked clone virtual machines
US10025802B2 (en) 2014-09-19 2018-07-17 Amazon Technologies, Inc. Automated configuration of log-coordinated storage groups
US10111071B2 (en) 2014-09-19 2018-10-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Bluetooth low energy automation mesh network
EP3002661A1 (en) 2014-09-30 2016-04-06 Advanced Digital Broadcast S.A. System and method for controlling a virtual input interface
KR101544722B1 (ko) 2014-11-13 2015-08-18 주식회사 엘지씨엔에스 부인 방지 방법, 이를 위한 결제 관리 서버 및 사용자 단말기
US9842031B1 (en) 2014-12-08 2017-12-12 Amazon Technologies, Inc. Incremental updates to user transaction state at read-only nodes of a distributed database
US11012806B2 (en) 2015-01-09 2021-05-18 Ariba, Inc. Multi-adapter support in the cloud
CN107210914B (zh) 2015-01-27 2020-11-03 维萨国际服务协会 用于安全凭证供应的方法
US9967091B2 (en) 2015-02-12 2018-05-08 Xerox Corporation Method for enhancing security in distributed systems
US20160283920A1 (en) * 2015-03-28 2016-09-29 Justin Fisher Authentication and verification of digital data utilizing blockchain technology
US10140329B2 (en) 2015-04-01 2018-11-27 Ab Initio Technology Llc Processing transactions in a distributed computing system
US9568943B1 (en) 2015-04-27 2017-02-14 Amazon Technologies, Inc. Clock-based distributed data resolution
US10026082B2 (en) 2015-05-21 2018-07-17 Mastercard International Incorporated Method and system for linkage of blockchain-based assets to fiat currency accounts
US10097356B2 (en) 2015-07-02 2018-10-09 Nasdaq, Inc. Systems and methods of secure provenance for distributed transaction databases
US9529923B1 (en) 2015-08-28 2016-12-27 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10747753B2 (en) 2015-08-28 2020-08-18 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US9390154B1 (en) 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10303887B2 (en) 2015-09-14 2019-05-28 T0.Com, Inc. Data verification methods and systems using a hash tree, such as a time-centric merkle hash tree
US9836366B2 (en) 2015-10-27 2017-12-05 Netapp, Inc. Third vote consensus in a cluster using shared storage devices
US20170300550A1 (en) 2015-11-02 2017-10-19 StoreReduce Data Cloning System and Process
US20170180367A1 (en) * 2015-12-16 2017-06-22 ClearChat, Inc. System And Method For Encrypted And Authenticated Electronic Messaging Using A Central Address Book
WO2017131791A1 (en) 2016-01-30 2017-08-03 Entit Software Llc Log event cluster analytics management
EP3440549A4 (en) 2016-04-04 2019-11-13 Formulus Black Corporation FAST SYSTEM STATUS CLONING
US9646029B1 (en) 2016-06-02 2017-05-09 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10445698B2 (en) 2016-06-30 2019-10-15 Clause, Inc. System and method for forming, storing, managing, and executing contracts
US10396991B2 (en) * 2016-06-30 2019-08-27 Microsoft Technology Licensing, Llc Controlling verification of key-value stores
US10956400B2 (en) 2016-07-15 2021-03-23 Sap Se Query processing using primary data versioning and secondary data
US10367637B2 (en) 2016-07-22 2019-07-30 Qualcomm Incorporated Modular exponentiation with transparent side channel attack countermeasures
US20180101777A1 (en) 2016-10-12 2018-04-12 Anuthep Benja-Athon EM Oracle
JP6966544B2 (ja) 2016-11-10 2021-11-17 スワールズ,インコーポレイテッド 匿名エントリを含む分散型データベースのための方法および装置
KR102433285B1 (ko) 2016-12-19 2022-08-16 스월즈, 인크. 이벤트들의 삭제를 가능하게 하는 분산 데이터베이스를 위한 방법 및 장치
EP3340084A1 (en) 2016-12-22 2018-06-27 Dassault Systèmes Replica selection
CN106789095B (zh) 2017-03-30 2020-12-08 腾讯科技(深圳)有限公司 分布式系统及消息处理方法
KR102415097B1 (ko) 2017-07-11 2022-06-29 스월즈, 인크. 네트워크 내의 분산 데이터베이스를 효율적으로 구현하기 위한 방법들 및 장치
WO2019089742A1 (en) 2017-11-01 2019-05-09 Swirlds, Inc. Methods and apparatus for efficiently implementing a fast-copyable database
US20210209885A1 (en) 2018-05-23 2021-07-08 Centiglobe Ab A system and a method for achieving consensus between multiple parties on an event
WO2020010442A1 (en) 2018-07-09 2020-01-16 Prescient Innovations Inc. Media attribution systems and methods
US11334439B2 (en) * 2018-08-29 2022-05-17 International Business Machines Corporation Checkpointing for increasing efficiency of a blockchain
JP2023544422A (ja) 2020-10-06 2023-10-23 ヘデラ ハッシュグラフ,エルエルシー ネットワーク内の分散データベースのための方法及び装置

Also Published As

Publication number Publication date
JP2022532830A (ja) 2022-07-20
KR20220011161A (ko) 2022-01-27
CA3134691A1 (en) 2020-11-26
WO2020237140A1 (en) 2020-11-26
EP3973407A4 (en) 2023-06-28
EP3973407A1 (en) 2022-03-30
AU2020279389A1 (en) 2021-10-14
US20200372015A1 (en) 2020-11-26
SG11202109729SA (en) 2021-10-28
US11475150B2 (en) 2022-10-18

Similar Documents

Publication Publication Date Title
US11475150B2 (en) Methods and apparatus for implementing state proofs and ledger identifiers in a distributed database
AU2021200222B2 (en) Methods and apparatus for a distributed database including anonymous entries
JP7211943B2 (ja) イベントの削除を可能にする分散データベースのための方法および装置
JP6745004B1 (ja) ネットワーク内に分散データベースを効率的に実装するための方法及び機器
JP6686209B2 (ja) ネットワーク内の分散データベースのための方法及び装置
JP2023544422A (ja) ネットワーク内の分散データベースのための方法及び装置
JP2023547716A (ja) マークル証明エンティティ
Geng et al. Blockchain-inspired Framework for Runtime Verification of IoT Ecosystem Task Fulfillment
US20240106670A1 (en) Headers client for determining the best chain

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40063219

Country of ref document: HK

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230417

Address after: Texas, USA

Applicant after: Hydra Hashitou Co.,Ltd.

Address before: Texas, USA

Applicant before: Swirlds, Inc.