RU2778013C2 - Methods and device for a distributed database on the network - Google Patents
Methods and device for a distributed database on the network Download PDFInfo
- Publication number
- RU2778013C2 RU2778013C2 RU2019132736A RU2019132736A RU2778013C2 RU 2778013 C2 RU2778013 C2 RU 2778013C2 RU 2019132736 A RU2019132736 A RU 2019132736A RU 2019132736 A RU2019132736 A RU 2019132736A RU 2778013 C2 RU2778013 C2 RU 2778013C2
- Authority
- RU
- Russia
- Prior art keywords
- event
- distributed database
- events
- value
- processor
- Prior art date
Links
- 230000004044 response Effects 0.000 claims description 32
- 230000000875 corresponding Effects 0.000 claims description 10
- 238000004422 calculation algorithm Methods 0.000 claims description 7
- KEJGAYKWRDILTF-PGQYJIMISA-N (3aR,5S,6aS)-5-(2,2-dimethyl-1,3-dioxolan-4-yl)-2,2-dimethyl-3a,5,6,6a-tetrahydrofuro[2,3-d][1,3]dioxol-6-ol Chemical compound O1C(C)(C)OCC1[C@@H]1C(O)[C@@H]2OC(C)(C)O[C@H]2O1 KEJGAYKWRDILTF-PGQYJIMISA-N 0.000 claims description 5
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims 2
- 230000000694 effects Effects 0.000 abstract description 3
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 11
- 239000000203 mixture Substances 0.000 description 11
- 230000005540 biological transmission Effects 0.000 description 9
- 230000001360 synchronised Effects 0.000 description 4
- 230000003287 optical Effects 0.000 description 3
- 230000000644 propagated Effects 0.000 description 3
- 230000002708 enhancing Effects 0.000 description 2
- 230000001902 propagating Effects 0.000 description 2
- 230000000981 bystander Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000007374 clinical diagnostic method Methods 0.000 description 1
- 238000010367 cloning Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000019525 fullness Nutrition 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Abstract
Description
Перекрестные ссылки на родственные заявкиCross-references to related applications
Настоящая заявка является частичным продолжением заявки № 15/205688 на патент США, поданной 8 июля 2016 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», которая является продолжением заявки № 14/988873 на патент США, поданной 6 января 2016 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», которая испрашивает приоритет и преимущество предварительной заявки № 62/211411 на патент США, поданной 28 августа 2015 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», каждая из которых включена в настоящий документ посредством ссылки во всей своей полноте.This application is a continuation in part of U.S. Patent Application No. 15/205688, filed July 8, 2016, entitled "Methods and Apparatus for a Distributed Database within a Network", which is a continuation of U.S. Patent Application No. 14/988873, filed January 6, 2016, entitled "Methods and Apparatus for a Distributed Database within a Network", which claims the priority and benefit of Provisional Application No. U.S. Patent No. 62/211411, filed August 28, 2015, titled "Methods and Apparatus for a Distributed Database within a Network", each of which is incorporated herein by reference in in all its fullness.
Настоящая заявка также является частичным продолжением заявки № 15/153011 на патент США, поданной 12 мая 2016 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», которая является частичным продолжением заявки № 14/988873 на патент США, поданной 6 января 2016 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», которая испрашивает приоритет и преимущество предварительной заявки № 62/211411 на патент США, поданной 28 августа 2015 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», каждая из которых включена в настоящий документ посредством ссылки во всей своей полноте.This application is also a continuation in part of U.S. Patent Application No. 15/153011, filed May 12, 2016, entitled "Methods and Apparatus for a Distributed Database within a Network", which is a partial continuation of U.S. Patent Application No. 14/988873, filed January 6, 2016, titled "Methods and Apparatus for a Distributed Database within a Network", which claims the priority and benefit of prior U.S. Patent Application No. 62/211411, filed Aug. 28, 2015, entitled "Methods and Apparatus for a Distributed Database within a Network", each of which is incorporated herein by links in their entirety.
Настоящая заявка также испрашивает приоритет и преимущество предварительной заявки № 62/211411 на патент США, поданной 28 августа 2015 г., под названием «Methods and Apparatus for a Distributed Database within a Network (Способы и устройство для распределенной базы данных в сети)», которая была включена в настоящий документ посредством ссылки во всей своей полноте.This application also claims the priority and benefit of U.S. Provisional Application No. 62/211411, filed Aug. 28, 2015, titled "Methods and Apparatus for a Distributed Database within a Network" which has been incorporated herein by reference in its entirety.
Настоящая заявка также испрашивает приоритет и преимущество предварительной заявки № 62/344682 на патент США, поданной 2 июня 2016 г., под названием «Methods and Apparatus for a Distributed Database with Consensus Determined Based on Weighted Stakes (Способы и устройство для распределенной базы данных с консенсусом, определенным на основе взвешенных долей)», которая включена в настоящий документ посредством ссылки во всей своей полноте.This application also claims the priority and benefit of U.S. Provisional Application No. 62/344682, filed June 2, 2016, entitled "Methods and Apparatus for a Distributed Database with Consensus Determined Based on Weighted Stakes." consensus determined on the basis of weighted proportions)”, which is incorporated herein by reference in its entirety.
Предпосылки изобретенияBackground of the invention
Варианты осуществления, описанные в настоящем документе, относятся в целом к системе базы данных и более конкретно к способам и устройству для реализации системы базы данных на множестве устройств в сети.The embodiments described herein relate generally to a database system, and more specifically to methods and apparatus for implementing a database system on a plurality of devices on a network.
Некоторые известные системы распределенных баз данных пытаются достичь консенсуса для значений в системах распределенных баз данных (например, относительно порядка, в котором происходят транзакции). Например, многопользовательская онлайн-игра может иметь множество компьютерных серверов, доступ к которым пользователи могут получать, чтобы играть в игру. Если два пользователя одновременно пытаются поднять конкретный предмет в игре, то важно, чтобы серверы в системе распределенной базы данных в итоге достигли согласия относительно того, какой из двух пользователей подобрал предмет первым. Some well-known distributed database systems attempt to reach consensus on values in distributed database systems (eg, regarding the order in which transactions occur). For example, an online multiplayer game may have a plurality of computer servers that users may access to play the game. If two users simultaneously attempt to pick up a particular item in the game, then it is important that the servers in the distributed database system eventually agree on which of the two users picked up the item first.
Такой распределенный консенсус может быть обработан посредством способов и/или процессов, таких как алгоритм Паксос или его варианты. При использовании таких способов и/или процессов один сервер системы базы данных устанавливается в качестве «лидера», и лидер принимает решения относительно порядка событий. События (например, в многопользовательских играх) передаются лидеру, лидер выбирает упорядоченную последовательность для событий, и лидер передает эту упорядоченную последовательность на другие серверы системы базы данных.Such distributed consensus may be handled by methods and/or processes such as the Paxos algorithm or variations thereof. Using such methods and/or processes, one database system server is established as the "leader" and the leader makes decisions about the order of events. Events (eg, in multiplayer games) are passed to the leader, the leader selects an ordered sequence for the events, and the leader passes this ordered sequence to the other database system servers.
Однако при таких известных подходах используется сервер, управляемый некоторой стороной (например, центральным сервером управления), которой доверяют пользователи системы базы данных (например, игроки в игре). Соответственно существует необходимость в способах и устройстве для системы распределенной базы данных, для которых не будут требоваться лидер или доверенная третья сторона, чтобы управлять системой базы данных.However, such known approaches use a server managed by some party (eg, a central control server) that is trusted by the users of the database system (eg, the players in the game). Accordingly, there is a need for methods and apparatus for a distributed database system that do not require a leader or trusted third party to control the database system.
Другие распределенные базы данных спроектированы без наличия лидера, но являются неэффективными. Например, одна такая распределенная база данных основана на структуре данных «цепочка блоков», которая может достигать консенсуса. Однако такая система может быть ограничена малым количеством транзакций в секунду для всех участников вместе взятых (например, 7 транзакций в секунду), что недостаточно для крупномасштабной игры или для многих традиционных приложений баз данных. Соответственно существует потребность в системе распределенной базы данных, которая достигает консенсуса без лидера и которая является эффективной. Other distributed databases are designed without a leader but are inefficient. For example, one such distributed database is based on a "chain of blocks" data structure that can reach consensus. However, such a system may be limited to a small number of transactions per second for all participants combined (eg, 7 transactions per second), which is not enough for a large-scale game or for many traditional database applications. Accordingly, there is a need for a distributed database system that achieves consensus without a leader and that is efficient.
Сущность изобретенияThe essence of the invention
В некоторых вариантах осуществления устройство содержит экземпляр распределенной базы данных на первом вычислительном устройстве, приспособленном для включения в набор вычислительных устройств, которые реализуют распределенную базу данных. Устройство также содержит процессор, выполненный с возможностью определения первого события, связанного с первым набором событий. Процессор выполнен с возможностью приема со второго вычислительного устройства из набора вычислительных устройств сигнала, представляющего второе событие, (1) определенное вторым вычислительным устройством и (2) связанное со вторым набором событий. Процессор выполнен с возможностью идентификации порядка, связанного с третьим набором событий, на основе по меньшей мере одного результата протокола. Процессор выполнен с возможностью сохранения в экземпляре распределенной базы данных порядка, связанного с третьим набором событий.In some embodiments, the device comprises an instance of the distributed database on a first computing device adapted to be included in a set of computing devices that implement the distributed database. The device also includes a processor configured to determine the first event associated with the first set of events. The processor is configured to receive from a second computing device of the set of computing devices a signal representing a second event (1) determined by the second computing device and (2) associated with the second set of events. The processor is configured to identify the order associated with the third set of events based on at least one protocol result. The processor is configured to store in the distributed database instance the order associated with the third set of events.
Краткое описание графических материаловBrief description of graphic materials
На фиг. 1 показана структурная схема высокого уровня, на которой проиллюстрирована система распределенной базы данных согласно одному варианту осуществления.In FIG. 1 is a high-level block diagram illustrating a distributed database system according to one embodiment.
На фиг. 2 показана структурная схема, на которой проиллюстрировано вычислительное устройство системы распределенной базы данных согласно одному варианту осуществления.In FIG. 2 is a block diagram illustrating a computing device of a distributed database system according to one embodiment.
На фиг. 3–6 проиллюстрированы примеры DAG на основе хешей согласно одному варианту осуществления. In FIG. 3-6 illustrate examples of hash-based DAGs according to one embodiment.
На фиг. 7 показана функциональная схема, на которой проиллюстрирован информационный поток между первым вычислительным устройством и вторым вычислительным устройством согласно одному варианту осуществления.In FIG. 7 is a block diagram illustrating information flow between a first computing device and a second computing device according to one embodiment.
На фиг. 8 показана функциональная схема, на которой проиллюстрирован информационный поток между первым вычислительным устройством и вторым вычислительным устройством согласно одному варианту осуществления.In FIG. 8 is a block diagram illustrating information flow between a first computing device and a second computing device according to one embodiment.
На фиг. 9a–9c показаны таблицы векторов, иллюстрирующие примеры векторов значений.In FIG. 9a-9c show vector tables illustrating examples of value vectors.
На фиг. 10a–10d показаны таблицы векторов, иллюстрирующие примеры векторов значений, обновляемых для включения новых значений.In FIG. 10a-10d show vector tables illustrating examples of value vectors updated to include new values.
На фиг. 11 показана блок-схема, иллюстрирующая работу системы распределенной базы данных согласно одному варианту осуществления.In FIG. 11 is a block diagram illustrating the operation of a distributed database system according to one embodiment.
На фиг. 12 показана блок-схема, иллюстрирующая работу системы распределенной базы данных согласно одному варианту осуществления.In FIG. 12 is a block diagram illustrating the operation of a distributed database system according to one embodiment.
На фиг. 13 показана блок-схема, иллюстрирующая работу системы распределенной базы данных согласно одному варианту осуществления.In FIG. 13 is a block diagram illustrating the operation of a distributed database system according to one embodiment.
На фиг. 14 показан пример DAG на основе хешей согласно одному варианту осуществления. In FIG. 14 shows an example of a hash-based DAG according to one embodiment.
На фиг. 15 показан пример DAG на основе хешей согласно одному варианту осуществления. In FIG. 15 shows an example of a hash-based DAG according to one embodiment.
На фиг. 16a–16b проиллюстрирован пример способа достижения консенсуса для использования с DAG на основе хешей согласно одному варианту осуществления. In FIG. 16a-16b illustrate an example of a consensus method for use with a hash-based DAG according to one embodiment.
На фиг. 17a–17b проиллюстрирован пример способа достижения консенсуса для использования с DAG на основе хешей согласно другому варианту осуществления. In FIG. 17a-17b illustrate an example of a consensus method for use with a hash-based DAG according to another embodiment.
Подробное описание изобретенияDetailed description of the invention
В некоторых вариантах осуществления устройство содержит экземпляр распределенной базы данных на первом вычислительном устройстве, приспособленном для включения в набор вычислительных устройств, которые реализуют распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Устройство также содержит процессор, функционально соединенный с памятью, хранящей экземпляр распределенной базы данных. Процессор выполнен с возможностью определения в первый момент времени первого события, связанного с первым набором событий. Процессор выполнен с возможностью приема во второй момент времени, после первого момента времени и со второго вычислительного устройства из набора вычислительных устройств, сигнала, представляющего второе событие, (1) определенное вторым вычислительным устройством и (2) связанное со вторым набором событий. Процессор выполнен с возможностью идентификации порядка, связанного с третьим набором событий, на основе по меньшей мере одного результата протокола. Каждое событие из третьего набора событий является событием из по меньшей мере одного из первого набора событий или второго набора событий. Процессор выполнен с возможностью сохранения в экземпляре распределенной базы данных порядка, связанного с третьим набором событий.In some embodiments, the device comprises an instance of the distributed database on a first computing device adapted to be included in a set of computing devices that implement the distributed database via a network operably coupled to the set of computing devices. The apparatus also includes a processor operatively coupled to a memory storing an instance of the distributed database. The processor is configured to determine at a first time the first event associated with the first set of events. The processor is configured to receive at a second time point, after the first time point, and from a second computing device from the set of computing devices, a signal representing a second event (1) determined by the second computing device and (2) associated with the second set of events. The processor is configured to identify the order associated with the third set of events based on at least one protocol result. Each event from the third event set is an event from at least one of the first event set or the second event set. The processor is configured to store in the distributed database instance the order associated with the third set of events.
В некоторых случаях каждое событие из третьего набора событий связано с набором атрибутов (например, порядковый номер, номер поколения, номер раунда, принятый номер и/или метка времени и т. д.). Результат протокола может содержать значение для каждого атрибута из набора атрибутов для каждого события из третьего набора событий. Значение для первого атрибута из набора атрибутов может включать первое числовое значение, и значение для второго атрибута из набора атрибутов может включать двоичное значение, связанное с первым числовым значением. Двоичное значение для второго атрибута (например, значение приращения раунда) для события из третьего набора событий может быть основано на том, соответствует ли взаимосвязь между этим событием и четвертым набором событий, связанным с этим событием, некоторому критерию (например, количеству событий, строго идентифицированных этим событием). Каждое событие из четвертого набора событий (1) является предком события из третьего набора событий и (2) связано с первым общим атрибутом, как и остальные события из четвертого набора событий (например, общим номером раунда, указанием о том, что представляет собой первое событие раунда R и т. п.). Первый общий атрибут может являться индикатором первого случая, в котором событие, определенное каждым вычислительным устройством из набора вычислительных устройств, связано с первым конкретным значением (например, указанием о том, что представляет собой первое событие раунда R и т. п.).In some cases, each event in the third set of events is associated with a set of attributes (eg, sequence number, generation number, round number, received number and/or timestamp, etc.). The protocol result may contain a value for each attribute in the attribute set for each event in the third event set. The value for the first attribute from the attribute set may include a first numeric value, and the value for the second attribute from the attribute set may include a binary value associated with the first numeric value. A binary value for a second attribute (e.g., round increment value) for an event from a third set of events may be based on whether the relationship between that event and the fourth set of events associated with that event meets some criterion (e.g., the number of events strongly identified this event). Each event in the fourth event set (1) is an ancestor of the event in the third event set, and (2) is associated with the first common attribute, as are the rest of the events in the fourth event set (e.g., a general round number, an indication of what constitutes the first event round R, etc.). The first general attribute may be indicative of the first instance in which an event identified by each computing device in the set of computing devices is associated with a first specific value (eg, an indication of what constitutes the first event of round R, etc.).
Значение для третьего атрибута (например, принятого номера раунда) из набора атрибутов может включать второе числовое значение, основанное на взаимосвязи между событием и пятым набором событий, связанным с событием. Каждое событие из пятого набора событий является потомком события и связано со вторым общим атрибутом (например, является известным), как и остальные события из пятого набора событий. Второй общий атрибут может быть связан с (1) третьим общим атрибутом (например, указанием о том, что представляет собой первое событие раунда R или свидетеля), который является указанием о первом случае, в котором второе событие, определенное каждым вычислительным устройством из набора вычислительных устройств, связано со вторым конкретным значением, отличным от первого конкретного значения, и (2) результатом, основанным на наборе указаний. Каждое указание из набора указаний может быть связано с событием из шестого набора событий. Каждое событие из шестого набора событий может быть связано с четвертым общим атрибутом, который является указанием о первом случае, в котором третье событие, определенное каждым вычислительным устройством из набора вычислительных устройств, связано с третьим конкретным значением, отличным от первого конкретного значения и второго конкретного значения. В некоторых случаях первое конкретное значение является первым целым числом (например, первым номером раунда R), второе конкретное значение является вторым целым числом (например, вторым номером раунда, R+n), превышающим первое целое число, и третье конкретное значение является третьим целым числом (например, третьим номером раунда, R+n+m), превышающим второе целое число.The value for the third attribute (eg, received round number) from the attribute set may include a second numeric value based on the relationship between the event and the fifth set of events associated with the event. Each event in the fifth event set is a child of an event and is associated with a second common attribute (eg, known), like the rest of the events in the fifth event set. The second common attribute may be associated with (1) a third common attribute (e.g., an indication of what constitutes the first event of an R round or witness), which is an indication of the first occurrence in which the second event specified by each computing device in the set of computing devices, is associated with a second specific value other than the first specific value, and (2) a result based on a set of indications. Each indication from the set of indications may be associated with an event from the sixth set of events. Each event in the sixth event set may be associated with a fourth common attribute, which is an indication of the first occurrence in which the third event identified by each computing device in the computing device set is associated with a third specific value other than the first specific value and the second specific value. . In some cases, the first specific value is the first integer (for example, the first round number R), the second specific value is the second integer (for example, the second round number, R+n) greater than the first integer, and the third specific value is the third integer. number (for example, the third round number, R+n+m) greater than the second integer.
В некоторых вариантах осуществления устройство содержит память и процессор. Память содержит экземпляр распределенной базы данных на первом вычислительном устройстве, приспособленном для включения в набор вычислительных устройств, который реализует распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Процессор функционально соединен с памятью, хранящей экземпляр распределенной базы данных, и выполнен с возможностью приема сигнала, представляющего событие, связанное с набором событий. Процессор выполнен с возможностью идентификации порядка, связанного с набором событий, на основе по меньшей мере результата протокола. Процессор выполнен с возможностью сохранения в экземпляре распределенной базы данных порядка, связанного с набором событий.In some embodiments, the implementation of the device contains a memory and a processor. The memory contains an instance of the distributed database on a first computing device adapted to be included in a set of computing devices that implements the distributed database via a network operatively connected to the set of computing devices. The processor is operatively coupled to a memory storing an instance of the distributed database and configured to receive a signal representing an event associated with the set of events. The processor is configured to identify the order associated with the set of events based on at least the result of the protocol. The processor is configured to store in the distributed database instance the order associated with the set of events.
В некоторых вариантах осуществления энергонезависимый считываемый процессором носитель хранит код, представляющий команды, которые должны быть исполнены процессором для приема сигнала, представляющего событие, связанное с набором событий, и идентификации порядка, связанного с набором событий, на основе раунда, связанного с каждым событием из набора событий, и указания, указывающего на то, когда необходимо наращивать раунд, связанный с каждым событием. Код дополнительно содержит код, приводящий к сохранению процессором в экземпляре распределенной базы данных на первом вычислительном устройстве, приспособленном для включения в набор вычислительных устройств, который реализует распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств, порядка, связанного с набором событий. Экземпляр распределенной базы данных функционально связан с процессором.In some embodiments, a non-volatile processor-readable medium stores code representing instructions to be executed by the processor to receive a signal representing an event associated with a set of events and identify the order associated with the set of events based on the round associated with each event in the set. events, and an indication indicating when to increment the round associated with each event. The code further comprises code for causing the processor in the distributed database instance on a first computing device adapted to be included in a set of computing devices that implements the distributed database via a network operably connected to the set of computing devices to store the order associated with the set of events. The distributed database instance is operatively coupled to the processor.
В некоторых вариантах осуществления экземпляр распределенной базы данных на первом вычислительном устройстве может быть выполнен с возможностью включения в набор вычислительных устройств, который реализует распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Первое вычислительное устройство сохраняет множество транзакций в экземпляре распределенной базы данных. Модуль конвергенции базы данных может быть реализован в памяти или процессоре первого вычислительного устройства. Модуль конвергенции базы данных может быть функционально связан с экземпляром распределенной базы данных. Модуль конвергенции базы данных может быть выполнен с возможностью определения в первый момент времени первого события, связанного с первым набором событий. Каждое событие из первого набора событий представляет собой последовательность байтов и связано с (1) набором транзакций из множества наборов транзакций и (2) порядком, связанным с набором транзакций. Каждая транзакция из набора транзакций представляет собой транзакцию из множества транзакций. Модуль конвергенции базы данных может быть выполнен с возможностью приема, во второй момент времени после первого момента времени и со второго вычислительного устройства из набора вычислительных устройств, второго события, (1) определенного вторым вычислительным устройством и (2) связанного со вторым набором событий. Модуль конвергенции базы данных может быть выполнен с возможностью определения третьего события, связанного с первым событием и вторым событием. Модуль конвергенции базы данных может быть выполнен с возможностью идентификации порядка, связанного с третьим набором событий, на основе по меньшей мере первого набора событий и второго набора событий. Каждое событие из третьего набора событий представляет собой событие из по меньшей мере одного из первого набора событий или второго набора событий. Модуль конвергенции базы данных может быть выполнен с возможностью идентификации порядка, связанного с множеством транзакций, на основе по меньшей мере (1) порядка, связанного с третьим набором событий, и (2) порядка, связанного с каждым набором транзакций из множества наборов транзакций. Модуль конвергенции базы данных может быть выполнен с возможностью сохранения в экземпляре распределенной базы данных порядка, связанного со множеством транзакций, сохраненных на первом вычислительном устройстве.In some embodiments, an instance of the distributed database on a first computing device may be configured to be included in a set of computing devices that implements the distributed database via a network operatively coupled to the set of computing devices. The first computing device stores a plurality of transactions in a distributed database instance. The database convergence module may be implemented in the memory or processor of the first computing device. The database convergence module may be operatively associated with a distributed database instance. The database convergence module may be configured to determine at a first time a first event associated with the first set of events. Each event from the first set of events is a sequence of bytes and is associated with (1) a set of transactions from the set of transactions and (2) an order associated with the set of transactions. Each transaction in the set of transactions is a transaction in the set of transactions. The database convergence module may be configured to receive, at a second time after the first time and from a second computing device of the computing device set, a second event (1) determined by the second computing device and (2) associated with the second set of events. The database convergence module may be configured to determine a third event associated with the first event and the second event. The database convergence module may be configured to identify an order associated with the third set of events based on at least the first set of events and the second set of events. Each event from the third set of events is an event from at least one of the first set of events or the second set of events. The database convergence module may be configured to identify an order associated with a plurality of transactions based on at least (1) an order associated with a third set of events and (2) an order associated with each transaction set of the plurality of transaction sets. The database convergence module may be configured to store in the distributed database instance an order associated with a plurality of transactions stored on the first computing device.
В некоторых вариантах осуществления экземпляр распределенной базы данных на первом вычислительном устройстве может быть выполнен с возможностью включения в набор вычислительных устройств, который реализует распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Модуль конвергенции базы данных может быть реализован в памяти или процессоре первого вычислительного устройства. Модуль конвергенции базы данных может быть выполнен с возможностью определения в первый момент времени первого события, связанного с первым набором событий. Каждое событие из первого набора событий представляет собой последовательность байтов. Модуль конвергенции базы данных может быть выполнен с возможностью приема, во второй момент времени после первого момента времени и со второго вычислительного устройства из набора вычислительных устройств, второго события, (1) определенного вторым вычислительным устройством и (2) связанного со вторым набором событий. Каждое событие из второго набора событий представляет собой последовательность байтов. Модуль конвергенции базы данных может быть выполнен с возможностью определения третьего события, связанного с первым событием и вторым событием. Модуль конвергенции базы данных может быть выполнен с возможностью идентификации порядка, связанного с третьим набором событий, на основе по меньшей мере первого набора событий и второго набора событий. Каждое событие из третьего набора событий представляет собой событие из по меньшей мере одного из первого набора событий или второго набора событий. Модуль конвергенции базы данных может быть выполнен с возможностью сохранения в экземпляре распределенной базы данных порядка, связанного с третьим набором событий.In some embodiments, an instance of the distributed database on a first computing device may be configured to be included in a set of computing devices that implements the distributed database via a network operatively coupled to the set of computing devices. The database convergence module may be implemented in the memory or processor of the first computing device. The database convergence module may be configured to determine at a first time a first event associated with the first set of events. Each event from the first set of events is a sequence of bytes. The database convergence module may be configured to receive, at a second time after the first time and from a second computing device of the computing device set, a second event (1) determined by the second computing device and (2) associated with the second set of events. Each event from the second set of events is a sequence of bytes. The database convergence module may be configured to determine a third event associated with the first event and the second event. The database convergence module may be configured to identify an order associated with the third set of events based on at least the first set of events and the second set of events. Each event from the third set of events is an event from at least one of the first set of events or the second set of events. The database convergence module may be configured to store in the distributed database instance the order associated with the third set of events.
В некоторых вариантах осуществления данные, связанные с первой транзакцией, могут быть приняты на первом вычислительном устройстве из набора вычислительных устройств, которые реализуют распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Каждое вычислительное устройство из набора вычислительных устройств имеет отдельный экземпляр распределенной базы данных. Порядковое значение первой транзакции, связанное с первой транзакцией, может быть определено в первый момент времени. Данные, связанные со второй транзакцией, могут быть приняты со второго вычислительного устройства из набора вычислительных устройств. Набор транзакций может быть сохранен в экземпляре распределенной базы данных на первом вычислительном устройстве. Набор транзакций может включать по меньшей мере первую транзакцию и вторую транзакцию. Набор порядковых значений транзакций, включающий по меньшей мере порядковое значение первой транзакции и порядковое значение второй транзакции, может быть выбран во второй момент времени после первого момента времени. Порядковое значение второй транзакции может быть связано со второй транзакцией. Переменная состояния базы данных может быть определена на основе по меньшей мере набора транзакций и набора порядковых значений транзакций.In some embodiments, data associated with a first transaction may be received on a first computing device from a set of computing devices that implement a distributed database via a network operatively coupled to the set of computing devices. Each computing device in the set of computing devices has a separate distributed database instance. The ordinal value of the first transaction associated with the first transaction can be determined at the first time. The data associated with the second transaction may be received from a second computing device of the set of computing devices. The set of transactions may be stored in a distributed database instance on the first computing device. The set of transactions may include at least a first transaction and a second transaction. A set of transaction ordinal values, including at least a first transaction ordinal value and a second transaction ordinal value, may be selected at a second time point after the first time point. The ordinal value of the second transaction may be associated with the second transaction. The database state variable may be determined based on at least a set of transactions and a set of transaction ordinal values.
В некоторых вариантах осуществления способ включает прием первого события из экземпляра распределенной базы данных на первом вычислительном устройстве из набора вычислительных устройств, которые реализуют распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Способ дополнительно включает определение третьего события на основе первого события и второго события. Третье событие связано с набором событий. Порядковое значение может быть определено для четвертого события на основе по меньшей мере частично общей величины долей, связанной с набором событий, соответствующей критерию величины доли. Порядковое значение может быть сохранено в экземпляре распределенной базы данных на втором вычислительном устройстве из набора вычислительных устройств. В некоторых вариантах осуществления способ дополнительно включает вычисление общей величины долей на основе суммы набора величин долей. Каждая величина доли из набора величин долей связана с экземпляром распределенной базы данных, который определил событие из набора событий.In some embodiments, the method includes receiving a first event from a distributed database instance on a first computing device of a set of computing devices that implement the distributed database via a network operably coupled to the set of computing devices. The method further includes determining a third event based on the first event and the second event. The third event is associated with a set of events. The ordinal value may be determined for the fourth event based at least in part on the total stake value associated with the set of events corresponding to the stake size criterion. The ordinal value may be stored in a distributed database instance on a second computing device of the set of computing devices. In some embodiments, the method further includes calculating the total share value based on the sum of the set of share values. Each share value in the share value set is associated with a distributed database instance that determined the event in the event set.
В некоторых вариантах осуществления способ включает прием первого события из экземпляра распределенной базы данных на первом вычислительном устройстве из набора вычислительных устройств, которые реализуют распределенную базу данных посредством сети, функционально соединенной с набором вычислительных устройств. Способ дополнительно включает определение третьего события на основе первого события и второго события и определение первого набора событий на основе по меньшей мере частично третьего события. Каждое событие из первого набора событий a) идентифицируется вторым набором событий и b) связывается с первым номером раунда. Общая величина долей, связанная со вторым набором событий, удовлетворяет первому критерию величины доли, и каждое событие из второго набора событий (1) определяется отличным экземпляром распределенной базы данных и (2) идентифицируется третьим событием. Номер раунда для третьего события может быть вычислен на основе определения того, что сумма величин долей, связанных с каждым событием из первого набора событий, удовлетворяет второму критерию величины доли. Номер раунда для первого события соответствует второму номеру раунда, превышающему первый номер раунда. Способ дополнительно включает определение третьего набора событий на основе третьего события. Каждое событие из третьего набора событий a) идентифицируется четвертым набором событий, включающим третье событие, и b) представляет собой событие из первого набора событий. Каждое событие из четвертого набора событий определяется отличным экземпляром распределенной базы данных, и общая величина долей, связанная с четвертым набором событий, удовлетворяет третьему критерию величины доли. Порядковое значение затем определяется для четвертого события на основе общей величины долей, связанной с третьим набором событий, удовлетворяющей четвертому критерию величины доли, и порядковое значение может быть сохранено в экземпляре распределенной базы данных на втором вычислительном устройстве.In some embodiments, the method includes receiving a first event from a distributed database instance on a first computing device of a set of computing devices that implement the distributed database via a network operably coupled to the set of computing devices. The method further includes determining a third event based on the first event and the second event, and determining the first set of events based at least in part on the third event. Each event from the first set of events is a) identified by the second set of events and b) associated with the first round number. The total share value associated with the second set of events satisfies the first share value criterion, and each event in the second set of events is (1) identified by a different distributed database instance and (2) identified by a third event. The round number for the third event may be calculated based on determining that the sum of the stake values associated with each event from the first set of events satisfies the second stake size criterion. The round number for the first event corresponds to the second round number greater than the first round number. The method further includes determining a third set of events based on the third event. Each event from the third event set is a) identified by a fourth event set including the third event, and b) is an event from the first event set. Each event in the fourth event set is determined by a different distributed database instance, and the total stake value associated with the fourth event set satisfies the third stake size criterion. An ordinal value is then determined for the fourth event based on the total stakes associated with the third set of events satisfying the fourth stakes criterion, and the ordinal value can be stored in the distributed database instance on the second computing device.
В некоторых вариантах осуществления набор величин долей включает величину доли, (1) связанную с каждым экземпляром распределенной базы данных, который определяет событие из второго набора событий, и (2) пропорциональную сумме криптовалюты, связанной с этим экземпляром распределенной базы данных. Общая величина долей, связанная со вторым набором событий, основана на сумме величин долей из набора величин долей.In some embodiments, the set of stake values includes a stake value (1) associated with each distributed database instance that determines an event from the second set of events, and (2) proportional to the amount of cryptocurrency associated with that distributed database instance. The total stake value associated with the second set of events is based on the sum of the stake values from the stake value set.
В некоторых вариантах осуществления по меньшей мере один из первого критерия величины доли, второго критерия величины доли, третьего критерия величины доли или четвертого критерия величины доли определяют на основе общей величины долей распределенной базы данных. Более того, в некоторых вариантах осуществления набор вычислительных устройств, которые реализуют распределенную базу данных, в первый момент времени связывается с набором доверенных субъектов, и набор вычислительных устройств, которые реализуют распределенную базу данных, во второй момент времени после первого момента времени связывается с набором субъектов, включающим субъекты не из набора доверенных субъектов.In some embodiments, at least one of the first share value criterion, the second share value criterion, the third share value criterion, or the fourth share value criterion is determined based on the total share value of the distributed database. Moreover, in some embodiments, a set of computing devices that implement a distributed database is associated with a set of trusted entities at a first time, and a set of computing devices that implement a distributed database is associated with a set of entities at a second time after the first time. A that includes subjects not in the set of trusted subjects.
В контексте настоящего документа модуль может представлять собой, например, любой узел и/или набор функционально связанных электрических компонентов, связанных с выполнением конкретной функции, и может содержать, например, память, процессор, электрические каналы связи, оптические соединители, программное обеспечение (исполняемое в аппаратном обеспечении) и/или т.п.In the context of this document, a module may be, for example, any node and/or set of functionally related electrical components associated with the performance of a specific function, and may contain, for example, memory, processor, electrical communication channels, optical connectors, software (executable in hardware) and/or the like.
В контексте настоящего описания форма единственного числа включает ссылку определяемые объекты во множественном числе, если в контексте явно не указано иное. Таким образом, например, предполагается, что термин «модуль» означает один модуль или комбинацию модулей. Например, предполагается, что «сеть» означает одну сеть или комбинацию сетей.In the context of the present description, the singular form includes the reference of the designated objects in the plural, unless the context clearly indicates otherwise. Thus, for example, the term "module" is intended to mean one module or a combination of modules. For example, "network" is intended to mean one network or combination of networks.
На фиг. 1 показана структурная схема высокого уровня, на которой проиллюстрирована система 100 распределенной базы данных согласно одному варианту осуществления. На фиг. 1 проиллюстрирована распределенная база 100 данных, реализованная на четырех вычислительных устройствах (вычислительное устройство 110, вычислительное устройство 120, вычислительное устройство 130 и вычислительное устройство 140), но следует понимать, что распределенная база 100 данных может использовать набор из любого количества вычислительных устройств, включая вычислительные устройства, не показанные на фиг. 1. Сеть 105 может представлять собой сеть любого типа (например, локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), виртуальную сеть, телекоммуникационную сеть), реализованную в виде проводной сети и/или беспроводной сети и используемую для функционального соединения вычислительных устройств 110, 120, 130, 140. Как более подробно описано в настоящем документе, в некоторых вариантах осуществления, например, вычислительные устройства представляют собой персональные компьютеры, соединенные друг с другом посредством поставщика услуг Интернет (Internet Service Provider, ISP) и Интернета (например, сети 105). В некоторых вариантах осуществления соединение может быть установлено посредством сети 105 между любыми двумя вычислительными устройствами 110, 120, 130, 140. Как показано на фиг. 1, например, соединение может быть установлено между вычислительным устройством 110 и любым из вычислительного устройства 120, вычислительного устройства 130 или вычислительного устройства 140.In FIG. 1 is a high-level block diagram illustrating a distributed
В некоторых вариантах осуществления вычислительные устройства 110, 120, 130, 140 могут осуществлять связь друг с другом (например, отправлять данные на и/или принимать данные с) и с сетью посредством промежуточных сетей и/или альтернативных сетей (не показаны на фиг. 1). Такие промежуточные сети и/или альтернативные сети могут принадлежать к тому же типу и/или другому типу сети в сравнении с сетью 105. In some embodiments, computing devices 110, 120, 130, 140 may communicate with each other (eg, send data to and/or receive data from) and with the network via intermediate networks and/or alternate networks (not shown in FIG. 1 ). Such intermediate networks and/or alternative networks may be of the same type and/or a different type of network compared to network 105.
Каждое вычислительное устройство 110, 120, 130, 140 может представлять собой устройство любого типа, выполненное с возможностью отправки данных по сети 105, чтобы отправлять и/или принимать данные с одного или более других вычислительных устройств. Примеры вычислительных устройств показаны на фиг. 1. Вычислительное устройство 110 содержит память 112, процессор 111 и устройство 113 вывода. Память 112 может представлять собой, например, оперативное запоминающее устройство (RAM), буфер памяти, жесткий диск, базу данных, стираемое программируемое постоянное запоминающее устройство (EPROM), электрически стираемое программируемое постоянное запоминающее устройство (EEPROM), постоянное запоминающее устройство (ROM) и/или т. д. В некоторых вариантах осуществления память 112 вычислительного устройства 110 содержит данные, связанные с экземпляром распределенной базы данных (например, экземпляром 114 распределенной базы данных). В некоторых вариантах осуществления память 112 хранит команды, приводящие к выполнению процессором модулей, процессов и/или функций, связанных с отправкой на другой экземпляр и/или приемом с другого экземпляра распределенной базы данных (например, экземпляра 124 распределенной базы данных на вычислительном устройстве 120) записи события синхронизации, записи предыдущих событий синхронизации с другими вычислительными устройствами, порядка событий синхронизации, значения для параметра (например, поля базы данных, количественно характеризующего транзакцию, поля базы данных, количественно характеризующего порядок, в котором происходят события, и/или любого другого подходящего поля, для которого значение может быть сохранено в базе данных).Each computing device 110, 120, 130, 140 may be any type of device configured to send data over network 105 to send and/or receive data from one or more other computing devices. Examples of computing devices are shown in FIG. 1. Computing device 110 includes a memory 112, a processor 111, and an output device 113. The memory 112 may be, for example, random access memory (RAM), memory buffer, hard disk, database, erasable programmable read only memory (EPROM), electrically erasable program read only memory (EEPROM), read only memory (ROM), and /or etc. In some embodiments, memory 112 of computing device 110 contains data associated with a distributed database instance (eg, distributed database instance 114). In some embodiments, memory 112 stores instructions that cause the processor to execute modules, processes, and/or functions associated with sending to and/or receiving from another distributed database instance (e.g., distributed database instance 124 on computing device 120) records of a sync event, records of previous sync events with other computing devices, order of sync events, value for a parameter (e.g., a database field that quantifies a transaction, a database field that quantifies the order in which events occur, and/or any other appropriate field for which a value can be stored in the database).
Экземпляр 114 распределенной базы данных может, например, быть выполнен с возможностью проведений операций с данными, включая сохранение, модификацию и/или удаление данных. В некоторых вариантах осуществления экземпляр 114 распределенной базы данных может представлять собой реляционную базу данных, объектную базу данных, пост-реляционную базу данных и/или базу данных любого другого подходящего типа. Например, экземпляр 114 распределенной базы данных может хранить данные, относящиеся к любой конкретной функции и/или области. Например, экземпляр 114 распределенной базы данных может хранить финансовые транзакции (например, пользователя вычислительного устройства 110), включая значение и/или вектор значений, относящиеся к истории владения конкретным финансовым инструментом. В целом, вектор может представлять собой любой набор значений для параметра, и параметр может представлять собой любые объект данных и/или поле базы данных, которые могут принимать разные значения. Таким образом, экземпляр 114 распределенной базы данных может иметь ряд параметров и/или полей, каждый из которых связан с вектором значений. Вектор значений используется для определения фактического значения для параметра и/или поля в этом экземпляре 114 базы данных.The distributed database instance 114 may, for example, be configured to perform data operations, including storing, modifying, and/or deleting data. In some embodiments, distributed database instance 114 may be a relational database, an object database, a post-relational database, and/or any other suitable type of database. For example, distributed database instance 114 may store data related to any particular function and/or area. For example, distributed database instance 114 may store financial transactions (eg, of a user of computing device 110), including a value and/or vector of values related to the ownership history of a particular financial instrument. In general, a vector can be any set of values for a parameter, and a parameter can be any data object and/or database field that can take on different values. Thus, distributed database instance 114 may have a number of parameters and/or fields, each of which is associated with a vector of values. The value vector is used to determine the actual value for the parameter and/or field in this instance 114 of the database.
В некоторых случаях экземпляр 114 распределенной базы данных может также быть использован для реализации других структур данных, таких как набор пар (ключ, значение). Транзакцией, записанной экземпляром 114 распределенной базы данных, может быть, например, добавление, удаление или модификация пары (ключ, значение) в наборе пар (ключ, значение). In some cases, distributed database instance 114 may also be used to implement other data structures, such as a set of (key, value) pairs. The transaction recorded by the distributed database instance 114 may be, for example, adding, deleting, or modifying a (key, value) pair in a set of (key, value) pairs.
В некоторых случаях в систему 100 распределенной базы данных или в любой из экземпляров 114, 124, 134, 144 распределенной базы данных может быть отправлен запрос. Например, запрос может состоять из ключа, и результат, возвращаемый системой 100 распределенной базы данных или экземплярами 114, 124, 134, 144 распределенной базы данных, может представлять собой значение, связанное с ключом. В некоторых случаях система 100 распределенной базы данных или любой из экземпляров 114, 124, 134, 144 распределенной базы данных могут быть также модифицированы посредством транзакции. Например, транзакция для модификации базы данных может содержать цифровую подпись, выполненную стороной, авторизующей транзакцию модификации.In some cases, a query may be sent to the distributed
Система 100 распределенной базы данных может быть использована для многих целей, таких как, например, хранение атрибутов, связанных с различными пользователями в распределенной системе идентификации. Например, такая система может использовать идентификатор пользователя в качестве «ключа», и список атрибутов, связанных с пользователями, в качестве «значения». В некоторых случаях идентификатор может представлять собой криптографический открытый ключ с соответствующим закрытым ключом, известным этому пользователю. Каждый атрибут может, например, быть подписан с помощью цифровой подписи органом, имеющим право на утверждение этого атрибута. Каждый атрибут может быть также, например, зашифрован с использованием открытого ключа, связанного с человеком или группой людей, которые обладают правом на считывание атрибута. Некоторые ключи или значения могут также иметь прикрепленный к ним список открытых ключей сторон, которые уполномочены модифицировать или удалять ключи или значения.The distributed
В другом примере экземпляр 114 распределенной базы данных может хранить данные, относящиеся к массовым многопользовательским играм (Massively Multiplayer Games, MMG), такие как текущее состояние и принадлежность игровых предметов. В некоторых случаях экземпляр 114 распределенной базы данных может быть реализован в вычислительном устройстве 110, как показано на фиг. 1. В других случаях вычислительное устройство может иметь доступ к экземпляру распределенной базы данных (например, по сети), но он не реализован в вычислительном устройстве (не показано на фиг. 1).In another example, distributed database instance 114 may store data related to Massively Multiplayer Games (MMG), such as the current state and ownership of game items. In some cases, distributed database instance 114 may be implemented on computing device 110, as shown in FIG. 1. In other cases, the computing device may have access to a distributed database instance (eg, over a network), but it is not implemented in the computing device (not shown in FIG. 1).
Процессор 111 вычислительного устройства 110 может представлять собой любое подходящее устройство обработки, выполненное с возможностью запуска и/или выполнения экземпляра 114 распределенной базы данных. Например, процессор 111 может быть выполнен с возможностью обновления экземпляра 114 распределенной базы данных в ответ на прием сигнала с вычислительного устройства 120 и/или вызова отправки сигнала на вычислительное устройство 120, как более подробно описано в настоящем документе. Более конкретно, как более подробно описано в настоящем документе, процессор 111 может быть выполнен с возможностью выполнения модулей, функций и/или процессов для обновления экземпляра 114 распределенной базы данных в ответ на прием события синхронизации, связанного с транзакцией, с другого вычислительного устройства, записи, связанной с порядком событий синхронизации, и/или т.п. В других вариантах осуществления процессор 111 может быть выполнен с возможностью выполнения модулей, функций и/или процессов для обновления экземпляра 114 распределенной базы данных в ответ на прием значения для параметра, сохраненного в другом экземпляре распределенной базы данных (например, экземпляре 124 распределенной базы данных на вычислительном устройстве 120), и/или вызова отправки значения для параметра, сохраненного в экземпляре 114 распределенной базы данных на вычислительном устройстве 110, на вычислительное устройство 120. В некоторых вариантах осуществления процессор 111 может представлять собой процессор общего назначения, программируемую пользователем вентильную матрицу (FPGA), интегральную схему специального назначения (ASIC), процессор цифровой обработки сигналов (DSP) и/или т.п.Processor 111 of computing device 110 may be any suitable processing device capable of starting and/or executing distributed database instance 114. For example, processor 111 may be configured to update distributed database instance 114 in response to receiving a signal from computing device 120 and/or causing a signal to be sent to computing device 120, as described in more detail herein. More specifically, as described in more detail herein, processor 111 may be configured to execute modules, functions, and/or processes to update distributed database instance 114 in response to receiving a transaction-related synchronization event from another computing device, write associated with the order of synchronization events, and/or the like. In other embodiments, processor 111 may be configured to execute modules, functions, and/or processes to update distributed database instance 114 in response to receiving a value for a parameter stored in another distributed database instance (e.g., distributed database instance 124 on computing device 120), and/or causing a value for a parameter stored in a distributed database instance 114 on computing device 110 to be sent to computing device 120. In some embodiments, processor 111 may be a general purpose processor, field programmable gate array (FPGA) ), an application-specific integrated circuit (ASIC), a digital signal processor (DSP), and/or the like.
Дисплей 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 может содержать клавиатуру, мышь и/или т.п.The display 113 may be any suitable display such as, for example, a liquid crystal display (LCD), a cathode ray tube (CRT) display, or the like. In other embodiments, any of the computing devices 110, 120, 130, 140 comprise another output device in addition to or instead of the displays 113, 123, 133, 143. For example, any of the computing devices 110, 120, 130, 140 may include an audio output device (eg, a speaker), a tactile output device, and/or the like. In still other embodiments, any of the computing devices 110, 120, 130, 140 includes an input device instead of or in addition to the displays 113, 123, 133, 143. For example, any of the computing devices 110, 120, 130, 140 may include a keyboard, mouse, and/or the like.
Вычислительное устройство 120 имеет процессор 121, память 122 и дисплей 123, которые могут быть конструктивно и/или функционально подобны процессору 111, памяти 112 и дисплею 113 соответственно. Также экземпляр 124 распределенной базы данных может быть структурно и/или функционально подобен экземпляру 114 распределенной базы данных.Computing device 120 has a processor 121, memory 122, and display 123, which may be structurally and/or functionally similar to processor 111, memory 112, and display 113, respectively. Also, distributed database instance 124 may be structurally and/or functionally similar to distributed database instance 114.
Вычислительное устройство 130 имеет процессор 131, память 132 и дисплей 133, которые могут быть конструктивно и/или функционально подобны процессору 111, памяти 112 и дисплею 113 соответственно. Также экземпляр 134 распределенной базы данных может быть структурно и/или функционально подобен экземпляру 114 распределенной базы данных.Computing device 130 has a processor 131, memory 132, and display 133, which may be structurally and/or functionally similar to processor 111, memory 112, and display 113, respectively. Also, distributed database instance 134 may be structurally and/or functionally similar to distributed database instance 114.
Вычислительное устройство 140 имеет процессор 141, память 142 и дисплей 143, которые могут быть конструктивно и/или функционально подобны процессору 111, памяти 112 и дисплею 113 соответственно. Также экземпляр 144 распределенной базы данных может быть структурно и/или функционально подобен экземпляру 114 распределенной базы данных.Computing device 140 has a processor 141, memory 142, and display 143, which may be structurally and/or functionally similar to processor 111, memory 112, and display 113, respectively. Also, distributed database instance 144 may be structurally and/or functionally similar to distributed database instance 114.
Хотя вычислительные устройства 110, 120, 130, 140 показаны как подобные друг другу, каждое вычислительное устройство системы 100 распределенной базы данных может отличаться от других вычислительных устройств. Каждое вычислительное устройство 110, 120, 130, 140 системы 100 распределенной базы данных может представлять собой любое из, например, вычислительного элемента (например, персонального вычислительного устройства, такого как настольный компьютер, портативный компьютер и т. д.), мобильного телефона, карманного персонального компьютера (PDA) и т. д. Например, вычислительное устройство 110 может представлять собой настольный компьютер, вычислительное устройство 120 может представлять собой смартфон, и вычислительное устройство 130 может представлять собой сервер.Although the computing devices 110, 120, 130, 140 are shown as similar to each other, each computing device of the distributed
В некоторых вариантах осуществления одна или более частей вычислительных устройств 110, 120, 130, 140 могут включать аппаратный модуль (например, процессор цифровой обработки сигналов (DSP), программируемую пользователем вентильную матрицу (FPGA)) и/или программный модуль (например, модуль компьютерного кода, хранящегося в памяти и/или исполняемого процессором). В некоторых вариантах осуществления одна или более функций, связанных с вычислительными устройствами 110, 120, 130, 140 (например, функции, связанные с процессорами 111, 121, 131, 141), могут быть включены в один или более модулей (см., например, фиг. 2).In some embodiments, one or more portions of computing devices 110, 120, 130, 140 may include a hardware module (e.g., a digital signal processor (DSP), a field programmable gate array (FPGA)) and/or a software module (e.g., a computer computer module). code stored in memory and/or executed by the processor). In some embodiments, one or more functions associated with computing devices 110, 120, 130, 140 (eg, functions associated with processors 111, 121, 131, 141) may be included in one or more modules (see, for example, , Fig. 2).
Свойства системы 100 распределенной базы данных, включая свойства вычислительных устройств (например, вычислительных устройств 110, 120, 130, 140), количество вычислительных устройств, и сети 105 могут быть выбраны любыми способами. В некоторых случаях свойства системы 100 распределенной базы данных могут быть выбраны администратором системы 100 распределенной базы данных. В других случаях свойства системы 100 распределенной базы данных могут быть совместно выбраны пользователями системы 100 распределенной базы данных.Properties of distributed
Поскольку используется система 100 распределенной базы данных, среди вычислительных устройств 110, 120, 130 и 140 не назначен лидер. В частности, ни одно из вычислительных устройств 110, 120, 130 или 140 не идентифицируется и/или не выбирается в качестве лидера для разрешения конфликтов между значениями, хранящимися в экземплярах 111, 121, 131, 141 распределенной базы данных вычислительных устройств 110, 120, 130, 140. Вместо этого, с использованием процессов синхронизации событий, процессов голосования и/или способов, описанных в настоящем документе, вычислительные устройства 110, 120, 130, 140 могут совместно согласовывать значение для параметра.Because the distributed
Отсутствие лидера в системе распределенной базы данных повышает безопасность системы распределенной базы данных. В частности, при наличии лидера существует единая точка атаки и/или сбоя. Если вредоносное программное обеспечение заражает лидера и/или значение для параметра на экземпляре распределенной базы данных лидера изменяют со злым умыслом, ошибочное и/или неправильное значение распространяется по другим экземплярам распределенной базы данных. Однако в системе без лидера нет единой точки атаки и/или сбоя. В частности, если параметр в экземпляре распределенной базы данных системы без лидера содержит значение, значение изменится после того, как этот экземпляр распределенной базы данных обменяется значениями с другими экземплярами распределенной базы данных в системе, как более подробно описано в настоящем документе. Дополнительно системы распределенной базы данных без лидера, описанные в настоящем документе, повышают скорость конвергенции, уменьшая при этом объем данных, передаваемых между устройствами, как более подробно описано в настоящем документе.The absence of a leader in a distributed database system enhances the security of a distributed database system. In particular, in the presence of a leader, there is a single point of attack and/or failure. If malware infects the leader and/or the value for a parameter on the leader's distributed database instance is maliciously modified, the erroneous and/or incorrect value is propagated to other distributed database instances. However, in a leaderless system, there is no single point of attack and/or failure. In particular, if a parameter in a distributed database instance of a leaderless system contains a value, the value will change after that distributed database instance exchanges values with other distributed database instances in the system, as described in more detail herein. Additionally, the leaderless distributed database systems described herein improve convergence speed while reducing the amount of data transferred between devices, as described in more detail herein.
На фиг. 2 проиллюстрировано вычислительное устройство 200 системы распределенной базы данных (например, системы 100 распределенной базы данных) согласно одному варианту осуществления. В некоторых вариантах осуществления вычислительное устройство 200 может быть подобным вычислительным устройствам 110, 120, 130, 140, показанным и описанным в отношении фиг. 1. Вычислительное устройство 200 содержит процессор 210 и память 220. Процессор 210 и память 220 функционально связаны друг с другом. В некоторых вариантах осуществления процессор 210 и память 220 могут быть подобными процессору 111 и памяти 112, соответственно, подробно описанным в отношении фиг. 1. Как показано на фиг. 2, процессор 210 содержит модуль 211 конвергенции базы данных и модуль 210 связи, и память 220 содержит экземпляр 221 распределенной базы данных. Модуль 212 связи позволяет вычислительному устройству 200 осуществлять связь с другими вычислительными устройствами (например, отправлять данные на них и/или принимать данные с них). В некоторых вариантах осуществления модуль 212 связи (не показан на фиг. 1) позволяет вычислительному устройству 110 осуществлять связь с вычислительными устройствами 120, 130, 140. Модуль 210 связи может содержать и/или обеспечивать, например, контроллер сетевого интерфейса (NIC), беспроводное соединение, проводной порт и/или т.п. По существу, модуль 210 связи может устанавливать и/или поддерживать сеанс связи между вычислительным устройством 200 и другим устройством (например, посредством сети, такой как сеть 105, представленная на фиг. 1, или Интернет (не показано)). Подобным образом модуль 210 связи может позволять вычислительному устройству 200 отправлять данные на и/или принимать данные с другого устройства.In FIG. 2 illustrates a computing device 200 of a distributed database system (eg, distributed database system 100) according to one embodiment. In some embodiments, computing device 200 may be similar to computing devices 110, 120, 130, 140 shown and described with respect to FIG. 1. Computing device 200 includes a processor 210 and a memory 220. The processor 210 and memory 220 are operatively coupled to each other. In some embodiments, processor 210 and memory 220 may be similar to processor 111 and memory 112, respectively, as detailed with respect to FIG. 1. As shown in FIG. 2, processor 210 includes a database convergence module 211 and communication module 210, and memory 220 includes a distributed database instance 221. Communications module 212 allows computing device 200 to communicate with (eg, send data to and/or receive data from) other computing devices. In some embodiments, communication module 212 (not shown in FIG. 1) allows computing device 110 to communicate with computing devices 120, 130, 140. Communication module 210 may include and/or provide, for example, a network interface controller (NIC), wireless connection, wired port, and/or the like. As such, communication module 210 may establish and/or maintain a communication session between computing device 200 and another device (eg, over a network, such as network 105 shown in FIG. 1, or the Internet (not shown)). Similarly, communication module 210 may allow computing device 200 to send data to and/or receive data from another device.
В некоторых случаях модуль 211 конвергенции базы данных может обмениваться событиями и/или транзакциями с другими вычислительными устройствами, сохранять события и/или транзакции, которые принимает модуль 211 конвергенции базы данных, и вычислять упорядоченную последовательность событий и/или транзакций на основе частичного порядка, определенного схемой ссылок между событиями. Каждое событие может представлять собой запись, содержащую криптографический хеш двух более ранних событий (связывающий это событие с двумя более ранними событиями и их событиями-предками, и наоборот), данные полезной нагрузки (такие как транзакции, которые должны быть записаны), другую информацию, такую как текущее время, метка времени (например, дата и время по UTC), которую утвердил ее создатель, представляющая время, в которое событие было впервые определено, и/или т.п. В некоторых случаях первое событие, определенное участником, содержит хеш только одного события, определенного другим участником. В таких случаях участник еще не имеет предыдущего собственного хеша (например, хеша события, ранее определенного этим участником). В некоторых случаях первое событие в распределенной базе данных не содержит хеша никакого предыдущего события (поскольку отсутствует предыдущее событие для этой распределенной базы данных).In some cases, the database convergence module 211 may exchange events and/or transactions with other computing devices, store the events and/or transactions that the database convergence module 211 receives, and calculate an ordered sequence of events and/or transactions based on a partial order determined by linking scheme between events. Each event can be a record containing a cryptographic hash of the two earlier events (associating that event with the two earlier events and their parent events, and vice versa), payload data (such as transactions to be recorded), other information, such as the current time, a timestamp (eg, UTC date and time) that its creator has approved representing the time at which the event was first defined, and/or the like. In some cases, the first event defined by a participant contains a hash of only one event defined by another participant. In such cases, the participant does not yet have a previous hash of its own (eg, an event hash previously determined by that participant). In some cases, the first event in a distributed database does not contain the hash of any previous event (because there is no previous event for this distributed database).
В некоторых вариантах осуществления такой криптографический хеш двух более ранних событий может представлять собой значение хеша, определенное на основе криптографической хеш-функции с использованием события в качестве входных данных. А именно, в таких вариантах осуществления событие содержит конкретную последовательность или строку байтов (которые представляют собой информацию об этом событии). Хеш события может представлять собой значение, возвращаемое хеш-функцией, использующей последовательность байтов для этого события в качестве входных данных. В других вариантах осуществления любые другие подходящие данные, связанные с событием (например, идентификатор, серийный номер, байты, представляющие конкретную часть события, и т. д.), могут быть использованы в качестве входных данных для хеш-функции для вычисления хеша этого события. Любая подходящая хеш-функция может быть использована для определения хеша. В некоторых вариантах осуществления каждый участник использует одну и ту же хеш-функцию, так что один и тот же хеш генерируется у каждого участника для данного события. Событие может быть затем подписано цифровой подписью участником, определяющим и/или создающим событие.In some embodiments, such a cryptographic hash of the two earlier events may be a hash value determined from a cryptographic hash function using the event as input. Namely, in such embodiments, the implementation of the event contains a specific sequence or string of bytes (which represent information about this event). An event hash can be a value returned by a hash function that takes the byte sequence for that event as input. In other embodiments, any other suitable data associated with the event (e.g., ID, serial number, bytes representing a particular part of the event, etc.) can be used as input to a hash function to calculate the hash of that event. . Any suitable hash function can be used to determine the hash. In some embodiments, each participant uses the same hash function so that the same hash is generated for each participant for a given event. The event may then be digitally signed by the participant defining and/or creating the event.
В некоторых случаях набор событий и их взаимосвязей может формировать направленный ациклический граф (Directed Acyclic Graph, DAG). В некоторых случаях каждое событие в DAG ссылается на два более ранних события (связывая это событие с двумя более ранними событиями и их событиями-предками и наоборот), и каждая ссылка осуществляется строго на более ранние события, так что циклов нет. В некоторых вариантах осуществления DAG основан на криптографических хешах, так что структуру данных можно назвать DAG на основе хешей. DAG на основе хешей непосредственно кодирует частичный порядок, обозначая, что известно, что событие X происходит до события Y, если Y содержит хеш X, или если Y содержит хеш события, которое содержит хеш X, или для таких путей произвольной длины. Однако, если путь от X к Y или от Y к X отсутствует, то частичный порядок не определяет, какое событие произошло первым. Следовательно, модуль конвергенции базы данных может вычислять общий порядок из частичного порядка. Это может быть выполнено с помощью любой подходящей детерминированной функции, которая используется вычислительными устройствами, так что вычислительные устройства вычисляют один и тот же порядок. В некоторых вариантах осуществления каждый участник может повторно вычислять этот порядок после каждой синхронизации, и в итоге эти порядки могут сходиться таким образом, что возникает консенсус.In some cases, a set of events and their relationships can form a Directed Acyclic Graph (DAG). In some cases, each event in the DAG references two earlier events (associating that event with the two earlier events and their parent events, and vice versa), and each reference is strictly to the earlier events, so there are no cycles. In some embodiments, the implementation of the DAG is based on cryptographic hashes, so that the data structure can be called a DAG based on hashes. A hash-based DAG directly encodes a partial order, denoting that event X is known to occur before event Y if Y contains the hash of X, or if Y contains the hash of an event that contains the hash of X, or for such paths of arbitrary length. However, if there is no path from X to Y or from Y to X, then the partial order does not determine which event happened first. Therefore, the database convergence module can calculate the total order from the partial order. This can be done with any suitable deterministic function that is used by the computing devices such that the computing devices compute the same order. In some embodiments, each participant may recalculate this order after each synchronization, and eventually these orders may converge such that a consensus occurs.
Алгоритм консенсуса может быть использован для определения порядка событий в DAG на основе хешей и/или порядка транзакций, сохраненных в событиях. Порядок транзакций в свою очередь может определять состояние базы данных в результате выполнения этих транзакций в соответствии с порядком. Определенное состояние базы данных может быть сохранено в качестве переменной состояния базы данных.The consensus algorithm can be used to determine the order of events in the DAG based on the hashes and/or the order of the transactions stored in the events. The order of transactions, in turn, can determine the state of the database as a result of the execution of these transactions in accordance with the order. A particular database state can be stored as a database state variable.
В некоторых случаях модуль конвергенции базы данных может использовать следующую функцию для вычисления общего порядка из частичного порядка в DAG на основе хешей. Для каждого из остальных вычислительных устройств (называемых «участниками») модуль конвергенции базы данных может рассматривать DAG на основе хешей для нахождения порядка, в котором события (и/или указания этих событий) были приняты этим участником. Модуль конвергенции базы данных может затем выполнять вычисления таким образом, словно этот участник присвоил числовой «ранг» каждому событию, при этом ранг равен 1 для первого события, которое принял участник, 2 для второго события, которое принял участник, и так далее. Модуль конвергенции базы данных может выполнять это для каждого участника в DAG на основе хешей. Затем для каждого события модуль конвергенции базы данных может вычислять медиану присвоенных рангов и может сортировать события по их медианам. Сортировка может разрушать равенства детерминированным образом, например, сортируя два равных события по числовому порядку их хешeй или некоторым другим способом, в котором модуль конвергенции базы данных каждого участника использует одинаковый способ. Результатом этой сортировки является общий порядок.In some cases, the database convergence module may use the following function to calculate a total order from a partial order in a DAG based on hashes. For each of the other computing devices (called "participants"), the database convergence module may look at the hash-based DAG to find the order in which events (and/or indications of those events) were received by that participant. The database convergence module can then perform calculations as if that participant had assigned a numerical "rank" to each event, with the rank being 1 for the first event that the participant accepted, 2 for the second event that the participant accepted, and so on. The database convergence module can do this for each member in a hash-based DAG. Then, for each event, the database convergence module may calculate the median of the assigned ranks and may sort the events by their medians. Sorting can break the equalities in a deterministic way, for example by sorting two equal events by the numerical order of their hashes, or in some other way in which each participant's database convergence module uses the same way. The result of this sort is the overall order.
На фиг. 6 проиллюстрирован DAG 640 на основе хешей одного примера для определения общего порядка. DAG 640 на основе хешей иллюстрирует два события (самый нижний круг с полосками и самый нижний круг с точками) и первый момент времени, когда каждый участник принимает указания на эти события (остальные круги с полосками и точками). Имя каждого участника в верхней части окрашено согласно тому, какое событие является первым в их медленном порядке. Первоначальных голосов с полосками больше, чем с точками, следовательно, голоса консенсуса для каждого из участников имеют вид с полосками. Другими словами, участники в итоге приходят к согласию, что событие с полосками произошло до события с точками.In FIG. 6 illustrates
В этом примере участники (вычислительные устройства, обозначенные как Алиса, Боб, Кэрол, Дэйв и Эд) будут работать так, чтобы достичь консенсуса относительно того, произошло ли первым событие 642 или событие 644. Каждый круг с полосками указывает на событие, когда участник впервые принял событие 644 (и/или указание об этом событии 644). Подобным образом каждый круг с точками указывает на событие, когда участник впервые принял событие 642 (и/или указание об этом событии 642). Как показано в DAG 640 на основе хешей, Алиса, Боб и Кэрол все приняли событие 644 (и/или указание о событии 644) до события 642. Как Дэйв, так и Эд приняли событие 642 (и/или указание о событии 642) до события 644 (и/или указания о событии 644). Таким образом, поскольку большее количество участников приняли событие 644 до события 642, общий порядок может быть определен каждым участником для указания того, что событие 644 произошло до события 642.In this example, the participants (computing devices labeled Alice, Bob, Carol, Dave, and Ed) will work to reach a consensus on whether
В других случаях модуль конвергенции базы данных может использовать другую функцию для вычисления общего порядка из частичного порядка в DAG на основе хешей. В таких вариантах осуществления, например, модуль конвергенции базы данных может использовать следующие функции для вычисления общего порядка, при этом положительное целое число Q представляет собой параметр, совместно используемый участниками.In other cases, the database convergence module may use another function to calculate the total order from the partial order in the DAG based on hashes. In such embodiments, for example, the database convergence module may use the following functions to calculate the overall order, with the positive integer Q being a parameter shared by the participants.
creator(x) = участник, который создал событие x, (создатель)creator(x) = participant who created event x, (creator)
anc(x) = набор событий, которые являются предками x, включая само xanc(x) = set of events that are ancestors of x, including x itself
other(x) = событие, созданное участником, который выполнял синхронизацию непосредственно перед созданием xother(x) = event created by the member who synced just before x was created
self(x) = последнее событие перед x с тем же создателемself(x) = last event before x with same creator
self(x, 0) = self(x)self(x, 0) = self(x)
self(x, n) = self(self(x), n-1)self(x, n) = self(self(x), n-1)
order(x, y) = k, где y – это k-ое событие, о котором узнал creator(x)order(x, y) = k, where y is the kth event that creator(x) learned about
fast(x, y) = положение y в отсортированном списке, причем элемент z ∈ anc(x), отсортированному по slow(w, z), и с разрушением равенств посредством хеша каждого событияfast(x, y) = position of y in the sorted list, with element z ∈ anc(x), sorted by slow(w, z), and with the destruction of equalities through the hash of each event
В этом варианте осуществления fast(x, y) дает положение y в общем порядке событий по мнению creator(x) по существу сразу после создания и/или определения x. Если Q равно бесконечности, то вышеописанное вычисляет такой же общий порядок, как получается и в ранее описанном варианте осуществления. Если Q является конечным числом и все участники находятся в режиме онлайн, то вышеописанное вычисляет такой же общий порядок, как получается и в ранее описанном варианте осуществления. Если Q является конечным числом и меньшая часть участников находится в режиме онлайн в заданный момент времени, то эта функция позволяет находящимся онлайн участникам достигать консенсуса между собой, который будет сохраняться неизменным по мере постепенного, поочередного перехода в режим онлайн новых участников. Однако, если речь идет о разделе сети, то участники каждого раздела могут прийти к своему собственному консенсусу. Затем, когда раздел заполняется, участники меньшего раздела примут консенсус большего раздела.In this embodiment, fast(x, y) gives the position of y in the overall order of events in the opinion of the creator(x) essentially immediately after the creation and/or definition of x. If Q is equal to infinity, then the above calculates the same overall order as obtained in the previously described embodiment. If Q is a finite number and all participants are online, then the above calculates the same general order as obtained in the previously described embodiment. If Q is a finite number and a minority of participants are online at a given point in time, then this function allows online participants to reach a consensus among themselves, which will remain unchanged as new participants gradually, one by one, come online. However, if it is a section of the network, then the participants in each section can come to their own consensus. Then, when the section is full, the members of the smaller section will accept the consensus of the larger section.
В еще других случаях, как описано в отношении фиг. 14–17b, модуль конвергенции базы данных может использовать еще другую функцию для вычисления общего порядка из частичного порядка в DAG на основе хешей. Как показано на фиг. 14–15, каждый участник (Алиса, Боб, Кэрол, Дэйв и Эд) создает и/или определяет события (1401–1413, как показано на фиг. 14; 1501–1506, показанные на фиг. 15). При использовании функции и подфункций, описанных в отношении фиг. 14–17b, общий порядок для событий может быть вычислен посредством сортировки событий по их принятому раунду (также называемому в настоящем документе порядковым значением), с разрушением равенств по их принятой метке времени и разрушением этих равенств по их подписям, как более подробно описано в настоящем документе. В других случаях общий порядок для событий может быть вычислен посредством сортировки событий по их принятому раунду, с разрушением равенств по их принятому поколению (вместо их принятой метки времени) и с разрушением этих равенств по их подписям. В следующих абзацах заданы функции, используемые для вычисления и/или определения принятого раунда и принятого поколения события для определения порядка для событий. Следующие термины используются и иллюстрируются в связи с фиг. 14–17b.In yet other cases, as described with respect to FIG. 14-17b, the database convergence module may use yet another function to calculate the total order from the partial order in a DAG based on hashes. As shown in FIG. 14-15, each participant (Alice, Bob, Carol, Dave, and Ed) creates and/or defines events (1401-1413, as shown in Fig. 14; 1501-1506, shown in Fig. 15). When using the function and sub-functions described with respect to FIG. 14-17b, the overall order for events can be computed by sorting the events by their accepted round (also referred to herein as ordinal value), collapsing equalities by their adopted timestamp, and collapsing those equalities by their signatures, as described in more detail herein. document. In other cases, the overall order for events can be computed by sorting the events by their adopted round, collapsing the equalities by their adopted generation (instead of their adopted timestamp), and collapsing those equalities by their signatures. The following paragraphs define functions used to calculate and/or determine the received round and received event generation to determine the order for the events. The following terms are used and illustrated in connection with FIG. 14–17b.
«Родитель» («Parent»): событие X является родителем события Y, если Y содержит хеш X. Например, как показано на фиг. 14, родители события 1412 включают событие 1406 и событие 1408.Parent: Event X is the parent of event Y if Y contains the hash of X. For example, as shown in FIG. 14, the parents of
«Предок» («Ancestor»): предками события X являются X, его родители, родители его родителей и так далее. Например, как показано на фиг. 14, предками события 1412 являются события 1401, 1402, 1403, 1406, 1408 и 1412. Можно сказать, что предки события связаны с этим событием и наоборот."Ancestor": The ancestors of event X are X, its parents, its parents' parents, and so on. For example, as shown in FIG. 14, the ancestors of
«Потомок» («Descendant»): потомками события X являются X, его дети, дети его детей и так далее. Например, как показано на фиг. 14, потомком события 1401 является каждое событие, показанное на фигуре. В качестве другого примера, потомками события 1403 являются события 1403, 1404, 1406, 1407, 1409, 1410, 1411, 1412 и 1413. Можно сказать, что потомки события связаны с этим событием и наоборот. "Descendant": The descendants of event X are X, its children, its children's children, and so on. For example, as shown in FIG. 14, a child of
«N»: общее количество участников в популяции. Например, как показано на фиг. 14, участники представляют собой вычислительные устройства, обозначенные как Алиса, Боб, Кэрол, Дэйв и Эд, и N равняется пяти. "N": total number of participants in the population. For example, as shown in FIG. 14, the participants are computing devices designated as Alice, Bob, Carol, Dave, and Ed, and N is five.
«M»: наименьшее целое число, которое превышает определенную процентную долю N (например, превышает 2/3 от N). Например, как показано на фиг. 14, если процентная доля определена как 2/3, то M равняется четырем. В других случаях M может быть определено, например, как другая процентная доля N (например, 1/3, 1/2 и т. д.), конкретное предварительно определенное число и/или любым другим подходящим способом."M": The smallest integer that is greater than a certain percentage of N (for example, greater than 2/3 of N). For example, as shown in FIG. 14, if the percentage is defined as 2/3, then M is four. In other cases, M may be defined, for example, as another percentage of N (eg, 1/3, 1/2, etc.), a specific predetermined number, and/or any other suitable method.
«Собственный родитель» («Self-parent»): собственным родителем события X является его событие-родитель Y, созданное и/или определенное тем же участником. Например, как показано на фиг. 14, собственным родителем события 1405 является 1401. "Self-parent": Event X's own parent is its parent event Y, created and/or defined by the same participant. For example, as shown in FIG. 14,
«Собственный предок» («Self-ancestor»): собственными предками события X являются X, его собственный родитель, собственный родитель его собственного родителя и так далее."Self-ancestor": Event X's own ancestors are X, its own parent, its own parent's own parent, and so on.
«Порядковый номер» («Sequence Number», или «SN»): целочисленный атрибут события, определенный как порядковый номер собственного родителя события плюс один. Например, как показано на фиг. 14, собственным родителем события 1405 является 1401. Поскольку порядковый номер события 1401 равен одному, порядковый номер события 1405 равен двум (т.е. один плюс один)."Sequence Number" or "SN": An integer attribute of the event, defined as the sequence number of the event's own parent plus one. For example, as shown in FIG. 14,
«Номер поколения» («Generation Number», или «GN»): целочисленный атрибут события, определенный как максимальное значение номеров поколений родителей события плюс один. Например, как показано на фиг. 14, событие 1412 имеет двух родителей, события 1406 и 1408, имеющих номера поколений четыре и два соответственно. Таким образом, номер поколения события 1412 равен пяти (т.е. четыре плюс один)."Generation Number" or "GN": An integer attribute of the event, defined as the maximum value of the generation numbers of the event's parents plus one. For example, as shown in FIG. 14,
«Приращение раунда» («Round Increment», или «RI»): атрибут события, который может равняться либо нулю, либо единице. "Round Increment" or "RI": An event attribute that can be either zero or one.
«Номер раунда» («Round Number», или «RN»): целочисленный атрибут события. В некоторых случаях номер раунда может быть определен как максимальное значение номеров раундов родителей события плюс приращение раунда. Например, как показано на фиг. 14, событие 1412 имеет двух родителей, события 1406 и 1408, которые оба имеют номер раунда, равный одному. Событие 1412 также имеет приращение раунда, равное одному. Таким образом, номер раунда события 1412 равняется двум (т.е. один плюс один). В других случаях событие может иметь номер раунда R, если R является минимальным целым числом, так что событие может строго видеть (как описано в настоящем документе) по меньшей мере M событий, определенных и/или созданных разными участниками, которые все имеют номер раунда R-1. Если такое целое число отсутствует, номер раунда для события может быть значением по умолчанию (например, 0, 1 и т. д.). В таких случаях номер раунда для события может быть вычислен без использования приращения раунда. Например, как показано на фиг. 14, если M определено как наименьшее целое число, превышающее N в 1/2 раза, то M равняется трем. Тогда событие 1412 строго видит M событий 1401, 1402 и 1408, каждое из которых было определено отличным участником и имеет номер раунда, равный 1. Событие 1412 не может строго видеть по меньшей мере M событий с номером раунда, равным 2, которые были определены отличными участниками. Следовательно, номер раунда для события 1412 равняется 2. В некоторых случаях первое событие в распределенной базе данных имеет номер раунда, равный 1. В других случаях первое событие в распределенной базе данных может иметь номер раунда, равный 0, или любой другой подходящий номер."Round Number" or "RN": An integer attribute of the event. In some cases, the round number can be defined as the maximum value of the round numbers of the event's parents plus the round increment. For example, as shown in FIG. 14,
«Ответвление» («Forking»): событие X вместе с событием Y являются ответвлением, если они определены и/или созданы одним участником, и ни одно из них не является собственным предком другого. Например, как показано на фиг. 15, участник Дэйв создает ответвление, создавая и/или определяя события 1503 и 1504, оба из которых имеют одного собственного родителя (т.е. событие 1501), так что событие 1503 не является собственным предком события 1504, и событие 1504 не является собственным предком события 1503."Forking": An event X together with an event Y are forks if they are defined and/or created by one participant and neither is the other's own ancestor. For example, as shown in FIG. 15, participant Dave creates a branch by creating and/or defining
«Идентификация» («Identification») ответвления: ответвление может быть «идентифицировано» третьим событием, созданным и/или определенным после двух событий, которые вместе являются ответвлениями, если оба эти два события являются предками третьего события. Например, как показано на фиг. 15, участник Дэйв создает ответвление, создавая события 1503 и 1504, ни одно из которых не является собственным предком другого. Это ответвление может быть идентифицировано более поздним событием 1506, поскольку оба события 1503 и 1504 являются предками события 1506. В некоторых случаях идентификация ответвления может указывать на то, что конкретный участник (например, Дэйв) мошенничает. Branch "Identification": A branch can be "identified" by a third event created and/or defined after two events that together are branches, if both of these two events are ancestors of the third event. For example, as shown in FIG. 15, participant Dave creates a fork by creating
«Идентификация» («Identification») события: событие X «идентифицирует» или «видит» событие-предка Y, если X не имеет события-предка Z, которое является ответвлением вместе с Y. Например, как показано на фиг. 14, событие 1412 идентифицирует (то есть «видит») событие 1403, поскольку событие 1403 является предком события 1412, и событие 1412 не имеет событий-предков, которые являются ответвлениями вместе с событием 1403. В некоторых случаях событие X может идентифицировать событие Y, если X не идентифицирует ответвление до события Y. В таких случаях, даже если событие X идентифицирует ответвление, создаваемое участником, определяющим событие Y, после события Y, событие X может видеть событие Y. Событие X не идентифицирует события этого участника после ответвления. Более того, если участник определяет два разных события, которые оба являются первыми событиями этого участника в истории, событие X может идентифицировать ответвление и не идентифицировать никакое событие этого участника.Event "Identification": Event X "identifies" or "sees" an ancestor event of Y if X does not have an ancestor event of Z that branches along with Y. For example, as shown in FIG. 14,
«Строгая идентификация» («Strong identification», также называемая в настоящем документе «strongly seeing», или «строгое видение») события: событие X «строго идентифицирует» (или «строго видит») событие-предка Y, созданное и/или определенное тем же участником, что и X, если X идентифицирует Y. Событие X «строго идентифицирует» событие-предка Y, которое не было создано и/или определено тем же участником, что и X, если существует набор S событий, которые (1) включают как X, так и Y, и (2) являются предками события X, и (3) являются потомками события-предка Y, и (4) идентифицируются X, и (5) каждое может идентифицировать Y, и (6) созданы и/или определены по меньшей мере M разными участниками. Например, как показано на фиг. 14, если M определено как наименьшее целое число, которое превышает 2/3 от N (т.е. M=1+floor(2N/3), что будет равно четырем в этом примере), то событие 1412 строго идентифицирует событие-предка 1401, поскольку набор событий 1401, 1402, 1406 и 1412 представляет собой набор из по меньшей мере четырех событий, которые являются предками события 1412 и потомками события 1401, и они созданы и/или определены четырьмя участниками Дэйвом, Кэрол, Бобом и Эдом соответственно, и событие 1412 идентифицирует каждое из событий 1401, 1402, 1406 и 1412, и каждое из событий 1401, 1402, 1406 и 1412 идентифицирует событие 1401. Подобным образом, событие X (например, событие 1412) может «строго видеть» событие Y (например, событие 1401), если X может видеть по меньшей мере M событий (например, события 1401, 1402, 1406 и 1412), созданных или определенных разными участниками, каждый из которых может видеть Y. "Strong identification" (also referred to herein as "strongly seeing" or "strict vision") of an event: event X "strongly identifies" (or "strongly sees") an ancestor event Y created and/or defined by the same participant as X if X identifies Y. An event X "strongly identifies" an ancestor event of Y that was not created and/or defined by the same participant as X if there exists a set S of events that (1 ) include both X and Y, and (2) are ancestors of event X, and (3) are children of event ancestor Y, and (4) are identified by X, and (5) each can identify Y, and (6) are created and/or defined by at least M different contributors. For example, as shown in FIG. 14, if M is defined as the smallest integer that is greater than 2/3 of N (i.e., M=1+floor(2N/3), which would be four in this example), then
«Первое событие раунда R» (также называемое в настоящем документе «свидетелем», или «witness»): событие представляет собой «первое событие раунда R» (или «свидетеля»), если событие (1) имеет номер раунда R и (2) имеет собственного родителя, имеющего номер раунда, который меньше R, или не имеет собственного родителя. Например, как показано на фиг. 14, событие 1412 представляет собой «первое событие раунда 2», поскольку оно имеет номер раунда, равный двум, и его собственным родителем является событие 1408, которое имеет номер раунда, равный одному (т.е. меньше двух)."First event of R round" (also referred to herein as "witness" or "witness"): an event is an "first event of R round" (or "witness") if event (1) has an R round number and (2 ) has its own parent that has a round number less than R, or does not have its own parent. For example, as shown in FIG. 14,
В некоторых случаях приращение раунда для события X определяют как 1, если и только если X «строго идентифицирует» по меньшей мере M «первых событий раунда R», где R является максимальным номером раунда его родителей. Например, как показано на фиг. 14, если M определено как наименьшее целое число, превышающее N в 1/2 раза, то M равняется трем. Тогда событие 1412 строго идентифицирует M событий 1401, 1402 и 1408, которые все являются первыми событиями раунда 1. Оба родителя события 1412 принадлежат к раунду 1, и 1412 строго идентифицирует по меньшей мере M первых событий раунда 1, следовательно, приращение раунда для 1412 равно одному. Каждое из событий на схеме с отметкой «RI=0» не может строго идентифицировать по меньшей мере M первых событий раунда 1, следовательно, их приращения раунда равны 0. In some cases, the round increment for an event X is defined as 1 if and only if X "strongly identifies" at least M "first round events R", where R is the maximum round number of its parents. For example, as shown in FIG. 14, if M is defined as the smallest integer greater than 1/2 times N, then M is three. Then
В некоторых случаях следующий способ может быть использован для определения того, может ли событие X строго идентифицировать событие-предка Y. Для каждого первого события-предка Y раунда R поддерживается массив A1 целых чисел, по одному на участника, который задает наименьший порядковый номер события X, где этот участник создал и/или определил событие X, и X может идентифицировать Y. Для каждого события Z поддерживается массив A2 целых чисел, по одному на участника, который задает наибольший порядковый номер события W, созданного и/или определенного этим участником, так что Z может идентифицировать W. Для определения того, может ли Z строго идентифицировать событие-предка Y, подсчитывается количество положений E элемента таких, что A1[E] <= A2[E]. Событие Z может строго идентифицировать Y, если и только если эта подсчитанная величина превышает M. Например, как показано на фиг. 14, Алиса, Боб, Кэрол, Дэйв и Эд каждый могут идентифицировать событие 1401, при этом самым ранним событием, которое может это сделать, является их событие {1404, 1403, 1402, 1401, 1408} соответственно. Эти события имеют порядковые номера A1={1,1,1,1,1}. Подобным образом, самым поздним событием каждого из них, которое идентифицируется событием 1412, является событие {ОТСУТСТВУЕТ, 1406, 1402, 1401, 1412}, где у Алисы указано «ОТСУТСТВУЕТ», поскольку 1412 не может идентифицировать ни одно из событий Алисы. Эти события имеют порядковые номера A2={0,2,1,1,2} соответственно, при этом все события имеют положительные порядковые номера, так что 0 означает, что у Алисы нет событий, которые идентифицируются событием 1412. При сравнении списка A1 со списком A2 получают результаты {1<=0, 1<=2, 1<=1, 1<=1, 1<=2}, что эквивалентно {ложь, истина, истина, истина, истина}, где имеется четыре значения, которые являются истинными. Следовательно, существует набор S из четырех событий, которые являются предками события 1412 и потомками события 1401. Четыре соответствует по меньшей мере M, следовательно, 1412 строго идентифицирует 1401.In some cases, the following method can be used to determine whether event X can strongly identify ancestor event Y. For each first ancestor event Y of round R, an array A1 of integers, one per participant, is maintained that specifies the lowest sequence number of event X , where this participant created and/or defined event X, and X can identify Y. For each event Z, an array A2 of integers is maintained, one per participant, that specifies the highest sequence number of event W created and/or defined by this participant, so that Z can identify W. To determine whether Z can strongly identify an ancestor event of Y, the number of element positions E such that A1[E] <= A2[E] is counted. An event Z can strongly identify Y if and only if this count is greater than M. For example, as shown in FIG. 14, Alice, Bob, Carol, Dave, and Ed can each identify
Еще один вариант реализации способа определения с помощью A1 и A2 того, может ли событие X строго идентифицировать событие-предка Y, является следующим. Если целочисленные элементы в обоих массивах меньше 128, то можно сохранить каждый элемент в одном байте и упаковать 8 таких элементов в одно 64-битное слово, и допустить, что A1 и A2 являются массивами таких слов. Самый старший бит каждого байта в A1 может быть установлен в 0, и самый старший бит каждого байта в A2 может быть установлен в 1. Два соответствующих слова вычитают, затем выполняют побитовую операцию И с использованием маски для обнуления всего, кроме самых старших битов, затем выполняют сдвиг вправо на 7 битовых позиций для получения значения, которое выражается на языке программирования C как: ((A2[i] - A1[i]) & 0x8080808080808080) >> 7). Это может быть добавлено в регистровый стек S, который был инициализирован в нуль. После выполнения этого действия множество раз преобразуют регистр в счетчик посредством сдвига и добавления байтов для получения ((S & 0xff) + ((S >> 8) & 0xff) + ((S >> 16) & 0xff) + ((S >> 24) & 0xff) + ((S >> 32) & 0xff) + ((S >> 40) & 0xff) + ((S >> 48) & 0xff) + ((S >> 56) & 0xff)). В некоторых случаях эти вычисления могут быть выполнены на таких языках программирования как C, Java и/или т.п. В других случаях вычисления могут быть выполнены с использованием специфических для процессора команд, таких как команды Advanced Vector Extensions (AVX), предоставленные Intel и AMD, или эквивалента в графическом процессоре (GPU) или графическом процессоре общего назначения (GPGPU). На некоторых архитектурах вычисления могут быть выполнены быстрее с использованием слов, которые длиннее 64 битов, например, длиной 128, 256, 512 или более битов.Yet another implementation of the method for determining, using A1 and A2, whether an event X can strongly identify an ancestor event Y is as follows. If the integer elements in both arrays are less than 128, then you can store each element in one byte and pack 8 such elements into one 64-bit word, and assume that A1 and A2 are arrays of such words. The most significant bit of each byte in A1 may be set to 0, and the most significant bit of each byte in A2 may be set to 1. The two corresponding words are subtracted, then a bitwise AND operation is performed using a mask to set all but the most significant bits to zero, then perform a right shift by 7 bit positions to obtain a value that is expressed in the C programming language as: ((A2[i] - A1[i]) & 0x8080808080808080) >> 7). This can be added to a register stack S that has been initialized to zero. After performing this action, convert the register to a counter many times by shifting and adding bytes to obtain ((S & 0xff) + ((S >> 8) & 0xff) + ((S >> 16) & 0xff) + ((S > > 24) & 0xff) + ((S >> 32) & 0xff) + ((S >> 40) & 0xff) + ((S >> 48) & 0xff) + ((S >> 56) & 0xff) ). In some cases, these calculations may be performed in programming languages such as C, Java, and/or the like. In other cases, calculations may be performed using processor-specific instructions such as the Advanced Vector Extensions (AVX) instructions provided by Intel and AMD, or the equivalent in a graphics processing unit (GPU) or general purpose graphics processing unit (GPGPU). On some architectures, calculations can be performed faster using words that are longer than 64 bits, such as 128, 256, 512 or more bits.
«Известное» («Famous») событие: событие X раунда R является «известным», если (1) событие X является «первым событием раунда R» (или «свидетелем»), и (2) решение «ДА» достигается путем исполнения протокола византийского соглашения, описанного ниже. В некоторых вариантах осуществления протокол византийского соглашения может быть выполнен экземпляром распределенной базы данных (например, экземпляром 114 распределенной базы данных) и/или модулем конвергенции базы данных (например, модулем 211 конвергенции базы данных). Например, как показано на фиг. 14, показаны пять первых событий раунда 1: 1401, 1402, 1403, 1404 и 1408. Если M определено как наименьшее целое число, превышающее N в 1/2 раза, что равняется трем, то 1412 представляет собой первое событие раунда 2. Если протокол продолжается дальше, то DAG на основе хешей будет расти вверх, и в итоге другие четыре участника будут также иметь первые события раунда 2 над верхней частью этой фигуры. Каждое первое событие раунда 2 будет иметь «голос» («vote») относительно того, является ли каждое из первых событий раунда 1 «известным». Событие 1412 будет голосовать ДА за то, что 1401, 1402 и 1403 являются известными, поскольку они являются первыми событиями раунда 1, которые оно может идентифицировать. Событие 1412 будет голосовать НЕТ против того, что 1404 является известным, поскольку 1412 не может идентифицировать 1404. Для заданного первого события раунда 1, такого как 1402, решение относительно того, является ли его статус «известным» или нет, будет принято на основе подсчета голосов каждого первого события раунда 2 относительно того, является оно известным или нет. Эти голоса будут затем распространяться на первые события раунда 3, затем на первые события раунда 4 и так далее до тех пор, пока в итоге не будет достигнуто согласие относительно того, является ли 1402 известным. Подобный процесс повторяется для других первых событий."Famous" event: Event X of round R is "known" if (1) event X is the "first event of round R" (or "witness"), and (2) a "YES" decision is reached by executing protocol of the Byzantine agreement described below. In some embodiments, the byzantine agreement protocol may be executed by a distributed database instance (eg, distributed database instance 114) and/or a database convergence module (eg, database convergence module 211). For example, as shown in FIG. 14, the first five events of
Протокол византийского соглашения может собирать и использовать голоса и/или решения «первых событий раунда R» для идентификации «известных» событий. Например, «первое событие Y раунда R+1» будет голосовать «ДА», если Y может «идентифицировать» событие X, в ином случае оно проголосует «НЕТ». Голоса затем подсчитываются для каждого раунда G, для G = R+2, R+3, R+4 и т. д. до тех пор, пока не будет принято решение любым участником. Голоса подсчитываются для каждого раунда G до тех пор, пока не принято решение. Некоторые из этих раундов могут представлять собой раунды «мажоритарные», тогда как некоторые из других раундов могут представлять собой раунды «с подбрасыванием монеты». В некоторых случаях, например, раунд R+2 является раундом большинства, и будущие раунды определяются либо как мажоритарный раунд, либо как раунд с подбрасыванием монеты (например, согласно предварительно определенной схеме). Например, в некоторых случаях произвольно может быть определено, является ли будущий раунд мажоритарным раундом или раундом с подбрасыванием монеты, при условии что не может быть двух последовательных раундов с подбрасыванием монеты. Например, может быть предварительно определено, что будет пять мажоритарных раундов, затем один раунд с подбрасыванием монеты, затем пять мажоритарных раундов, затем один раунд с подбрасыванием монеты, с повторением до тех пор, пока не будет достигнуто согласие.The Protocol of the Byzantine Agreement may collect and use the votes and/or decisions of the "first round R events" to identify "known" events. For example, "first event Y of round R+1" will vote "YES" if Y can "identify" event X, otherwise it will vote "NO". The votes are then counted for each round G, for G = R+2, R+3, R+4, etc. until a decision is made by either participant. The votes are counted for each round of G until a decision is made. Some of these rounds may be "majority" rounds, while some of the other rounds may be "coin toss" rounds. In some cases, for example, the R+2 round is a majority round and future rounds are defined as either a majority round or a coin toss round (eg, according to a predetermined pattern). For example, in some cases it may be arbitrarily determined whether a future round is a majority round or a coin toss, provided that there cannot be two consecutive coin tosses. For example, it may be predetermined that there will be five majority rounds, then one coin toss, then five majority rounds, then one coin toss, repeating until agreement is reached.
В некоторых случаях, если раунд G является мажоритарным раундом, голоса могут быть подсчитаны следующим образом. Если существует событие раунда G, которое строго идентифицирует по меньшей мере M первых событий раунда G-1, голосующих V (где V представляет собой либо «ДА», либо «НЕТ»), то согласованным решением является V, и протокол византийского соглашения завершается. В ином случае каждое первое событие раунда G вычисляет новый голос, представляющий собой решение большинства первых событий раунда G-1, которые каждое первое событие раунда G может строго идентифицировать. В случаях равенства голосов и отсутствия большинства решение может быть обозначено как «ДА». In some cases, if round G is a majoritarian round, the votes may be counted as follows. If there is a G round event that strongly identifies at least M first G-1 round events voting V (where V is either "YES" or "NO"), then the consensus decision is V, and the Byzantine agreement protocol ends. Otherwise, each first event of round G computes a new vote, which is the solution of the majority of first events of round G-1 that each first event of round G can strongly identify. In cases of equality of votes and lack of a majority, the decision may be marked as "YES".
Подобным образом, если X является свидетелем раунда R (или первым событием раунда R), то результаты голосования в раундах R+1, R+2 и так далее могут быть вычислены, при этом свидетели в каждом раунде голосуют относительно того, является ли X известным. В раунде R+1 каждый свидетель, который может видеть X, голосует ДА, а другие свидетели голосуют НЕТ. В раунде R+2 каждый свидетель голосует согласно большинству голосов свидетелей раунда R+1, которые он может строго видеть. Подобным образом, в раунде R+3 каждый свидетель голосует согласно большинству голосов свидетеля раунда R+2, которого он может строго видеть. Это может продолжаться несколько раундов. В случае равенства голосов голос может быть установлен в ДА. В других случаях равенство голосов может быть установлено в НЕТ или может быть установлено случайным образом. Если какой-либо раунд имеет по меньшей мере M свидетелей, голосующих НЕТ, то выборы завершаются, и X не является известным. Если какой-либо раунд имеет по меньшей мере M свидетелей, равенства голосов ДА, то выборы завершаются, и X является известным. Если ни ДА, ни НЕТ не имеет по меньшей мере M голосов, выборы переходят к следующему раунду. Similarly, if X is a witness of round R (or the first event of round R), then the results of voting in rounds R+1, R+2, and so on can be computed, with the witnesses in each round voting on whether X is known. . In the R+1 round, each witness who can see X votes YES and the other witnesses vote NO. In the R+2 round, each witness votes according to the majority of the votes of the R+1 round witnesses that he can strictly see. Similarly, in the R+3 round, each witness votes according to the majority vote of the R+2 witness that he can strictly see. This may go on for several rounds. In the event of a tie vote, the vote may be set to YES. In other cases, a tie vote may be set to NO or may be set at random. If any round has at least M witnesses voting NO, then the election ends and X is not known. If any round has at least M witnesses, a tie vote is YES, then the election ends and X is known. If neither YES nor NO has at least M votes, the election proceeds to the next round.
В качестве примера, на фиг. 14 предполагается первое событие X некоторого раунда, которое находится ниже показанной фигуры. Тогда каждое первое событие раунда 1 будет иметь голос относительно того, является ли X известным. Событие 1412 может строго идентифицировать первые события 1401, 1402 и 1408 раунда 1. Таким образом, его голос будет основан на их голосах. Если это мажоритарный раунд, то 1412 будет проверять, имеют ли по меньшей мере M событий {1401, 1402, 1408} голос ДА. Если имеют, то решением является ДА, и согласие было достигнуто. Если по меньшей мере M из них проголосовало НЕТ, то решением является НЕТ, и согласие было достигнуто. Если количество голосов не составляет по меньшей мере M в любую из сторон, то 1412 получает голос, который представляет собой большинство голосов событий 1401, 1402 и 1408 (и разрушает равенство голосов посредством голосования ДА, если было равенство голосов). Этот голос затем будет использован в следующем раунде, продолжающемся до тех пор, пока не будет достигнуто согласие.As an example, in FIG. 14 assumes the first event X of some round, which is below the figure shown. Then every first event of
В некоторых случаях, если раунд G является раундом с подбрасыванием монеты, голоса могут быть подсчитаны следующим образом. Если событие X может идентифицировать по меньшей мере M первых событий раунда G-1, голосующих V (где V представляет собой либо «ДА», либо «НЕТ»), то событие X изменит свой голос на V. Иначе, если раунд G является раундом с подбрасыванием монеты, каждое первое событие X раунда G меняет свой голос на результат псевдослучайного определения (подобно подбрасыванию монеты в некоторых случаях), который определяется как самый младший бит подписи события X. In some cases, if round G is a coin toss, the votes may be counted as follows. If event X can identify at least M first round G-1 events voting V (where V is either "YES" or "NO"), then event X will change its vote to V. Otherwise, if round G is a round with a coin toss, every first event X of round G changes its vote to the result of a pseudo-random determination (similar to a coin toss in some cases), which is determined as the least significant bit of the X event signature.
Подобным образом, в таких случаях, если выборы достигают раунда R+K (раунда с подбрасыванием монеты), где K – определенный коэффициент (например, кратный числу, такому как 3, 6, 7, 8, 16, 32 или любому другому подходящему числу), то выборы не завершаются на этом раунде. Если выборы достигают этого раунда, они могут продолжиться по меньшей мере на еще один раунд. В таком раунде, если событие Y является свидетелем раунда R+K, то, если оно может строго видеть по меньшей мере M свидетелей из раунда R+K-1, которые голосуют V, Y проголосует V. Иначе Y проголосует согласно случайному значению (например, согласно биту подписи события Y (например, самому младшему биту, самому старшему биту, случайно выбранному биту), где 1=ДА и 0=НЕТ или наоборот, согласно метке времени события Y, с использованием криптографического протокола shared coin и/или любого другого случайного определения). Это случайное определение является непредсказуемым до создания Y, и таким образом можно повысить безопасность событий и протокола консенсуса.Likewise, in such cases, if the election reaches an R+K (coin toss) round, where K is a certain coefficient (e.g., a multiple of a number such as 3, 6, 7, 8, 16, 32, or any other suitable number ), then the election does not end in this round. If the election reaches this round, it may continue for at least one more round. In such a round, if event Y is a witness to the R+K round, then if it can strictly see at least M witnesses from the R+K-1 round who vote V, Y will vote V. Otherwise, Y will vote according to a random value (e.g. , according to the signature bit of the Y event (e.g., the least significant bit, the most significant bit, a randomly selected bit), where 1=YES and 0=NO, or vice versa, according to the timestamp of the Y event, using a shared coin cryptographic protocol and/or any other random definition). This random definition is unpredictable until Y is created, and thus the security of the events and the consensus protocol can be improved.
Например, как показано на фиг. 14, если раунд 2 является раундом с подбрасыванием монеты, и происходит голосование относительно того, было ли некоторое событие до раунда 1 известным, то событие 1412 будет сначала проверять, проголосовало ли по меньшей мере M событий {1401, 1402, 1408} ДА, или по меньшей мере M из них проголосовало НЕТ. Если это так, то 1412 проголосует так же. Если отсутствует по меньшей мере M голосов в любую из сторон, то 1412 будет иметь случайный или псевдослучайный голос (например, на основе самого младшего бита цифровой подписи, которую Эд создал для события 1412, когда он подписал его во время его создания и/или определения).For example, as shown in FIG. 14, if
В некоторых случаях результат псевдослучайного определения может быть результатом криптографического протокола shared coin, который может быть, например, реализован как самый младший бит пороговой подписи номера раунда.In some cases, the result of the pseudo-random determination may be the result of a shared coin cryptographic protocol, which may, for example, be implemented as the least significant bit of the round number threshold signature.
Система может быть основана на любом из способов вычисления результата псевдослучайного определения, описанных выше. В некоторых случаях система выполняет цикл по разным способам в некотором порядке. В других случаях система может выбирать среди разных способов согласно предварительно определенной схеме.The system may be based on any of the methods for calculating the result of the pseudo-random determination described above. In some cases, the system loops through different ways in some order. In other cases, the system may select among different methods according to a predetermined pattern.
«Принятый раунд» («Received round»): событие X имеет «принятый раунд» R, если R является таким минимальным целым числом, что по меньшей мере половина известных первых событий раунда R (или известных свидетелей) с номером R раунда являются потомками X и/или могут видеть X. В других случаях может быть использована любая другая подходящая процентная доля. Например, в другом случае событие X имеет «принятый раунд» R, если R является таким минимальным целым числом, что по меньшей мере предварительно определенная процентная доля (например, 40 %, 60 %, 80 % и т. д.) известных первых событий раунда R (или известных свидетелей) с номером R раунда являются потомками X и/или могут видеть X."Received round": An event X has a "received round" R if R is the minimum integer such that at least half of the known first events of round R (or known witnesses) with round number R are descendants of X and/or can see X. In other cases, any other suitable percentage may be used. For example, in another case, event X has an "accepted round" R if R is the minimum integer such that at least a predetermined percentage (e.g., 40%, 60%, 80%, etc.) of known first events round R (or known witnesses) with round number R are descendants of X and/or can see X.
В некоторых случаях «принятое поколение» события X может быть вычислено следующим образом. Находят, какой участник создал и/или определил каждое первое событие раунда R, которое может идентифицировать событие X. Затем определяют номер поколения для самого раннего события этого участника, которое может идентифицировать X. Затем определяют «принятое поколение» X как медиану этого списка.In some cases, the "accepted generation" of event X can be calculated as follows. Find which participant created and/or determined each first round event R that can identify event X. Then determine the generation number for that participant's earliest event that can identify X. Then determine the "accepted generation" X as the median of this list.
В некоторых случаях «принятая метка времени» T события X может быть медианой меток времени в событиях, которые включают первое событие каждого участника, которое идентифицирует и/или видит X. Например, принятая метка времени события 1401 может быть медианой значения меток времени для событий 1402, 1403, 1403 и 1408. В некоторых случаях метка времени для события 1401 может быть включена в вычисление медианы. В других случаях принятая метка времени для X может быть любым другим значением или комбинацией значений меток времени в событиях, которые являются первыми событиями каждого участника для идентификации или видения X. Например, принятая метка времени для X может быть основана на среднем значении меток времени, среднеквадратичном отклонении меток времени, модифицированном среднем значении (например, путем удаления из вычисления самой ранней и самой поздней меток времени) и/или т.п. В еще других случаях может быть использована расширенная медиана.In some cases, the "received timestamp" T of event X may be the median of the timestamps in events that include the first event of each participant that identifies and/or sees X. For example, the received timestamp of
В некоторых случаях общий порядок и/или порядок консенсуса для событий вычисляется посредством сортировки событий по их принятому раунду (также называемому в настоящем документе порядковым значением), с разрушением равенств по их принятой метке времени и разрушением этих равенство по их подписям. В других случаях общий порядок для событий может быть вычислен посредством сортировки событий по их принятому раунду, с разрушением равенств по их принятому поколению и разрушением этих равенств по их подписям. В вышеизложенных абзацах определены функции, используемые для вычисления и/или определения принятого раунда, принятой метки времени и/или принятого поколения события.In some cases, the overall order and/or consensus order for events is computed by sorting the events by their accepted round (also referred to herein as ordinal value), collapsing equalities by their adopted timestamp, and collapsing those equalities by their signatures. In other cases, the overall order for the events can be computed by sorting the events by their adopted round, breaking down the equalities by their adopted generation, and breaking down those equalities by their signatures. The above paragraphs define functions used to calculate and/or determine the received round, received timestamp, and/or received event generation.
В других случаях вместо использования подписи каждого события может быть использована подпись этого события, подвергнутая операции исключающего ИЛИ с подписями известных событий или известных свидетелей с тем же принятым раундом и/или принятым поколением в этом раунде. В других случаях любая другая подходящая комбинация подписей событий может быть использована для разрушения равенств, чтобы определять порядок консенсуса событий.In other cases, instead of using the signature of each event, the signature of that event XORed with signatures of known events or known witnesses with the same received round and/or received generation in that round may be used. In other cases, any other suitable combination of event signatures can be used to break the equalities to determine the event consensus order.
В еще других случаях вместо определения «принятого поколения» как медианы списка «принятое поколение» может быть определено как сам список. Тогда при сортировке по принятому поколению два принятых поколения могут быть сравнены по средним элементам их списков, с разрушением равенств по элементу непосредственно перед серединой, с разрушением этих равенств по элементу непосредственно после середины и с продолжением чередования между элементом перед используемым до этого и элементом после, пока равенство не будет разрушено.In still other cases, instead of defining "accepted generation" as the median of the list, "accepted generation" may be defined as the list itself. Then, when sorted by the accepted generation, the two accepted generations can be compared by the middle elements of their lists, breaking down the equalities by the element just before the middle, breaking those equalities by the element just after the middle, and continuing to alternate between the element before the one used before and the element after, until equality is destroyed.
В некоторых случаях медианная метка времени может быть заменена «расширенной медианой». В таких случаях список меток времени может быть определен для каждого события, вместо одной принятой метки времени. Список меток времени для события X может включать первое событие каждого участника, которое идентифицирует и/или видит X. Например, как показано на фиг. 14, список меток времени для события 1401 может включать метки времени для событий 1402, 1403, 1403 и 1408. В некоторых случаях также может быть включена метка времени для события 1401. При разрушении равенства со списком меток времени (т.е. два события имеют один и тот же принятый раунд) могут быть сравнены средние метки времени списка каждого события (или предварительно определенные первая или вторая из двух средних меток времени, если длина четная). Если эти метки времени являются одинаковыми, могут быть сравнены метки времени непосредственно после средних меток времени. Если эти метки времени являются одинаковыми, могут быть сравнены метки времени непосредственно перед средними отметками времени. Если эти метки времени также являются одинаковыми, сравнивают метки времени после трех уже сравненных меток времени. Это чередование может продолжаться до тех пор, пока равенство не будет разрушено. Подобно вышеизложенному обсуждению, если два списка идентичны, равенство может быть разрушено по подписям двух элементов.In some cases, the median timestamp may be replaced by "extended median". In such cases, a list of timestamps may be defined for each event, instead of a single received timestamp. The list of timestamps for event X may include the first event of each participant that identifies and/or sees X. For example, as shown in FIG. 14, the timestamp list for
В еще других случаях «усеченная расширенная медиана» может быть использована вместо «расширенной медианы». В таком случае весь список меток времени не сохраняют для каждого события. Вместо этого лишь несколько значений рядом с центром списка сохраняют и используют для сравнения.In still other cases, "truncated extended median" may be used in place of "expanded median". In such a case, the entire list of timestamps is not stored for each event. Instead, only a few values near the center of the list are stored and used for comparison.
Принятая медианная метка времени может быть потенциально использована для других целей в дополнение к вычислению общего порядка событий. Например, Боб мог подписать контракт, в котором говорится, что он берет на себя обязательства по соблюдению контракта, если и только если существует событие X, содержащее транзакцию, в которой Алиса подписывает этот же контракт, причем принятая метка времени для X соответствует определенному крайнему сроку или более раннему моменту времени. В этом случае Боб не возьмет на себя обязательства по соблюдению контракта, если Алиса подпишет его после крайнего срока, указанного «принятой медианной меткой времени», как описано выше.The received median timestamp can potentially be used for other purposes in addition to calculating the overall order of events. For example, Bob could sign a contract stating that he is committed to the contract if and only if there is an event X containing a transaction in which Alice signs the same contract, and the received timestamp for X corresponds to a certain deadline. or an earlier point in time. In this case, Bob will not commit to the contract if Alice signs it after the deadline indicated by the "accepted median timestamp" as described above.
В некоторых случаях состояние распределенной базы данных может быть определено после достижения консенсуса. Например, если S(R) является набором событий, который могут видеть известные свидетели в раунде R, в итоге все события в S(R) будут иметь известные принятый раунд и принятую метку времени. На этом этапе порядок консенсуса для событий в S(R) известен и меняться не будет. Когда этот этап достигнут, участник может вычислить и/или определить представление событий и их порядок. Например, участник может вычислить значение хеша событий в S(R) в их порядке консенсуса. Участник может затем подписать с помощью цифровой подписи значение хеша и включить значение хеша в следующее событие, которое определяет участник. Это может быть использовано для оповещения других участников о том, что этот участник определил, что события в S(R) имеют заданный порядок, который не будет меняться. После того как по меньшей мере M участников (или любое другое подходящее количество или процентная доля участников) подписали значение хеша для S(R) (и, таким образом, согласились с порядком, представленным значением хеша), этот список консенсуса событий вместе со списком подписей участников могут образовать один файл (или другую структуру данных), который может быть использован для доказательства того, что порядок консенсуса был таковым, как заявлено, для событий в S(R). В других случаях, если события содержат транзакции, которые обновляют состояние системы распределенной базы данных (как описано в настоящем документе), то значение хеша может представлять состояние системы распределенной базы данных после применения транзакций событий в S(R) в порядке консенсуса.In some cases, the state of a distributed database can be determined after consensus has been reached. For example, if S(R) is a set of events that known bystanders in round R can see, the result is that all events in S(R) will have a known received round and received timestamp. At this stage, the consensus order for events in S(R) is known and will not change. When this stage is reached, the participant can calculate and/or determine the representation of events and their order. For example, a participant can compute the hash value of the events in S(R) in their consensus order. The participant can then digitally sign the hash value and include the hash value in the next event that the participant specifies. This can be used to alert other participants that this participant has determined that the events in S(R) are in a given order that will not change. After at least M participants (or any other suitable number or percentage of participants) have signed the hash value for S(R) (and thus agree on the order represented by the hash value), this event consensus list, along with the list of signatures participants can form a single file (or other data structure) that can be used to prove that the consensus order was as claimed for the events in S(R). In other cases, if the events contain transactions that update the state of the distributed database system (as described herein), then the hash value may represent the state of the distributed database system after applying the event transactions in S(R) in consensus order.
В некоторых случаях M (как описано выше) может быть основано на весовых значениях (также называемых в настоящем документе значениями долей), присвоенных каждому участнику, а не просто дробного числа, процентной доли и/или значения общего количества участников. В таком случае каждый участник имеет долю, связанную с его заинтересованностью и/или влиянием в системе распределенной базы данных. Такая доля может представлять собой весовое значение и/или величину доли. Можно сказать, что каждое событие, определенное этим участником, может иметь весовое значение его определяющего участника. Тогда M может быть частью от общей доли всех участников и может называться критерием и/или порогом величины доли. События, описанные выше как зависимые от M, будут происходить, когда набор участников с суммой долей по меньшей мере M придет к согласию (т.е. будет удовлетворять критерию величины доли). Таким образом, на основе своей доли определенные участники могут иметь большее влияние на систему и на то, каким образом получается порядок консенсуса. В некоторых случаях транзакция в событии может менять долю одного или более участников, добавлять новых участников и/или удалять участников. Если такая транзакция имеет принятый раунд R, то после вычисления принятого раунда события после свидетелей раунда R будут повторно вычислять свои номера раундов и другую информацию с использованием модифицированных долей и модифицированного списка участников. В некоторых случаях голоса относительно того, являются ли события раунда R известными, могут использовать старые доли и список участников, но голоса относительно раундов после R могут использовать новые доли и список участников.In some cases, M (as described above) may be based on weight values (also referred to herein as share values) assigned to each participant, rather than simply a fractional number, percentage, and/or total number of participants. In such a case, each participant has a share associated with his interest and/or influence in the distributed database system. Such a proportion may be a weight value and/or a fraction value. We can say that each event defined by this participant can have the weight value of its defining participant. Then M may be a fraction of the total share of all participants and may be referred to as a criterion and/or a threshold for the size of the share. The events described above as dependent on M will occur when a set of participants with a sum of shares of at least M comes to an agreement (i.e., satisfies the share size criterion). Thus, based on their stake, certain participants can have more influence over the system and how the consensus order is obtained. In some cases, a transaction in an event may change the stake of one or more participants, add new participants, and/or remove participants. If such a transaction has an accepted round R, then after calculating the accepted round, the events after round witnesses R will recalculate their round numbers and other information using the modified shares and the modified participant list. In some cases, votes on whether round R events are known may use the old stakes and list of participants, but votes on rounds after R may use the new stakes and list of participants.
В некоторых дополнительных случаях предварительно определенные весовые значения или величины долей могут быть присвоены каждому участнику системы распределенной базы данных. Соответственно консенсус, достигаемый посредством протокола византийского соглашения, может быть реализован с использованием связанного уровня безопасности для защиты группы участников или популяции от потенциальных атак Сивиллы. В некоторых случаях такой уровень безопасности может быть гарантирован математически. Например, злоумышленники могут хотеть повлиять на исход одного или более событий посредством реорганизации частичного порядка событий, зарегистрированных в DAG на основе хешей. Атака может быть осуществлена посредством реорганизации одного или более частичных порядков DAG на основе хешей до достижения консенсуса и/или окончательного соглашения среди участников распределенной базы данных. В некоторых случаях могут возникать разногласия относительно времени, в которое произошло несколько конкурирующих событий. Как обсуждалось выше, исход, связанный с событием, может зависеть от значения M. По существу, в некоторых случаях определение того, кто из Алисы или Боба совершил действие первым в отношении события (и/или транзакции внутри события), может быть выполнено, когда количество голосов или сумма долей голосующих участников в соглашении превышает или равняется значению M.In some additional cases, predetermined weights or stakes may be assigned to each member of the distributed database system. Accordingly, the consensus achieved through the Byzantine Agreement protocol can be implemented using an associated security layer to protect a group of participants or a population from potential Sibyl attacks. In some cases, this level of security can be mathematically guaranteed. For example, attackers may want to influence the outcome of one or more events by rearranging the partial order of events registered in the DAG based on hashes. The attack can be carried out by reorganizing one or more partial DAG orders based on hashes until a consensus and/or final agreement is reached among the participants in the distributed database. In some cases, there may be disagreement about the time at which several competing events occurred. As discussed above, the outcome associated with an event may depend on the value of M. As such, in some cases, determining which Alice or Bob performed the action first on an event (and/or a transaction within an event) can be made when the number of votes or the sum of the shares of voting members in the agreement is greater than or equal to M.
Некоторые типы атак по реорганизации порядка событий требуют, чтобы злоумышленник контролировал по меньшей мере часть или процентную долю (например, 1/10, 1/4, 1/3 и т. д.) от N в зависимости от значения M. В некоторых случаях значение M может быть приспособлено так, чтобы составлять, например, 2/3 от группы или популяции N. В таком случае, пока более 2/3 участников группы или популяции не являются участниками атаки, согласие может быть достигнуто участниками, которые не принимают участие в атаке, и распределенная база данных продолжит достигать консенсуса и работать как положено. Более того, в таком случае злоумышленник должен контролировать по меньшей мере N минус M (N-M) участников группы или популяции (1/3 участников в этом примере) в период атаки, чтобы остановить конвергенцию базы данных, чтобы вызвать конвергенцию распределенной базы данных в пользу злоумышленника (например, чтобы вызвать конвергенцию базы данных в несправедливом порядке), чтобы сошлись два разных состояния (например, так, чтобы участники официально согласились относительно обоих из двух противоречащих состояний) или чтобы фальсифицировать валюту (когда система распределенной базы данных работает с криптовалютой). Some types of reordering attacks require the attacker to control at least a fraction or percentage (for example, 1/10, 1/4, 1/3, etc.) of N depending on the value of M. In some cases, the value of M can be adjusted to be, for example, 2/3 of the group or population N. In such a case, as long as more than 2/3 of the members of the group or population are not participants in the attack, agreement can be reached by participants who are not participating in the attack. attack, and the distributed database will continue to reach consensus and work as expected. Moreover, in such a case, the attacker must control at least N minus M (N-M) members of the group or population (1/3 of the members in this example) during the attack period in order to stop database convergence in order to cause distributed database convergence in favor of the attacker (for example, to cause a database to converge in an unfair order), to bring two different states together (for example, so that participants formally agree on both of two conflicting states), or to falsify a currency (when a distributed database system works with a cryptocurrency).
В некоторых реализациях весовые значения или доли могут быть присвоены каждому участнику группы или популяции, и N будет представлять собой общую сумму всех их весов или долей. Соответственно более высокие весовое значение или величина доли могут быть присвоены поднабору из группы участников или популяции на основе показателя доверия или надежности. Например, более высокое весовое значение или величина доли могут быть присвоены участникам, которые с меньшей вероятностью будут участвовать в атаке или которые имеют некоторый индикатор, показывающий, что они в меньшей степени предрасположены к участию в нечестной деятельности.In some implementations, weights or shares may be assigned to each member of a group or population, and N will be the total sum of all their weights or shares. Accordingly, a higher weight or proportion may be assigned to a subset of a group of participants or a population based on a measure of confidence or reliability. For example, a higher weight or share value may be assigned to participants who are less likely to engage in an attack or who have some indicator that they are less likely to engage in dishonest activity.
В некоторых случаях уровень безопасности системы распределенной базы данных может быть повышен посредством выбора M таким образом, чтобы оно составляло большую часть от N. Например, когда M соответствует наименьшему целому числу, которое превышает 2/3 от количества участников группы или популяции, N, и все участники имеют одинаковую силу голоса, злоумышленнику необходимо будет иметь контроль или влияние над по меньшей мере 1/3 от N, чтобы предотвратить достижение согласия среди участников, не принимающих участия в атаке, и чтобы добиться того, чтобы распределенная база данных не смогла достичь консенсуса. Подобным образом, в таком случае злоумышленнику необходимо будет иметь контроль или влияние над по меньшей мере 1/3 от N, чтобы вызвать конвергенцию распределенной базы данных и/или достичь согласия в пользу злоумышленника (например, чтобы вызвать конвергенцию базы данных в несправедливом порядке), чтобы сошлись два разных состояния (например, так, чтобы участники официально согласились относительно обоих из двух противоречащих состояний) или чтобы фальсифицировать валюту (когда система распределенной базы данных работает с криптовалютой).In some cases, the security level of a distributed database system can be improved by choosing M to be a larger fraction of N. For example, when M is the smallest integer that is greater than 2/3 of the number of members of a group or population, N, and all participants have the same voting power, an attacker would need to have control or influence over at least 1/3 of N to prevent consensus among participants not taking part in the attack and to ensure that the distributed database cannot reach consensus . Similarly, in such a case, the attacker would need to have control or influence over at least 1/3 of N to cause distributed database convergence and/or reach an agreement in favor of the attacker (e.g., to cause database convergence in an unfair order), so that two different states converge (for example, so that participants formally agree on both of the two conflicting states) or to falsify a currency (when a distributed database system works with a cryptocurrency).
В некоторых случаях, например, нечестный участник может проголосовать двумя разными способами, чтобы вызвать конвергенцию распределенной базы данных на два разных состояния. Если, например, N=300 и 100 участников являются нечестными, имеется 200 честных участников, из которых, например, 100 проголосовали «да» и 100 проголосовали «нет» относительно транзакции. Если 100 нечестных участников отправят сообщение (или событие) 100 честным участникам, проголосовавшим «да», что 100 нечестных участников проголосовали «да», 100 честных участников, проголосовавших «да», будут полагать, что окончательным консенсусом является «да», поскольку они будут полагать, что 2/3 участников проголосовали «да». Подобным образом, если 100 нечестных участников отправят сообщение (или событие) 100 честным участникам, проголосовавшим «нет», что 100 нечестных участников проголосовали «нет», 100 честных участников, проголосовавших «нет», будут полагать, что окончательным консенсусом является «нет», поскольку они будут полагать, что 2/3 участников проголосовали «нет». Таким образом, в этой ситуации некоторые честные участники будут полагать, что консенсусом является «да», тогда как остальные честные участники будут полагать, что консенсусом является «нет», что вызовет конвергенцию распределенной базы данных к двум разным состояниям. Однако, если количество нечестных участников меньше 100, честные участники будут в итоге сходиться на одном значении (либо «да», либо «нет»), поскольку нечестные участники не будут способны протолкнуть количество обоих голосов «да» и «нет» свыше 200 (т.е. 2/3 от N). Другие подходящие значения M могут быть использованы согласно характеристикам и/или конкретным требованиям к применению системы распределенной базы данных.In some cases, for example, a dishonest participant may vote in two different ways to cause a distributed database to converge into two different states. If, for example, N=300 and 100 participants are dishonest, there are 200 honest participants, of which, for example, 100 voted "yes" and 100 voted "no" regarding the transaction. If 100 dishonest participants send a message (or event) to 100 honest participants who voted "yes" that 100 dishonest participants voted "yes", 100 honest participants who voted "yes" will assume that the final consensus is "yes" because they will assume that 2/3 of the participants voted "yes". Similarly, if 100 dishonest participants send a message (or event) to 100 honest participants who voted "no" that 100 dishonest participants voted "no", 100 honest participants who voted "no" will assume that the final consensus is "no" because they will assume that 2/3 of the participants voted "no". Thus, in this situation, some honest participants will believe that the consensus is "yes", while other honest participants will believe that the consensus is "no", which will cause the distributed database to converge to two different states. However, if the number of dishonest participants is less than 100, honest participants will eventually converge on one value (either yes or no), since dishonest participants will not be able to push the number of both yes and no votes over 200 ( i.e. 2/3 of N). Other suitable values of M may be used according to the characteristics and/or specific application requirements of the distributed database system.
В некоторых дополнительных случаях, когда участники имеют неодинаковую силу голоса, например, когда наиболее надежные или доверенные участники голосования имеют силу голоса (например, весовое значение или величину доли), равную единице, а остальные участники имеют часть от единицы, согласие может быть достигнуто, когда сумма долей или весов достигает значения M. Таким образом, в некоторых случаях согласие может быть иногда достигнуто, даже когда большинство участников не согласны с окончательным решением, но большинство надежных или доверенных участников согласны. Другими словами, мощность голосов недоверенных участников может быть ослаблена для предотвращения или ослабления возможных атак. Соответственно в некоторых случаях уровень безопасности может быть повышен за счет требования достижения консенсуса участниками с общей долей M, а не просто количества M участников. Более высокое значение для M означает, что большая часть доли (например, большее количество участников в невзвешенной системе) должна прийти к согласию, чтобы вызвать конвергенцию распределенной базы данных.In some additional cases where participants have unequal voting power, such as when the most trusted or trusted voters have a voting power (e.g., weight or share value) of one, and the remaining participants have a fraction of one, agreement can be reached, when the sum of the shares or weights reaches the value M. Thus, in some cases, agreement can sometimes be reached even when the majority of participants do not agree with the final decision, but the majority of reliable or trusted participants agree. In other words, the power of untrusted participants' votes can be weakened to prevent or mitigate possible attacks. Accordingly, in some cases, the level of security can be increased by requiring consensus among participants with a total share M, and not just the number M of participants. A higher value for M means that more of the share (for example, more participants in an unweighted system) must agree in order to cause distributed database convergence.
В некоторых случаях система распределенной базы данных может поддерживать множество протоколов безопасности участия, включая, помимо прочего, протоколы, показанные в таблице 1, и любую их комбинацию. Протоколы, показанные в таблице 1, описывают множество методов присвоения доли или весового значения участникам группы или популяции. Протоколы в таблице 1 могут быть реализованы с использованием криптовалют, таких как, например, Биткойн, производная от исходной криптовалюты, криптовалюта, определенная в системе распределенной базы данных, или любой другой подходящий тип криптовалюты. Несмотря на описание в отношении криптовалюты, в других случаях протоколы, показанные в таблице 1, могут быть использованы в любой другой подходящей системе распределенной базы данных и с любым другим способом присвоения доли.In some cases, a distributed database system may support a variety of participation security protocols, including but not limited to those shown in Table 1 and any combination thereof. The protocols shown in Table 1 describe a variety of methods for assigning a proportion or weight to members of a group or population. The protocols in Table 1 may be implemented using cryptocurrencies such as, for example, Bitcoin derived from the original cryptocurrency, a cryptocurrency defined in a distributed database system, or any other suitable type of cryptocurrency. Despite the description in relation to cryptocurrencies, in other cases, the protocols shown in Table 1 can be used in any other suitable distributed database system and with any other method of assigning shares.
ТАБЛИЦА 1TABLE 1
В этом протоколе от участников популяции может потребоваться продолжение выполнения вычислительных задач или решения загадок, чтобы не отставать от потребностей системы и не потерять свою возможность поддержания безопасности системы. Этот протокол может быть также сконфигурирован так, чтобы доли голосов уменьшались со временем, чтобы стимулировать непрерывную работу участников.Participants can earn shares of votes by completing computational tasks or solving puzzles. Unlike traditional cryptocurrencies, computational costs may entail earning a share of votes rather than mining blocks.
In this protocol, members of the population may be required to continue performing computational tasks or solving puzzles in order to keep up with the needs of the system and not lose their ability to maintain the security of the system. This protocol can also be configured to decrease vote shares over time to encourage continued participation by participants.
Разрешение на присоединение к популяции может быть основано на голосовании существующих участников, доказательстве участия в некоторой существующей организации или любом другом подходящем условии.Each participant receives a share of votes exactly equal to one. Members may only be allowed to become a member if they have permission.
Permission to join a population may be based on a vote by existing members, proof of membership in some existing organization, or any other suitable condition.
Выбор одного из протоколов безопасности участия может зависеть от конкретных применений. Например, гибридный протокол может быть подходящим для реализации обычных малоценных транзакций, применения при коммерческом сотрудничестве, применения в компьютерной игре и другого подобного типа применений, где компромисс между безопасностью и минимальными вычислительными затратами склоняется к последнему. Гибридный протокол может быть эффективен в предотвращении нарушения работы или атаки группы участников или популяции одним недовольным участником.The choice of one of the participation security protocols may depend on specific applications. For example, a hybrid protocol may be suitable for general low-value transactions, commercial collaboration applications, computer game applications, and other similar types of applications where the trade-off between security and minimal computational overhead leans towards the latter. A hybrid protocol can be effective in preventing a disruption or attack on a group of participants or a population by a single disgruntled participant.
В качестве другого примера, протокол по разрешению может быть желателен, когда требования безопасности имеют наивысший приоритет, и участники популяции не являются абсолютно незнакомыми или неизвестными друг другу. Протокол по разрешению может быть использован для реализации приложений, предназначенных, например, для банков и субъектов финансовых отношений подобного типа, или субъектов, состоящих в консорциуме. В таком случае банки в консорциуме могут стать участниками популяции, и каждый банк может иметь ограничение, заключающееся в том, что он принимает участие в качестве одного участника. Соответственно M может быть установлено в наименьшее целое число, которое превышает две третьих популяции. Банки не могут взаимно доверять друг другу как отдельные субъекты, но могут положиться на уровень безопасности, обеспечиваемый системой распределенной базы данных, которая в этом примере ограничивает количество нечестных участников так, чтобы оно составляло не более одной третьей банков в популяции.As another example, a resolution protocol may be desirable when security requirements are of the highest priority and the members of the population are not completely unfamiliar or unknown to each other. The authorization protocol can be used to implement applications intended, for example, for banks and entities of this type of financial relationship, or entities that are members of a consortium. In such a case, the banks in the consortium may become members of the population, and each bank may have the restriction that it participates as one member. Accordingly, M can be set to the smallest integer that is greater than two-thirds of the population. Banks cannot mutually trust each other as separate entities, but can rely on the level of security provided by the distributed database system, which in this example limits the number of dishonest participants to no more than one-third of the banks in the population.
В качестве еще одного примера, протокол доказательства сжигания может быть реализован, когда популяция содержит большое количество незнакомых участников или неизвестных участников. В таком случае злоумышленник может получить контроль над частью общей доли, превышающей значение, заданное для M. Однако может быть установлен достаточно высокий вступительный взнос, чтобы стоимость атаки превышала любые ожидаемые выгоды или доходы.As another example, a burn proof protocol can be implemented when the population contains a large number of unfamiliar members or unknown members. In such a case, the attacker may gain control of a portion of the total share that exceeds the value specified for M. However, the entry fee may be set high enough that the cost of the attack exceeds any expected benefits or revenues.
В качестве другого примера, протокол доказательства доли владения может являться подходящим для более крупных групп. Протокол доказательства доли владения может быть оптимальным или желательным решением, когда имеется большая группа участников, которые владеют существенными суммами криптовалюты в приблизительно равных объемах, и не предвидится или не предполагается, что участник, нарушающий работу, соберет более крупную сумму криптовалюты, чем сумма, которой вместе владеет большая группа участников.As another example, a proof-of-stake protocol may be suitable for larger groups. A proof-of-stake protocol may be an optimal or desirable solution when there is a large group of participants who hold substantial amounts of cryptocurrencies in approximately equal amounts, and it is not foreseen or expected that the disrupting participant will collect a larger amount of cryptocurrencies than the amount that together owned by a large group of participants.
В других случаях другие дополнительные или более сложные протоколы могут быть получены из протокола или комбинации протоколов, показанных в таблице 1. Например, система распределенной базы данных может быть выполнена с возможностью реализации гибридного протокола, который следует протоколу по разрешению в течение предварительно определенного периода времени и в итоге позволяет участникам продавать доли голосов друг другу. В качестве другого примера, система распределенной базы данных может быть выполнена с возможностью реализации протокола доказательства сжигания и в итоге переходить к протоколу доказательства доли владения, когда значение событий или вовлеченные транзакции достигают порогового значения или предварительно определенной величины в криптовалюте.In other cases, other additional or more complex protocols may be derived from the protocol or combination of protocols shown in Table 1. For example, a distributed database system may be configured to implement a hybrid protocol that follows the resolution protocol for a predetermined period of time and ultimately allows participants to sell shares of votes to each other. As another example, a distributed database system may be configured to implement a proof-of-burn protocol and eventually transition to a proof-of-stake protocol when the value of the events or transactions involved reaches a threshold or predetermined value in the cryptocurrency.
Вышеизложенные термины, определения и алгоритмы используются для иллюстрации вариантов осуществления и концепций, описанных в отношении фиг. 14–17b. На фиг. 16a и фиг. 16b проиллюстрировано первое примерное применение способа и/или процесса достижения консенсуса, показанное в математической форме. На фиг. 17a и фиг. 17b проиллюстрировано второе примерное применение способа и/или процесса достижения консенсуса, показанное в математической форме.The foregoing terms, definitions, and algorithms are used to illustrate the embodiments and concepts described with respect to FIG. 14–17b. In FIG. 16a and FIG. 16b illustrates a first exemplary application of the consensus method and/or process, shown in mathematical form. In FIG. 17a and fig. 17b illustrates a second exemplary application of the consensus method and/or process, shown in mathematical form.
В других случаях и как более подробно описано в настоящем документе, модуль 211 конвергенции базы данных может первоначально определять вектор значений для параметра и может обновлять вектор значений по мере приема дополнительных значений для параметра с других вычислительных устройств. Например, модуль 211 конвергенции базы данных может принимать дополнительные значения для параметра с других вычислительных устройств посредством модуля 212 связи. В некоторых случаях модуль конвергенции базы данных может выбирать значение для параметра на основе определенного и/или обновленного вектора значений для параметра, как более подробно описано в настоящем документе. В некоторых вариантах осуществления модуль 211 конвергенции базы данных может также отправлять значение для параметра на другие вычислительные устройства посредством модуля 212 связи, как более подробно описано в настоящем документе.In other cases, and as described in more detail herein, database convergence module 211 may initially determine a value vector for a parameter, and may update the value vector as additional values for the parameter are received from other computing devices. For example, database convergence module 211 can receive additional values for a parameter from other computing devices via communication module 212 . In some cases, the database convergence module may select a value for a parameter based on a determined and/or updated vector of values for the parameter, as described in more detail herein. In some embodiments, database convergence module 211 may also send a value for a parameter to other computing devices via communication module 212, as described in more detail herein.
В некоторых вариантах осуществления модуль 211 конвергенции базы данных может отправлять сигнал в память 220 для вызова сохранения в памяти 220 (1) определенного и/или обновленного вектора значений для параметра и/или (2) выбранного значения для параметра на основе определенного и/или обновленного вектора значений для параметра. Например, (1) определенный и/или обновленный вектор значений для параметра и/или (2) выбранное значение для параметра на основе определенного и/или обновленного вектора значений для параметра могут быть сохранены в экземпляре 221 распределенной базы данных, реализованном в памяти 220. В некоторых вариантах осуществления экземпляр 221 распределенной базы данных может быть подобен экземплярам 114, 124, 134, 144 распределенной базы данных системы 100 распределенной базы данных, показанной на фиг. 1.In some embodiments, database convergence module 211 may send a signal to memory 220 to cause memory 220 to store (1) a determined and/or updated vector of values for a parameter and/or (2) a selected value for a parameter based on the determined and/or updated a vector of values for the parameter. For example, (1) a determined and/or updated value vector for a parameter and/or (2) a selected value for a parameter based on the determined and/or updated value vector for a parameter may be stored in a distributed database instance 221 implemented in memory 220. In some embodiments, distributed database instance 221 may be similar to distributed database instances 114, 124, 134, 144 of distributed
Как показано на фиг. 2, модуль 211 конвергенции базы данных и модуль 212 связи показаны на фиг. 2 как реализованные в процессоре 210. В других вариантах осуществления модуль 211 конвергенции базы данных и/или модуль 212 связи могут быть реализованы в памяти 220. В еще других вариантах осуществления модуль 211 конвергенции базы данных и/или модуль 212 связи могут быть основаны на аппаратном обеспечении (например, ASIC, FPGA и т. д.).As shown in FIG. 2, the database convergence module 211 and the communication module 212 are shown in FIG. 2 as implemented in processor 210. In other embodiments, database convergence module 211 and/or communication module 212 may be implemented in memory 220. In still other embodiments, database convergence module 211 and/or communication module 212 may be hardware-based. software (e.g. ASIC, FPGA, etc.).
На фиг. 7 проиллюстрирована функциональная схема потока сигналов двух вычислительных устройств, синхронизирующих события, согласно одному варианту осуществления. В частности, в некоторых вариантах осуществления экземпляры 703 и 803 распределенной базы данных могут обмениваться событиями для достижения конвергенции. Вычислительное устройство 700 может выбирать синхронизацию с вычислительным устройством 800 случайным образом, на основе взаимосвязи с вычислительным устройством 700, на основе близости к вычислительному устройству 700, на основе упорядоченного списка, связанного с вычислительным устройством 700, и/или т.п. В некоторых вариантах осуществления, поскольку вычислительное устройство 800 может быть выбрано вычислительным устройством 700 из набора вычислительных устройств, относящихся к системе распределенной базы данных, вычислительное устройство 700 может выбирать вычислительное устройство 800 несколько раз подряд или может некоторое время не выбирать вычислительное устройство 800. В других вариантах осуществления указание о ранее выбранных вычислительных устройствах может быть сохранено на вычислительном устройстве 700. В таких вариантах осуществления вычислительное устройство 700 может находиться в ожидании, пока не будет осуществлено предварительно определенное количество выборов, перед тем, как получить возможность снова выбирать вычислительное устройство 800. Как поясняется выше, экземпляры 703 и 803 распределенной базы данных могут быть реализованы в памяти вычислительного устройства 700 и памяти вычислительного устройства 800 соответственно.In FIG. 7 illustrates a signal flow diagram of two event timing computing devices, according to one embodiment. In particular, in some embodiments, distributed database instances 703 and 803 may exchange events to achieve convergence. Computing device 700 may choose to synchronize with computing device 800 randomly, based on relationship with computing device 700, based on proximity to computing device 700, based on an ordered list associated with computing device 700, and/or the like. In some embodiments, since computing device 800 may be selected by computing device 700 from a set of computing devices associated with a distributed database system, computing device 700 may select computing device 800 multiple times in a row or may not select computing device 800 for a while. In others embodiments, an indication of previously selected computing devices may be stored on computing device 700. In such embodiments, computing device 700 may wait until a predetermined number of selections have been made before being able to select computing device 800 again. As discussed above, distributed database instances 703 and 803 may be implemented in computing device memory 700 and computing device memory 800, respectively.
На фиг. 3–6 проиллюстрированы примеры DAG на основе хешей согласно одному варианту осуществления. Имеется пять участников, каждый из которых представлен темной вертикальной линией. Каждый круг представляет событие. Две нисходящие линии от события представляют хеши двух предыдущих событий. Каждое событие в этом примере имеет две нисходящие линии (одну темную линию к тому же участнику и одну светлую линию к другому участнику), за исключением первого события каждого участника. Время течет вверх. На фиг. 3–6 вычислительные устройства распределенной базы данных обозначены как Алиса, Боб, Кэрол, Дэйв и Эд. Следует понимать, что такие обозначения относятся к вычислительным устройствам, которые конструктивно и функционально подобны вычислительным устройствам 110, 120, 130 и 140, показанным и описанным в отношении фиг. 1.In FIG. 3-6 illustrate examples of hash-based DAGs according to one embodiment. There are five participants, each represented by a dark vertical line. Each circle represents an event. The two descending lines from the event represent the hashes of the previous two events. Each event in this example has two descending lines (one dark line to the same participant and one light line to the other participant), except for the first event of each participant. Time flows upward. In FIG. 3-6, the distributed database computing devices are labeled Alice, Bob, Carol, Dave, and Ed. It should be understood that such designations refer to computing devices that are structurally and functionally similar to computing devices 110, 120, 130, and 140 shown and described with respect to FIG. one.
Примерная система 1: если вычислительное устройство 700 называется Алиса, и вычислительное устройство 800 называется Боб, то синхронизация между ними может быть выполнена так, как проиллюстрировано на фиг. 7. Синхронизация между Алисой и Бобом может быть выполнена следующим образом:Exemplary System 1: If computing device 700 is named Alice and computing device 800 is named Bob, then synchronization between them can be performed as illustrated in FIG. 7. Synchronization between Alice and Bob can be done as follows:
- Алиса отправляет Бобу события, сохраненные в распределенной базе 703 данных.- Alice sends Bob the events stored in the distributed database 703 data.
- Боб создает и/или определяет новое событие, которое содержит:- Bob creates and/or defines a new event that contains:
-- хеш последнего события, которое создал и/или определил Боб; -- hash of the last event created and/or defined by Bob;
-- хеш последнего события, которое создала и/или определила Алиса; -- hash of the last event created and/or defined by Alice;
-- цифровую подпись вышеуказанного, поставленную Бобом. -- Bob's digital signature of the above.
- Боб отправляет Алисе события, сохраненные в распределенной базе 803 данных.- Bob sends the events stored in the distributed database 803 to Alice.
- Алиса создает и/или определяет новое событие.- Alice creates and/or defines a new event.
- Алиса отправляет Бобу это событие.- Alice sends this event to Bob.
- Алиса вычисляет общий порядок для событий как функцию DAG на основе хешей.- Alice calculates the overall order for events as a DAG function based on hashes.
- Боб вычисляет общий порядок для событий как функцию DAG на основе хешей.- Bob calculates the overall order for the events as a function of the DAG based on the hashes.
В любой заданный момент времени участник может сохранить принятые на данный момент события вместе с идентификатором, связанным с вычислительным устройством и/или экземпляром распределенной базы данных, которые создали и/или определили каждое событие. Каждое событие содержит хеши двух более ранних событий, за исключением первоначального события (которое не имеет родительских хешeй) и первого события для каждого нового участника (которое имеет один хеш события-родителя, представляющий событие существующего участника, который пригласил их присоединиться). Для представления этого набора событий может быть нарисована схема. На ней могут быть показаны вертикальная линия для каждого участника и точка на этой линии для каждого события, созданного и/или определенного этим участником. Диагональная линия изображена между двумя точками в каждом случае, когда событие (расположенная выше точка) содержит хеш более раннего события (расположенная ниже точка). Можно сказать, что событие связано с другим событием, если это событие может ссылаться на другое событие посредством хеша этого события (либо непосредственно, либо через промежуточные события).At any given point in time, a participant may store the so far received events along with an identifier associated with the computing device and/or distributed database instance that created and/or defined each event. Each event contains the hashes of the two earlier events, except for the original event (which has no parent hashes) and the first event for each new member (which has one parent event hash representing the event of the existing member who invited them to join). A diagram can be drawn to represent this set of events. It can show a vertical line for each participant, and a dot on that line for each event created and/or defined by that participant. A diagonal line is drawn between two dots whenever an event (higher dot) contains a hash of an earlier event (lower dot). An event can be said to be related to another event if that event can refer to another event via the hash of that event (either directly or through intermediate events).
Например, на фиг. 3 проиллюстрирован пример DAG 600 на основе хешей. Событие 602 создается и/или определяется Бобом в результате синхронизации с Кэрол и после нее. Событие 602 содержит хеш события 604 (предыдущего события, созданного и/или определенного Бобом) и хеш события 606 (предыдущего события, созданного и/или определенного Кэрол). В некоторых вариантах осуществления, например, хеш события 604, включенный в событие 602, содержит указатель на его непосредственные события-предки, события 608 и 610. По существу, Боб может использовать событие 602 для ссылки на события 608 и 610 и перестройки DAG на основе хешей с использованием указателей на предыдущие события. В некоторых случаях можно сказать, что событие 602 связано с другими событиями в DAG 600 на основе хешей, поскольку событие 602 может ссылаться на каждое из событий в DAG 600 на основе хешей посредством более ранних событий-предков. Например, событие 602 связано с событием 608 посредством события 604. В качестве другого примера, событие 602 связано с событием 616 посредством события 606 и события 612.For example, in FIG. 3 illustrates an example of a
Примерная система 2: Система на основе примерной системы 1, при этом событие также содержит «полезные данные» транзакций или другую информацию для записи. Такие полезные данные могут быть использованы для обновления событий с помощью любых транзакций и/или информации, которые произошли и/или были определены начиная с непосредственного предыдущего события вычислительного устройства. Например, событие 602 может включать любые транзакции, выполненные Бобом, начиная с момента создания и/или определения события 604. Таким образом, во время синхронизации события 602 с другими вычислительными устройствами Боб может делиться этой информацией. Соответственно транзакции, выполняемые Бобом, могут быть связаны с событием и предоставлены другим участникам с помощью событий.Exemplary System 2: A system based on
Примерная система 3: Система на основе примерной системы 1, при этом событие также включает текущие время и/или дату, полезные для отладки, диагностики и/или других целей. Время и/или дата могут быть локальными временем и/или датой, фиксирующими, когда вычислительное устройство (например, Боб) создает и/или определяет событие. В таких вариантах осуществления такие локальные время и/или дата не синхронизируются с остальными устройствами. В других вариантах осуществления время и/или дата могут быть синхронизированы на всех устройствах (например, при обмене событиями). В еще других вариантах осуществления для определения времени и/или даты может быть использован глобальный таймер.Exemplary System 3: A system based on
Примерная система 4: Система на основе примерной системы 1, в которой Алиса не отправляет Бобу ни события, созданные и/или определенные Бобом, ни события-предки такого события. Событие x является предком события y, если y содержит хеш x или y содержит хеш события, которое является предком x. Подобным образом, в таких вариантах осуществления Боб отправляет Алисе события, еще не сохраненные Алисой, и не отправляет события, уже сохраненные Алисой.Exemplary System 4: A system based on
Например, на фиг. 4 проиллюстрирован примерный DAG 620 на основе хешей, иллюстрирующий события-предки (круги с точками) и события-потомки (круги с полосками) события 622 (черный круг). Линии устанавливают частичный порядок событий, в котором предки идут до события в виде черного круга, и потомки идут после события в виде черного круга. Частичный порядок не указывает, идут ли события в виде белых кругов до или после события в виде черного круга, так что для определения их последовательности используется общий порядок. В качестве другого примера, на фиг. 5 проиллюстрирован примерный DAG на основе хешей, иллюстрирующий одно конкретное событие (закрашенный круг) и первый момент времени, в который каждый участник принимает указание об этом событии (круги с полосками). Когда Кэрол синхронизируется с Дэйвом для создания и/или определения события 624, Дэйв не отправляет Кэрол события-предки события 622, поскольку Кэрол уже осведомлена о таких событиях и приняла их. Вместо этого Дэйв отправляет Кэрол события, которые Кэрол все еще должна принять и/или сохранить в экземпляре распределенной базы данных Кэрол. В некоторых вариантах осуществления Дэйв может идентифицировать, какие события следует отправлять Кэрол, на основе того, что DAG на основе хешей Дэйва показывает о том, какие события Кэрол приняла ранее. Событие 622 является предком события 626. Следовательно, на момент события 626 Дэйв уже принял событие 622. На фиг. 4 показано, что Дэйв принял событие 622 от Эда, который принял событие 622 от Боба, который принял событие 622 от Кэрол. Кроме того, на момент события 624 событие 622 является последним событием, принятым Дэйвом, которое было создано и/или определено Кэрол. Следовательно, Дэйв может отправлять Кэрол события, которые Дэйв сохранил, отличающиеся от события 622 и его предков. Дополнительно после приема события 626 от Дэйва Кэрол может перестраивать DAG на основе хешей с помощью указателей в событиях, сохраненных в экземпляре распределенной базы данных Кэрол. В других вариантах осуществления Дэйв может идентифицировать, какие события следует отправлять Кэрол, на основе отправки Кэрол события 622 Дэйву (не показано на фиг. 4) и идентификации с помощью события 622 (и ссылок в нем) Дэйвом, чтобы идентифицировать события, которые Кэрол уже приняла.For example, in FIG. 4 illustrates an exemplary hash-based
Примерная система 5: Система на основе примерной системы 1, в которой оба участника отправляют события друг другу в таком порядке, что событие отправляется только после того, как получатель примет и/или сохранит предков этого события. Соответственно отправитель отправляет события от самых старых к самым новым, так что получатель может проверить два хеша в каждом событии при приеме события посредством сравнения двух хешeй с двумя событиями-предками, которые уже были приняты. Отправитель может идентифицировать, какие события следует отправлять получателю, на основе текущего состояния DAG на основе хешей отправителя (например, переменной состояния базы данных, определенной отправителем), а какие, как указывает этот DAG на основе хешей, получатель уже принял. Ссылаясь на фиг. 3, например, когда Боб синхронизируется с Кэрол для определения события 602, Кэрол может идентифицировать, что событие 619 является последним событием, созданным и/или определенным Бобом, которое приняла Кэрол. Следовательно, Кэрол может определить, что Бобу известно об этом событии и его предках. Таким образом, Кэрол может отправлять Бобу сначала событие 618 и событие 616 (т.е. самые старые события, которые Боб еще должен принять из принятых Кэрол). Кэрол может затем отправлять Бобу событие 612, а затем событие 606. Это позволяет Бобу легко связать события и перестроить DAG на основе хешей Боба. Использование DAG на основе хешей Кэрол для идентификации того, какие события еще должен принять Боб, может повысить эффективность синхронизации и может уменьшить сетевой трафик, поскольку Боб не запрашивает события у Кэрол. Exemplary System 5: A system based on
В других вариантах осуществления самое последнее событие может быть отправлено первым. Если получатель определяет (на основе хеша двух предыдущих событий в самом последнем событии и/или указателей на предыдущие события в самом последнем событии), что он еще не принял одно из двух предыдущих событий, получатель может запросить у отправителя отправку таких событий. Это может происходить до тех пор, пока получатель не примет и/или не сохранит предков самого последнего события. Ссылаясь на фиг. 3, в таких вариантах осуществления, например, когда Боб принимает событие 606 от Кэрол, Боб может идентифицировать хеш события 612 и события 614 в событии 606. Боб может определить, что событие 614 было ранее принято от Алисы при создании и/или определении события 604. Соответственно, Бобу не нужно запрашивать событие 614 у Кэрол. Боб может также определить, что событие 612 еще не было принято. Боб может затем запросить событие 612 у Кэрол. Боб может затем на основе хешeй в событии 612 определить, что Боб не принял события 616 или 618, и может соответственно запросить эти события у Кэрол. На основе событий 616 и 618 Боб затем сможет определить, что он принял предков события 606.In other embodiments, the most recent event may be sent first. If the receiver determines (based on the hash of the two previous events in the most recent event and/or pointers to previous events in the most recent event) that it has not yet received one of the two previous events, the receiver may request the sender to send such events. This may continue until the receiver accepts and/or stores the ancestors of the most recent event. Referring to FIG. 3, in such embodiments, for example, when Bob receives
Примерная система 6: Система на основе примерной системы 5 с дополнительным ограничением, которое заключается в том, что, когда участник имеет выбор между несколькими событиями для отправки далее, событие выбирается так, чтобы минимизировать общее количество отправленных на данный момент байтов, созданных и/или определенных этим участником. Например, если Алисе осталось отправить Бобу только два события, и одно из них имеет размер 100 байтов и было создано и/или определено Кэрол, а другое имеет размер 10 байтов и было создано и/или определено Дэйвом, и на данный момент в ходе этой синхронизации Алиса уже отправила 200 байтов событий Кэрол и 210 Дэйва, то Алисе следует сначала отправить событие Дэйву, а затем отправить событие Кэрол. Поскольку 210 + 10 < 100 + 200. Это может быть использовано для предотвращения атак, при которых один участник выдает либо одно огромное событие, либо поток мелких событий. В случае если трафик превышает ограничение по байтам большинства участников (как обсуждается в отношении примерной системы 7), способ согласно примерной системе 6 может обеспечивать, что игнорироваться будут события злоумышленника, а не события правомочных пользователей. Подобным образом, атаки могут быть ослаблены посредством отправки меньших событий перед большими событиями (для защиты от одного огромного события, забивающего канал связи). Более того, если участник не может отправить каждое из событий за одну синхронизацию (например, из-за ограничения сети, ограничений по байтам участника и т. д.), то этот участник может отправить несколько событий от каждого участника, вместо того, чтобы простой отправить события, определенные и/или созданные злоумышленником, и ни одного (из нескольких) события, созданного и/или определенного другими участниками. Exemplary System 6: A system based on Exemplary System 5 with the additional constraint that when a participant has a choice between multiple events to send next, the event is selected to minimize the total number of bytes sent so far, created and/or defined by this member. For example, if Alice only has two events left to send Bob, and one of them is 100 bytes long and was created and/or defined by Carol, and the other is 10 bytes long and was created and/or defined by Dave, and is currently in the process of Since Alice has already sent 200 bytes of events to Carol and 210 to Dave, Alice should first send an event to Dave and then send an event to Carol. Because 210 + 10 < 100 + 200. This can be used to prevent attacks where a single participant emits either one huge event or a stream of small events. In the event that the traffic exceeds the majority byte limit (as discussed with respect to exemplary system 7), the method of exemplary system 6 can ensure that malicious events are ignored rather than legitimate user events. Similarly, attacks can be mitigated by sending smaller events before larger events (to protect against one huge event clogging the communication channel). Moreover, if a participant cannot send each of the events in one sync (for example, due to network restrictions, participant byte limits, etc.), then this participant can send multiple events from each participant, instead of a simple send events defined and/or created by the attacker, and none (of several) events created and/or defined by other participants.
Примерная система 7: Система на основе примерной системы 1 с дополнительным первым этапом, на котором Боб отправляет Алисе число, указывающее максимальное количество байтов, которое он желает принять во время этой синхронизации, и Алиса отвечает сообщением со своим ограничением. Алиса затем прекращает отправку, если следующее событие превысило бы это ограничение. Боб делает то же самое. В таком варианте осуществления это ограничивает количество передаваемых байтов. Это может увеличить время конвергенции, но уменьшит количество сетевого трафика на синхронизацию.Exemplary System 7: A system based on
Примерная система 8: Система на основе примерной системы 1, в которой следующие этапы добавлены в начале процесса синхронизации:Exemplary System 8: A system based on
- Алиса идентифицирует S, набор событий, которые она приняла и/или сохранила, пропуская события, которые были созданы и/или определены Бобом или которые являются предками событий, созданных и/или определенных Бобом. - Alice identifies S, the set of events she received and/or stored, skipping events that were created and/or defined by Bob or that are ancestors of events created and/or defined by Bob.
- Алиса идентифицирует участников, которые создали и/или определили каждое событие в S, и отправляет Бобу список ID-номеров участников. Алиса также отправляет количество событий, которые были созданы и/или определены каждым участником, которые она уже приняла и/или сохранила.- Alice identifies the participants who created and/or defined each event in S and sends Bob a list of participant ID numbers. Alice also sends the number of events that have been created and/or defined by each participant that she has already accepted and/or saved.
- Боб отвечает списком того, сколько событий он принял, тех, которые были созданы и/или определены другими участниками.- Bob responds with a list of how many events he received, those created and/or defined by other participants.
- Алиса затем отправляет Бобу только события, которые он еще должен принять. Например, если Алиса указывает Бобу, что она приняла 100 событий, созданных и/или определенных Кэрол, и Боб отвечает, что он принял 95 событий, созданных и/или определенных Кэрол, то Алиса отправит только 5 самых последних событий, созданных и/или определенных Кэрол.- Alice then sends Bob only the events that he has yet to accept. For example, if Alice indicates to Bob that she has received 100 events created and/or defined by Carol, and Bob responds that he has received 95 events created and/or defined by Carol, then Alice will send only the 5 most recent events created and/or defined by Carol. certain Carol.
Примерная система 9: Система на основе примерной системы 1 с дополнительным механизмом для идентификации и/или устранения мошенников. Каждое событие содержит два хеша, один от последнего события, созданного и/или определенного этим участником («собственный хеш»), и один от последнего события, созданного и/или определенного другим участником («чужой хеш»). Если участник создает и/или определяет два разных события с одним и тем же собственным хешем, то этот участник является «мошенником». Если Алиса устанавливает, что Дэйв является мошенником, посредством приема двух разных событий, созданных и/или определенных им с использованием одного и того же собственного хеша, то Алиса сохраняет индикатор, указывающий на то, что Дэйв является мошенником, и избегает синхронизации с ним в будущем. Если она устанавливает, что он является мошенником, но все же синхронизируется с ним снова и создает и/или определяет новое событие, записывающее этот факт, то Алиса тоже становится мошенником, и другие участники, которые узнают, что Алиса впоследствии синхронизировалась с Дэйвом, перестают синхронизироваться с Алисой. В некоторых вариантах осуществления это влияет только на синхронизацию в одну сторону. Например, когда Алиса отправляет список идентификаторов и число событий, которые она приняла, для каждого участника, она не отправляет ID или количество для мошенника, так что Боб не ответит никаким соответствующим числом. Алиса затем отправляет Бобу события мошенника, которые она принял и для которых она не приняла указание о том, что Боб принял такие события. После завершения этой синхронизации Боб также сможет определить, что Дэйв является мошенником (если он еще не идентифицировал Дэйва как мошенника), и Боб также откажется от синхронизации с мошенником.Exemplary System 9: A system based on
Примерная система 10: Система на основе примерной системы 9 с тем дополнением, что Алиса начинает процесс синхронизации путем отправки Бобу списка мошенников, которых она идентифицировала и события которых она все еще хранит, и Боб отвечает сообщением с указанием любых мошенников, которых он идентифицировал, в дополнение к мошенникам, идентифицированным Алисой. Затем они продолжают работу в обычном режиме, но без подсчета мошенников при синхронизации друг с другом.Exemplary System 10: A system based on Exemplary System 9 with the addition that Alice initiates the synchronization process by sending Bob a list of fraudsters that she has identified and whose events she still holds, and Bob responds with a message indicating any fraudsters that he has identified in addition to the scammers identified by Alice. They then continue as normal, but without counting cheaters while syncing with each other.
Примерная система 11: Система на основе примерной системы 1 с процессом, который постоянно обновляет текущее состояние (например, зафиксированное переменной состояния базы данных, определенной участником системы) на основе транзакций в любых новых событиях, которые принимаются во время синхронизации. Это также может включать второй процесс, который постоянно перестраивает это состояние (например, порядок событий) каждый раз, когда последовательность событий меняется, посредством возвращения к копии более раннего состояния и повторного вычисления настоящего состояния посредством обработки событий в новом порядке. В некоторых вариантах осуществления текущим состоянием является состояние, баланс, условие и/или т.п., связанные с результатом транзакций. Подобным образом, состояние может включать структуру данных и/или переменные, модифицированные транзакциями. Например, если транзакциями являются денежные переводы между банковскими счетами, то текущим состоянием может быть текущий баланс счетов. В качестве другого примера, если транзакции связаны с многопользовательской игрой, текущим состоянием может быть положение, количество жизней, полученные предметы, состояние игры и/или т.п., связанные с игрой.Exemplary System 11: A system based on
Примерная система 12: Система на основе примерной системы 11, ускоренная за счет использования arrayList с «быстрым клонированием» для поддержания состояния (например, баланса банковских счетов, состояния игры и т. д.). ArrayList с быстрым клонированием представляет собой структуру данных, которая действует как массив с одной дополнительной особенностью: она поддерживает операцию «клонирования», которая представляет собой создание и/или определение нового объекта, который является копией оригинала. Клон действует так, как если бы это была точная копия, поскольку изменения, которым подвергается клон, не влияют на оригинал. Однако операция клонирования быстрее, чем создание точной копии, поскольку создание клона в действительности не включает копирования и/или обновления всего содержимого одного arrayList в другой. Вместо наличия двух клонов и/или копий оригинального списка могут быть использованы два небольших объекта, каждый с хеш-таблицей и указателем на оригинальный список. Когда производится запись в клон, хеш-таблица запоминает, какой элемент модифицирован, и новое значение. Когда выполняется считывание из позиции, сначала проверяется хеш-таблица, и, если этот элемент был модифицирован, возвращается новое значение из хеш-таблицы. Иначе этот элемент возвращается из оригинального arrayList. Таким образом, два «клона» изначально являются лишь указателями на оригинальный arrayList. Но поскольку каждый из них постоянно модифицируется, они расширяются настолько, что имеют большую хеш-таблицу, в которой хранятся отличия между ними и оригинальным списком. Клоны сами могут быть клонированы, что вызывает расширение структуры данных до дерева объектов, каждый из которых имеет свои собственные хеш-таблицу и указатель на своего родителя. Следовательно, считывание вызывает подъем по дереву до тех пор, пока не будет установлена вершина, которая имеет запрашиваемые данные, или не будет достигнут корень. Если вершина становится слишком большой или сложной, тогда она может быть заменена на точную копию родителя, изменения в хеш-таблице могут быть переведены в копию, а хеш-таблица удалена. Кроме того, если клон больше не нужен, то во время сборки мусора он может быть удален из дерева, и дерево может быть свернуто. Exemplary System 12: A system based on
Примерная система 13: Система на основе примерной системы 11, ускоренная за счет использования хеш-таблицы с «быстрым клонированием» для поддержания состояния (например, баланса банковских счетов, состояния игры и т. д.). Она подобна системе 12, за тем исключением, что корень дерева представляет собой хеш-таблицу, а не arrayList.Exemplary System 13: A system based on
Примерная система 14: Система на основе примерной системы 11, ускоренная за счет использования реляционной базы данных с «быстрым клонированием» для поддержания состояния (например, баланса банковских счетов, состояния игры и т. д.). Она представляет собой объект, который действует как обертка вокруг существующей системы управления реляционной базой данных (RDBMS). Каждый явный «клон» является фактически объектом с ID-номером и указателем на объект, содержащий базу данных. Когда пользовательский код пытается отправить запрос на языке структурированных запросов (SQL) в базу данных, тогда запрос сначала модифицируется, а затем отправляется в реальную базу данных. Реальная база данных идентична базе данных с точки зрения клиентского кода, за исключением того, что каждая таблица имеет одно дополнительное поле для ID клона. Например, предположим, что существует оригинальная база данных с ID клона, равным 1, а затем создают два клона базы данных с ID, равными 2 и 3. Каждая строка в каждой таблице будет иметь значения 1, 2 или 3 в поле ID клона. Когда запрос поступает от пользовательского кода на клон 2, запрос модифицируется так, что запрос будет считываться только из строк, которые имеют значения 2 или 1 в этом поле. Подобным образом, запросы к клону 3 считывают строки с ID, равным 3 или 1. Если команда на языке структурированных запросов (SQL) поступает на клон 2 и указывает удалить строку, и эта строка имеет 1, то команда должна просто изменить 1 на 3, что помечает строку как более не используемую совместно клонами 2 и 3, и теперь видимую только для 3. Если существует несколько рабочих клонов, то несколько копий строки могут быть вставлены, и каждая из них может быть установлена на ID разного клона, так что новые строки являются видимыми для всех клонов, за исключением клона, который только что «удалил» строку. Подобным образом, если строка добавляется в клон 2, то строка добавляется в таблицу с ID, равным 2. Модификация строки эквивалентна удалению с последующей вставкой. Как и раньше, если несколько клонов удаляются во время сборки мусора, то дерево может быть упрощено. Структура этого дерева будет сохранена в дополнительной таблице, недоступной клонам, но которая полностью используется на внутреннем уровне.Exemplary System 14: A system based on
Примерная система 15: Система на основе примерной системы 11, ускоренная за счет использования файловой системы с «быстрым клонированием» для поддержания состояния. Она представляет собой объект, который действует как обертка вокруг файловой системы. Файловая система построена поверх существующей файловой системы, с использованием реляционной базы данных с быстрым клонированием для управления разными версиями файловой системы. Основная файловая система хранит большое количество файлов либо в одном каталоге, либо раздельно согласно имени файла (для поддержания малого размера каталогов). Дерево каталогов может храниться в базе данных и не предоставляться базовой файловой системе. Когда файл или каталог клонируются, «клон» представляет собой лишь объект с ID-номером, и база данных модифицируется так, чтобы отображать, что этот клон теперь существует. Если файловая система с быстрым клонированием клонируется, она представляется пользователю такой, как если бы был создан и/или определен целый новый жесткий диск, инициализированный с использованием копии существующего жесткого диска. Изменения, которым подвергается одна копия, могут не влиять на другие копии. В действительности существует только одна копия каждого файла или каталога, и копирование происходит, когда файл модифицируется посредством одного клона.Exemplary System 15: A system based on
Примерная система 16: Система на основе примерной системы 15, в которой отдельный файл создается и/или определяется в базовой операционной системе для каждой N-байтной части файла в файловой системе с быстрым клонированием. N может представлять собой некоторый подходящий размер, такой как, например, 4096 или 1024. Таким образом, если один байт изменяется в большом файле, копируется и модифицируется только один блок большого файла. Это также повышает эффективность при сохранении множества файлов на диске, которые отличаются лишь несколькими байтами.Exemplary System 16: A system based on Exemplary System 15 in which a separate file is created and/or defined in the base operating system for each N-byte file portion in the fast clone file system. N may be some suitable size, such as 4096 or 1024, for example. Thus, if one byte is changed in a large file, only one block of the large file is copied and modified. It also improves efficiency when storing many files on disk that differ by only a few bytes.
Примерная система 17: Система на основе примерной системы 11, где каждый участник включает в некоторые или во все событиях, которые он создает и/или определяет, хеш состояния на некоторый предыдущий момент времени вместе с количеством событий, которые произошли вплоть до этого момента, указывая на то, что участник распознает и/или идентифицирует, что теперь достигнут консенсус относительно порядка событий. После того как участник собрал подписанные события, содержащие такой хеш, от большинства пользователей для заданного состояния, участник может затем сохранить это как доказательство состояния консенсуса на тот момент и удалить из памяти события и транзакции до того момента.Exemplary System 17: A system based on
Примерная система 18: Система на основе примерной системы 1, где операции, которые вычисляют медиану или большинство, заменяются взвешенной медианой или взвешенным большинством, причем участников взвешивают согласно их «доле». Доля представляет собой число, которое указывает на то, как много значит голос участника. Доля может представлять собой активы в криптовалюте или просто произвольное число, которое присваивается, когда участника впервые приглашают присоединиться, а затем разделяется среди новых участников, которых участник пригласил присоединиться. Старые события могут быть удалены, когда достаточное количество участников согласится с состоянием консенсуса, так что их общая доля является большей частью имеющейся доли. Если общий порядок вычисляется с использованием медианы рангов, вносимых участниками, то результатом является число, при котором половина участников имеет более высокий ранг, а половина имеет более низкий. С другой стороны, если общий порядок вычисляется с использованием взвешенной медианы, то результатом является число, при котором приблизительно половина общей доли связана с рангами ниже этой, и половина выше. Взвешенные голосование и медианы могут быть полезны в предотвращении атаки Сивиллы, когда один участник приглашает присоединиться огромное количество «виртуальных» пользователей, каждый из которых является просто псевдонимом под управлением приглашающего участника. Если приглашающий участник вынужден делить свою долю с приглашенными, то виртуальные пользователи будут бесполезны для злоумышленника в попытках контролировать результаты консенсуса. Соответственно доказательство доли владения может быть полезным в некоторых обстоятельствах.Exemplary System 18: A system based on
Примерная система 19: Система на основе примерной системы 1, в которой вместо одной распределенной базы данных имеется множество баз данных в иерархии. Например, может существовать одна база данных, пользователи которой являются ее участниками, а также несколько меньших баз данных или «блоков», каждый из которых имеет подмножество участников. Когда события происходят в блоке, они синхронизируются среди участников этого блока, но не среди участников вне этого блока. Затем периодически после принятия решения относительно порядка консенсуса в блоке полученное в результате состояние (или события со своим общим порядком консенсуса) может совместно использоваться всем составом участников большой базы данных.Exemplary System 19: A system based on
Примерная система 20: Система на основе примерной системы 11 с возможностью наличия события, которое обновляет программное обеспечение для обновления состояния (например, зафиксированного переменной состояния базы данных, определенной участником системы). Например, события X и Y могут содержать транзакции, которые модифицируют состояние согласно программному коду, который считывает транзакции в этих событиях, а затем обновляет состояние соответствующим образом. Тогда событие Z может содержать уведомление о том, что теперь доступна новая версия программного обеспечения. Если общий порядок говорит, что события происходят в порядке X, Z, Y, то состояние может быть обновлено посредством обработки транзакций в X с использованием старого программного обеспечения, а затем транзакций в Y с использованием нового программного обеспечения. Но если порядок консенсуса имел вид X, Y, Z, то как X, так и Y могут быть обновлены с использованием старого программного обеспечения, которое может дать другое конечное состояние. Следовательно, в таких вариантах осуществления уведомление об обновлении кода может появляться в событии, так что сообщество может достигать консенсуса относительно того, когда следует перейти со старой версии на новую версию. Это гарантирует, что участники будут поддерживать синхронизированные состояния. Это также гарантирует, что система может оставаться работающей даже во время обновлений без необходимости перезагрузки или перезапуска процесса.Exemplary system 20: A system based on
Примерная система 21: Система на основе примерной системы 1, где для достижения консенсуса реализован протокол доказательства доли владения, и сила голоса каждого участника пропорциональна сумме криптовалюты, которой владеет участник. Криптовалюта этого примера будет называться далее в настоящем документе валютой StakeCoin. Участие в группе или популяции является открытым, то есть не требует разрешения, таким образом, доверие среди участников может отсутствовать.Exemplary System 21: A system based on
Протокол доказательства доли владения может быть менее затратным в вычислительном отношении, чем другие протоколы, например, протокол доказательства выполнения работы. В этом примере M (как описано выше) может составлять 2/3 суммы в валюте StakeCoin, которой совместно владеют участники. Таким образом, система распределенной базы данных может быть безопасной (и может осуществлять конвергенцию надлежащим образом), если злоумышленник не может получить 1/3 от общей суммы в валюте StakeCoin, которой вместе владеют задействованные участники. Система распределенной базы данных может продолжать функционировать с обеспечиваемым математически уровнем безопасности, пока более чем 2/3 суммы в валюте StakeCoin владеют честные активные участники. Это обеспечивает правильную конвергенцию базы данных.The proof of stake protocol may be less computationally expensive than other protocols, such as the proof of work protocol. In this example, M (as described above) could be 2/3 of the StakeCoin currency jointly owned by the participants. Thus, a distributed database system can be secure (and can converge properly) if an attacker cannot obtain 1/3 of the total amount of StakeCoin currency that the participants involved together own. The distributed database system can continue to operate with a mathematically secure level as long as more than 2/3 of the amount of the StakeCoin currency is owned by honest active participants. This ensures proper database convergence.
Способ получения злоумышленником контроля над системой распределенной базы данных может быть достигнут посредством проведения переговоров по отдельности с владельцами валюты StakeCoin в системе распределенной базы данных для покупки их валюты StakeCoin. Например, Алиса может получить большую часть StakeCoin посредством покупки валюты StakeCoin, которой владеют Боб, Кэрол и Дэйв, что ставит Эда в уязвимое положение. Это подобно спекулятивной скупке товаров на рынке или попытке купить достаточное количество акций компании для агрессивного поглощения. Описанный сценарий представляет не только атаку на систему распределенной базы данных, которая использует валюту StakeCoin, но также и атаку на саму валюту StakeCoin. Если участник получает почти монополию на криптовалюту, такой участник может управлять курсовой стоимостью криптовалюты и устроиться таким образом, чтобы постоянно продавать дорого и покупать дешево. Это может быть выгодно в краткосрочной перспективе, но может в итоге подорвать доверие к криптовалюте и, возможно, привести к тому, что все от нее откажутся. Рыночная стоимость валюты может не зависеть от технологии, используемой для перевода валюты. Например, если человек или субъект получат право собственности на большую часть долларов США в мире или большую часть фьючерсов на зерно в мире, то такие человек или субъект могут с выгодой подорвать рынок.A way for an attacker to gain control of the distributed database system can be achieved by negotiating individually with StakeCoin currency holders in the distributed database system to purchase their StakeCoin currency. For example, Alice can get most of the StakeCoin by purchasing the StakeCoin currency owned by Bob, Carol, and Dave, which puts Ed in a vulnerable position. This is similar to speculative buying of goods in the market or trying to buy enough shares of a company for an aggressive takeover. The described scenario represents not only an attack on a distributed database system that uses the StakeCoin currency, but also an attack on the StakeCoin currency itself. If a participant obtains a near-monopoly on the cryptocurrency, such a participant can control the price of the cryptocurrency and arrange itself in such a way as to constantly sell high and buy low. This may be beneficial in the short term, but it could ultimately undermine the credibility of cryptocurrencies and possibly lead everyone to abandon it. The market value of a currency may not depend on the technology used to transfer the currency. For example, if a person or entity were to acquire ownership of most of the world's US dollars or most of the world's grain futures, that person or entity could profitably disrupt the market.
Атака, выполняемая посредством получения почти монополии на криптовалюту, является более сложной, если криптовалюта является как ценной, так и широко распространенной. Если криптовалюта является ценной, то покупка большой части запаса валюты StakeCoin будет очень дорогой. Если криптовалюта является широко распространенной, когда валютой StakeCoin владеет множество разных людей, то попытки монополизировать рынок StakeCoin станут очевидны на раннем этапе, что естественно повысит цену на StakeCoin, еще сильнее усложняя получение остального запаса валюты.An attack carried out by obtaining a near monopoly on a cryptocurrency is more difficult if the cryptocurrency is both valuable and widespread. If the cryptocurrency is valuable, then buying a large part of the stock of StakeCoin currency will be very expensive. If a cryptocurrency is widespread, with many different people owning the StakeCoin currency, attempts to monopolize the StakeCoin market will become apparent early on, which will naturally drive up the price of StakeCoin, making it even more difficult to obtain the rest of the currency supply.
Второй тип атаки может быть выполнен посредством получения суммы в валюте StakeCoin, которая может быть малой по сравнению с общей суммой в валюте StakeCoin на множестве систем распределенной базы данных, но большой по сравнению с суммой в валюте StakeCoin, которой владеют участники, задействованные в конкретной системе распределенной базы данных. Этот тип атаки может быть предотвращен, если криптовалюта специально определена для использования в приложении системы распределенной базы данных. Другими словами, валюта StakeCoin и реализация системы распределенной базы данных могут быть одновременно определены как связанные друг с другом, и каждая из них способствует увеличению ценности другой. Подобным образом, отсутствуют дополнительные реализации распределенной базы данных, которые торгуют валютой StakeCoin.The second type of attack can be performed by obtaining an amount in StakeCoin currency, which can be small compared to the total amount of StakeCoin currency on multiple distributed database systems, but large compared to the amount of StakeCoin currency held by participants involved in a particular system. distributed database. This type of attack can be prevented if the cryptocurrency is specifically defined for use in a distributed database system application. In other words, the StakeCoin currency and the implementation of the distributed database system can be simultaneously defined as related to each other, and each contributes to the value of the other. Likewise, there are no additional distributed database implementations that trade the StakeCoin currency.
Желательным может быть наличие дорогой криптовалюты с самого начала, когда реализация системы распределенной базы данных только была определена. Несмотря на то, что ценность криптовалюты может увеличиваться со временем, дорогая криптовалюта может быть выгодной на ранних этапах системы. В некоторых случаях консорциум задействованных субъектов может инициировать криптовалюту и связанную с ней систему распределенной базы данных. Например, десяти крупным уважаемым корпорациям или организациям, которые являются учредителями, может быть дана значительная сумма в валюте StakeCoin для запуска криптовалюты StakeCoin и системы распределенной базы данных. Система может быть выполнена таким образом, чтобы запас криптовалюты не рос быстро и имел некоторое конечное ограничение по объему. Каждый субъект-учредитель может иметь мотивацию принимать участие в качестве участника в системе распределенной базы данных и реализации валюты StakeCoin (например, реализованной в виде системы распределенной базы данных, которая может быть структурирована как DAG на основе хешей с алгоритмом консенсуса). Поскольку доказательство выполнения работы отсутствует, быть задействованным участником, который эксплуатирует узел, может быть недорого. Субъекты-учредители могут быть достаточно надежными, так что маловероятно, что какая-либо большая их часть вступит в сговор с целью подорвать систему, в частности, поскольку это может уничтожить ценность валюты StakeCoin, которой они владеют, и реализованную систему распределенной базы данных.It may be desirable to have an expensive cryptocurrency from the very beginning, when the implementation of the distributed database system has just been defined. Even though the value of a cryptocurrency can increase over time, an expensive cryptocurrency can be profitable in the early stages of the system. In some cases, a consortium of involved entities may initiate a cryptocurrency and an associated distributed database system. For example, ten large, respected corporations or organizations that are founders can be given a significant amount of StakeCoin currency to launch the StakeCoin cryptocurrency and distributed database system. The system can be designed in such a way that the supply of cryptocurrency does not grow quickly and has some finite volume limit. Each founding entity may be motivated to participate as a participant in a distributed database system and implementation of the StakeCoin currency (for example, implemented as a distributed database system that can be structured as a hash-based DAG with a consensus algorithm). Because there is no proof-of-work, it can be inexpensive to be a contributor who operates a node. The founding entities can be trustworthy enough that it is unlikely that any large part of them will collude to undermine the system, in particular as this could destroy the value of the StakeCoin they hold and the implemented distributed database system.
В некоторых реализациях другие участники могут присоединяться к системе распределенной базы данных, и другие люди или субъекты могут покупать валюту StakeCoin либо непосредственно у субъектов-учредителей, либо на бирже. Система распределенной базы данных может быть выполнена с возможностью мотивации участников принимать участие, посредством выплаты небольших сумм в валюте StakeCoin за участие. Со временем система может стать намного более распределенной, при этом доля в итоге будет рассредоточена, так что любому человеку или субъекту станет сложно монополизировать рынок, даже если субъекты-учредители вступят в сговор с целью выполнения атаки. На этом этапе криптовалюта может получить независимую ценность; система распределенной базы данных может иметь независимый уровень безопасности; и система может быть открытой без ограничений разрешения (например, без необходимости получения приглашения от учредителя для присоединения). Таким образом, происходит экономия регулярных вычислительных затрат, требуемых системами, реализованными с использованием альтернативных протоколов, например, системами, реализованными с использованием протоколов доказательства выполнения работы.In some implementations, other participants may join the distributed database system, and other people or entities may purchase the StakeCoin either directly from the founding entities or on an exchange. The distributed database system can be configured to motivate participants to participate by paying small amounts of StakeCoin for participation. Over time, the system can become much more distributed, with stake eventually dispersed such that it becomes difficult for any person or entity to monopolize the market, even if the founding entities collude to carry out an attack. At this stage, the cryptocurrency can gain independent value; a distributed database system may have an independent security layer; and the system can be open without permission restrictions (for example, without the need to obtain an invitation from the founder to join). Thus, there is a saving in the regular computational overhead required by systems implemented using alternative protocols, such as systems implemented using proof-of-work protocols.
Хотя описание выше относится к использованию распределенной базы данных с применением DAG на основе хешей, любой другой подходящий протокол распределенной базы данных может быть использован для реализации примерной системы 21. Например, хотя конкретные примерные числа и доля могут меняться, примерная система 21 может быть использована для повышения безопасности любой подходящей системы распределенной базы данных.While the description above relates to using a distributed database using a hash-based DAG, any other suitable distributed database protocol may be used to implement the exemplary system 21. For example, while the specific exemplary numbers and proportion may vary, the exemplary system 21 may be used to enhancing the security of any suitable distributed database system.
Предполагается, что системы, описанные выше, создают и/или обеспечивают эффективный механизм конвергенции для распределенного консенсуса с итоговым консенсусом. По этому поводу могут быть доказаны несколько теорем, как показано далее.The systems described above are expected to create and/or provide an efficient convergence mechanism for distributed consensus with eventual consensus. Several theorems can be proved about this, as shown below.
Примерная теорема 1: Если событие x предшествует событию y в частичном порядке, то в знании заданного участника о других участниках в заданный момент времени каждый из других участников либо принял указание о x до y, либо еще не принял указание о y.Sample Theorem 1: If event x precedes event y in partial order, then in a given participant's knowledge of the other participants at a given point in time, each of the other participants has either accepted an indication of x before y or has not yet accepted an indication of y.
Доказательство: Если событие x предшествует событию y в частичном порядке, тогда x является предком y. Когда участник принимает указание о y в первый раз, этот участник либо уже принял указание о x ранее (в случае чего он знает о x раньше y), либо это будет случай, когда синхронизация предоставляет этому участнику как x, так и y (в случае чего он узнает о x раньше y во время этой синхронизации, поскольку события, принимаемые во время одной синхронизации, полагают принимаемыми в порядке, согласующемся со взаимосвязями потомственности, как описано в отношении примерной системы 5). Что и требовалось доказать.Proof: If event x precedes event y in partial order, then x is an ancestor of y. When a participant receives an indication of y for the first time, that participant has either already received an indication of x previously (in which case it knows about x before y) or it will be the case that synchronization provides this participant with both x and y (in which case what it learns about x before y during that synchronization, since events received during one synchronization are considered to be received in order consistent with progeny relationships as described with respect to exemplary system 5). Q.E.D.
Примерная теорема 2: Для любого заданного DAG на основе хешей, если x предшествует y в частичном порядке, то x будет предшествовать y в общем порядке, вычисленном для этого DAG на основе хешей.Sample Theorem 2: For any given hash-based DAG, if x precedes y in partial order, then x will precede y in the overall order computed for that hash-based DAG.
Доказательство: Если x предшествует y в частичном порядке, то согласно теореме 1:Proof: If x precedes y in partial order, then according to Theorem 1:
для всех i, rank(i,x) < rank(i,y), for all i, rank(i,x) < rank(i,y),
где rank(i,x) представляет собой ранг, присвоенный участником i событию x, который равен 1, если x является первым событием, принятым участником i, 2, если вторым, и так далее. Допустим, что med(x) представляет собой медиану rank(i,x) для всех i, и аналогично для med(y). where rank(i,x) is the rank assigned by participant i to event x, which is 1 if x is the first event received by participant i, 2 if the second, and so on. Assume that med(x) is the median of rank(i,x) for all i, and similarly for med(y).
Для заданного k выберем i1 и i2 так, что rank(i1,x) является k-м наименьшим рангом x, а rank(i2,y) является k-м наименьшим рангом y. Тогда:Given k, choose i1 and i2 such that rank(i1,x) is the k-th smallest rank of x and rank(i2,y) is the k-th smallest rank of y. Then:
rank(i1,x) < rank(i2,y). rank(i1,x) < rank(i2,y).
Это объясняется тем, что rank(i2,y) превышает или равняется k рангов y, каждый из которых строго превышает соответствующий ранг x. Следовательно, rank(i2,y) строго превышает по меньшей мере k рангов x, а значит строго превышает k-й наименьший ранг x. Этот аргумент справедлив для любого k.This is because rank(i2,y) is greater than or equal to k ranks of y, each strictly greater than the corresponding rank of x. Therefore, rank(i2,y) strictly exceeds at least k ranks of x, and hence strictly exceeds the k-th smallest rank of x. This argument is valid for any k.
Допустим, что n представляет собой количество участников (которое является количеством значений i). Тогда n должно быть либо нечетным, либо четным. Если n нечетное, то допустим, что k=(n+1)/2, и k-й наименьший ранг будет являться медианой. Следовательно, med(x) < med(y). Если n четное, то, когда k=n/2, k-й наименьший ранг x будет строго меньше, чем k-й наименьший ранг y, а также (k+1)-й наименьший ранг x будет строго меньше, чем (k+1)-й наименьший ранг y. Следовательно, среднее значение двух рангов x будет меньше, чем среднее значение двух рангов y. Следовательно, med(x) < med(y). Следовательно, в обоих случаях медиана рангов x строго меньше, чем медиана рангов y. Следовательно, если общий порядок определен посредством сортировки действий по медианному рангу, то событие x будет предшествовать событию y в общем порядке. Что и требовалось доказать.Let's say n is the number of participants (which is the number of i values). Then n must be either odd or even. If n is odd, then let's say that k=(n+1)/2, and the k-th smallest rank will be the median. Therefore, med(x) < med(y). If n is even, then when k=n/2, the k-th smallest rank of x will be strictly less than the k-th smallest rank of y, and also the (k+1)-th smallest rank of x will be strictly less than (k +1)-th smallest rank of y. Therefore, the average of the two x ranks will be less than the average of the two y ranks. Therefore, med(x) < med(y). Therefore, in both cases, the median of x-ranks is strictly less than the median of y-ranks. Therefore, if the overall order is determined by sorting the activities by median rank, then the x event will precede the y event in the overall order. Q.E.D.
Примерная теорема 3: Если «период передачи» представляет собой количество времени, необходимое для распространения существующих событий посредством синхронизации всем участникам, то:Sample Theorem 3: If "transmission period" is the amount of time required for existing events to propagate through synchronization to all participants, then:
после 1 периода передачи: все участники приняли события, after 1 transfer period: all participants accepted the events,
после 2 периодов передачи: все участники приходят к согласию относительно порядка этих событий, after 2 transmission periods: all participants agree on the order of these events,
после 3 периодов передачи: все участники знают, что согласие было достигнуто, after 3 transmission periods: all participants know that agreement has been reached,
после 4 периодов передачи: все участники получают цифровые подписи от всех остальных участников, одобряющие этот порядок консенсуса. after 4 transmission periods: all participants receive digital signatures from all other participants endorsing this consensus order.
Доказательство: Допустим, что S0 представляет собой набор событий, которые были созданы и/или определены к заданному моменту времени T0. Если каждый участник будет в итоге синхронизироваться с каждым из остальных участников бесконечное число раз, то с вероятностью, равной 1, в итоге будет существовать момент времени T1, к которому события в S0 распространятся каждому участнику, так что каждый участник будет осведомлен о всех событиях. Это конец первого периода передачи. Допустим, что S1 представляет собой набор событий, которые существуют на момент времени T1 и которые еще не существовали на момент времени T0. Тогда с вероятностью, равной 1, в итоге будет существовать момент времени T2, к которому каждый участник примет каждое из событий в наборе S1, которое является существующим на момент времени T1. Это конец второго периода передачи. Подобным образом, T3 представляет собой момент времени, когда все события в S2, существующие к моменту времени T2, но не до момента времени T1, распространились всем участникам. Следует отметить, что каждый период передачи в итоге заканчивается с вероятностью, равной 1. В среднем каждый период будет продолжаться столько, сколько необходимо для выполнения log2(n) синхронизаций, если имеется n участников.Proof: Assume that S0 is a set of events that have been created and/or defined up to a given time T0. If each participant ends up synchronizing with each of the other participants an infinite number of times, then with probability equal to 1, there will eventually be a point in time T1 by which the events in S0 will propagate to each participant, so that each participant will be aware of all events. This is the end of the first transmission period. Assume that S1 is a set of events that exist at time T1 and that did not yet exist at time T0. Then, with probability equal to 1, there will eventually be a time T2 at which each participant will accept each of the events in the set S1 that is in existence at time T1. This is the end of the second transmission period. Similarly, T3 represents the point in time when all events in S2 that exist up to time T2 but not before time T1 have propagated to all participants. Note that each transmission period eventually ends with a probability of 1. On average, each period will last as long as it takes to complete log2(n) synchronizations if there are n participants.
К моменту времени T1 каждый участник примет каждое событие в S0.By time T1, each participant will have received every event in S0.
К моменту времени T2 заданный участник Алиса примет запись каждого из остальных участников, принимающих каждое событие в S0. Следовательно, Алиса может вычислить ранг для каждого действия в S0 для каждого участника (который представляет собой порядок, в котором этот участник принял это действие), а затем отсортировать события по медиане рангов. Полученный в результате общий порядок не меняется для событий в S0. Это объясняется тем, что полученный в результате порядок является функцией порядка, в котором каждый участник впервые принял указание о каждом из этих событий, который не меняется. Возможно, что порядок, вычисленный Алисой, будет иметь несколько событий из S1, рассеянных среди событий S0. Эти события S1 могут все еще меняться, где они попадают в последовательность S0 событий. Но относительный порядок событий в S0 не будет меняться.By time T2, the given participant Alice will have received the record of each of the other participants receiving each event in S0. Therefore, Alice can calculate the rank for each action in S0 for each participant (which is the order in which that participant took that action), and then sort the events by the median of the ranks. The resulting overall order does not change for events in S0. This is because the resulting order is a function of the order in which each participant first received an indication of each of these events, which does not change. It is possible that the order computed by Alice will have several events from S1 scattered among the events of S0. These S1 events may still vary where they fall in the sequence S0 of events. But the relative order of events in S0 will not change.
К моменту времени T3 Алиса узнает общий порядок на объединении S0 и S1, и относительный порядок событий в этом объединении меняться не будет. Кроме того, она может найти в этой последовательности самое раннее событие из S1 и может прийти к выводу, что последовательность событий до S1 не будет меняться, даже посредством вставки новых событий не из S0. Следовательно, к моменту времени T3 Алиса может определить, что консенсус был достигнут для порядка событий в истории до первого события S1. Она может подписать с помощью цифровой подписи хеш состояния (например, зафиксированного переменной состояния базы данных, определенной Алисой), являющийся результатом этих событий, происходящих в этом порядке, и отправить подпись в виде части следующего события, которое она создает и/или определяет.By time T3, Alice knows the general order on the union S0 and S1, and the relative order of events in this union will not change. In addition, it can find the earliest event from S1 in this sequence and can conclude that the sequence of events before S1 will not change, even by inserting new events not from S0. Hence, by time T3, Alice can determine that a consensus has been reached for the order of events in history prior to the first event S1. She can digitally sign the hash of the state (eg, captured by a database state variable defined by Alice) resulting from these events occurring in that order, and send the signature as part of the next event she creates and/or defines.
К моменту времени T4 Алиса примет подобные подписи от других участников. На этом этапе она может просто сохранить этот список подписей вместе с состоянием, свидетельством которого они являются, и она может удалить события, которые она сохранила до первого события S1. Что и требовалось доказать.By time T4, Alice will have accepted similar signatures from other participants. At this point, she can simply store this list of signatures, along with the state they are evidence of, and she can delete the events she has stored prior to the first S1 event. Q.E.D.
Системы, описанные в настоящем документе, описывают распределенную базу данных, которая достигает консенсуса быстро и безопасно. Она может быть полезным структурным блоком для многих приложений. Например, если транзакции описывают перевод криптовалюты с одного кошелька криптовалюты на другой, и если состоянием является простой показатель текущей суммы в каждом кошельке, то эта система будет представлять собой систему криптовалюты, которая избегает дорогого доказательства выполнения работы, используемого в существующих системах. Автоматическое соблюдение правил позволяет добавлять признаки, которые не являются общераспространенными в существующих криптовалютах. Например, утерянные монеты могут быть восстановлены во избежание дефляции посредством исполнения правила, гласящего, что, если кошелек ни отправляет, ни принимает криптовалюту в течение определенного периода времени, то этот кошелек удаляется, и его содержимое распределяется на другие существующие кошельки пропорционально сумме, которую они содержат на текущий момент. Таким образом, запас денег не будет расти или сокращаться, даже если утерян закрытый ключ для кошелька.The systems described in this document describe a distributed database that achieves consensus quickly and securely. It can be a useful building block for many applications. For example, if transactions describe the transfer of cryptocurrency from one cryptocurrency wallet to another, and if the state is a simple measure of the current amount in each wallet, then this system would be a cryptocurrency system that avoids the expensive proof of work used in existing systems. Automatic compliance with the rules allows you to add signs that are not common in existing cryptocurrencies. For example, lost coins can be recovered to avoid deflation by enforcing a rule stating that if a wallet neither sends nor receives cryptocurrency within a certain period of time, then that wallet is deleted and its contents are distributed to other existing wallets in proportion to the amount they currently contain. Thus, the supply of money will not grow or shrink even if the private key for the wallet is lost.
Другим примером является распределенная игра, которая действует подобно массовой многопользовательской онлайн-игре (MMO), в которую играют на сервере, но достигает этого без применения центрального сервера. Консенсус может быть достигнут без какого-либо центрального сервера, осуществляющего управление.Another example is a distributed game that acts like a Massively Multiplayer Online (MMO) game played on a server but achieves this without the use of a central server. Consensus can be reached without any central server exercising control.
Другим примером является система для социальных сетей, которая построена поверх такой базы данных. Поскольку транзакции подписываются с помощью цифровой подписи, и участники принимают информацию о других участниках, это обеспечивает преимущества, заключающиеся в безопасности и удобстве, над современными системами. Например, может быть реализована система электронной почты со строгой антиспам политикой, поскольку электронные письма не могут иметь фальшивых обратных адресов. Такая система может также стать объединенной социальной системой, сочетающей в одной распределенной базе данных функции, в настоящее время выполняемые электронной почтой, твит-сообщениями, текстовыми сообщениями, форумами, вики и/или другими социальными ресурсами.Another example is a social networking system that is built on top of such a database. Because transactions are digitally signed and participants accept information about other participants, this provides security and convenience advantages over current systems. For example, an email system with a strict anti-spam policy can be implemented because emails cannot have fake return addresses. Such a system could also become a unified social system, combining in one distributed database the functions currently performed by email, tweets, text messages, forums, wikis, and/or other social resources.
Другие приложения могут включать более сложные криптографические функции, такие как групповые цифровые подписи, при которых группа действует как единое целое для подписания контракта или документа. Эти и другие формы многостороннего вычисления могут быть эффективно реализованы с использованием такой системы распределенного консенсуса.Other applications may include more complex cryptographic features, such as group digital signatures, in which the group acts as a unit to sign a contract or document. These and other forms of multiparty computation can be efficiently implemented using such a distributed consensus system.
Другим примером является система публичного реестра. Кто угодно может заплатить, чтобы сохранить некоторую информацию в системе, уплачивая при этом небольшую сумму криптовалюты (или реальной валюты) за байт в год для хранения информации в системе. Эти денежные средства могут затем быть автоматически распределены участникам, которые хранят эти данные, и участникам, которые постоянно синхронизируются, чтобы работать над достижением консенсуса. Участникам может автоматически переводиться небольшая сумма криптовалюты каждый раз, когда они синхронизируются.Another example is the public registry system. Anyone can pay to keep some information in the system, while paying a small amount of cryptocurrency (or real currency) per byte per year to store information in the system. This cash can then be automatically distributed to the participants who store this data and to the participants who are constantly in sync to work towards consensus. Participants can automatically receive a small amount of cryptocurrency each time they sync.
Эти примеры показывают, что распределенная база данных с консенсусом является полезной в качестве компонента многих приложений. Поскольку база данных не использует затратное доказательство выполнения работы, по возможности используя вместо него менее затратное доказательство доли владения, база данных может работать с полным узлом, работающим на менее мощных компьютерах или даже мобильных и встроенных устройствах. These examples show that a distributed database with consensus is useful as a component of many applications. Because the database does not use expensive proof-of-work, instead using less expensive proof-of-stake when possible, the database can run with a full node running on less powerful computers or even mobile and embedded devices.
Несмотря на описание выше в качестве события, содержащего хеш двух предыдущих событий (один собственный хеш и один чужой хеш), в других вариантах осуществления участник может синхронизироваться с двумя другими участниками для создания и/или определения события, содержащего хеши трех предыдущих событий (один собственный хеш и два чужих хеша). В еще других вариантах осуществления в событие может быть включено любое количество хешей событий предыдущих событий от любого количества участников. В некоторых вариантах осуществления разные события могут включать разные количества хешей предыдущих событий. Например, первое событие может включать два хеша событий, и второе событие может включать три хеша событий.Although described above as an event containing a hash of two previous events (one own hash and one foreign hash), in other embodiments, a participant may synchronize with two other participants to create and/or define an event containing the hashes of the three previous events (one own hash and two foreign hashes). In still other embodiments, any number of event hashes of previous events from any number of participants can be included in an event. In some embodiments, different events may include different numbers of hashes of previous events. For example, the first event may include two event hashes, and the second event may include three event hashes.
Хотя события описаны выше как включающие хеши (или значения криптографических хешей) предыдущих событий, в других вариантах осуществления событие может быть создано и/или определено таким образом, чтобы включать указатель, идентификатор и/или любую другую подходящую ссылку на предыдущие события. Например, событие может быть создано и/или определено так, чтобы включать серийный номер, связанный с предыдущим событием и используемый для его идентификации, таким образом связывая события. В некоторых вариантах осуществления такой серийный номер может включать, например, идентификатор (например, адрес управления доступом к среде (MAC), адрес Интернет-протокола (IP), присвоенный адрес и/или т.п.), связанный с участником, который создал и/или определил событие, и порядком события, определенным этим участником. Например, если участник имеет идентификатор, равный 10, и событие является 15-ым событием, созданным и/или определенным этим участником, то он может присвоить этому событию идентификатор, равный 1015. В других вариантах осуществления любой другой подходящий формат может быть использован для присвоения идентификаторов событиям. While events are described above as including hashes (or cryptographic hash values) of previous events, in other embodiments, an event may be constructed and/or defined to include a pointer, identifier, and/or any other suitable reference to previous events. For example, an event may be created and/or defined to include a serial number associated with a previous event and used to identify it, thus linking the events. In some embodiments, such a serial number may include, for example, an identifier (e.g., a media access control (MAC) address, an Internet protocol (IP) address, an assigned address, and/or the like) associated with the participant that created the and/or defined an event, and the order of the event defined by that participant. For example, if a member has an ID of 10 and the event is the 15th event created and/or defined by that member, then the member may assign an ID of 1015 to that event. In other embodiments, any other suitable format may be used to assign event identifiers.
В других вариантах осуществления события могут содержать полные криптографические хеши, но только части этих хешей передаются во время синхронизации. Например, если Алиса отправляет Бобу событие, содержащее хеш H, и J является первыми 3 байтами H, и Алиса определяет, что из всех событий и хешей, которые она сохранила, H является единственным хешем, начинающимся с J, то она может отправить J вместо H во время синхронизации. Если Боб затем определяет, что у него есть другой хеш, начинающийся с J, то он может отправить ответное сообщение Алиса с запросом полного H. Таким образом хеши могут быть сжаты во время передачи. In other embodiments, the events may contain complete cryptographic hashes, but only parts of these hashes are transmitted during synchronization. For example, if Alice sends Bob an event containing hash H, and J is the first 3 bytes of H, and Alice determines that out of all the events and hashes she has stored, H is the only hash that starts with J, then she can send J instead H during synchronization. If Bob then determines that he has another hash starting with J, then he can send a response message to Alice requesting the full H. This way the hashes can be compressed during transmission.
Хотя примерные системы, показанные и описанные выше, описаны со ссылкой на другие системы, в других вариантах осуществления любая комбинация примерных систем и связанных с ними функциональных возможностей может быть реализована для создания и/или определения распределенной базы данных. Например, примерная система 1, примерная система 2 и примерная система 3 могут быть объединены для создания и/или определения распределенной базы данных. В качестве другого примера, в некоторых вариантах осуществления примерная система 10 может быть реализована вместе с примерной системой 1, но без примерной системы 9. В качестве еще одного примера, примерная система 7 может быть объединена и реализована вместе с примерной системой 6. В еще других вариантах осуществления могут быть реализованы любые другие подходящие комбинации примерных систем.Although the exemplary systems shown and described above have been described with reference to other systems, in other embodiments, any combination of exemplary systems and associated functionality may be implemented to create and/or define a distributed database. For example,
Хотя и описаны выше как выполняющие обмен событиями для достижения конвергенции, в других вариантах осуществления экземпляры распределенной базы данных могут обмениваться значениями и/или векторами значений для достижения конвергенции, как описано в отношении фиг. 8–13. В частности, например, на фиг. 8 проиллюстрирован информационный поток между первым вычислительным устройством 400 из системы распределенной базы данных (например, системы 100 распределенной базы данных) и вторым вычислительным устройством 500 из системы распределенной базы данных (например, системы 100 распределенной базы данных) согласно одному варианту осуществления. В некоторых вариантах осуществления вычислительные устройства 400, 500 могут быть конструктивно и/или функционально подобны вычислительному устройству 200, показанному на фиг. 2. В некоторых вариантах осуществления вычислительное устройство 400 и вычислительное устройство 500 осуществляют связь друг с другом подобно тому, как вычислительные устройства 110, 120, 130, 140 осуществляют связь друг с другом в системе 100 распределенной базы данных, показанной и описанной в отношении фиг. 1.Although described above as performing event exchange to achieve convergence, in other embodiments, distributed database instances may exchange values and/or value vectors to achieve convergence, as described with respect to FIG. 8–13. In particular, for example, in FIG. 8 illustrates information flow between a
Подобно вычислительному устройству 200, описанному в отношении фиг. 2, каждое из вычислительных устройств 400, 500 может первоначально определять вектор значений для параметра, обновлять вектор значений, выбирать значение для параметра на основе определенного и/или обновленного вектора значений для параметра и сохранять (1) определенный и/или обновленный вектор значений для параметра и/или (2) выбранное значение для параметра на основе определенного и/или обновленного вектора значений для параметра. Каждое из вычислительных устройств 400, 500 может первоначально определять вектор значений для параметра любым количеством способов. Например, каждое из вычислительных устройств 400, 500 может первоначально определять вектор значений для параметра посредством установки каждого значения из вектора значений равным значению, первоначально сохраненному в экземплярах 403, 503 распределенной базы данных соответственно. В качестве другого примера, каждое из вычислительных устройств 400, 500 может первоначально определять вектор значений для параметра посредством установки каждого значения из вектора значений равным случайному значению. Способ первоначального определения вектора значений для параметра может быть выбран, например, администратором системы распределенной базы данных, к которой относятся вычислительные устройства 400, 500, или по отдельности или совместно пользователями вычислительных устройств (например, вычислительных устройств 400, 500) системы распределенной базы данных.Like computing device 200 described with respect to FIG. 2, each of the
Каждое из вычислительных устройств 400, 500 может также сохранять вектор значений для параметра и/или выбранное значение для параметра в экземплярах 403, 503 распределенной базы данных соответственно. Каждый из экземпляров 403, 503 распределенной базы данных может быть реализован в памяти (не показана на фиг. 8), подобной памяти 220, показанной на фиг. 2.Each of the
На этапе 1 вычислительное устройство 400 запрашивает у вычислительного устройства 500 значение для параметра, хранящееся в экземпляре 503 распределенной базы данных вычислительного устройства 500 (например, значение, хранящееся в конкретном поле экземпляра 503 распределенной базы данных). В некоторых вариантах осуществления вычислительное устройство 500 может быть выбрано вычислительным устройством 400 из набора вычислительных устройств, относящихся к системе распределенной базы данных. Вычислительное устройство 500 может быть выбрано случайным образом, выбрано на основе взаимосвязи с вычислительным устройством 400, на основе близости к вычислительному устройству 400, выбрано на основе упорядоченного списка, связанного с вычислительным устройством 400, и/или т.п. В некоторых вариантах осуществления, поскольку вычислительное устройство 500 может быть выбрано вычислительным устройством 400 из набора вычислительных устройств, относящихся к системе распределенной базы данных, вычислительное устройство 400 может выбирать вычислительное устройство 500 несколько раз подряд или может некоторое время не выбирать вычислительное устройство 500. В других вариантах осуществления указание о ранее выбранных вычислительных устройствах может быть сохранено на вычислительном устройстве 400. В таких вариантах осуществления вычислительное устройство 400 может находиться в ожидании, пока не будет осуществлено предварительно определенное количество выборов, перед тем, как получить возможность снова выбирать вычислительное устройство 500. Как поясняется выше, экземпляр 503 распределенной базы данных может быть реализован в памяти вычислительного устройства 500.In
В некоторых вариантах осуществления запрос от вычислительного устройства 400 может представлять собой сигнал, отправляемый модулем связи вычислительного устройства 400 (не показан на фиг. 8). Этот сигнал может быть передан по сети, такой как сеть 105 (показана на фиг. 1), и принят модулем связи вычислительного устройства 500. В некоторых вариантах осуществления каждый из модулей связи вычислительных устройств 400, 500 может быть реализован в процессоре или памяти. Например, модули связи вычислительных устройств 400, 500 могут быть подобны модулю 212 связи, показанному на фиг. 2.In some embodiments, the request from
После приема с вычислительного устройства 400 запроса значения параметра, хранящегося в экземпляре 503 распределенной базы данных, вычислительное устройство 500 отправляет значение параметра, хранящееся в экземпляре 503 распределенной базы данных, на вычислительное устройство 400 на этапе 2. В некоторых вариантах осуществления вычислительное устройство 500 может извлекать значение параметра из памяти и отправлять значение в виде сигнала посредством модуля связи вычислительного устройства 500 (не показан на фиг. 8). В некоторых случаях, если экземпляр 503 распределенной базы данных еще не содержит значения для параметра (например, транзакция еще не была определена в экземпляре 503 распределенной базы данных), экземпляр 503 распределенной базы данных может запросить значение для параметра с вычислительного устройства 403 (если оно еще не предоставлено на этапе 1) и сохранить это значение для параметра в экземпляре 503 распределенной базы данных. В некоторых вариантах осуществления вычислительное устройство 400 будет затем использовать это значение в качестве значения для параметра в экземпляре 503 распределенной базы данных.Upon receiving from computing device 400 a request for a parameter value stored in distributed database instance 503,
На этапе 3 вычислительное устройство 400 отправляет на вычислительное устройство 500 значение для параметра, хранящееся в экземпляре 403 распределенной базы данных. В других вариантах осуществления значение для параметра, хранящееся в экземпляре 403 распределенной базы данных (этап 1), и запрос значения для этого же параметра, хранящегося в экземпляре 503 распределенной базы данных (этап 3), могут быть отправлены в виде одного сигнала. В других вариантах осуществления значение для параметра, хранящееся в экземпляре 403 распределенной базы данных, может быть отправлено в сигнале, отличном от сигнала для запроса значения для параметра, хранящегося в экземпляре 503 распределенной базы данных. В вариантах осуществления, в которых значение для параметра, хранящееся в экземпляре 403 распределенной базы данных, отправляется в сигнале, отличном от сигнала для запроса значения для параметра, хранящегося в экземпляре 503 распределенной базы данных, значения для параметра, хранящегося в экземпляре 403 распределенной базы данных, два сигнала могут быть отправлены в любом порядке. Другими словами, любой из сигналов может быть отправлен перед другим.In
После того как вычислительное устройство 400 принимает значение параметра, отправленное с вычислительного устройства 500, и/или вычислительное устройство 500 принимает значение для параметра, отправленное с вычислительного устройства 400, в некоторых вариантах осуществления вычислительное устройство 400 и/или вычислительное устройство 500 могут обновлять вектор значений, хранящийся в экземпляре 403 распределенной базы данных, и/или вектор значений, хранящийся в экземпляре 503 распределенной базы данных, соответственно. Например, вычислительные устройства 400, 500 могут обновлять вектор значений, хранящийся в экземплярах 403, 503 распределенной базы данных, чтобы включать значение параметра, принятое вычислительными устройствами 400, 500 соответственно. Вычислительные устройства 400, 500 могут также обновлять значение параметра, хранящееся в экземпляре 403 распределенной базы данных, и/или значение параметра, хранящееся в экземпляре 503 распределенной базы данных, соответственно на основе обновленного вектора значений, хранящегося в экземпляре 403 распределенной базы данных, и/или обновленного вектора значений, хранящегося в экземпляре 503 распределенной базы данных, соответственно.After computing
Хотя этапы обозначены как 1, 2 и 3 на фиг. 8 и в вышеизложенном обсуждении, следует понимать, что этапы 1, 2 и 3 могут быть выполнены в любом порядке. Например, этап 3 может быть выполнен перед этапами 1 и 2. Кроме того, связь между вычислительными устройствами 400 и 500 не ограничивается этапами 1, 2 и 3, показанными на фиг. 3, как подробно описано в настоящем документе. Более того, после завершения этапов 1, 2 и 3, вычислительное устройство 400 может выбирать другое вычислительное устройство из набора вычислительных устройств в системе распределенной базы данных для обмена с ним значениями (подобно этапам 1, 2 и 3).Although the steps are labeled 1, 2 and 3 in FIG. 8 and in the discussion above, it should be understood that
В некоторых вариантах осуществления данные, передаваемые между вычислительными устройствами 400, 500, могут включать сжатые данные, зашифрованные данные, цифровые подписи, криптографические контрольные суммы и/или т.п. Кроме того, каждое из вычислительных устройств 400, 500 может отправлять данные на другое вычислительное устройство для подтверждения приема данных, ранее отправленных другим устройством. Каждое из вычислительных устройств 400, 500 может также игнорировать данные, которые были неоднократно отправлены другим устройством.In some embodiments, data transferred between
Каждое из вычислительных устройств 400, 500 может первоначально определять вектор значений для параметра и сохранять этот вектор значений для параметра в экземплярах 403, 503 распределенной базы данных соответственно. На фиг. 9a–9c проиллюстрированы примеры векторов значений для параметра. Вектор может представлять собой любой набор значений для параметра (например, одномерный массив значений для параметра, массив значений, каждое из которых имеет множество частей, и т. д.). Три примера векторов представлены на фиг. 9a–9c в целях иллюстрации. Как показано, каждый из векторов 410, 420, 430 имеет пять значений для конкретного параметра. Однако следует понимать, что вектор значений может иметь любое количество значений. В некоторых случаях количество значений, включенных в вектор значений, может быть установлено пользователем, по ситуации, случайным образом и т. д.Each of the
Параметр может представлять собой любой объект данных, который может принимать разные значения. Например, параметр может представлять собой двоичный голос, в котором значение голоса может иметь вид либо «ДА», либо «НЕТ» (или двоичных «1» или «0»). Как показано на фиг. 9a, вектор 410 значений представляет собой вектор, имеющий пять двоичных голосов, где значения 411, 412, 413, 414, 415 соответствуют «ДА», «НЕТ», «НЕТ», «ДА» и «ДА» соответственно. В качестве другого примера, параметр может представлять собой набор элементов данных. На фиг. 9b показан пример, в котором параметр представляет собой набор букв алфавита. Как показано, вектор 420 значений имеет пять наборов из четырех букв алфавита, при этом значения 421, 422, 423, 424, 425 соответствуют {A, B, C, D}, {A, B, C, E}, {A, B, C, F}, {A, B, F, G} и {A, B, G, H} соответственно. В качестве еще одного примера, параметр может представлять собой ранжированный и/или упорядоченный набор элементов данных. На фиг. 9c показан пример, в котором параметр представляет собой ранжированный набор людей. Как показано, вектор 430 значений имеет пять ранжированных наборов из шести людей, при этом значения 431, 432, 433, 434, 435 соответствуют The parameter can be any data object that can take on different values. For example, the parameter may be a binary voice, in which the value of the vote may be either "YES" or "NO" (or binary "1" or "0"). As shown in FIG. 9a, the value vector 410 is a vector having five binary votes, where the values 411, 412, 413, 414, 415 correspond to "YES", "NO", "NO", "YES", and "YES", respectively. As another example, a parameter may be a set of data items. In FIG. 9b shows an example where the parameter is a set of alphabetic characters. As shown, the value vector 420 has five sets of four alphabetic characters, with the values 421, 422, 423, 424, 425 corresponding to {A, B, C, D}, {A, B, C, E}, {A, B, C, F}, {A, B, F, G} and {A, B, G, H}, respectively. As another example, a parameter may be a ranked and/or ordered set of data items. In FIG. 9c shows an example where the parameter is a ranked set of people. As shown, the value vector 430 has five ranked sets of six people, with the values 431, 432, 433, 434, 435 corresponding to
(1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк), (1. Alice, 2. Bob, 3. Carol, 4. Dave, 5. Ed, 6. Frank),
(1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк), (1. Bob, 2. Alice, 3. Carol, 4. Dave, 5. Ed, 6. Frank),
(1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Фрэнк, 6. Эд), (1. Bob, 2. Alice, 3. Carol, 4. Dave, 5. Frank, 6. Ed),
(1. Алиса, 2. Боб, 3. Кэрол, 4. Эд, 5. Дэйв, 6. Фрэнк) и (1. Alice, 2. Bob, 3. Carol, 4. Ed, 5. Dave, 6. Frank) and
(1. Алиса, 2. Боб, 3. Эд, 4. Кэрол, 5. Дэйв, 6. Фрэнк), (1. Alice, 2. Bob, 3. Ed, 4. Carol, 5. Dave, 6. Frank),
соответственно.respectively.
После определения вектора значений для параметра каждое из вычислительных устройств 400, 500 может выбирать значение для параметра на основе вектора значений для параметра. Этот выбор может быть выполнен согласно любому способу и/или процессу (например, правилу или набору правил). Например, выбор может быть выполнен согласно «правилам большинства», при которых значение для параметра выбирается равным значению, которое появляется в более чем 50 % значений, включенных в вектор. Для иллюстрации вектор 410 значений (показанный на фиг. 9a) содержит три значения «ДА» и два значения «НЕТ». Согласно «правилам большинства» значением, выбранным для параметра на основе вектора значений, будет «ДА», поскольку «ДА» появляется в более чем 50 % значений 411, 412, 413, 414, 415 (вектора 410 значений).After determining a value vector for a parameter, each of the
В качестве другого примера, выбор может быть выполнен согласно «появлению в большинстве», при котором значение для параметра выбирается равным набору элементов данных, где каждый элемент данных появляется в более чем 50 % значений, включенных в вектор. Для иллюстрации, с помощью фиг. 9b, элементы данных «A», «B» и «C» появляются в более чем 50 % значений 421, 422, 423, 424, 425 вектора 420 значений. Согласно «появлению в большинстве» значением, выбранным для параметра на основе вектора значений, будет {A, B, C}, поскольку только эти элементы данных (т.е. «A», «B» и «C») появляются в трех из пяти значений вектора 420 значений.As another example, the selection can be made according to "occurrence in the majority", in which the value for a parameter is chosen to be equal to a set of data elements, where each data element appears in more than 50% of the values included in the vector. For illustration, with the help of FIG. 9b, data elements "A", "B", and "C" appear in more than 50% of the values 421, 422, 423, 424, 425 of the value vector 420. According to "occurrence in the majority", the value chosen for the parameter based on the value vector will be {A, B, C}, since only these data elements (i.e. "A", "B" and "C") appear in three of the five values of the vector 420 values.
В качестве еще одного примера, выбор может быть выполнен согласно «рангу по медиане», при котором значение для параметра выбирается равным ранжированному набору элементов данных (например, разных значений данных в пределах значения вектора значений), где ранг каждого элемента данных равняется медианному рангу этого элемента данных среди всех значений, включенных в вектор. Для иллюстрации, медианный ранг каждого элемента данных на фиг. 9c вычисляется следующим образом:As yet another example, the selection may be made according to "rank by median", in which the value for a parameter is chosen to be equal to a ranked set of data items (e.g., different data values within the value of a vector of values), where the rank of each data item is equal to the median rank of that data element among all values included in the vector. To illustrate, the median rank of each data item in FIG. 9c is calculated as follows:
Алиса: (1, 2, 2, 1, 1); медианный ранг = 1;Alice: (1, 2, 2, 1, 1); median rank = 1;
Боб: (2, 1, 1, 2, 2); медианный ранг = 2;Bob: (2, 1, 1, 2, 2); median rank = 2;
Кэрол: (3, 3, 3, 3, 4); медианный ранг = 3;Carol: (3, 3, 3, 3, 4); median rank = 3;
Дэйв: (4, 4, 4, 5, 5); медианный ранг = 4;Dave: (4, 4, 4, 5, 5); median rank = 4;
Эд: (5, 5, 6, 4, 3); медианный ранг = 5;Ed: (5, 5, 6, 4, 3); median rank = 5;
Фрэнк: (6, 6, 5, 6, 6); медианный ранг = 6.Frank: (6, 6, 5, 6, 6); median rank = 6.
Таким образом, согласно «рангу по медиане» значением для ранжированного набора элементов данных, вычисленным на основе вектора 430 значений, будет (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк). В некоторых вариантах осуществления, если два или более элементов данных имеют одну медиану (например, равенство), порядок может быть определен любым подходящим способом (например, случайным образом, первым указанием ранга, последним указанием ранга, в алфавитном и/или числовом порядке и т. д.).Thus, according to "rank by median", the value for the ranked set of data items calculated from a vector of 430 values would be (1. Alice, 2. Bob, 3. Carol, 4. Dave, 5. Ed, 6. Frank). In some embodiments, if two or more data items share the same median (e.g., equality), the order may be determined in any suitable manner (e.g., randomly, first rank indication, last rank indication, alphabetical and/or numerical order, etc.). d.).
В качестве дополнительного примера, выбор может быть выполнен согласно «голосованию по методу Кемени-Янга», при котором значение для параметра выбирается равным ранжированному набору элементов данных, причем ранг вычисляется так, чтобы минимизировать величину затрат. Например, Алиса имеет ранг выше ранга Боба в векторах значений 431, 434, 435, что составляет в общем три из пяти векторов значений. Боб имеет ранг выше ранга Алисы в векторах значений 432 и 433, что составляет в общем два из пяти векторов значений. Величина затрат для ранжирования Алисы выше Боба составляет 2/5, и величина затрат для ранжирования Боб выше Алисы составляет 3/5. Таким образом, величина затрат для ранжирования Алисы выше Боба меньше, и Алиса будет ранжирована выше Боба согласно «голосованию по методу Кемени-Янга».As a further example, the selection may be made according to "Kemeny-Young voting" in which a value for a parameter is chosen to be equal to a ranked set of data items, with the rank calculated to minimize the amount of cost. For example, Alice has a rank higher than Bob's in the value vectors 431, 434, 435, which is three of the five value vectors in total. Bob has a rank higher than Alice's in the value vectors 432 and 433, totaling two of the five value vectors. The cost to rank Alice above Bob is 2/5 and the cost to rank Bob above Alice is 3/5. Thus, the cost to rank Alice above Bob is less, and Alice will be ranked above Bob according to "Kemeny-Young voting".
Следует понимать, что «правила большинства», «появление в большинстве», «ранг по медиане» и «голосование по методу Кемени-Янга» обсуждаются в качестве примеров способов и/или процессов, которые могут быть использованы для выбора значения для параметра на основе вектора значений для параметра. Могут также быть использованы любые другие способ и/или процесс. Например, значение для параметра может быть выбрано равным значению, которое появляется в более чем x % значений, включенных в вектор, где x % может представлять собой любое процентное значение (т.е. не ограничивается 50 %, как в случае «правил большинства»). Процентная доля (т.е. x %) может также варьироваться между выборами, выполненными в разные моменты времени, например, в отношении степени достоверности (подробно обсуждаемой в настоящем документе).It should be understood that "majority rules", "appearance in the majority", "rank by median" and "Kemeny-Young voting" are discussed as examples of methods and/or processes that can be used to select a value for a parameter based on a vector of values for the parameter. Any other method and/or process may also be used. For example, a value for a parameter could be chosen to be equal to a value that appears in more than x% of the values included in the vector, where x% can be any percentage value (i.e. not limited to 50% as in the case of "majority rules" ). The percentage (i.e. x%) can also vary between selections made at different points in time, for example in terms of confidence (discussed in detail in this paper).
В некоторых вариантах осуществления, поскольку вычислительное устройство может случайным образом выбирать другие вычислительные устройства для обмена с ними значениями, вектор значений вычислительного устройства может в любой момент времени включать множество значений из другого отдельного вычислительного устройства. Например, если размер вектора равняется пяти, вычислительное устройство может случайным образом выбрать другое вычислительное устройство дважды за последние пять итераций обмена значениями. Соответственно, значение, сохраненное в экземпляре распределенной базы данных другого вычислительного устройства, будет включено дважды в вектор из пяти значений для запрашивающего вычислительного устройства.In some embodiments, since a computing device may randomly select other computing devices to exchange values with them, the computing device's value vector may at any time include a plurality of values from another individual computing device. For example, if the size of the vector is five, the computing device may randomly select another computing device twice in the last five iterations of the exchange of values. Accordingly, a value stored in a distributed database instance of another computing device will be included twice in the vector of five values for the requesting computing device.
На фиг. 10a–10d вместе проиллюстрировано в качестве примера, как вектор значений может быть обновлен, когда одно вычислительное устройство осуществляет связь с другим вычислительным устройством. Например, вычислительное устройство 400 может первоначально определять вектор 510 значений. В некоторых вариантах осуществления вектор 510 значений может быть определен на основе значения для параметра, хранящегося в экземпляре 403 распределенной базы данных на вычислительном устройстве 400. Например, когда вектор 510 значений определяется впервые, каждое значение из вектора 510 значений (т.е. каждое из значений 511, 512, 513, 514, 515) может быть установлено равным значению для параметра, хранящемуся в экземпляре 403 распределенной базы данных. Для иллюстрации, если значением для параметра, хранящимся в экземпляре 403 распределенной базы данных, в момент времени, когда определяется вектор 510 значений, является «ДА», то каждое значение из вектора 510 значений (т.е. каждое из значений 511, 512, 513, 514, 515) будет установлено в «ДА», как показано на фиг. 10a. Когда вычислительное устройство 400 принимает значение для параметра, хранящееся в экземпляре распределенной базы данных другого вычислительного устройства (например, экземпляре 504 распределенной базы данных вычислительного устройства 500), вычислительное устройство 400 может обновлять вектор 510 значений, чтобы включать значение для параметра, хранящееся в экземпляре 504 распределенной базы данных. В некоторых случаях вектор 510 значений может быть обновлен согласно принципу «первым пришел – первым ушел» (FIFO). Например, если вычислительное устройство 400 принимает значение 516 («НЕТ»), вычислительное устройство 400 может добавить значение 516 в вектор 510 значений и удалить значение 511 из вектора 510 значений, чтобы определить вектор 520 значений, как показано на фиг. 10b. Например, если в более поздний момент времени вычислительное устройство принимает значения 517, 518, вычислительное устройство 400 может добавить значения 517, 518 в вектор 510 значений и удалить значения 512, 513 соответственно из вектора 510 значений, чтобы определить вектора 530, 540 значений соответственно. В других случаях вектор значений 510 может быть обновлен согласно схемам, отличным от принципа «первым пришел – первым ушел», таким как принцип «последним пришел – первым ушел» (LIFO).In FIG. 10a-10d together illustrate by way of example how a value vector can be updated when one computing device communicates with another computing device. For example,
После того как вычислительное устройство 400 обновит вектор 510 значений для определения векторов 520, 530 и/или 540 значений, вычислительное устройство 400 может выбрать значение для параметра на основе вектора 520, 530 и/или 540 значений. Этот выбор может быть выполнен согласно любому способу и/или процессу (например, правилу или набору правил), как обсуждалось выше в отношении фиг. 9a–9c.After computing
В некоторых случаях вычислительные устройства 400, 500 могут относиться к системе распределенной базы данных, которая хранит информацию, относящуюся к транзакциям, включающим финансовые инструменты. Например, каждое из вычислительных устройств 400, 500 может хранить двоичный голос (пример «значения») относительно того, доступен ли конкретный товар для покупки (пример «параметра»). Например, экземпляр 403 распределенной базы данных вычислительного устройства 400 может хранить значение «ДА», указывающее на то, что конкретный товар действительно доступен для покупки. Экземпляр 503 распределенной базы данных вычислительного устройства 500, с другой стороны, может хранить значение «НЕТ», указывающее на то, что конкретный товар не доступен для покупки. В некоторых случаях вычислительное устройство 400 может первоначально определять вектор двоичных голосов на основе двоичного голоса, хранящегося в экземпляре 403 распределенной базы данных. Например, вычислительное устройство 400 может устанавливать каждый двоичный голос в векторе двоичных голосов равным двоичному голосу, хранящемуся в экземпляре 403 распределенной базы данных. В этом случае вычислительное устройство 400 может определять вектор двоичных голосов подобно вектору значений 510. В некоторый более поздний момент времени вычислительное устройство 400 может осуществлять связь с вычислительным устройством 500, запрашивая у вычислительного устройства 500 отправить его двоичный голос относительно того, доступен ли для покупки конкретный товар. После того как вычислительное устройство 400 принимает двоичный голос вычислительного устройства 500 (в этом примере «НЕТ», указывающее на то, что конкретный товар недоступен для покупки), вычислительное устройство 400 может обновлять свой вектор двоичных голосов. Например, обновленный вектор двоичных голосов может быть подобен вектору значений 520. Это может происходить неопределенно долго, до тех пор, пока степень достоверности не будет соответствовать предварительно определенному критерию (более подробно описанному в настоящем документе), периодически и/или т.п.In some cases,
На фиг. 11 показана блок-схема 10, иллюстрирующая этапы, выполняемые вычислительным устройством 110 в системе 100 распределенной базы данных, согласно одному варианту осуществления. На этапе 11 вычислительное устройство 110 определяет вектор значений для параметра на основе значения параметра, хранящегося в экземпляре 113 распределенной базы данных. В некоторых вариантах осуществления вычислительное устройство 110 может определять вектор значений для параметра на основе значения для параметра, хранящегося в экземпляре 113 распределенной базы данных. На этапе 12 вычислительное устройство 110 выбирает другое вычислительное устройство в системе 100 распределенной базы данных и запрашивает с выбранного вычислительного устройства значение для параметра, хранящееся в экземпляре распределенной базы данных выбранного вычислительного устройства. Например, вычислительное устройство 110 может случайным образом выбирать вычислительное устройство 120 из числа вычислительных устройств 120, 130, 140 и запрашивать с вычислительного устройства 120 значение для параметра, хранящееся в экземпляре 123 распределенной базы данных. На этапе 13 вычислительное устройство 110 (1) принимает с выбранного вычислительного устройства (например, вычислительного устройства 120) значение для параметра, хранящееся в экземпляре распределенной базы данных выбранного вычислительного устройства (например, экземпляре 123 распределенной базы данных), и (2) отправляет на выбранное вычислительное устройство (например, вычислительное устройство 120) значение для параметра, хранящееся в экземпляре 113 распределенной базы данных. На этапе 14 вычислительное устройство 110 сохраняет значение для параметра, принятое с выбранного вычислительного устройства (например, вычислительного устройства 120), в векторе значений для параметра. На этапе 15 вычислительное устройство 110 выбирает значение для параметра на основе вектора значений для параметра. Этот выбор может быть выполнен согласно любому способу и/или процессу (например, правилу или набору правил), как обсуждалось выше в отношении фиг. 9a–9c. В некоторых вариантах осуществления вычислительное устройство 110 может повторять выбор значения для параметра в другие моменты времени. Вычислительное устройство 110 может также многократно повторять в цикле этапы 12–14 между каждым выбором значения для параметра.In FIG. 11 is a
В некоторых случаях система 100 распределенной базы данных может хранить информацию, относящуюся к транзакциям в массовой многопользовательской игре (MMG). Например, каждое вычислительное устройство, относящееся к системе 100 распределенной базы данных, может хранить ранжированный набор игроков (пример «значения») в том порядке, в котором они владели конкретным предметом (пример «параметра»). Например, экземпляр 114 распределенной базы данных вычислительного устройства 110 может хранить ранжированный набор игроков (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк), подобный значению 431, указывающий на то, что сначала конкретным предметом владела Алиса, затем он перешел Бобу, затем он перешел Кэрол, затем он перешел Дэйву, затем он перешел Эду, и наконец он перешел Фрэнку. Экземпляр 124 распределенной базы данных вычислительного устройства 120 может хранить значение ранжированного набора игроков, подобное значению 432: (1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк); экземпляр 134 распределенной базы данных вычислительного устройства 130 может хранить значение ранжированного набора игроков, подобное значению 433: (1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Фрэнк, 6. Эд); экземпляр 144 распределенной базы данных вычислительного устройства 140 может хранить значение ранжированного набора игроков, подобное значению 434: (1. Алиса, 2. Боб, 3. Кэрол, 4. Эд, 5. Дэйв, 6. Фрэнк); экземпляр распределенной базы данных пятого вычислительного устройства (не показано на фиг. 1) может хранить значение ранжированного набора игроков, подобное значению 435: (1. Алиса, 2. Боб, 3. Эд, 4. Кэрол, 5. Дэйв, 6. Фрэнк).In some cases, the distributed
После того как вычислительное устройство 110 определяет вектор ранжированного набора игроков, вычислительное устройство может принимать значения ранжированных наборов игроков с других вычислительных устройств системы 100 распределенной базы данных. Например, вычислительное устройство 110 может принять (1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк) с вычислительного устройства 120; (1. Боб, 2. Алиса, 3. Кэрол, 4. Дэйв, 5. Фрэнк, 6. Эд) с вычислительного устройства 130; (1. Алиса, 2. Боб, 3. Кэрол, 4. Эд, 5. Дэйв, 6. Фрэнк) с вычислительного устройства 140; и (1. Алиса, 2. Боб, 3. Эд, 4. Кэрол, 5. Дэйв, 6. Фрэнк) с пятого вычислительного устройства (не показано на фиг. 1). По мере того как вычислительное устройство 110 принимает значения ранжированных наборов игроков с других вычислительных устройств, вычислительное устройство 110 может обновлять свой вектор ранжированных наборов игроков для включения значений ранжированных наборов игроков, принятых с других вычислительных устройств. Например, вектор ранжированных наборов игроков, хранящийся в экземпляре 114 распределенной базы данных вычислительного устройства 110, после приема значений ранжированных наборов, перечисленных выше, может быть обновлен так, чтобы быть подобным вектору значений 430. После того как вектор ранжированных наборов игроков был обновлен так, чтобы быть подобным вектору значений 430, вычислительное устройство 110 может выбирать ранжированный набор игроков на основе вектора ранжированных наборов игроков. Например, выбор может быть выполнен в соответствии с «рангом по медиане», как обсуждалось выше в отношении фиг. 9a–9c. Согласно «рангу по медиане» вычислительное устройство 110 выберет (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк) на основе вектора ранжированных наборов игроков, подобного вектору 430 значений.After the computing device 110 determines the ranked player set vector, the computing device may receive ranked player set values from other computing devices of the distributed
В некоторых случаях вычислительное устройство 110 не принимает полное значение с другого вычислительного устройства. В некоторых случаях вычислительное устройство 110 может принимать идентификатор, связанный с частями полного значения (также называемого составным значением), такой как значение криптографического хеша, вместо самих частей. Для иллюстрации, вычислительное устройство 110 в некоторых случаях не принимает (1. Алиса, 2. Боб, 3. Кэрол, 4. Эд, 5. Дэйв, 6. Фрэнк), то есть полное значение 434, с вычислительного устройства 140, а принимает только (4. Эд, 5. Дэйв, 6. Фрэнк) с вычислительного устройства 140. Другими словами, вычислительное устройство 110 не принимает с вычислительного устройства 140 (1. Алиса, 2. Боб, 3. Кэрол), то есть определенные части значения 434. Вместо этого вычислительное устройство 110 может принимать с вычислительного устройства 140 значение криптографического хеша, связанное с этими частями значения 434, т.е. (1. Алиса, 2. Боб, 3. Кэрол).In some cases, computing device 110 does not receive the full value from another computing device. In some cases, computing device 110 may receive an identifier associated with portions of a complete value (also referred to as a composite value), such as a cryptographic hash value, instead of the portions themselves. To illustrate, computing device 110 in some cases does not receive (1. Alice, 2. Bob, 3. Carol, 4. Ed, 5. Dave, 6. Frank), that is, the full value 434, from computing device 140, but receives only (4. Ed, 5. Dave, 6. Frank) from computing device 140. In other words, computing device 110 does not receive (1. Alice, 2. Bob, 3. Carol) from computing device 140, that is, certain parts of the value 434. Instead, computing device 110 may receive from computing device 140 a cryptographic hash value associated with these portions of value 434, i. (1. Alice, 2. Bob, 3. Carol).
Значение криптографического хеша уникальным образом представляет части значения, с которыми оно связанно. Например, криптографический хеш, представляющий (1. Алиса, 2. Боб, 3. Кэрол), будет отличаться от криптографических хешей, представляющих:A cryptographic hash value uniquely represents the parts of the value with which it is associated. For example, a cryptographic hash representing (1. Alice, 2. Bob, 3. Carol) will be different from cryptographic hashes representing:
(1. Алиса); (1. Alice);
(2. Боб); (2. Bob);
(3. Кэрол);(3. Carol);
(1. Алиса, 2. Боб);(1. Alice, 2. Bob);
(2. Боб, 3. Кэрол); (2. Bob, 3. Carol);
(1. Боб, 2. Алиса, 3. Кэрол); (1. Bob, 2. Alice, 3. Carol);
(1. Кэрол, 2. Боб, 3. Алиса);(1. Carol, 2. Bob, 3. Alice);
и т. д.etc.
После того как вычислительное устройство 110 принимает с вычислительного устройства 140 значение криптографического хеша, связанное с определенными частями значения 434, вычислительное устройство 110 может (1) генерировать значение криптографического хеша с использованием тех же частей значения 431, хранящегося в экземпляре 113 распределенной базы данных, и (2) сравнивать сгенерированное значение криптографического хеша с принятым значением криптографического хеша.After the computing device 110 receives from the computing device 140 a cryptographic hash value associated with certain parts of the value 434, the computing device 110 can (1) generate a cryptographic hash value using the same parts of the value 431 stored in the distributed database instance 113, and (2) compare the generated cryptographic hash value with the received cryptographic hash value.
Например, вычислительное устройство 110 может принимать с вычислительного устройства 140 значение криптографического хеша, связанное с определенными частями значения 434, указанными курсивом: (1. Алиса, 2. Боб, 3. Кэрол, 4. Эд, 5. Дэйв, 6. Фрэнк). Вычислительное устройство может затем генерировать значение криптографического хеша с использованием тех же частей значения 431 (хранящегося в экземпляре 113 распределенной базы данных), указанных курсивом: (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк). Поскольку указанные курсивом части значения 434 и указанные курсивом части значения 431 идентичны, принятое значение криптографического хеша (связанное с указанными курсивом частями значения 434) также будет идентично сгенерированному значению криптографического хеша (связанному с указанными курсивом частями значения 431).For example, computing device 110 may receive from computing device 140 a cryptographic hash value associated with certain italicized portions of value 434: (1. Alice, 2. Bob, 3. Carol, 4. Ed, 5. Dave, 6. Frank) . The computing device can then generate a cryptographic hash value using the same parts of the value 431 (stored in the distributed database instance 113) indicated in italics: (1. Alice, 2. Bob, 3. Carol, 4. Dave, 5. Ed, 6 . Frank). Because the italicized portions of 434 and the italicized portions of 431 are identical, the received cryptographic hash value (associated with the italicized portions of 434) will also be identical to the generated cryptographic hash value (associated with the italicized portions of 431).
Посредством сравнения сгенерированного значения криптографического хеша с принятым значением криптографического хеша вычислительное устройство 110 может определить, следует ли запрашивать с вычислительного устройства 140 фактические части, связанные с принятым значением криптографического хеша. Если сгенерированное значение криптографического хеша идентично принятому значению криптографического хеша, вычислительное устройство 110 может определить, что копия, идентичная фактическим частям, связанным с принятым значением криптографического хеша, уже сохранена в экземпляре 113 распределенной базы данных, и поэтому фактические части, связанные с принятым значением криптографического хеша, с вычислительного устройства 140 не являются необходимыми. С другой стороны, если сгенерированное значение криптографического хеша не идентично принятому значению криптографического хеша, вычислительное устройство 110 может запросить фактические части, связанные с принятым значением криптографического хеша, с вычислительного устройства 140.By comparing the generated cryptographic hash value with the received cryptographic hash value, computing device 110 can determine whether computing device 140 should be asked for the actual portions associated with the received cryptographic hash value. If the generated cryptographic hash value is identical to the received cryptographic hash value, computing device 110 may determine that a copy identical to the actual parts associated with the received cryptographic hash value is already stored in the distributed database instance 113, and therefore the actual parts associated with the received cryptographic hash value hash from computing device 140 are not necessary. On the other hand, if the generated cryptographic hash value is not identical to the received cryptographic hash value, computing device 110 may request the actual portions associated with the received cryptographic hash value from computing device 140.
Хотя значения криптографического хеша, обсуждаемые выше, связаны с частями единичных значений, следует понимать, что значение криптографического хеша может быть связано со всем единичным значением и/или множеством значений. Например, в некоторых вариантах осуществления вычислительное устройство (например, вычислительное устройство 140) может хранить набор значений в своем экземпляре распределенной базы данных (например, экземпляре 144 распределенной базы данных). В таких вариантах осуществления по прошествии предварительно определенного периода времени с момента обновления значения в экземпляре базы данных, после удовлетворения степени достоверности (обсуждаемой в отношении фиг. 13) для значения предварительно определенному критерию (например, достижения предварительно определенного порогового значения), по прошествии определенного количества времени после возникновения транзакции и/или на основе любых других подходящих факторов, это значение может быть включено в значение криптографического хеша с другими значениями, когда данные запрашиваются с другого экземпляра базы данных и отправляются на него. Это снижает количество конкретных значений, которые передаются между экземплярами базы данных.While the cryptographic hash values discussed above are associated with portions of single values, it should be understood that a cryptographic hash value may be associated with the entire single value and/or multiple values. For example, in some embodiments, the computing device (eg, computing device 140) may store a set of values in its distributed database instance (eg, distributed database instance 144). In such embodiments, after a predetermined period of time has elapsed since a value has been updated in a database instance, after a confidence level (discussed in relation to FIG. time after the transaction occurred and/or based on any other pertinent factors, this value may be included in the cryptographic hash value with other values when data is queried from and sent to another database instance. This reduces the number of specific values that are passed between database instances.
В некоторых случаях, например, набор значений в базе данных может включать первый набор значений, включающий транзакции в период между 2000 годом и 2010 годом; второй набор значений, включающий транзакции в период между 2010 годом и 2013 годом; третий набор значений, включающий транзакции в период между 2013 годом и 2014 годом; и четвертый набор значений, включающий транзакции в период между 2014 годом и текущим моментом. Используя этот пример, если вычислительное устройство 110 запрашивает с вычислительного устройства 140 данные, хранящиеся в экземпляре 144 распределенной базы данных вычислительного устройства 140, в некоторых вариантах осуществления вычислительное устройство 140 может отправлять на вычислительное устройство 110 (1) первое значение криптографического хеша, связанное с первым набором значений, (2) второе значение криптографического хеша, связанное со вторым набором значений, (3) третье значение криптографического хеша, связанное с третьим набором значений; и (4) каждое значение из четвертого набора значений. Критерии относительно того, когда значение добавляется в криптографический хеш, могут быть установлены администратором, отдельными пользователями, на основе количества значений, уже содержащихся в экземпляре базы данных, и/или т.п. Отправка значений криптографического хеша вместо каждого отдельного значения снижает количество отдельных значений, предоставляемых при обмене значениями между экземплярами базы данных.In some cases, for example, a set of values in a database may include a first set of values including transactions between the year 2000 and 2010; a second set of values including transactions between 2010 and 2013; the third set of values, including transactions between 2013 and 2014; and a fourth set of values including transactions between 2014 and now. Using this example, if computing device 110 queries computing device 140 for data stored in distributed database instance 144 of computing device 140, in some embodiments, computing device 140 may send to computing device 110 (1) a first cryptographic hash value associated with the first a set of values, (2) a second cryptographic hash value associated with the second set of values, (3) a third cryptographic hash value associated with the third set of values; and (4) each value from the fourth set of values. Criteria as to when a value is added to a cryptographic hash may be set by the administrator, by individual users, based on the number of values already contained in the database instance, and/or the like. Sending cryptographic hash values instead of each individual value reduces the number of individual values provided when exchanging values between database instances.
Когда принимающее вычислительное устройство (например, вычислительное устройство 400 на этапе 2, представленном на фиг. 8) принимает значение криптографического хеша (например, сгенерированное вычислительным устройством 500 на основе значений в экземпляре 503 распределенной базы данных), это вычислительное устройство генерирует значение криптографического хеша с использованием тех же способа и/или процесса и значений в своем экземпляре базы данных (например, экземпляре 403 распределенной базы данных) для параметров (например, транзакций во время указанного периода времени), которые используются для генерирования принятого значения криптографического хеша. Принимающее вычислительное устройство может затем сравнивать принятое значение криптографического хеша со сгенерированным значением криптографического хеша. Если значения не совпадают, принимающее вычислительное устройство может запрашивать отдельные значения, используемые для генерирования принятого криптографического хеша, с передающего вычислительного устройства (например, вычислительного устройства 500 на фиг. 8) и сравнивать отдельные значения из передающего экземпляра базы данных (например, экземпляра 503 распределенной базы данных) с отдельными значениями для этих транзакций в принимающем экземпляре базы данных (например, экземпляре 403 распределенной базы данных).When a receiving computing device (eg,
Например, если принимающее вычислительное устройство принимает значение криптографического хеша, связанное с транзакциями в период между 2000 годом и 2010 годом, принимающее вычислительное устройство может генерировать криптографический хеш с использованием значений для транзакций в период между 2000 годом и 2010 годом, хранящихся в его экземпляре базы данных. Если принятое значение криптографического хеша совпадает со сгенерированным локально значением криптографического хеша, принимающее вычислительное устройство может положить, что значения для транзакций в период между 2000 годом и 2010 годом являются одинаковыми в обеих базах данных, и дополнительная информация не запрашивается. Однако, если принятое значение криптографического хеша не совпадает со сгенерированным локально значением криптографического хеша, принимающее вычислительное устройство может запрашивать с передающего вычислительного устройства отдельные значения, используемые для генерирования принятого значения криптографического хеша. Принимающее вычислительное устройство может затем идентифицировать расхождение и обновлять вектор значений для этого отдельного значения.For example, if a receiving computing device receives a cryptographic hash value associated with transactions between 2000 and 2010, the receiving computing device can generate a cryptographic hash using the values for transactions between 2000 and 2010 stored in its database instance. . If the received cryptographic hash value matches the locally generated cryptographic hash value, the receiving computing device may assume that the values for transactions between the year 2000 and 2010 are the same in both databases and no further information is requested. However, if the received cryptographic hash value does not match the locally generated cryptographic hash value, the receiving computing device may request from the transmitting computing device separate values used to generate the received cryptographic hash value. The receiving computing device may then identify the discrepancy and update the value vector for that individual value.
Значения криптографического хеша могут основываться на любых подходящих процессе и/или хеш-функции для объединения множества значений и/или частей значения в один идентификатор. Например, любое подходящее количество значений (например, транзакций за период времени) может быть использовано в качестве входных данных для хеш-функции, и значение хеша может быть сгенерировано на основе хеш-функции.Cryptographic hash values may be based on any suitable process and/or hash function for combining multiple values and/or value parts into a single identifier. For example, any suitable number of values (eg, transactions over a period of time) may be used as input to a hash function, and a hash value may be generated based on the hash function.
Хотя в вышеизложенном обсуждении значения криптографического хеша используются в качестве идентификатора, связанного со значениями и/или частями значений, следует понимать, что могут быть использованы и другие идентификаторы, применяемые для представления множества значений и/или частей значений. Примеры других идентификаторов включают цифровые отпечатки, контрольные суммы, регулярные значения хеша и/или т.п.Although the above discussion uses cryptographic hash values as an identifier associated with values and/or parts of values, it should be understood that other identifiers can be used to represent multiple values and/or parts of values. Examples of other identifiers include fingerprints, checksums, regular hash values, and/or the like.
На фиг. 12 показана блок-схема (блок-схема 20), иллюстрирующая этапы, выполняемые вычислительным устройством 110 в системе 100 распределенной базы данных, согласно одному варианту осуществления. В варианте осуществления, проиллюстрированном на фиг. 12, вектор значений переустанавливается на основе предварительно определенной вероятности. Подобным образом, каждое значение в векторе значений может быть переустановлено в значение время от времени и на основе вероятности. На этапе 21 вычислительное устройство 110 выбирает значение для параметра на основе вектора значений для параметра, подобно этапу 15, проиллюстрированному на фиг. 11 и обсуждаемому выше. На этапе 22 вычислительное устройство 110 принимает значения для параметра с других вычислительных устройств (например, вычислительных устройств 120, 130, 140) и отправляет значение для параметра, хранящееся в экземпляре 113 распределенной базы данных, на другие вычислительные устройства (например, вычислительные устройства 120, 130, 140). Например, этап 22 может включать выполнение этапов 12 и 13, проиллюстрированных на фиг. 11 и обсуждаемых выше, для каждого из других вычислительных устройств. На этапе 23 вычислительное устройство 110 сохраняет значения для параметра, принятые с других вычислительных устройств (например, вычислительных устройств 120, 130, 140), в вектор значений для параметра, подобно этапу 14, проиллюстрированному на фиг. 11 и обсуждаемому выше. На этапе 24 вычислительное устройство 110 определяет, следует ли переустанавливать вектор значений, на основе предварительно определенной вероятности переустановки вектора значений. В некоторых случаях, например, существует 10% вероятность того, что вычислительное устройство 110 будет переустанавливать вектор значений для параметра после каждого обновления вычислительным устройством 110 вектора значений для параметра, хранящегося в экземпляре 114 распределенной базы данных. При таком сценарии вычислительное устройство 110 на этапе 24 будет определять, следует ли выполнять переустановку или нет, на основе 10% вероятности. В некоторых случаях определение может быть выполнено процессором 111 вычислительного устройства 110.In FIG. 12 is a flowchart (flowchart 20) illustrating the steps performed by the computing device 110 in the distributed
Если вычислительное устройство 110 определяет, что следует переустановить вектор значений, на основе предварительно определенной вероятности, вычислительное устройство 110 на этапе 25 переустанавливает вектор значений. В некоторых вариантах осуществления вычислительное устройство 110 может переустанавливать каждое значение в векторе значений для параметра так, чтобы оно равнялось значению для параметра, хранящемуся в экземпляре 113 распределенной базы данных на момент сброса. Например, если непосредственно перед переустановкой вектор значений представляет собой вектор 430 значений, и значением для параметра, хранящимся в экземпляре 113 распределенной базы данных, является (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк) (например, согласно «рангу по медиане»), то каждое значение в векторе значений будет переустановлено так, чтобы равняться (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк). Другими словами, каждое из значений 431, 432, 433, 434, 435 вектора 430 значений будет переустановлено так, чтобы равняться значению 431. Переустановка каждого значения в векторе значений для параметра так, чтобы оно равнялось значению для параметра, хранящемуся в экземпляре распределенной базы данных на момент сброса, время от времени и на основе вероятности помогает системе распределенной базы данных (к которой относится вычислительное устройство) достигать консенсуса. Подобным образом, переустановка способствует достижению согласия относительно значения для параметра среди вычислительных устройств системы распределенной базы данных.If computing device 110 determines that the value vector should be reset based on a predetermined probability, computing device 110 resets the value vector in
Например, экземпляр 114 распределенной базы данных вычислительного устройства 110 может хранить ранжированный набор игроков (1. Алиса, 2. Боб, 3. Кэрол, 4. Дэйв, 5. Эд, 6. Фрэнк), подобный значению 431, указывающий на то, что сначала конкретным предметом владела Алиса, затем он перешел Бобу, затем он перешел Кэрол, затем он перешел Дэйву, затем он перешел Эду, и наконец он перешел Фрэнку.For example, distributed database instance 114 of computing device 110 may store a ranked set of players (1. Alice, 2. Bob, 3. Carol, 4. Dave, 5. Ed, 6. Frank) like the value 431, indicating that first a particular item was owned by Alice, then it passed to Bob, then it passed to Carol, then it passed to Dave, then it passed to Ed, and finally it passed to Frank.
На фиг. 13 показана блок-схема (блок-схема 30), иллюстрирующая этапы, выполняемые вычислительным устройством 110 в системе 100 распределенной базы данных, согласно одному варианту осуществления. В варианте осуществления, проиллюстрированном на фиг. 13, выбор значения параметра на основе вектора значений для параметра происходит, когда степень достоверности, связанная с экземпляром распределенной базы данных, равняется нулю. Степень достоверности может указывать уровень «консенсуса», или согласия, между значением параметра, хранящимся в вычислительном устройстве 110, и значениями параметра, хранящимися в других вычислительных устройствах (например, вычислительных устройствах 120, 130, 140) системы 100 распределенной базы данных. В некоторых вариантах осуществления, как подробно описано в настоящем документе, степень достоверности наращивается (например, увеличивается на единицу) каждый раз, когда значение для параметра, принятое с другого вычислительного устройства вычислительным устройством 110, равняется значению для параметра, хранящемуся в вычислительном устройстве 110, и степень достоверности сокращается (т.е. уменьшается на единицу) каждый раз, когда значение для параметра, принятое с другого вычислительного устройства вычислительным устройством 110, не равняется значению для параметра, хранящемуся в вычислительном устройстве 110, если степень достоверности превышает ноль.In FIG. 13 is a flowchart (flowchart 30) illustrating the steps performed by the computing device 110 in the distributed
На этапе 31 вычислительное устройство 110 принимает значение для параметра с другого вычислительного устройства (например, вычислительного устройства 120) и отправляет значение для параметра, хранящееся в экземпляре 113 распределенной базы данных, на другое вычислительное устройство (например, вычислительное устройство 120). Например, этап 31 может включать выполнение этапов 12 и 13, проиллюстрированных на фиг. 11 и обсуждаемых выше. На этапе 32 вычислительное устройство 110 сохраняет значение для параметра, принятое с другого вычислительного устройства (например, вычислительного устройства 120), в векторе значений для параметра, подобно этапу 14, проиллюстрированному на фиг. 11 и обсуждаемому выше. На этапе 33 вычислительное устройство 110 определяет, равняется ли значение для параметра, принятое с другого вычислительного устройства (например, вычислительного устройства 120), значению для параметра, хранящемуся в экземпляре 113 распределенной базы данных. Если значение для параметра, принятое с другого вычислительного устройства (например, вычислительного устройства 120), равняется значению для параметра, хранящемуся в экземпляре 113 распределенной базы данных, то вычислительное устройство 110 на этапе 34 наращивает степень достоверности, связанную с экземпляром 113 распределенной базы данных, на единицу, и процесс, проиллюстрированный блок-схемой 30, возвращается на этап 31. Если значение для параметра, принятое с другого вычислительного устройства (например, вычислительного устройства 120), не равняется значению для параметра, хранящемуся в экземпляре 113 распределенной базы данных, то вычислительное устройство 110 на этапе 35 сокращает степень достоверности, связанную с экземпляром 113 распределенной базы данных, на единицу, если степень достоверности превышает ноль.In step 31, computing device 110 receives a value for a parameter from another computing device (eg, computing device 120) and sends the value for a parameter stored in distributed database instance 113 to the other computing device (eg, computing device 120). For example, step 31 may include performing
На этапе 36 вычислительное устройство 110 определяет, равняется ли степень достоверности, связанная с экземпляром 113 распределенной базы данных, нулю. Если степень достоверности равняется нулю, то вычислительное устройство на этапе 37 выбирает значение для параметра на основе вектора значений для параметра. Этот выбор может быть выполнен согласно любому способу и/или процессу (например, правилу или набору правил), как обсуждалось выше. Если степень достоверности не равняется нулю, то процесс, проиллюстрированный блок-схемой 30, возвращается на этап 31.At
Как обсуждалось выше, степени достоверности связаны с экземплярами распределенной базы данных. Однако следует понимать, что степень достоверности может также быть связана со значением вектора, хранящимся в экземпляре распределенной базы данных, и/или вычислительным устройством, хранящим значение вектора (например, в своем экземпляре распределенной базы данных), вместо экземпляра распределенной базы данных или в дополнение к нему.As discussed above, degrees of confidence are associated with distributed database instances. However, it should be understood that confidence may also be related to the vector value stored in the distributed database instance and/or the computing device storing the vector value (e.g., in its distributed database instance), instead of or in addition to the distributed database instance. to him.
Значения, относящиеся к степеням достоверности (например, пороговые значения, значения приращения и значения сокращения), используемые в отношении фиг. 13, представлены исключительно в иллюстративных целях. Следует понимать, что могут быть использованы и другие значения, относящиеся к степеням достоверности (например, пороговые значения, значения приращения и значения сокращения). Например, для приращений и/или сокращений степени достоверности, выполняемых на этапах 34 и 35 соответственно, может использоваться любое значение. В качестве другого примера, пороговое значение степени достоверности, равное нулю, используемое на этапах 35 и 36, может также быть любым значением. Кроме того, значения, относящиеся к степеням достоверности (например, пороговые значения, значения приращения и значения сокращения), могут изменяться ходе работы, т.е. по мере выполнения циклов процесса, проиллюстрированного на блок-схеме 30.Values related to degrees of confidence (eg, threshold values, increment values, and reduction values) used in relation to FIG. 13 are presented for illustrative purposes only. It should be understood that other values related to degrees of confidence (eg, threshold values, increment values, and reduction values) may be used. For example, any value may be used for the confidence increments and/or decrements performed in
В некоторых вариантах осуществления степень достоверности может влиять на информационный поток между первым вычислительным устройством из системы распределенной базы данных и вторым вычислительным устройством из системы распределенной базы данных, описанный выше в отношении фиг. 8. Например, если первое вычислительное устройство (например, вычислительное устройство 110) имеет высокую степень достоверности, связанную с его экземпляром распределенной базы данных (например, экземпляром 114 распределенной базы данных), то первое вычислительное устройство может запросить у второго вычислительного устройства меньшую часть значения для параметра (и значение криптографического хеша, связанное с большей частью значения для параметра), чем первое вычислительное устройство в ином случае запросило бы у второго вычислительного устройства (например, если первое вычислительное устройство имеет низкую степень достоверности, связанную с его экземпляром распределенной базы данных). Высокая степень достоверности может указывать на то, что значение для параметра, хранящееся в первом вычислительном устройстве, по всей вероятности согласуется со значениями для параметра, хранящимися в других вычислительных устройствах из системы распределенной базы данных, и, таким образом, значение криптографического хеша используется для проверки согласованности.In some embodiments, the degree of certainty may affect the information flow between the first computing device from the distributed database system and the second computing device from the distributed database system, described above with respect to FIG. 8. For example, if the first computing device (eg, computing device 110) has a high degree of certainty associated with its distributed database instance (eg, distributed database instance 114), then the first computing device may ask the second computing device for a smaller portion of the value for the parameter (and the cryptographic hash value associated with most of the value for the parameter) than the first computing device would otherwise request from the second computing device (e.g., if the first computing device has low confidence associated with its distributed database instance) . High confidence may indicate that the value for the parameter stored in the first computing device is likely consistent with the values for the parameter stored in other computing devices from the distributed database system, and thus the cryptographic hash value is used to verify consistency.
В некоторых случаях степень достоверности первого вычислительного устройства может повышаться с достижением порогового значения, при котором первое вычислительное устройство определяет, что ему больше не следует запрашивать конкретные значения, конкретные части значений и/или значения криптографического хеша, связанные с конкретными значениями и/или конкретными частями значений, с других вычислительных устройств из системы распределенной базы данных. Например, если степень достоверности значения удовлетворяет конкретному критерию (например, достигает порогового значения), первое вычислительное устройство может определять, что значение сошлось, и далее не запрашивать обмен этим значением с другими устройствами. В качестве другого примера, значение может быть добавлено к значению криптографического хеша на основе его степени достоверности, удовлетворяющей критерию. В таких случаях значение криптографического хеша для набора значений может быть отправлено вместо отдельного значения после того, как степень достоверности удовлетворит критерию, как подробно обсуждалось выше. Обмен меньшим количеством значений и/или меньшими фактическими частями (значений) со значениями криптографического хеша, связанными с остальными частями (значений), может способствовать эффективной связи между вычислительными устройствами системы распределенной базы данных.In some cases, the degree of certainty of the first computing device may increase to reach a threshold at which the first computing device determines that it should no longer request specific values, specific parts of values, and/or cryptographic hash values associated with specific values and/or specific parts. values from other computing devices from a distributed database system. For example, if the confidence level of a value satisfies a particular criterion (eg, reaches a threshold value), the first computing device may determine that the value has converged and not further request that the value be exchanged with other devices. As another example, a value may be added to a cryptographic hash value based on its confidence level that satisfies a criterion. In such cases, a cryptographic hash value for a set of values may be sent instead of a single value after the confidence level satisfies the criteria, as discussed in detail above. Exchange of fewer values and/or smaller actual parts (values) with cryptographic hash values associated with the remaining parts (values) can facilitate efficient communication between computing devices of a distributed database system.
В некоторых случаях по мере повышения степени достоверности для конкретного значения параметра экземпляра распределенной базы данных вычислительное устройство, связанное с этим экземпляром распределенной базы данных, может запрашивать обмен значениями для этого параметра с другими вычислительными устройствами реже. Подобным образом, в некоторых случаях по мере понижения степени достоверности для конкретного значения параметра экземпляра распределенной базы данных вычислительное устройство, связанное с этим экземпляром распределенной базы данных, может запрашивать обмен значениями для этого параметра с другими вычислительными устройствами чаще. Таким образом, степень достоверности может быть использована для уменьшения количества значений, обмен которыми производится между вычислительными устройствами.In some cases, as confidence increases for a particular value of a parameter of a distributed database instance, the computing device associated with that distributed database instance may request to exchange values for that parameter with other computing devices less frequently. Similarly, in some cases, as the confidence level for a particular parameter value of a distributed database instance decreases, the computing device associated with that distributed database instance may request to exchange values for that parameter with other computing devices more frequently. Thus, the degree of confidence can be used to reduce the number of values exchanged between computing devices.
Хотя выше были описаны различные варианты осуществления, следует понимать, что они были представлены исключительно в качестве примера, а не ограничения. В случае если способы, описанные выше, указывают на то, что определенные события происходят в определенном порядке, упорядоченная последовательность определенных событий может быть изменена. Дополнительно некоторые из событий могут быть выполнены одновременно в параллельном процессе, когда это возможно, а также выполнены последовательно, как описано выше.While various embodiments have been described above, it should be understood that they have been presented by way of example only and not limitation. In case the methods described above indicate that certain events occur in a certain order, the ordered sequence of certain events can be changed. Additionally, some of the events may be executed simultaneously in a parallel process, when possible, as well as performed sequentially, as described above.
Некоторые варианты осуществления, описанные в настоящем документе, относятся к продукту в виде запоминающего устройства с энергонезависимым машиночитаемым носителем (который также может называться энергонезависимым считываемым процессором носителем), на котором хранятся команды или компьютерный код для выполнения различных реализуемых компьютером операций. Машиночитаемый носитель (или считываемый процессором носитель) является энергонезависимым в том смысле, что он по существу не содержит временно распространяющихся сигналов (например, распространяющейся электромагнитной волны, несущей информацию по передающей среде, такой как пространство или кабель). Носители и компьютерный код (который также может называться кодом) могут быть выполнены и созданы для конкретной цели или целей. Примеры энергонезависимых машиночитаемых носителей включают, помимо прочего: магнитные запоминающие устройства, такие как жесткие диски, гибкие диски и магнитная лента; оптические запоминающие устройства, такие как компакт-диск / цифровые видеодиски (CD/DVD), постоянные запоминающие устройства на компакт-дисках (CD-ROM) и голографические устройства; магнитооптические запоминающие устройства, такие как оптические диски; модули обработки сигнала несущей частоты; и аппаратные устройства, которые специально выполнены с возможностью хранения и исполнения программного кода, такие как интегральные схемы специального назначения (ASIC), программируемые логические интегральные схемы (PLD), постоянное запоминающее устройство (ROM) и оперативные запоминающие устройства (RAM). Другие варианты осуществления, описанные в настоящем документе, относятся к компьютерному программному продукту, который может включать, например, команды и/или компьютерный код, обсуждаемые в настоящем документе.Some embodiments described herein relate to a non-volatile computer-readable medium (which may also be referred to as non-volatile, processor-readable medium) storage product that stores instructions or computer code for performing various computer-implemented operations. A computer-readable medium (or a processor-readable medium) is non-volatile in the sense that it essentially does not contain temporally propagating signals (eg, a propagating electromagnetic wave carrying information over a transmission medium such as space or a cable). The media and computer code (which may also be referred to as code) may be executed and created for a particular purpose or purposes. Examples of non-volatile computer-readable media include, but are not limited to: magnetic storage devices such as hard disks, floppy disks, and magnetic tape; optical storage devices such as compact disc/digital video discs (CD/DVD), compact disc read only memory (CD-ROM), and holographic devices; magneto-optical storage devices such as optical discs; carrier frequency signal processing modules; and hardware devices that are specifically configured to store and execute program code, such as application specific integrated circuits (ASICs), programmable logic integrated circuits (PLDs), read only memory (ROM) and random access memory (RAM). Other embodiments described herein relate to a computer program product that may include, for example, the instructions and/or computer code discussed herein.
Примеры компьютерного кода включают, помимо прочего, микрокод или микрокоманды, машинные команды, такие как созданные компилятором, код, используемый для создания веб-службы, и файлы, содержащие команды более высокого уровня, которые исполняются компьютером с использованием интерпретатора. Например, варианты осуществления могут быть реализованы с использованием императивных языков программирования (например, C, Fortran и т. д.), функциональных языков программирования (Haskell, Erlang и т. д.), логических языков программирования (например, Prolog), объектно-ориентированных языков программирования (например, Java, C++ и т. д.) или других подходящих языков программирования и/или инструментов разработки. Дополнительные примеры компьютерного кода включают, помимо прочего, сигналы управления, зашифрованный код и сжатый код.Examples of computer code include, but are not limited to, microcode or microinstructions, machine instructions such as those generated by a compiler, code used to create a web service, and files containing higher level instructions that are executed by a computer using an interpreter. For example, embodiments may be implemented using imperative programming languages (e.g., C, Fortran, etc.), functional programming languages (e.g., Haskell, Erlang, etc.), logical programming languages (e.g., Prolog), object-based oriented programming languages (e.g. Java, C++, etc.) or other suitable programming languages and/or development tools. Additional examples of computer code include, but are not limited to, control signals, encrypted code, and compressed code.
Хотя выше были описаны различные варианты осуществления, следует понимать, что они были представлены исключительно в качестве примера, а не ограничения, и различные изменения могут быть выполнены в отношении формы и деталей. Любая часть устройства и/или способов, описанных в настоящем документе, может быть объединена в любой комбинации, за исключением взаимоисключающих комбинаций. Варианты осуществления, описанные в настоящем документе, могут включать различные комбинации и/или подкомбинации функций, компонентов и/или признаков разных описанных вариантов осуществления.While various embodiments have been described above, it should be understood that they have been presented by way of example only and not limitation, and various changes may be made in terms of form and detail. Any part of the apparatus and/or methods described herein may be combined in any combination, except for mutually exclusive combinations. The embodiments described herein may include various combinations and/or subcombinations of functions, components, and/or features of the various embodiments described.
Claims (256)
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562211411P | 2015-08-28 | 2015-08-28 | |
US62/211,411 | 2015-08-28 | ||
US14/988,873 US9390154B1 (en) | 2015-08-28 | 2016-01-06 | Methods and apparatus for a distributed database within a network |
US14/988,873 | 2016-01-06 | ||
US15/153,011 | 2016-05-12 | ||
US15/153,011 US9529923B1 (en) | 2015-08-28 | 2016-05-12 | Methods and apparatus for a distributed database within a network |
US201662344682P | 2016-06-02 | 2016-06-02 | |
US62/344,682 | 2016-06-02 | ||
US15/205,688 | 2016-07-08 | ||
US15/205,688 US10318505B2 (en) | 2015-08-28 | 2016-07-08 | Methods and apparatus for a distributed database within a network |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2018110579A Division RU2709673C2 (en) | 2015-08-28 | 2016-08-26 | Methods and apparatus for distributing distributed database on network |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2019132736A RU2019132736A (en) | 2019-12-16 |
RU2019132736A3 RU2019132736A3 (en) | 2022-03-29 |
RU2778013C2 true RU2778013C2 (en) | 2022-08-12 |
Family
ID=
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991414A (en) * | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
US20080120240A1 (en) * | 1995-02-13 | 2008-05-22 | Intertrust Tecnologies Corporation | Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management |
RU2398275C2 (en) * | 2005-02-28 | 2010-08-27 | Майкрософт Корпорейшн | File system presented inside database |
RU126161U1 (en) * | 2012-04-19 | 2013-03-20 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | SYSTEM OF DECENTRALIZED MANAGEMENT OF THE STRUCTURE OF THE DISTRIBUTED DATABASE |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080120240A1 (en) * | 1995-02-13 | 2008-05-22 | Intertrust Tecnologies Corporation | Trusted infrastructure support systems, methods and techniques for secure electronic commerce, electronic transactions, commerce process control and automation, distributed computing, and rights management |
US5991414A (en) * | 1997-09-12 | 1999-11-23 | International Business Machines Corporation | Method and apparatus for the secure distributed storage and retrieval of information |
RU2398275C2 (en) * | 2005-02-28 | 2010-08-27 | Майкрософт Корпорейшн | File system presented inside database |
RU126161U1 (en) * | 2012-04-19 | 2013-03-20 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | SYSTEM OF DECENTRALIZED MANAGEMENT OF THE STRUCTURE OF THE DISTRIBUTED DATABASE |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2021200938B2 (en) | Methods and apparatus for a distributed database within a network | |
US11232081B2 (en) | Methods and apparatus for a distributed database within a network | |
US11734260B2 (en) | Methods and apparatus for a distributed database within a network | |
US9646029B1 (en) | Methods and apparatus for a distributed database within a network | |
US10318505B2 (en) | Methods and apparatus for a distributed database within a network | |
WO2017040313A1 (en) | Methods and apparatus for a distributed database within a network | |
RU2778013C2 (en) | Methods and device for a distributed database on the network | |
RU2776826C2 (en) | Methods and device for a distributed database that makes it possible to delete events |