RU2768202C2 - Systems and methods for providing immutable records - Google Patents
Systems and methods for providing immutable records Download PDFInfo
- Publication number
- RU2768202C2 RU2768202C2 RU2020112598A RU2020112598A RU2768202C2 RU 2768202 C2 RU2768202 C2 RU 2768202C2 RU 2020112598 A RU2020112598 A RU 2020112598A RU 2020112598 A RU2020112598 A RU 2020112598A RU 2768202 C2 RU2768202 C2 RU 2768202C2
- Authority
- RU
- Russia
- Prior art keywords
- block
- new
- main
- blockchain
- cryptographic hash
- Prior art date
Links
- 230000000875 corresponding Effects 0.000 claims description 47
- 238000004891 communication Methods 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000000694 effects Effects 0.000 abstract description 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 16
- 238000004590 computer program Methods 0.000 description 8
- 238000010200 validation analysis Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000006011 modification reaction Methods 0.000 description 4
- 230000003287 optical Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000000750 progressive Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000002547 anomalous Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000977 initiatory Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000005065 mining Methods 0.000 description 2
- 230000001960 triggered Effects 0.000 description 2
- 241000272519 Aix Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001174 ascending Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000000903 blocking Effects 0.000 description 1
- 230000001808 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000000704 physical effect Effects 0.000 description 1
- 230000001360 synchronised Effects 0.000 description 1
Images
Abstract
Description
РОДСТВЕННЫЕ ЗАЯВКИRELATED APPLICATIONS
[0001] Настоящая заявка испрашивает приоритет по предварительной заявке на патент США № 62/556,212, озаглавленной «Systems and methods of distributed dynamically changing state machines with provable ordering of events», поданной 8 сентября 2017 г., и предварительной заявке на патент США № 62/693,870, озаглавленной «DETECTION OF ANOMALIES IN A COMPUTER SYSTEM», поданной 3 июля 2018 г., каждая из которых полностью включена в настоящий документ посредством ссылки. [0001] This application claims priority to U.S. Provisional Application No. 62/556,212 entitled "Systems and methods of distributed dynamically changing state machines with provable ordering of events", filed September 8, 2017, and U.S. Provisional Application No. 62/693,870 entitled "DETECTION OF ANOMALIES IN A COMPUTER SYSTEM" filed July 3, 2018, each of which is hereby incorporated by reference in its entirety.
ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY
[0002] Настоящее описание в целом относится к первичным электронным консенсусным реестрам регистрации записей, таким как распределенные реестры, обеспечиваемые блокчейном, и в частности к системам и способам обеспечения неизменяемых записей. [0002] The present disclosure relates generally to primary electronic consensus ledgers of records such as distributed ledgers enabled by blockchain, and in particular to systems and methods for providing immutable records.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВBRIEF DESCRIPTION OF GRAPHICS
[0003] Настоящие варианты осуществления станут более понятными из представленного ниже описания и прилагаемой формулы изобретения в сочетании с прилагаемыми чертежами. Следует понимать, что на сопроводительных чертежах изображены только типовые варианты осуществления, и, таким образом, их не следует рассматривать как ограничивающие объем описания, и варианты осуществления будут конкретно и подробно описаны и объяснены со ссылкой на прилагаемые чертежи. [0003] The present embodiments will become more apparent from the description below and the appended claims in conjunction with the accompanying drawings. It should be understood that the accompanying drawings depict exemplary embodiments only, and thus should not be construed as limiting the scope of the description, and the embodiments will be specifically and in detail described and explained with reference to the accompanying drawings.
[0004] На ФИГ. 1 представлена схема блока блокчейна в вычислительной системе согласно варианту осуществления настоящего описания. [0004] FIG. 1 is a block diagram of a blockchain in a computing system according to an embodiment of the present disclosure.
[0005] На ФИГ. 2 представлена схема перекрестно-мерклизированной сети блокчейна в соответствии с вариантом осуществления настоящего описания, содержащей три участвующих блокчейна, а именно основной блокчейн, первый участвующий соседний блокчейн и второй участвующий соседний блокчейн. [0005] FIG. 2 is a diagram of a cross-merklized blockchain network according to an embodiment of the present disclosure, comprising three participating blockchains, namely a main blockchain, a first participating neighbor blockchain, and a second participating neighbor blockchain.
[0006] На ФИГ. 3A представлена частичная блок-схема, иллюстрирующая перекрестную мерклизацию блоков из участвующих соседних блокчейнов в пределах основного блокчейна, показанного на ФИГ. 1-2. [0006] FIG. 3A is a partial block diagram illustrating the cross-merclization of blocks from participating neighboring blockchains within the main blockchain shown in FIG. 1-2.
[0007] На ФИГ. 3B представлена частичная блок-схема, иллюстрирующая создание блока. [0007] FIG. 3B is a partial block diagram illustrating block creation.
[0008] На ФИГ. 4 представлен график, иллюстрирующий геометрически прогрессирующую степень неизменяемости, которая может быть достигнута в сети блокчейна в соответствии с вариантом осуществления настоящего описания, такой как сеть блокчейна, показанная на ФИГ. 1-3B. [0008] FIG. 4 is a graph illustrating the geometrically progressive degree of immutability that can be achieved in a blockchain network according to an embodiment of the present disclosure, such as the blockchain network shown in FIG. 1-3B.
[0009] На ФИГ. 5 представлена частичная блок-схема операций, выполняемых в вычислительной системе, на которой показан основной блокчейн и журнал событий, в соответствии с вариантом осуществления настоящего описания. [0009] FIG. 5 is a partial flowchart of operations performed on a computing system showing the underlying blockchain and event log, in accordance with an embodiment of the present disclosure.
[0010] На ФИГ. 6 представлена подробная частичная блок-схема операций вычислительной системы, описанной на ФИГ. 5, в соответствии с вариантом осуществления настоящего описания. [0010] FIG. 6 is a detailed partial block diagram of the operations of the computing system described in FIG. 5 in accordance with an embodiment of the present disclosure.
[0011] На ФИГ. 7 представлена блок-схема векторных часов сети блокчейна в соответствии с вариантом осуществления настоящего описания. [0011] FIG. 7 is a block diagram of a blockchain network vector clock according to an embodiment of the present disclosure.
[0012] На ФИГ. 8 представлен подробный вид участка векторных часов, показанных на ФИГ. 7. [0012] FIG. 8 is a detailed view of a portion of the vector clock shown in FIG. 7.
[0013] На ФИГ. 9 представлена схема вычислительной системы, обеспечивающей неизменяемые записи, в соответствии с вариантом осуществления настоящего описания. [0013] FIG. 9 is a diagram of a computing system providing immutable records, in accordance with an embodiment of the present disclosure.
ПОДРОБНОЕ ОПИСАНИЕDETAILED DESCRIPTION
[0014] Регистрация записей о транзакции распространена в сфере бизнеса и имеет ключевое значение, при этом необходимо обеспечивать ее точность, доступность, безопасность и надежность. Благодаря последним технологическим достижениям можно обеспечивать соответствие этим требованиям. С помощью компьютерных систем (аппаратное и программное обеспечение) можно в определенной степени получать точную, доступную, безопасную и надежную регистрацию записей о транзакции. Благодаря ряду аспектов регистрации записей о транзакции на основе компьютера получают как новые преимущества, так и недостатки по сравнению с более старыми традиционными способами письменной регистрации записей в журнале. [0014] Transaction record logging is common in business and is of key importance, and it is necessary to ensure its accuracy, availability, security and reliability. With the latest technological advances, these requirements can be met. With the help of computer systems (hardware and software) it is possible, to a certain extent, to obtain accurate, accessible, secure and reliable recording of transaction records. With a number of aspects of computer-based transaction logging, there are both new advantages and disadvantages over older traditional written logging methods.
[0015] Настоящее описание относится к системам и способам для обеспечения неизменяемых записей. Варианты осуществления настоящего описания могут включать в себя распределенные динамически изменяющиеся машины состояний. Настоящее описание может включать в себя системы и способы для обеспечения доказуемого порядка событий в пределах таких машин (и между ними), взаимосвязанных/выполненных с возможностью обмена данными друг с другом. Динамически изменяющаяся машина состояний (например, вычислительная система) может, например, быть использована для регистрации записей о транзакции. Для регистрации записей о транзакции самой по себе требуется достоверность и доказуемая точность, в том числе порядок, в котором транзакционные и иные события происходили и были записаны в вычислительной системе. Сбой оборудования или программного обеспечения, а также действия злоумышленников могут отрицательно сказываться на надежности и доказуемости регистрации записей в вычислительной системе. В настоящем изобретении предложены системы и способы обеспечения надежности и доказуемости регистрации записи для множества вычислительных систем, обменивающихся между собой конкретной транзакционной и хронометражной информацией. [0015] The present description relates to systems and methods for providing immutable records. Embodiments of the present disclosure may include distributed, dynamically changing state machines. The present description may include systems and methods for providing a provable order of events within (and between) such machines that are interconnected/capable of communicating with each other. A dynamically changing state machine (eg, a computer system) can, for example, be used to log transaction records. Recording a transaction itself requires validity and provable accuracy, including the order in which transactional and other events occurred and were recorded in a computing system. Failure of hardware or software, as well as the actions of intruders, can adversely affect the reliability and provability of recording records in a computer system. The present invention provides systems and methods for ensuring the reliability and provability of record registration for a plurality of computing systems exchanging specific transactional and timing information with each other.
[0016] Термин «аномалия» относится к изменению состояния на компьютере или в вычислительной системе, отличному от ожиданий владельца/оператора компьютера, например, без ограничений, к фактическому или предположительному несоответствию хронометрирования или же отклонению в регистрации порядка событий, а также фактическому нарушению целостности данных (нарушение целостности данных не обязательно предполагает искажение самих данных, но из-за него возникают сомнения в достоверности и доказуемости данных). [0016] The term "anomaly" refers to a change in state on a computer or computing system that is different from the expectations of the owner/operator of the computer, such as, without limitation, an actual or suspected mismatch in timing or a deviation in the registration of the order of events, as well as an actual violation of integrity data (violation of the integrity of the data does not necessarily involve the distortion of the data itself, but because of it there are doubts about the reliability and provability of the data).
[0017] Термин «компьютер» относится к электронным устройствам, выполненным с возможностью выполнения машиночитаемых команд; которые пригодны для хранения и/или обработки данных; и которые содержат по меньшей мере процессор, запоминающее устройство, средство ввода и средство вывода. Компьютер может представлять собой полную вычислительную систему или компонент вычислительной системы. Компьютер может быть выполнен с возможностью осуществления одной или более компьютерных функций, а именно приема данных, обработки данных, хранения данных, передачи данных и вывода данных. [0017] The term "computer" refers to electronic devices capable of executing machine-readable instructions; which are suitable for storing and/or processing data; and which comprise at least a processor, a storage device, an input means, and an output means. A computer may be a complete computing system or a component of a computing system. The computer may be configured to perform one or more computer functions, namely receiving data, processing data, storing data, transmitting data, and outputting data.
[0018] Термин «вычислительная система» относится к компьютеру или группе компьютеров и аналогичных устройств, обменивающихся данными друг с другом для выполнения одной или более функций компьютера. [0018] The term "computing system" refers to a computer or a group of computers and similar devices that communicate with each other to perform one or more computer functions.
[0019] Термин «сеть» относится к системе или способу и связанному с ними оборудованию межсетевого взаимодействия между вычислительными системами, независимо от топологии, протокола, операционной системы или геофизического местоположения. В частности, сеть в контексте настоящего документа включает в себя мультиплексную сеть, обеспечивающую многонаправленный синхронный и асинхронный обмен данными между узлами, причем один узел представляет одну вычислительную систему или конкретную группу вычислительных систем, и при этом один узел может быть одновременно обмениваться данными со множеством других узлов, и причем множество узлов могут одновременно обмениваться данными со множеством узлов. [0019] The term "network" refers to a system or method and associated equipment for interconnecting computing systems, regardless of topology, protocol, operating system, or geophysical location. In particular, the network in the context of this document includes a multiplex network that provides multi-directional synchronous and asynchronous communication between nodes, where one node represents one computing system or a specific group of computing systems, and where one node can be simultaneously communicating with many others. nodes, and moreover, a plurality of nodes can simultaneously communicate with a plurality of nodes.
[0020] Термин «блокчейн» относится к системе или способу, в которой или в соответствии с которым данные содержатся в логическом блоке, различные блоки данных логически организованы в относительную упорядоченную по времени последовательность, а элемент данных каждого блока содержит маркер, идентифицирующий и логически связывающий блок с непосредственно предшествующим блоком. [0020] The term "blockchain" refers to a system or method in which or in accordance with which data is contained in a logical block, different blocks of data are logically organized into a relative time-ordered sequence, and the data element of each block contains a marker that identifies and logically links block with immediately preceding block.
[0021] Термин «сеть блокчейна» относится к группе из по меньшей мере двух блокчейнов, которые обмениваются друг с другом некоторым количеством конкретных данных, благодаря чему каждый блокчейн в сети блокчейна обеспечивает некоторую степень доказательства достоверности и доказательства выполнения работы для каждой другого блокчейна в пределах сети блокчейна. Конкретные данные, которыми они обмениваются, могут содержать блоки блокчейна. Сеть блокчейна может быть реализована с применением криптографии с использованием односторонних функций, включающей в себя перекрестную мерклизацию, как описано в данном документе. [0021] The term "blockchain network" refers to a group of at least two blockchains that exchange some specific data with each other, whereby each blockchain in the blockchain network provides some degree of proof of validity and proof of work for every other blockchain within blockchain networks. The specific data they exchange may contain blockchain blocks. The blockchain network can be implemented using cryptography using one-way functions, including cross-merklization, as described in this document.
[0022] Термин «основной блокчейн», как правило, относится к блокчейну, функционирующему в качестве ключевого элемента; однако в контексте настоящего описания основной блокчейн представляет собой типовой блокчейн, рассматриваемый в настоящем документе, как если бы указанный типовой блокчейн функционировал как ключевой элемент считывающего устройства. Кроме того, для целей настоящего описания типовой основной блокчейн участвует в сети блокчейна. [0022] The term "main blockchain" generally refers to a blockchain that functions as a key element; however, in the context of the present description, the core blockchain is the generic blockchain discussed herein as if said generic blockchain were functioning as a key element of the reader. In addition, for the purposes of this description, a typical core blockchain participates in a blockchain network.
[0023] Термин «участвующий соседний блокчейн» относится к блокчейну, участвующему в сети блокчейна и не являющемуся основным блокчейном, но участвующему в той же сети блокчейна, что и основной блокчейн. Каждый из блокчейнов, будь то основной блокчейн или участвующий соседний блокчейн, представляет собой участвующий блокчейн. [0023] The term "participating neighbor blockchain" refers to a blockchain that participates in a blockchain network and is not the main blockchain, but participates in the same blockchain network as the main blockchain. Each of the blockchains, whether it be the main blockchain or a participating neighbor blockchain, is a participating blockchain.
[0024] Термин «блок» относится к элементной единице блокчейна, а также относится к группе данных, логически объединенных друг с другом, и может включать в себя различные данные фиксированных типов и размеров, а также данные нефиксированных типов и размеров. Другими словами, блок может содержать, например, без ограничений, (1) идентификатор версии, (2) идентификатор блока, (3) случайный код, (4) дайджест, (5) родительский дайджест, (6) метку времени (TS) и (7) данные транзакций. Каждый из элементов (1)-(6) может относиться к конкретному типу данных и иметь конкретный размер, а элемент (7) может содержать совокупность данных различных типов и/или с различной длиной. Каждый блок может содержать маркер (например, родительский хеш), который идентифицирует непосредственно предшествующий блок в блокчейне, членом которого является блок. [0024] The term "block" refers to the elemental unit of the blockchain, and also refers to a group of data logically combined with each other, and may include various data of fixed types and sizes, as well as data of non-fixed types and sizes. In other words, a block may contain, for example, without limitation, (1) a version identifier, (2) a block identifier, (3) a random code, (4) a digest, (5) a parent digest, (6) a timestamp (TS), and (7) transaction data. Each of the elements (1)-(6) may refer to a specific data type and have a specific size, and the element (7) may contain a collection of data of different types and/or with different lengths. Each block may contain a marker (for example, a parent hash) that identifies the immediately preceding block in the blockchain of which the block is a member.
[0025] Термин «набор» относится к частично упорядоченному набору или ч. у. набору, как обсуждалось в научной статье Deshpande, Jayant V. (1968) «On Continuity of a Partial Order» Proceedings of the American Mathematical Society, 19 (2): 383-386. Doi:10.1-9-/S0002-9939-1968-0236071-7, которая полностью включена в настоящий документ посредством ссылки. [0025] The term "set" refers to a partially ordered set or pc. set, as discussed in the scientific paper Deshpande, Jayant V. (1968) "On Continuity of a Partial Order" Proceedings of the American Mathematical Society , 19 (2): 383-386. Doi:10.1-9-/S0002-9939-1968-0236071-7, which is incorporated herein by reference in its entirety.
[0026] SHA представляет собой защищенный алгоритм хеширования. SHA представляет собой одностороннюю криптографическую функцию или набор функций, принимающих в качестве входных данных строку, которая может иметь переменную длину и создавать выходные данные фиксированной длины. Задача SHA заключается в создании выходной строки, из которой не может быть получена входная строка. Для целей настоящего описания ссылки на SHA относятся к реализации семейства SHA-2, известной как SHA256, соответствующей (или удовлетворяющей) стандарту Агентства национальной безопасности США, опубликованному в публикации 180-4 Федеральных стандартов обработки информации (FIPS) Национального института стандартов и технологий (NIST). SHA256 может принимать входную строку переменной длины до 1,844e19 символов (свыше 2 000 000 терабайт) и создавать 256-разрядную (32-байтовую) выходную строку. По меньшей мере в некоторых вариантах реализации SHA256 возможны прием входной строки (нуль) и генерация выходной строки. Выходную строку SHA256 (или другого алгоритма SHA) называют дайджестом. Термин «хеш» может быть использован взаимозаменяемо с термином «дайджест». В некоторых вариантах осуществления настоящего описания могут быть использованы другие подходящие защищенные криптографические алгоритмы хеширования. [0026] SHA is a secure hashing algorithm. SHA is a one-way cryptographic function or set of functions that takes as input a string that can be of variable length and produce a fixed length output. The task of SHA is to produce an output string from which no input string can be obtained. For the purposes of this description, references to SHA refer to an implementation of the SHA-2 family known as SHA256 that conforms to (or satisfies) the US National Security Agency standard published in Federal Information Processing Standards (FIPS) Publication 180-4 of the National Institute of Standards and Technology (NIST). ). SHA256 can accept a variable length input string up to 1,844e19 characters (over 2,000,000 terabytes) and produce a 256-bit (32-byte) output string. In at least some implementations of SHA256, it is possible to receive an input string (null) and generate an output string. The output string of SHA256 (or another SHA algorithm) is called a digest. The term "hash" can be used interchangeably with the term "digest". In some embodiments of the present disclosure, other suitable secure cryptographic hash algorithms may be used.
[0027] Дайджест представляет собой результат защищенного алгоритма хеширования. В SHA256 дайджест имеет длину 256 бит или 32 байта. Дайджест, также известный как хеш, имеет фиксированную длину 256 бит; таким образом, SHA256 может создавать до 2256 отдельных дайджестов (хешей). Представление дайджеста может варьироваться по длине в зависимости от способа кодирования в вычислительной системе. Например, шестнадцатеричная вычислительная система может представлять дайджест в виде 32-символьной строки. [0027] The digest is the result of a secure hashing algorithm. In SHA256, the digest is 256 bits long, or 32 bytes. A digest, also known as a hash, has a fixed length of 256 bits; thus, SHA256 can create up to 2,256 individual digests (hashes). The digest representation may vary in length depending on the encoding method in the computing system. For example, a hexadecimal computing system might represent a digest as a 32-character string.
[0028] Термин «двойной хеш» или «двойное хеширование» относится к «хешированию хеша» или созданию дайджеста, а затем использованию этого дайджеста в качестве входной строки или части входной строки для другой итерации хеширования для создания нового дайджеста. Для второй итерации выходной дайджест первой итерации может быть объединен с другим дайджестом, например путем конкатенации, а комбинация двух дайджестов формирует входное значение для второй итерации хеширования. Если другой дайджест недоступен, первый выходной дайджест может быть продублирован с оригиналом, а продублированные дайджесты могут быть объединены с образованием входных данных для второй итерации хеширования. [0028] The term "double hash" or "double hash" refers to "hashing the hash" or creating a digest and then using that digest as an input string or part of the input string for another hash iteration to create a new digest. For the second iteration, the output digest of the first iteration can be combined with another digest, such as by concatenation, and the combination of the two digests forms the input value for the second hash iteration. If no other digest is available, the first output digest can be duplicated with the original, and the duplicated digests can be combined to form the input for the second hash iteration.
[0029] Термин «мерклизация» (в некоторых публикациях «меркелизация») относится к процессу, при котором каждую группу строк данных обрабатывают с помощью алгоритма SHA и каждый полученный дайджест объединяют в пару с другим полученным подобным образом дайджестом, например путем конкатенации, а затем снова обрабатывают с помощью SHA для создания нового дайджеста, причем указанную процедуру повторяют, пока не останется только один дайджест. Если в любой итерации существует нечетное количество дайджестов (более одного (1)), один из дайджестов дублируют, а дубликат конкатенируют с его оригиналом и затем обрабатывают с помощью SHA. Один оставшийся дайджест может упоминаться как корень дерева Меркла для конкретной группы строк данных. Аналогичным образом термин «мерклизированный» относится к данным, которые были обработаны путем мерклизации. [0029] The term "merklization" (in some publications "merkelization") refers to the process in which each group of data rows is processed using the SHA algorithm and each resulting digest is paired with another similarly obtained digest, for example, by concatenation, and then processed again with SHA to create a new digest, and this procedure is repeated until only one digest remains. If there is an odd number of digests in any iteration (more than one (1)), one of the digests is duplicated, and the duplicate is concatenated with its original and then processed using SHA. The one remaining digest may be referred to as the root of the Merkle tree for a particular group of data rows. Similarly, the term "Merklized" refers to data that has been processed by merklization.
[0030] Термин «перекрестная мерклизация» относится к мерклизации, при которой данные из одного блокчейна (в форме дайджеста) мерклизируют с данными другого блокчейна также в форме дайджеста. В сети блокчейна каждый участвующий блокчейн вносит свой вклад в дайджест, связывающий последний блок блокчейна с каждым другим участвующим блокчейном, а каждый участвующий блокчейн мерклизирует друг с другом все дайджесты, принятые для текущего блока. Перекрестная мерклизация также подробно описана ниже. [0030] The term "cross-merklization" refers to merklization in which data from one blockchain (in the form of a digest) is merklized with data from another blockchain, also in the form of a digest. In a blockchain network, each participating blockchain contributes to a digest linking the last block of the blockchain to every other participating blockchain, and each participating blockchain merkles with each other all the digests accepted for the current block. Cross-merklization is also detailed below.
[0031] Термин «системное время» относится ко времени подсистемы хронометрирования вычислительной системы. Общепринятой практикой является конфигурирование подсистемы хронометрирования вычислительной системы для ее периодической синхронизации с удаленной системой хронометрирования (например, сервером времени, находящимся в ведении Национального института стандартов и технологий (NIST)). [0031] The term "system time" refers to the time of the timing subsystem of the computing system. It is common practice to configure the computer system's timing subsystem to periodically synchronize it with a remote timing system (eg, a time server maintained by the National Institute of Standards and Technology (NIST)).
[0032] Термин «относительное время» относится к упорядочению событий на основании истинного момента времени, в который произошло событие, или же который был предположен конкретным механизмом упорядочения или сообщен ему без соблюдения строгой временной привязки. В иллюстративных целях событие A может происходить в вычислительной системе CS-A в 20180601:0101:10.150 UTC (универсальное глобальное время), событие B может происходить в вычислительной системе CS-B через 400 миллисекунд после события A относительно UTC, а событие C может происходить в вычислительной системе CS-C через 1300 миллисекунд (1,3 секунды) после события A и через 900 миллисекунд после события B относительно UTC. CS-A и CS-B могут сообщать CS-C о возникновении событий A и B, включая системное время события. Из-за топологии сети сообщение о событии B может поступать в CS-C через 700 миллисекунд после того, как произошло событие B, и за 200 миллисекунд до наступления события C. Вследствие удаленности и задержек в сети сообщение о событии A может поступать в CS-C через 2900 миллисекунд (2,9 секунды) после того, как произошло событие A и 1600 миллисекунд (1,6 секунды) после того, как произошло событие C. Для CS-C относительное время (порядок) указанных событий, основанное на том, когда событие C произошло в CS-C, и сообщения о событии A и B, поступивших в CS-C, является следующим: B C A, даже если абсолютный порядок в соответствии с UTC выражен как A B C. [0032] The term "relative time" refers to the ordering of events based on the true time at which the event occurred, or which was assumed by a particular ordering mechanism or reported to it without respecting a strict time reference. For illustrative purposes, event A may occur on computer system CS-A at 20180601:0101:10.150 UTC, event B may occur on computer system CS-
[0033] Термин «коллизия» относится либо к идентичным дайджестам, созданным SHA (коллизия дайджестов), либо к одновременному возникновению двух или более блоков (коллизия блоков). Коллизия дайджестов, хотя и маловероятна, теоретически возможна из-за различных входных строк. Коллизия дайджестов может возникнуть вследствие того, что множество вычислительных систем создают идентичные дайджесты одновременно или почти одновременно друг с другом и при этом, например, участвуют в сети блокчейна. Коллизия блоков может произойти, когда две (или более) вычислительные системы, участвующие в сети блокчейна, создают, и/или доставляют, и/или принимают блоки одновременно или с идентичными метками времени. С помощью методов блокчейновых систем минимизируют коллизии каждого из указанных типов с возможностью предотвращения сбоя или блокирования блокчейна (-ов). Например, вычислительная система, принимающая блок из другого блокчейна, имеющего метку времени, идентичную метке времени последнего собственного блока принимающей вычислительной системы, может просто игнорировать метку времени входного блока и обрабатывать входной блок как поступающий непосредственно после последнего собственного блока. Аналогичным образом участвующая в блокчейне вычислительная система, принимающая блок из другого блокчейна одновременно с созданием собственного блока, может быть выполнена с возможностью обработки входящего блока как поступившего после создания нового собственного блока, независимо от метки времени входящего блока. Участвующая в блокчейне вычислительная система, принимающая блок от каждой из двух (или более) участвующих вычислительных систем, может быть выполнена с возможностью упорядочивания множества входящих блоков на основании одной из меток времени каждого блока, длины (также называемой высотой) каждого отправляющего блокчейна, присвоения идентификатора блокчейна и т. д. [0033] The term "collision" refers either to identical digests produced by SHA (digest collision) or to the simultaneous occurrence of two or more blocks (block collision). Digest collision, although unlikely, is theoretically possible due to different input strings. Collision of digests can arise due to the fact that many computing systems create identical digests at the same time or almost simultaneously with each other and, for example, participate in the blockchain network. A block collision can occur when two (or more) computing systems participating in a blockchain network create and/or deliver and/or receive blocks at the same time or with identical timestamps. Using the methods of blockchain systems, collisions of each of the specified types are minimized with the ability to prevent failure or blocking of the blockchain (s). For example, a computing system receiving a block from another blockchain that has a timestamp identical to the timestamp of the receiving computing system's last native block could simply ignore the input block's timestamp and treat the input block as coming immediately after the last native block. Similarly, a blockchain-participating computing system that receives a block from another blockchain at the same time that it creates its own block can be configured to treat an incoming block as having arrived after the creation of a new native block, regardless of the timestamp of the incoming block. A blockchain participating computing system receiving a block from each of the two (or more) participating computing systems can be configured to order a plurality of incoming blocks based on one of the timestamps of each block, the length (also called height) of each sending blockchain, assigning an ID blockchain, etc.
[0034] Термин «устойчивость к коллизиям» относится к малой вероятности коллизии дайджестов для различных входных строк (поскольку устранение коллизии блоков зависит лишь от выбора способа упорядочивания блоков, устойчивость к коллизиям блоков не является серьезной проблемой). Поскольку алгоритм SHA256 способен создавать до 2256 отдельных дайджестов, устойчивость к коллизиям может считаться достаточно высокой. В некоторых вычислительных приложениях устойчивость SHA256 к коллизиям может теоретически снижаться за счет искусственного введения одного или более ограничений на допустимые результирующие дайджесты. Другими словами, в конкретном приложении может быть применено правило x последовательных битов, имеющих значение 0, за счет чего можно эффективно уменьшать количество отдельных дайджестов, которые конкретное приложение может принимать в качестве выходных данных от алгоритма SHA256. Поскольку SHA является односторонней криптографической функцией, такое правило ограничения выходных данных не может быть применено в качестве входного параметра для SHA256, а лишь в качестве реализации последующей обработки, предполагающей итеративное создание дайджестов с различными входными строками, пока не будет создан дайджест, удовлетворяющий правилу. По меньшей мере в некоторых вариантах реализации блокчейна изменение входной строки может быть выполнено путем добавления случайного кода к началу или концу входной строки, а также приращения случайного кода, или же произвольной генерации, или получения иным способом произвольного нового случайного кода при каждой итерации SHA, пока не будет создан дайджест, удовлетворяющий правилу. [0034] The term "collision resistance" refers to the low probability of digest collisions for different input rows (because block collision elimination depends only on the choice of block ordering method, block collision resistance is not a serious problem). Since the SHA256 algorithm is capable of producing up to 2256 separate digests, collision resistance can be considered quite high. In some computing applications, the collision resistance of SHA256 can theoretically be reduced by artificially imposing one or more restrictions on the allowable resulting digests. In other words, a particular application can apply a rule of x consecutive bits having a value of 0, thereby effectively reducing the number of individual digests that a particular application can take as output from the SHA256 algorithm. Since SHA is a one-way cryptographic function, such an output restriction rule cannot be used as an input parameter to SHA256, but only as a post-processing implementation that iteratively generates digests with different input strings until a digest is generated that satisfies the rule. In at least some blockchain implementations, changing the input string can be done by adding a random code to the beginning or end of the input string, and incrementing the random code, or randomly generating, or otherwise obtaining an arbitrary new random code with each SHA iteration, until no digest will be generated that matches the rule.
[0035] Термин «разрешение коллизий» относится к системе (-ам) или способу (-ам) для исключения всех идентичных дайджестов с возможностью отбрасывания каждого исключенного дайджеста. При отбрасывании дайджеста блок, элементом которого является отброшенный дайджест, может также быть отброшен. [0035] The term "collision resolution" refers to a system(s) or method(s) for excluding all identical digests, with the ability to discard each excluded digest. When a digest is discarded, the block of which the discarded digest is a member may also be discarded.
[0036] Термин «случайный код» относится к произвольному целому числу (например, 32-разрядному целому числу). Случайный код может представлять собой элемент из ряда случайных кодов. В некоторых вариантах осуществления случайный код генерируется случайным образом или генерируется псевдослучайным образом для каждой итерации использования. В других вариантах осуществления случайный код может быть увеличен до следующего значения для каждой последующей итерации использования. Начальное значение случайного кода (случайный код для первой итерации цикла генерации блока) может быть выбрано, например, без ограничений, с помощью алгоритма, генерирующего 32-битовое целое число, или может представлять собой заданное протоколом начальное значение. Следующий случайный код (последующая итерация в том же цикле генерации блока) может быть определен с помощью алгоритма, который заново генерирует 32-битовое целое число, или может представлять собой заданное протоколом увеличение предыдущего использованного случайного кода. В одном варианте осуществления случайный код может генерироваться заново для каждой итерации независимо от предыдущего значения случайного кода. [0036] The term "random code" refers to an arbitrary integer (eg, a 32-bit integer). The random code may be an element from a series of random codes. In some embodiments, the random code is randomly generated or pseudo-randomly generated for each use iteration. In other embodiments, the implementation of the random code may be increased to the next value for each subsequent iteration of use. The seed value of the random code (the random code for the first iteration of the block generation loop) may be chosen, eg without limitation, by an algorithm generating a 32-bit integer, or may be a protocol-defined seed. The next random code (a subsequent iteration in the same block generation cycle) may be determined by an algorithm that re-generates a 32-bit integer, or may be a protocol-defined increment of the previously used random code. In one embodiment, the random code may be re-generated for each iteration regardless of the previous value of the random code.
[0037] Термин «доказательство выполнения работы» относится к дайджесту, удовлетворяющему правилу ограничения выходных данных, устанавливающему требование к x последовательным битам со значением 0. Поскольку SHA не принимает параметр, определяющий выходные данные, дайджест можно сравнивать с правилом после генерации. Дайджест, удовлетворяющий правилу, создают путем итеративной генерации дайджестов, пока не будет получен удовлетворяющий правилу дайджест. Удовлетворяющий правилу дайджест может служить свидетельством («доказательством») выполнения некоторого объема компьютерной обработки («работы») для создания дайджеста. Для правила ограничения выходных данных могут аналогичным образом потребоваться x последовательных битов, имеющих значение 1, или определенной подстроки конкретной длины с конкретным порядком 0 и 1. Требование лучшего (более продолжительного) доказательства выполнения работы может обусловить более низкую устойчивость к коллизиям. [0037] The term "proof of work" refers to a digest that satisfies an output restriction rule that sets the requirement for x consecutive bits to be 0. Since SHA does not accept an output parameter, the digest can be compared with the rule after generation. A digest that satisfies a rule is generated by iteratively generating digests until a digest that satisfies the rule is obtained. A digest that satisfies the rule can serve as evidence ("proof") that some amount of computer processing ("work") has been performed to create the digest. An output constraint rule might likewise require x consecutive bits that have a value of 1, or a specific substring of a specific length with a specific order of 0s and 1s. Requiring a better (longer) proof of work might result in lower collision resistance.
[0038] Термин «целевая сложность» относится к элементу, который определяет конкретное ограничение для создания дайджеста с доказательством выполнения работы. Например, без ограничений, целевая сложность может указывать на то, что дайджест должен иметь десять (10) последовательных 0-битов, чтобы считаться дайджестом, имеющим доказательство выполнения работы. [0038] The term "target complexity" refers to an element that defines a specific constraint for generating a proof-of-work digest. For example, without limitation, the target complexity may indicate that a digest must have ten (10) consecutive 0-bits to be considered a proof-of-work digest.
[0039] Термин «транзакция», как правило, может относиться к (а) обмену, например обмену товаров/услуг на товары/услуги, товаров/услуг на оплату, обмену долговых обязательств, обмену обязательств по срокам поставки, обмену денежных обязательств и т. д.; и к (b) компьютерной функции, посредством которой регистрируют или иным образом обрабатывают транзакцию типа (a); и к (c) компьютерной функции, посредством которой регистрируют транзакцию типа (b). В качестве примера транзакция типа (a) может представлять собой продажу виджета за денежные средства; связанная с ней транзакция типа (b) может представлять собой уменьшение количества виджетов на складе в результате указанной продажи; а связанная с ними транзакция типа (c) может представлять собой регистрацию в журнале компьютера информации (например, идентификационных данных пользователя, времени входа в систему, доступа к программному обеспечению товарных запасов, вычитания проданного виджета и т. д.) об осуществлении доступа, из-за которого стало меньше товара на складе. Транзакции типа (c) могут также включать в себя сведения об установке, изменении или удалении микропрограммного или программного обеспечения, включая размер изображения, цифровую подпись, лицензию, сертификат и т. д. [0039] The term "transaction" can generally refer to (a) an exchange, such as the exchange of goods/services for goods/services, goods/services for payment, exchange of debt obligations, exchange of obligations for delivery dates, exchange of monetary obligations, etc. d.; and (b) a computer function by which a transaction of type (a) is registered or otherwise processed; and to (c) a computer function by which a transaction of type (b) is registered. As an example, a transaction of type (a) could be the sale of a widget for cash; the associated transaction of type (b) may represent a reduction in the number of widgets in stock as a result of said sale; and an associated transaction of type (c) may be a computer log entry of information (e.g., user identity, login time, inventory software access, subtraction of a sold widget, etc.) about accessing, from - for which there was less goods in stock. Type (c) transactions may also include information about installing, modifying, or removing firmware or software, including image size, digital signature, license, certificate, and so on.
[0040] Следует понимать, что размещение и конфигурация компонентов вариантов осуществления, по существу описанных и показанных на фигурах в настоящем документе, могут иметь широкое разнообразие разных конфигураций. Таким образом, последующее более подробное описание различных вариантов осуществления, представленных на фигурах, не предполагает ограничения объема описания, как заявлено, но представляет различные варианты осуществления. Несмотря на то что различные аспекты вариантов осуществления представлены на рисунках, причем, если это конкретно не указано, рисунки не обязательно выполнены в масштабе. [0040] It should be understood that the placement and configuration of the components of the embodiments substantially described and shown in the figures herein may have a wide variety of different configurations. Thus, the following more detailed description of the various embodiments presented in the figures is not intended to limit the scope of the description as stated, but represents various embodiments. While various aspects of the embodiments are shown in the drawings, the drawings are not necessarily drawn to scale unless specifically indicated.
[0041] Грамматические средства выражения единственного числа можно описать как «один», но без ограничения одним. Например, хотя описание может включать в себя выражение «группа с дайджестом», в этом описании также предполагается, что в указанной группе может быть два или более дайджестов. [0041] The grammatical means of expressing the singular can be described as "one", but not limited to one. For example, although the description may include the expression "group with digest", this description also assumes that there may be two or more digests in the specified group.
[0042] Если не указано иное, все диапазоны включают в себя обе конечные точки и все числа между конечными точками. [0042] Unless otherwise noted, all ranges include both endpoints and all numbers between the endpoints.
[0043] В данном описании ссылка на «один вариант осуществления» или «вариант осуществления» означает, что конкретный признак, структура или характеристика, описанные в отношении данного варианта осуществления, включены в по меньшей мере по меньшей мере один вариант осуществления. Таким образом, приведенные в настоящем описании выражения или их вариации не обязательно относятся к одному и тому же варианту осуществления. [0043] As used herein, reference to "one embodiment" or "an embodiment" means that a particular feature, structure, or characteristic described with respect to a given embodiment is included in at least one embodiment. Thus, the expressions given herein, or variations thereof, do not necessarily refer to the same embodiment.
[0044] На ФИГ. 1 представлена схема блока 10 блокчейна в вычислительной системе 1 согласно варианту осуществления настоящего описания. Блок 10 может включать в себя заголовок 11 (hdr) и полезную нагрузку 13. Блок 10 может быть создан или иным образом реализован в вычислительной системе 1 путем реализации блокчейна согласно варианту осуществления настоящего описания. Блок 10, показанный на ФИГ. 1, содержит идентификатор 12 блока (или ID блока), версию 14 блокчейна (или идентификатор версии блокчейна), идентификатор 16 блокчейна (или ID блокчейна), метку 18 времени, область 20 доказательства выполнения работы (или POWR) (которую можно рассматривать как набор в рамках теории математического множества), дайджест 30 блока, целевую сложность 40, случайный код 50 блока и группу 60 вспомогательных дайджестов блока. Блок 10 может включать в себя один или более дайджестов 70, 72, 74 записи (например, корни дерева Меркла), включая дайджест 70 записи текущего блока 10 и один или более дайджестов 72, 74 записи блоков участвующих соседних блокчейнов. Дайджесты 70, 72, 74 записи можно рассматривать как набор в рамках теории математического множества. Блок 10 может включать в себя более одного заголовка 80, 82 блока для блоков, принятых из других блокчейнов (например, участвующих соседних блокчейнов). [0044] FIG. 1 is a diagram of a
[0045] Блок 10 может включать в себя группу 90 записей в рамках полезной нагрузки 13. Указанная группа записей может содержать записи о транзакции. Записи о транзакции могут содержать информацию, касающуюся транзакции. [0045]
[0046] Заголовок 11 блока 10 может содержать идентификатор блока 12, версию 14 блокчейна, идентификатор 16 блокчейна, метку 18 времени, POWR 20, дайджест 30 блока, целевую сложность 40, случайный код 50 блока, группу 60 вспомогательных дайджестов блока и дайджест 70 (корень дерева Меркла) записи о транзакции блока 10. Полезная нагрузка 13 может содержать группу из 90 записей. [0046]
[0047] Идентификатор 12 блока может представлять собой порядковый идентификатор, указывающий относительный порядок блока 10 в блокчейне, к которому относится блок 10. Идентификатор 14 версии блокчейна может указывать конкретную версию протокола блокчейна, на основании которого работает блокчейн, создавший блок 10. Метка 18 времени может представлять собой индикатор системного времени, получаемый от подсистемы хронометрирования вычислительной системы 1, в которой размещен блокчейн, в котором был создан блок 10. Далее будут описаны POWR 20, дайджест 30 блока, целевая сложность 40 и группа 60 вспомогательных дайджестов блока. Форма и порядок вышеуказанных элементов в блоке 10 могут быть определены протоколом блокчейна, на основании которого работает блокчейн, создавший блок 10. [0047] The
[0048] Вычислительная система 1 может представлять собой любую подходящую вычислительную систему, включающую в себя одно или более вычислительных устройств, причем каждое содержит один или более процессоров, один или более машиночитаемых носителей, одно или более электронных запоминающих устройств, одно или более устройств ввода/вывода и/или один или более интерфейсов связи. [0048]
[0049] Порядок элементов 12-90, показанных на ФИГ. 1, приведен для удобства читателя и не является обязательным для конкретного варианта осуществления настоящего описания. Один вариант осуществления настоящего описания может включать в себя больше или меньше элементов, чем описано в настоящем документе. [0049] The order of elements 12-90 shown in FIG. 1 is provided for the convenience of the reader and is not binding on a particular embodiment of the present disclosure. One embodiment of the present description may include more or fewer elements than described herein.
[0050] На ФИГ. 2 представлена схема перекрестно-мерклизированной сети блокчейна 100, содержащей три участвующих блокчейна, а именно, основной блокчейн 200, первый участвующий соседний блокчейн 300 и второй участвующий соседний блокчейн 400 в соответствии с вариантом осуществления настоящего описания. Основной блокчейн 200 содержит ряд блоков в соответствии с вариантом осуществления настоящего описания, на основе которого идентифицирован блок 230. Блок 10, изображенный на ФИГ. 1, также показан в контексте сети блокчейна 100 и основного блокчейна 200. Хотя на ФИГ. 2 показаны три участвующих блокчейна 200, 300, 400 сети блокчейна 100, сеть блокчейна согласно настоящему описанию может включать в себя меньше (но по меньшей мере два) или больше участвующих блокчейнов. Кроме того, сеть блокчейна 100 может представлять собой мультиплексную сеть. [0050] FIG. 2 is a diagram of a
[0051] Блок 230 основного блокчейна 200 содержит по меньшей мере уникальный идентификатор 212 блока, версию 214 блокчейна, идентификатор 216 блокчейна, метку 218 времени и область 226 данных. Уникальный идентификатор 212 блока может быть аналогичным (и в разумных пределах отличаться от) уникального идентификатора 12 блока для блока 10. Версия 214 блокчейна может быть аналогичной версии 14 блокчейна для блока 10. Идентификатор 216 блокчейна может быть аналогичным идентификатору 16 блокчейна для блока 10. Метка 218 времени может быть аналогичной метке 18 времени для блока 10 (и в разумных пределах отличаться от нее). Область 226 данных может включать в себя элементы, аналогичные другим элементам блока 10, показанного на ФИГ. 1, и может включать в себя элементы, не представленные на ФИГ. 1. Идентифицируют блок 330 первого участвующего соседнего блокчейна 300, имеющего элементы 312, 314, 316, 318, 326, который в целом может быть аналогичным блоку 230 основного блокчейна 200. Идентифицируют блок 430 второго участвующего соседнего блокчейна 400, имеющего элементы 412, 414, 416, 418, 426, который в целом может быть аналогичным блоку 230 основного блокчейна 200. [0051] The
[0052] Каждый из блоков 230, 330, 430 представлен снизу соответствующих блокчейнов 200, 300, 400, хотя они показаны таким образом исключительно для удобства описания. Каждый из блоков 230, 330, 430 может быть получен с помощью ряда блоков соответствующего блокчейна 200, 300, 400 каждого блока 230, 330, 430. В качестве примера показано, что для блока 230 основного блокчейна 200 следующим блоком является блок 10P, за которым следует блок 10, а за блоком 10 далее идет блок 10N. Каждый из последующих блоков 10P, 10, 10N и т. д. основного блокчейна 200 имеет метку времени, аналогичную метке 218 времени блока 230. Метки времени для каждого последующего блока 10P, 10, 10N показаны как регистрируемые последовательно в более поздние моменты времени. В пределах основного блокчейна 200 метки времени, записанные в каждом из последующих блоков, формируют по меньшей мере логический порядок событий в пределах основного блокчейна 200. Другими словами, метка времени каждого блока в пределах основного блокчейна 200 получена на основании системного времени вычислительной системы, в которой сгенерированы блоки. [0052]
[0053] Аналогичным образом представлены участвующие соседние блокчейны 300, 400, имеющие последовательно расположенные в более поздние моменты времени следующие блоки 330P, 430P, а в остальном в целом и функционально подобные основному блокчейну 200. Как и последующие метки времени блока основного блокчейна 200, последующие метки времени блока каждого участвующего соседнего блокчейна 300, 400 устанавливают эталонный последовательный неизменяемый порядок в пределах соответствующего блокчейна 300, 400. [0053] Similarly, participating neighboring
[0054] Основной блокчейн 200 может постоянно присутствовать в вычислительной системе 1, показанной на ФИГ. 1, из которой блокчейн 200 получает значение времени для каждой последующей метки времени блока. Каждый участвующий соседний блокчейн 300, 400 может аналогичным образом постоянно присутствовать в соответствующей отличной вычислительной системе, аналогичной вычислительной системе 1 основного блокчейна 200. Каждый участвующий соседний блокчейн 300, 400 может определять значение времени для каждой последующей метки времени блока соответствующего блокчейна 300, 400 на основании системного времени вычислительной системы (аналогично вычислительной системе 1 блокчейна 200), в которой постоянно присутствует соответствующий участвующий соседний блокчейн 300, 400. Как будет очевидно для специалиста в данной области техники, каждая из вычислительных систем (аналогичная вычислительной системе 1 основного блокчейна 200) может иметь различные параметры и/или механизмы обеспечения системного времени. [0054] The
[0055] По мере того как каждый участвующий блокчейн 200, 300, 400 завершает каждый последующий блок, происходит передача этого блока в по меньшей мере один участвующий соседний блокчейн. Например, каждый блок первого участвующего соседнего блокчейна 300 может быть передан 324 в по меньшей мере основной блокчейн 200 и каждый блок второго участвующего соседнего блокчейна 400 может быть передан 422 в по меньшей мере основной блокчейн 200 по мере создания каждого блока. Основной блокчейн 200 может не зависеть от относительного времени создания блока в пределах участвующего соседнего блокчейна 300, 400. Поскольку каждый такой блок участвующего соседнего блокчейна 300, 400 передается 324, 422 в основной блокчейн 200, в основном блокчейне 200 могут быть данные об относительном времени, когда блокчейн 200 «узнает» о существовании блока в участвующем соседнем блокчейне 300, 400. В более широком смысле, поскольку каждый из блокчейнов 200, 300, 400 создает блок, например блоки 230, 330, 430 соответственно, и одинаковым образом передает их в другие блокчейны 200, 300, 400 в пределах сети блокчейна 100, каждый из блокчейнов 200, 300, 400 может фиксировать 112 факт создания каждого последующего блока и может упорядочивать 114 указанные блоки в поступательном временном ряду 110. Другими словами, каждый блокчейн 200, 300, 400 может иметь информацию о временнóм порядке 114 создания (или передачи при создании) каждого блока каждого блокчейна 200, 300, 400 в сети блокчейна 100. См. ФИГ. 5-6 ниже. [0055] As each participating
[0056] Следует обратить внимание на ФИГ. 1 и 2. В данном примере блок 10, показанный на ФИГ. 1, представляет собой элемент основного блокчейна 200, показанного на ФИГ. 2. Идентификатор 12 блока может быть уникальным для блока 10. Другими словами, каждый блок в блокчейне может иметь уникальный идентификатор 12 блока. В версии 14 блокчейна может быть указан конкретный вариант реализации протокола блокчейна, используемого в основном блокчейне 200 при создании блока 10. Идентификатор 16 блокчейна может определять конкретный блокчейн 200, элементом которого является блок 10. Идентификатор 16 блокчейна показан в 4-байтовом шестнадцатеричном представлении исключительно для удобства и не обязателен для настоящего описания. Идентификатор 16 блокчейна может быть образован различными способами при условии, что идентификатор 16 блокчейна будет уникальным для каждого блокчейна. Метка 18 времени может указывать момент системного времени, в который был создан блок 10. Метка 18 времени может иметь форму, например, без ограничений, метки времени, привязанной к «эпохе Unix» (Unix epoch), или любую другую форму, соответствующую варианту осуществления протокола блокчейна в соответствии с настоящим описанием. [0056] Referring to FIG. 1 and 2. In this example, the
[0057] Группа 60 вспомогательных дайджестов блока включает в себя самые последние дайджесты 66, 64, 62 блока из каждого блокчейна 200, 300, 400, участвующего в сети блокчейна 100. В примере, показанном на ФИГ. 1, группа 60 дайджестов блока содержит дайджест 62 блока самого последнего блока из первого участвующего соседнего блокчейна 300, дайджест 64 блока самого последнего блока из второго участвующего соседнего блокчейна 400 и дайджест 66 блока самого последнего блока в основном блокчейне 200 непосредственно перед блоком 10. [0057] Auxiliary block digest
[0058] Дайджест 30 блока получают путем мерклизации дайджеста 62 блока и дайджеста 64 блока. Другими словами, дайджесты 62, 64 блока (для блоков из участвующих соседних блокчейнов) конкатенируют с возможностью образования единой 64-байтовой строки, обрабатываемую затем с применением SHA. Выходные данные мерклизации дайджестов 62, 64 блока с помощью SHA представляют собой 32-байтовую строку, целиком состоящую из дайджеста 30 блока. Поскольку каждый дайджест 62, 64, 66 блока образован другим блокчейном 200, 300, 400, мерклизация этих дайджестов 62, 64, 66 блока представляет собой, в частности, перекрестную мерклизацию. В сети блокчейна, включающей в себя более трех участвующих блоков, группа 60 дайджестов блока может содержать дайджест блока из каждого участвующего блокчейна и каждый такой дайджест блока может быть перекрестно мерклизированным, а корень дерева Меркла для дайджестов блока создают для генерации дайджеста 30 блока. Блок 10 включает в себя дайджест 66 блока, который был создан таким же образом, как и часть самого последнего блока 10P перед основным блокчейном 200 и в его пределах. Дайджест 66 блока может соединять блок 10 с самым последним ранее созданным блоком 10P в пределах основного блокчейна 200. Аналогичным образом протокол блокчейна 200 блока 10 может обеспечивать передачу дайджеста 30 блока в непосредственно следующий за ним блок 10N в основном блокчейне 200. Таким образом, блок 10N, следующий за блоком 10, связан с блоком 10, а блок 10 связан с самым последним блоком 10P, предшествующим блоку 10. Такая взаимосвязь блоков характерна для всего основного блокчейна 200 и выполнена с возможностью обеспечения связи каждого блока с непосредственно предшествующим ему и непосредственно следующим за ним блоками. Аналогичным образом дайджест 62 блока может быть передан от участвующего соседнего блокчейна 300 к основному блокчейну 200, а дайджест 64 блока может быть передан от участвующего соседнего блокчейна 400 к основному блокчейну 200. Таким образом можно связать блок 10 с непосредственно предшествующим блоком 330P, 430P в пределах каждого участвующего соседнего блокчейна 300, 400 аналогично установлению связи блока 10 с непосредственно предшествующим блоком 10P в пределах основного блокчейна 200. [0058] Block digest 30 is obtained by merklization of block digest 62 and block digest 64. In other words, block digests 62, 64 (for blocks from participating neighboring blockchains) are concatenated to form a single 64-byte string, which is then processed using SHA. The output of merklization of block digests 62, 64 with SHA is a 32-byte string consisting entirely of block digest 30. Since each block digest 62, 64, 66 is formed by a
[0059] Протокол блокчейна 200 блока 10 может также обеспечивать передачу 222, 224 дайджеста 30 блока в каждый участвующий соседний блокчейн 300, 400 с возможностью связывания непосредственно следующего за ним блока 330N, 430N каждого участвующего соседнего блокчейна 300, 400 с блоком 10 основного блокчейна 200. Таким образом, каждый из участвующих блокчейнов 200, 300, 400 связан с каждым другим из участвующих блокчейнов 200, 300, 400. В частности, основной блокчейн 200 непосредственно связан с каждым участвующим соседним блокчейном 300, 400 за счет непосредственного приема от каждого участвующего соседнего блокчейна 300, 400 предшествующих дайджестов 62, 64 блока для блоков 330P, 430P; а также отправки дайджеста 30 блока в каждый из участвующих соседних блокчейнов 300, 400. Участвующие соседние блокчейны 300, 400 опосредованно связаны друг с другом за счет отправки каждым участвующим соседним блокчейном 300, 400, дайджестов блока (аналогично дайджестам 62, 64) в основной блокчейн 200 и приема от основного блокчейна 200 дайджестов блока (аналогично дайджестам 64, 62) другого участвующего соседнего блокчейна 400, 300. Протокол блокчейна для каждого участвующего блокчейна 200, 300, 400 может обеспечивать перекрестную мерклизацию дайджестов (аналогично 62, 64, 66) в каждом ближайшем следующем блоке участвующего блокчейна. Этот процесс перекрестной мерклизации может быстро распространяться и происходить по всей сети блокчейна 100, за счет чего участвующие блокчейны 200, 300, 400 взаимно связываются криптографическим и независимо проверяемым образом. За счет совместного использования (т. е. отправки дайджеста 30 блока) другим участвующим соседним блокчейнам 300, 400 в сети блокчейна 100 неизменяемость (т. е. данных, включенных блокчейном) не связана с согласованностью (т. е. для добавления блока) участвующих блокчейнов 200, 300, 400. [0059] The
[0060] На ФИГ. 3A представлена частичная блок-схема, иллюстрирующая перекрестную мерклизацию блоков 330P и 430P участвующих соседних блокчейнов 300, 400 с основным блокчейном 200, показанным на ФИГ. 1-2, в соответствии с вариантом осуществления настоящего описания. На ФИГ. 3B представлена частичная блок-схема, иллюстрирующая создание блока 10. Как показано на ФИГ. 3A и 3B, в основном блокчейне 200 блоку 10 может непосредственно предшествовать блок 10P. Дайджест 66 блока 10P может быть передан 701 непосредственно в блок 10. Дайджест 66 блока может выполнять функцию ссылки на предшествующий блок 10P, причем блок непосредственно предшествует блоку 10. Самый последний предшествующий блок 330P участвующего соседнего блокчейна 300 может быть передан (см. позицию 324 на ФИГ. 2) в основной блокчейн 200. Дайджест 62 блока 330P может быть извлечен и передан 702 непосредственно в блок 10. Аналогичным образом самый последний предшествующий блок 430P участвующего соседнего блокчейна 400 может быть передан (см. позицию 422 на ФИГ. 2) в основной блокчейн 200, а дайджест 64 блока извлекают и передают 703 непосредственно в блок 10. [0060] FIG. 3A is a partial block diagram illustrating the cross-merclization of
[0061] Целевая сложность 40 может также быть извлечена 704 из предшествующего блока 10P. В одном варианте осуществления целевая сложность 40 может также быть извлечена из блока 330P, 430P участвующего соседнего блокчейна 300, 400 для сравнения с целевой сложностью 40 предшествующего блока 10P в качестве дополнительной проверки достоверности перед включением в блок 10 данных от участвующего соседнего блокчейна 300, 400. [0061] The
[0062] Дайджест 62 блока из блока 330P и дайджест 64 блока из блока 430P могут быть конкатенированы 710, 711 друг с другом с образованием входной строки 29. Порядок участия в процессе конкатенации может быть установлен в качестве требования конкретного варианта реализации протокола блокчейна сети блокчейна 100. Затем входная строка 29 может быть передана 712 и обработана с применением SHA 600 для генерации 713 дайджеста 30 блока для блока 10. Дайджест 30 блока может быть передан 764 (посредством R4) в блок 10. На более позднем этапе, когда основной блокчейн 200 генерирует следующий блок 10N, дайджест 30 блока может быть передан в качестве элемента блока 10 в блок 10N и может выполнять функцию ссылки от блока 10N обратно к блоку 10, которая включает в себя дайджест 66 блока в качестве ссылки на предшествующий блок 10P. Данная процедура включения дайджеста блока каждого предшествующего блока в следующий блок обеспечивает образование цепочки ссылочных связей между всеми блоками блокчейна с возможностью создания неизменяемой записи порядка блоков в пределах блокчейна. Указанный неизменяемый порядок блоков в пределах блокчейна по существу обеспечивает неизменяемую запись данных, включенных в каждый из блоков конкретного блокчейна, и, следовательно, каждого участвующего блокчейна в сети блокчейна 100. Кроме того, неизменяемость не связана с какими-либо требованиями в отношении отдельного блокчейна для согласованности участвующих узлов в отношении добавления блока. [0062] Block digest 62 from
[0063] Каждый блокчейн 200, 300, 400 может использовать источник 500 случайного кода, причем каждый участвующий блокчейн 200, 300, 400 имеет свой собственный источник 500 случайного кода. Источник 500 случайного кода может представлять собой вычислительный процесс, с помощью которого генерируют случайный код для каждой итерации, или может представлять собой вычислительный процесс, с помощью которого генерируют начальный случайный код для первой итерации, а затем увеличивают или иным образом изменяют случайный код для каждой последующей итерации. Случайный код-кандидат 510 может быть принят от источника 500 случайного кода. Способ выбора первого случайного кода-кандидата 510 может быть определен в протоколе блокчейна участвующего блокчейна 200, 300, 400 и может быть определен в протоколе сети блокчейна 100. Случайный код-кандидат 510 и дайджест 30 блока могут быть конкатенированы друг с другом 720, 721 с образованием входной строки 520. Затем входная строка 520 может быть обработана 730 с помощью SHA 600 с получением 731 дайджеста-кандидата с доказательством выполнения работы (дайджеста POW) 32 на основании дайджеста 30 блока. Затем дайджест-кандидат 32 POW можно сравнить 740 с целевой сложностью 40 на этапе 550. Другими словами, дайджест 32 POW получают путем «хеширования хеша», при котором хеш, подлежащий хешированию, представляет собой дайджест 30 блока, таким образом, дайджест 32 POW представляет собой двойной хеш. [0063] Each
[0064] Целевая сложность 40 представлена в настоящем примере в виде шестнадцатеричного значения; однако для настоящего описания не требуется ни явное выражение 0xFFFF0000, ни шестнадцатеричный формат. Целевая сложность 40 может быть выражена в форме, которая передает определенное количество последовательных битов, имеющих значение «off» (или байтов, имеющих значение «0»), возникающих либо на большем, либо на меньшем конце результирующего дайджеста для квалификации в качестве POW, в каждый блокчейн 200, 300, 400 сети блокчейна 100. В другом варианте осуществления целевая сложность 40 может быть структурирована таким образом, чтобы требовалось определенное количество последовательных битов, имеющих значение «on» (или байтов, имеющих значение «1»). В другом варианте осуществления целевая сложность 40 может быть определена определенной последовательностью битов «off» и «on» (байтов «0» и «1»), имеющихся на определенном участке дайджеста-кандидата 32 POW. [0064]
[0065] Если дайджест-кандидат 32 POW не соответствует 552 целевой сложности 40, происходит отбрасывание 590 дайджеста-кандидата 32 POW и случайного кода-кандидата 510, и блокчейн возвращает R1 к источнику 500 случайного кода. Происходит выбор нового случайного кода-кандидата 510. Способ выбора нового случайного кода-кандидата 510 может быть определен в протоколе блокчейна участвующего блокчейна 200, 300, 400 и может быть определен в протоколе сети блокчейна 100 как, например, без ограничений, постоянное увеличение значения случайного кода при каждой итерации или постоянное уменьшение при каждой итерации. Новый случайный код-кандидат 510 может быть конкатенирован с дайджестом 30 блока, затем обработан с применением SHA 600, затем сравнен 550 на соответствие целевой сложности 40. Эти этапы могут включать в себя повторение итераций с новым случайным кодом-кандидатом 510 при каждой итерации до получения дайджест-кандидата 32 POW, удовлетворяющего целевой сложности 40. [0065] If the POW digest
[0066] Если дайджест-кандидат 32 POW удовлетворяет 550 целевой сложности 40, происходит передача 558 дайджеста-кандидата 32 POW для выполнения краткого теста 560, чтобы определить, требуются ли для завершения POWR 20 блока 10 другие дайджесты POW. Поскольку текущий дайджест-кандидат 32 POW получен на основе текущего блока 10, требуется по меньшей мере один дополнительный дайджест POW. В данном примере необходимы два дополнительных дайджеста POW. Из-за этого тест 560 «последнего дайджеста» завершается с ошибкой 562. Текущий дайджест-кандидат 32 POW может быть помещен 760 в запоминающее устройство 563 для временного хранения данных и блокчейн 200 возвращает R2 текущему случайному коду-кандидату 510. Случайный код-кандидат 510, обеспечивший успешный дайджест-кандидат 32 POW, повторно используют 723 путем конкатенации случайного кода-кандидата 510 с дайджестом 62 (722) для получения входной строки 530. Входная строка 530 может быть передана 732 в SHA 600 для получения 733 дайджеста-кандидата 22 POW. Затем дайджест-кандидат 22 POW обрабатывают 741 для сравнения с целевой сложностью 40. Если текущий дайджест-кандидат 22 POW не соответствует 550 целевой сложности 40, происходит отбрасывание 552, 590 текущего дайджеста-кандидата 22 POW и случайного кода-кандидата 510. Кроме того, предшествующий дайджест-кандидат 32 POW удаляют 750 из запоминающего устройства 563 для временного хранения данных и отбрасывают 590. Затем блокчейн 200 возвращает R1 для выбора нового случайного кода-кандидата 510. [0066] If the POW digest
[0067] Если дайджест-кандидат 22 POW удовлетворяет 550 целевой сложности 40, дайджест-кандидат 22 POW может быть сохранен 760 в запоминающем устройстве 563 для временного хранения данных вместе с предшествующим дайджестом-кандидатом 32 POW. Блокчейн продолжает выполнять итеративный обход R1, R2 случайного кода, пока не будет сгенерирован дайджест-кандидат 32, 22, 24 и т. д. POW, удовлетворяющий целевой сложности 40, для каждого последнего дайджеста 66, 62, 64 и т. д. блока основного блокчейна 200 и участвующих соседних блокчейнов 300, 400 и т. д. После того как для каждого дайджеста 66, 62, 64 и т. д. блока будет сгенерирован дайджест-кандидат 32, 22, 24 и т. д. POW, удовлетворяющий целевой сложности 40, каждый из дайджестов-кандидатов 32, 22, 24 и т. д. POW может быть извлечен 566 из запоминающего устройства 563 для временного хранения данных для помещения 762 в POWR 20 блока 10. Основной блокчейн 200 может также сохранять 766 успешный случайный код-кандидат 510 в качестве случайного кода 50 блока в блоке 10. [0067] If the POW digest
[0068] После создания блока 10 основной блокчейн 200 может передавать блок 10 каждому из участвующих соседних блокчейнов 300, 400. Блок 10 включает в себя дайджесты 62 и 64 блока, которые блокчейн 200 принимает от последнего предшествующего блока 330P, 430P каждого из соответствующих участвующих соседних блокчейнов 300, 400. Другими словами, элемент блока 10 представляет собой дайджест 62 из последнего предшествующего блока 330P первого участвующего соседнего блокчейна 300. Соответственно, дайджест 62 блока поступает от участвующего соседнего блокчейна 300, а затем отправляется обратно на него, благодаря чему участвующий соседний блокчейн 300 может проверять или иным образом контролировать целостность собственных хранимых данных и/или транзакций. Аналогичным образом дайджест 64 блока был принят от второго участвующего соседнего блокчейна 400 и будет отправлен обратно на него, благодаря чему второй участвующий соседний блокчейн 400 может проверять или иным образом контролировать целостность собственных хранимых данных и/или транзакций. Благодаря POWR 20 блока 10 в каждом из участвующих соседних блокчейнов 300, 400 гарантирована достоверность блока 10, а значит, обеспечен прием соответствующих дайджестов 62, 64 блока для каждого из участвующих соседних блокчейнов 300, 400 по мере приема дайджестов 62, 64 блока в основном блокчейне 200. Аналогичным образом происходит передача дайджеста 30 блока из блока 10 в каждый из участвующих соседних блокчейнов 300, 400. Каждый из участвующих соседних блоков 300, 400 будет возвращать дайджест 30 блока в основной блокчейн 200 с помощью ближайшего последующего блока из каждого участвующего соседнего блокчейна 300, 400. Благодаря этому основной блокчейн 200 может проверять достоверность самого блокчейна 200 и, следовательно, записей о транзакции каждого блока блокчейна 200. Кроме того, поскольку основной блокчейн 200 передает каждому из участвующих соседних блокчейнов 300, 400 успешный случайный код-кандидат 510, каждый из участвующих соседних блокчейнов 300, 400 может обрабатывать каждый предшествующий дайджест 62, 64, 66 блока с применением SHA, используя описанный успешный случайный код-кандидат 510 для обеспечения генерации POWR в соответствии с протоколом блокчейна и корректности каждого дайджеста 62, 64, 66 блока. Таким образом, в каждом участвующем соседнем блокчейне может быть обеспечена высокая достоверность в отношении целостности данных, включая порядок операций и дайджестов, каждого участвующего блокчейна 200, 300, 400, даже если каждый участвующий блокчейн 200, 300, 400 не имеет актуальных данных в отношении каждого другого участвующего блокчейна 200, 300, 400. Таким образом можно создавать неизменяемую запись для каждого блокчейна 200, 300, 400 без необходимости в предварительном подтверждении доверия и без зависимости от согласования, кроме как для участия в сети блокчейна 100. Другими словами, неизменяемость данных не связана с согласованностью участвующих блокчейнов 200, 300, 400. [0068] Once
[0069] Кроме того, за счет возможности каждого участвующего блокчейна 200, 300, 400 независимо проверять, что случайный код-кандидат 510 и предшествующие дайджесты блока (аналогично дайджестам 62, 64, 66 блока, показанным на ФИГ. 1, 3А) обеспечивают создание дайджестов, удовлетворяющих целевой сложности (аналогично дайджестам 22, 24, 32 POW, показанным на ФИГ. 3A), каждый из участвующих блокчейнов 200, 300, 400 может распознавать аномалию, связанную с данными одного из участвующих блокчейнов 200, 300, 400. Другими словами, если участвующий соседний блокчейн 300 выполняет проверку дайджестов блока (аналогично дайджестам 62, 64, 66 блока) с использованием случайного кода-кандидата 510, сообщенного основным блокчейном 200, и любой из результирующих дайджестов в процессе проверки не удается сопоставить с соответствующим дайджестом POW, сообщенным основным блокчейном 200, участвующий соседний блокчейн 300 может идентифицировать аномалию дайджеста для каждого участвующего блокчейна 200, 300, 400. Так можно обнаружить аномалию данных в участвующем блокчейне 200, 300, 400 сети блокчейна 100 в момент протекания события, которое вызвало аномалию и без описания включенных фактических данных. Кроме того, участвующий блокчейн 200, 300, 400, идентифицировавший аномалию, может также объединять предварительно известные корректные данные блока с идентифицированными аномальными данными и распространять доказательства аномального функционирования на другой участвующий блокчейн 200, 300, 400, включая блокчейн 200, 300, 400, в котором присутствует аномалия. Благодаря такому перекрестному сообщению об аномалии или доказательствах аномального функционирования каждый участвующий блокчейн 200, 300, 400 защищен от возможного внесения неверных данных, и при этом возможно предотвращение возникновения аномальных данных (независимо от их источника) для журнала аудита каждого владельца/оператора компьютерной системы в течение нескольких минут. Например, в наихудшем случае, если участвующий соседний блокчейн 400 обнаруживает аномальные данные в блоке от участвующего соседнего блокчейна 300, и вычислительная (-ые) система (-ы) субъекта, управляющая (-ие) участвующим соседним блокчейном 300, настолько серьезно повреждена (-ы), что владелец/оператор вычислительной (-ых) системы (систем) не может обнаружить аномалию с помощью внутренних средств, с помощью данных от любого другого участвующего блокчейна 200, 400 можно будет выполнить реконструкцию события аномалии, а также выполнить коррекцию и уменьшить отрицательные последствия. [0069] In addition, by allowing each participating
[0070] Вышеописанный процесс перекрестной мерклизации можно также назвать взаимным перекрестным интеллектуальным анализом, поскольку каждый участвующий блокчейн 200, 300, 400 создает блоки одновременно и независимо от каждого из других участвующих блокчейнов 200, 300, 400 и при этом принимает любые блоки, которые могут быть представлены каждым из участвующих блокчейнов 200, 300, 400. [0070] The above-described cross-merklization process can also be referred to as mutual cross-mining, since each participating
[0071] На ФИГ. 4 представлен график 150, иллюстрирующий геометрически прогрессирующую степень неизменяемости, которая может быть обеспечена в сети блокчейна, такой как сеть блокчейна 100, изображенная на ФИГ. 2-3B, в соответствии с вариантом осуществления настоящего описания, а также для несетевого блокчейна. В настоящем примере степень неизменяемости зависит местоположения итерационно вложенного начального дайджеста блока в пределах заданного порожденного блока. Другими словами, степень неизменяемости начального блока равна 1 в пределах начального блока, 2 после второго блока, 4 после третьего блока, 8 после четвертого блока и т. д. В сетевом блокчейне степень неизменяемости начального блока возрастает гораздо быстрее, поскольку второй блок конкретного блокчейна имеет начальный блок, вложенный путем перекрестной мерклизации в участвующие соседние блокчейны. Например, в сети блокчейна с тремя участвующими блокчейнами, такими как основной блокчейн 200, показанный на ФИГ. 2-3B, начальный блок имеет степень неизменяемости 6 после второго блока, 21 после третьего блока, 44 после третьего блока и т. д. Благодаря множественному вложению, в частности горизонтальному вложению, дополнительно повышается неизменяемость. [0071] FIG. 4 is a
[0072] Вертикальная шкала 152 графика 150 представляет степень неизменяемости, которая может быть достигнута в различных вариантах реализации настоящего описания. Горизонтальная шкала 154 графика 150 представляет множество блоков, созданных в различных вариантах реализации. Следует отметить, что вертикальная шкала 152 графика 150 наглядно демонстрирует увеличение неизменяемости на три порядка величины для каждой метки шкалы таким образом, что график 150 охватывает по вертикали диапазон значений от 0 до 1090 (1, а затем 91 0). В частности, график 150 отражает, без ограничений, общую тенденцию к геометрической прогрессии неизменяемости. [0072] The
[0073] Линия 160 данных представляет приблизительную степень неизменяемости несетевого блокчейна для первых 100 созданных блоков. Линия 162 данных представляет приблизительную степень неизменяемости для блокчейна, участвующего в сети блокчейна из трех участвующих блокчейнов, аналогично основному блокчейну 200, показанному на ФИГ. 2-3B. Линии 164 и 166 данных представляют степень неизменяемости блокчейна в сети блокчейна с пятью и восемью участвующими блокчейнами соответственно. Из-за отображения вертикальной шкалы 152 в порядке величины линии 160, 162, 164, 166 данных, по-видимому, изображают только линейное отклонение. В качестве справочной информации: степень неизменяемости линии 160 данных (представляющей несетевой блокчейн) после создания 50-го блока составляет 2,815×1014, а степень неизменяемости линии 162 данных (которая представляет сеть блокчейна из трех блокчейнов) составляет 1,994×1023, или в 7,084×108 раз больше, чем для несетевого блокчейна. После 100 блоков блокчейн, представленный линией 162 данных, имеет степень неизменяемости, которая в 4,517×1017 раз больше степени неизменяемости несетевого блокчейна, представленного линией 160 данных. Блокчейн в сети из восьми блокчейнов, представленный линией 166 данных, имеет степень неизменяемости приблизительно в 2,152×1059 раз большую, чем несетевой блокчейн после создания 100 блоков. [0073]
[0074] На ФИГ. 5 представлена частичная блок-схема операций, выполняемых в вычислительной системе, такой как изображенная на ФИГ. 1-3B вычислительная система 1, содержащая основной блокчейн 200 и журнал 280 событий, в соответствии с вариантом осуществления настоящего описания. Элементы, показанные на ФИГ. 5, в целом аналогичны соответствующим элементам, изображенным на ФИГ. 2. Блоки 230, 330, 430 соответственно основного блокчейна 200, а также первого и второго участвующих соседних блокчейнов 300, 400 показаны для справки. Временная прогрессия 110 также показана для справки и аналогична временной прогрессии 110, показанной на ФИГ. 2. Основным блокчейном 200 можно управлять в вычислительной системе 1 или с ее помощью. В дополнение к основному блокчейну 200 вычислительная система 1 может на постоянной основе генерировать журнал 280 событий. По меньшей мере часть обмена данными, показанного на ФИГ. 5, может происходить в той же сети, которая показана на ФИГ. 2, которая может представлять собой мультиплексную сеть. [0074] FIG. 5 is a partial flow diagram of operations performed on a computing system such as that shown in FIG. 1-3B, a
[0075] Журнал 280 событий содержит группу записей о событиях, представленных на ФИГ. 5 рядом меток на схеме журнала 280 событий. Запись 284 о событии показана в виде увеличенной метки и может представлять собой запись о событии в журнале 280 событий, регистрирующую первоначальную инициализацию вычислительной системы 1. Запись 284 о событии может содержать начальный идентификатор 286 последовательности (идентификатор последовательности), который в данном случае показан как «0000» для представления первой и начальной записи о событии в журнале 280 событий. Запись 284 о событии может также содержать идентификатор 288, представляющий логического владельца события. Для записи 284 о событии идентификатор 288 показан как «0000» для представления, например, без ограничений, главной операционной системы вычислительной системы 1. Каждая запись о событии может также содержать реализуемый элемент, как описано ниже. [0075] The
[0076] Каждая запись о событии (представленная рядом меток в журнале 280 событий) может быть внесена в журнал 280 событий в виде отдельных последовательных рядов. Каждая запись о событии в журнале 280 событий может включать в себя метку времени (не показана), и наличие такой метки в записи о событии может быть предпочтительным для оператора компьютера (не показан), выполняющего ручную проверку журнала 280 событий. Записи в журнале 280 событий и сам журнал 280 событий могут не зависеть от времени. Идентификатор каждой записи о событии, следующей за начальной записью о событии с идентификатором 286 последовательности «0000», может быть увеличен на 1. Другими словами, запись о событии, непосредственно следующая за начальной записью 284 о событии, может иметь идентификатор последовательности: «0001». [0076] Each event entry (represented by a series of labels in the event log 280) can be entered into the event log 280 as separate consecutive rows. Each event entry in the
[0077] В качестве примера показан блок 230, аналогичный блоку 230, показанному на ФИГ. 5, который был сгенерирован основным блокчейном 200 и которому в журнале 280 событий соответствует запись 211 о событии. Запись 211 о событии имеет идентификатор 213 последовательности «0004», из которого в настоящем примере следует, что это пятая последовательная запись о событии в журнале 280 событий. Запись 211 о событии содержит идентификатор 215 события («ID события») «A01», указывающий, что запись 211 о событии логически относится к блоку 230 основного блокчейна 200. Для удобства значение «A01» идентификатора 215 события связывает запись 211 о событии с блоком 230 основного блокчейна 200 на ФИГ. 5 и аналогично с тем же блоком 230, показанным на ФИГ. 2. Как показано на фигуре, на следующем этапе основной блокчейн 200 генерирует следующий блок 240. При генерации блока 240 благодаря основному блокчейну 200 появляется 242 запись 244 о событии в журнале 280 событий. Запись 244 о событии содержит идентификатор 246 последовательности «0009» и идентификатор 248 события «A02». Идентификатор 248 события «A02» идентифицирует логического владельца записи 244 о событии как блок 240 основного блокчейна 200. Идентификатор 246 последовательности «0009» указывает на то, что запись 211 о событии является десятой записью о событии в журнале 280 событий. [0077] As an example, block 230 is shown, similar to block 230 shown in FIG. 5, which was generated by the
[0078] Как показано на фигуре, после создания блока 240 основного блокчейна происходит генерация блока 340 в первом участвующем соседнем блокчейне 300. Участвующий блокчейн 300 передает 341 блок 340 (или криптографический хеш блока 340 (например, хеш POW, хеш блока и/или хеш записей) и любой соответствующий случайный код) в основной блокчейн 200. Основной блокчейн 200 создает 342 запись 344 о событии в журнале 280 событий. Запись 344 о событии содержит идентификатор 346 последовательности «000a» и идентификатор 348 события «B02». Идентификатор 346 последовательности «000a» указывает на то, что запись 344 о событии является одиннадцатой записью о событии в журнале событий. Идентификатор 348 события «B02» указывает на то, что логическим владельцем записи 344 о событии является блок 340 первого участвующего соседнего блокчейна 300. [0078] As shown in the figure, after
[0079] После создания блоков 240 и 340 второй участвующий соседний блокчейн 400 может генерировать блок 440. Второй участвующий соседний блокчейн 400 передает 441 блок 440 (или криптографический хеш блока 440 (например, хеш POW, хеш блока и/или хеш записей) и любой соответствующий случайный код) в основной блокчейн 200. Основной блокчейн 200 создает 442 запись 444 о событии в журнале 280 событий. Запись 444 о событии содержит идентификатор 446 последовательности «000b» и идентификатор 448 события «C02». Идентификатор 446 последовательности «000b» указывает на то, что запись 444 о событии является двенадцатой записью о событии в журнале событий. [0079] After
[0080] В одном варианте осуществления группа записей в журнале 280 событий от создания первого блока может быть мерклизирована и включена во второй блок. Другими словами, при использовании основного блокчейна 200, показанного на ФИГ. 5, в качестве примера записи в журнале 280 событий, начинающиеся с создания блока 240 и имеющие идентификатор 246 последовательности и другие последовательности со значениями от 0009 до 000b включительно, могут быть мерклизированы друг с другом и включены в следующий блок 250 основного блокчейна 200. Значения, использованные в настоящем документе для идентификаторов 246, 286, 346, 446 последовательности, являются лишь примерами для иллюстрации того, что каждой последовательной записи 244, 344, 444 о событии соответствует возрастающий идентификатор 246, 346, 446 последовательности. Конкретный журнал 280 событий может содержать дополнительные записи между конкретными записями 244, 344, 444, связанные с созданием блоков в основном блокчейне 200 и приемом основным блокчейном 200 блоков от первого и второго участвующих соседних блокчейнов 300, 400. [0080] In one embodiment, a group of entries in the event log 280 from the creation of the first block may be merklized and included in the second block. In other words, when using the
[0081] Хотя в настоящем примере представлен журнал 280 событий, содержащий только записи, связанные с блоками блокчейна, в другом варианте осуществления журнал событий может также включать в себя другие записи. Например, журнал событий может включать в себя записи о событиях, соответствующих любым из разных событий, зарегистрированных в блокчейнах, включая реализуемые события, которые могут приводить к выполнению действия или иным образом вызывать его. Аналогичным образом значения «A02», «B02» и «C02» идентификаторов 248, 348, 448 событий выполнены с возможностью обеспечения удобных ссылок и необязательно отражают конкретное событие или значение идентификатора события в каждой соответствующей записи 244, 344, 444 о событии. Другими словами, каждая связанная с блоком блокчейна запись 244, 344, 444 о событии может содержать множество элементов данных, относящихся к конкретному соответствующему блоку блокчейна, например, без ограничений, идентификатор блока, дайджест блока, метку времени блока, идентификатор блокчейна и т. д. [0081] Although the present example presents an
[0082] На ФИГ. 5 представлен журнал 280 событий вычислительной системы 1, в которой размещен основной блокчейн 200. Каждый участвующий блокчейн 200, 300, 400 и т. д. может аналогичным образом иметь журнал 280 событий, причем каждый такой журнал событий независим от каждого другого журнала событий. [0082] FIG. 5 shows an
[0083] Кроме того, из-за задержек в работе сети или аналогичных проблем возможно, что в настоящем примере блок участвующего соседнего блокчейна 300, 400 будет поступать в основной блокчейн 200 с задержкой, приводящей к техническому изменению порядка журнала событий, однако при отсутствии какого-либо другого фактора указанная задержка будет незначительной. Кроме того, векторные часы (описанные ниже) могут корректировать техническое изменение порядка. Другими словами, при определенном быстродействии компьютера блок может быть создан в основном блокчейне 200, например, в момент времени (1), в то время как блок в любом из участвующих соседнем блокчейне 300, 400 мог быть создан в момент времени (0), причем момент времени (1), например, на 500 миллисекунд позже момента времени (0), но блок из участвующего соседнего блокчейна 300 или 400 может поступать в основной блокчейн в момент времени (2), при этом момент времени (2) на 800 миллисекунд позже момента времени (0) и на 300 миллисекунд позже момента времени (1). Поскольку журнал 280 событий независим от времени, а записи последовательно выполняются в соответствии с порядком приема, запись о событии для блока, логически связанного с блоком участвующего соседнего блокчейна 300 или 400, может быть последовательно размещена после записи о событии для блока основного блокчейна 200, даже если блок основного блокчейна 200 был технически создан раньше блока участвующего соседнего блокчейна 300, 400. Разница во времени для двух идущих подряд или почти идущих подряд записей в журнале событий, скорее всего, не имеет значения, учитывая, что векторные часы (описанные ниже) выполнены с возможностью исправления любой ошибки порядка записей о событиях. [0083] In addition, due to network delays or similar problems, it is possible that in the present example, a block of the participating neighboring
[0084] На ФИГ. 6 представлена подробная частичная блок-схема операций вычислительной системы 1, описанной по ФИГ. 5, в соответствии с вариантом осуществления настоящего описания. Зона детализации на ФИГ. 6 соответствует области журнала 280 событий, относящейся к блокам 240, 340, 440, описанным выше, и соответствующей осуществлению валидации с жесткой привязкой ко времени в соответствии с вариантом осуществления настоящего описания. Основной блокчейн 200 показан в виде логического процесса в вычислительной системе 1. Вычислительная система 1 содержит все логические процессы для управления основным блокчейном 200 (или, другими словами, в ней реализован протокол основного блокчейна 200) и дополнительно содержит журнал 280 событий и процесс 900 проверки хронологического соответствия. Кроме того, показаны первый и второй участвующие соседние блокчейны 300, 400. [0084] FIG. 6 is a detailed partial block diagram of the operations of the
[0085] Процесс 900 проверки хронологического соответствия происходит по существу независимо от времени, поскольку процесс 900 проверки хронологического соответствия не ограничен и им не управляет подсистема времени вычислительной системы 1. Модуль процесса 900 проверки хронологического соответствия отправляет и принимает данные и запросы для обеспечения и регистрации сравнения группы временных меток, как дополнительно описано ниже. [0085] The
[0086] Как показано на фигуре, основной блокчейн 200 генерирует блок 240 блокчейна. Блок 240 может включать в себя метку времени блока (не показана, но см., например, позицию 18 на ФИГ. 1), указывающую момент системного времени, в который был создан блок 240. Основной блокчейн 200 может обмениваться 910 данными с модулем процесса 900 проверки хронологического соответствия вычислительной системы 1. В частности, основной блокчейн 200 может обмениваться 910 с модулем процесса 900 проверки хронологического соответствия множеством данных, относящихся к вновь созданному блоку 240, таких как, например, идентификатор блока, метка времени блока, дайджест блока и т. д. Процесс 900 проверки хронологического соответствия может электронным образом взаимодействовать 922 с первым сервером 920 времени посредством отправки на указанный сервер времени подписанного сообщения, включающего в себя по меньшей мере некоторые из предоставляемых данных, относящихся к вновь созданному блоку 240, и запроса на первом сервере 920 времени отправки ответа с подписанным сертификатом времени (не показано). Способ запроса текущего времени от первого сервера 920 времени может представлять собой любой подходящий и стандартизированный способ или протокол, пригодный для получения данных о текущем времени от общего сервера времени, такой как сетевой протокол синхронизации времени с асимметричным ключом. Первый сервер 920 времени может передавать ответ 922 посредством той же среды передачи данных, и отправлять обратно подписанное сообщение, и включать в себя подписанный сертификат текущего времени на первом сервере 920 времени. [0086] As shown in the figure, the
[0087] Процесс 900 проверки хронологического соответствия после приема подписанного сообщения, возвращенного от первого сервера 920 времени вместе с подписанным сертификатом времени, может повторять этот процесс, посредством отправления 932 подписанного сообщения на второй сервер 930 времени вместе с запросом на прием подписанного сертификата времени (не показано). Второй сервер 930 времени может возвращать подписанное сообщение, относящееся к вновь созданному блоку 240, вместе с подписанным сертификатом времени (не показано), указывающим текущее время на втором сервере 930 времени, посредством той же среды передачи данных. Затем с помощью процесса 900 проверки хронологического соответствия можно сравнивать время, сообщенное первым сервером 920 времени и вторым сервером 930 времени, для определения, соответствует ли отклонение во времени допустимым пределам, установленным в протоколе блокчейна. Если это отклонение превышает ограничение, установленное в протоколе блокчейна, с помощью процесса 900 проверки хронологического соответствия можно повторно отправлять запросы на один или оба сервера 920, 930 времени или можно отправлять запросы на один или более дополнительных серверов времени, аналогичных серверам 920, 930 времени. [0087] The
[0088] Если отклонение между значениями времени, сообщенными первым и вторым серверами 920, 930 времени, находится в допустимых пределах согласно протоколу блокчейна, процесс 900 проверки хронологического соответствия может затем сравнивать метку 18 времени блока с подписанными сертификатами времени, принятыми от первого и второго серверов 920, 930 времени. Если разность между меткой 18 времени блока и подписанными сертификатами времени от первого и второго серверов 920, 930 времени находится в пределах допуска для отклонения времени, установленного в протоколе блокчейна, процесс 900 проверки хронологического соответствия отправляет в основной блокчейн 900 подписанное сообщение, содержащее данные, относящиеся к вновь созданному блоку 240, вместе с подписанными сертификатами времени и сигнал, указывающий успешную валидацию с привязкой ко времени. В другом варианте осуществления процесс 900 проверки хронологического соответствия может непосредственно инициировать 242 создание записи 244 о событии в журнале 280 событий. В другом варианте осуществления процесс 900 проверки хронологического соответствия может инициировать другой процесс, осуществляемый в вычислительной системе 1, для инициирования 242 создания записи 244 о событии. [0088] If the deviation between the times reported by the first and
[0089] Запись 244 о событии в журнале 280 событий, относящаяся (или логически относящаяся) к вновь созданному блоку 240, может содержать идентификатор 246 последовательности, идентификатор 248 события, указывающий логического владельца записи 244 о событии, метку 249 времени блока (аналогичную метке 18 времени блока, показанной на ФИГ. 1) и значения времени, записанные в подписанных сертификатах времени, принятых от первого и второго серверов 920, 930 времени. [0089] The
[0090] Как показано на фигуре, первый участвующий соседний блокчейн 300 сгенерировал блок 340 в некоторый момент времени после генерации блока 240 основным блокчейном 200. Блок 340 может быть отправлен 341 в основной блокчейн 200. Принятый блок 340 передается 910 в модуль процесса 900 проверки хронологического соответствия. Процесс 900 проверки хронологического соответствия может отправлять 924, 934 запросы на первый и второй серверы 920, 930 времени, как описано выше. Если разность между меткой времени блока для блока 340 (аналогичной метке 18 времени блока, показанной на ФИГ. 1) и подписанными сертификатами времени, принятыми от серверов 920, 930 времени, соответствует предельному значению отклонения согласно протоколу блокчейна, в журнале 280 событий будет создана 342 запись 344 о событии, содержащая данные, связанные с блоком 340. Запись 344 о событии может содержать идентификатор 346 последовательности для записи 344 о событии, идентификатор 348 события, указывающий логического владельца записи 344 о событии для блока 340, метку 349 времени блока для блока 340 и значения времени 954, 964, принятые от серверов 920, 930 времени в ответ на запрос, связанный с блоком 340. [0090] As shown in the figure, the first participating
[0091] Согласно указанию второй участвующий соседний блокчейн 400 сгенерировал блок 440 в некоторый момент времени после генерации блока 240 основным блокчейном 200. Блок 440 может быть отправлен 440 в основной блокчейн 200. Принятый блок 440 передается 910 в модуль процесса 900 проверки хронологического соответствия. Процесс 900 проверки хронологического соответствия может отправлять 926, 936 запросы на первый и второй серверы 920, 930 времени, как описано выше. Если разность между меткой времени блока для блока 440 (аналогичной метке 18 времени блока, показанной на ФИГ. 1) и подписанными сертификатами времени, принятыми от серверов 920, 930 времени, соответствует предельному значению отклонения согласно протоколу блокчейна, в журнале 280 событий будет создана 442 запись 444 о событии, содержащая данные, связанные с блоком 440. Запись 444 о событии может содержать идентификатор 446 последовательности для записи 444 о событии, идентификатор 448 события, указывающий логического владельца записи 444 о событии для блока 340, метку 449 времени блока для блока 440 и значения времени 956, 966, принятые от серверов 920, 930 времени в ответ на запрос, связанный с блоком 440. [0091] As directed, the second participating
[0092] На ФИГ. 7 представлена блок-схема векторных часов 800 сети блокчейна, содержащей три участвующих блокчейна (не показаны), аналогично сети блокчейна 100 и участвующим блокчейнам 200, 300, 400, показанным на ФИГ. 2, причем векторные часы 800 содержат журналы 801, 811, 821 событий, в соответствии с вариантом осуществления настоящего описания. Журналы 801, 811, 821 событий приведены исключительно в качестве примера, а не для ограничения, и могут дополнительно представлять собой журналы событий участвующих блокчейнов 200, 300, 400 сети 100 блокчейна, показанной на ФИГ. 2. Журнал 801 событий может представлять собой журнал 280 событий, изображенный на ФИГ. 5-6, который может быть аналогичным журналу событий основного блокчейна 200, показанного на ФИГ. 2. Аналогичным образом журналы 811 и 821 событий могут быть аналогичными журналам событий первого и второго участвующих соседних блокчейнов 300, 400, изображенных на ФИГ. 2, 5-6 соответственно. По меньшей мере часть обмена данными, описанного применительно к ФИГ. 7, может происходить в той же сети, которая показана на ФИГ. 2, 5, которая может представлять собой мультиплексную сеть. [0092] FIG. 7 is a block diagram of a
[0093] В качестве примера, как показано на ФИГ. 7, первый блокчейн, связанный с журналом 801 событий, может представлять собой первый блокчейн для инициирования и создания записи 802 о событии инициирования в журнале 801 событий. Может быть сгенерирован первый блок и может быть создана запись 803 о событии. Для настоящего примера в данном примере второй блокчейн аналогично первому участвующему соседнему блокчейну, показанному на ФИГ. 2, может быть инициирован после указанного блокчейна согласно журналу 801 событий и может быть связан с журналом 811 событий. Журнал 811 событий может содержать запись 812 о событии, представляющем инициирование журнала 811 событий (и связанного с ним блокчейна). Запись 812 о событии журнала 811 событий может быть передана 827 и вставлена в журнал 801 событий. Может быть сгенерирован первый блок блокчейна, связанный с журналом 811 событий, и может быть создана запись 813 о событии. Запись 813 о событии может быть передана 828 и вставлена в журнал 801 событий. Записи о событиях первого журнала 811 событий, например до настоящего момента, могут включать в себя запись 802 о событии инициирования для первого блокчейна, запись 803 о событии создания первого блока для первого блокчейна, запись (812) о событии инициирования второго блокчейна и о первом блоке (813) второго блокчейна. Записи о событиях могут храниться в журнале 801 событий в том порядке, в котором они происходят, и независимо от времени. [0093] As an example, as shown in FIG. 7, the first blockchain associated with the
[0094] Третий блокчейн для целей настоящего примера аналогично второму участвующему соседнему блокчейну, изображенному на ФИГ. 2, может инициировать и генерировать запись 821 о событии инициирования в журнале 822 событий. Запись 822 о событии инициирования может быть передана 834 и вставлена в журнал 801 событий. Третий блокчейн может генерировать первый блок и запись 823 о событии создания первого блока. Запись 823 о событии создания первого блока может быть передана 836 и вставлена в журнал 801 событий. [0094] The third blockchain for the purposes of this example is similar to the second participating neighbor blockchain depicted in FIG. 2 may trigger and generate a
[0095] В точке, описанной до настоящего момента, журнал 811 событий второго блокчейна содержит только запись 812 о событии инициирования и запись 813 о событии создания первого блока; и журнал 821 событий третьего блокчейна содержит только запись 822 о событии инициирования и запись 823 о событии создания первого блока. В некоторый момент после инициирования журнала 811 событий в журнале 811 событий может быть достигнута добавленная точка 830. Добавленная точка 830 может представлять запрос журнала 811 событий, отправляемый журналу 801 событий в отношении всех записей о событиях в журнале 801 событий, предшествующих приему журналом 801 событий записи 812 о событии инициирования журнала 811 событий. Любые записи о событиях, такие как запись 802 о событии инициирования и запись о событии создания первого блока журнала 801 событий, могут быть вставлены 832 в журнал 811 событий со включением записей 802, 803 о событиях в том порядке в журнале 811 событий, в котором они были внесены в журнал 801 событий, и с учетом всех записей о событиях, созданных до добавленной точки 830. Другими словами, после действий, связанных с добавленной точкой 830, журнал 811 событий может содержать (по порядку) запись 802 о событии инициирования и запись 803 о событии создания первого блока журнала 801 событий, а также запись 812 о событии инициирования и запись 813 о событии создания первого блока журнала 811 событий. [0095] At the point described so far, the event log 811 of the second blockchain only contains an
[0096] Аналогичным образом журнал 821 событий может достигать добавленной точки 840. Журнал 821 событий может запрашивать и принимать все записи о событии, содержащиеся в журнале 801 событий, и может вставлять 842 записи о событии, принятые из журнала 801 событий так, что журнал 821 событий может содержать последовательность всех записей о событии из журнала событий, начинающихся с начальной записи 802 о событии из журнала 801 событий, в том порядке, в котором происходили события, представленные записями 802, 803, 804, 812, 813, 822, 823 о событии. [0096] Similarly, the
[0097] Поскольку каждый блокчейн в сети блокчейнов создает новый блок, любая последующая запись о событии блока может быть внесена в журнал событий связанного блокчейна и может быть передана в журналы событий других блокчейнов в сети блокчейна. В качестве примера, не имеющего ограничительного характера, любая последующая запись 804 о событии блока может быть внесена в журнал 801 событий в момент создания связанным блокчейном первого последующего блока. Затем запись 804 о событии может быть передана 850 в журнал 811 событий. В настоящем примере запись 804 о событии может быть передана в журнал 821 событий в тот момент, когда журнал 821 событий достиг добавленной точки 840. Журнал 821 событий может создавать последующую запись 823 о событии блока и передавать 836 запись 823 о событии в журнал 801 событий. Запись 823 о событии может также быть передана 852 в журнал 811 событий. [0097] Since each blockchain in the blockchain network creates a new block, any subsequent block event record can be written to the event log of the associated blockchain and can be transferred to the event logs of other blockchains in the blockchain network. As a non-limiting example, any subsequent
[0098] Поскольку блокчейн, связанный с журналом 801 событий, создает новые последующие блоки, в журнале 801 событий создаются новые последующие записи 805, 806, 807 (и так далее до бесконечности) о событии блоков в порядке их создания. Эти записи 805, 806, 807 о событии передаются 855, 861, 867 в журнал 811 событий и передаются 856, 862, 868 в журнал 821 событий для включения в каждый журнал 811, 821 событий в том порядке, в котором они происходили. Аналогичным образом журнал 811 событий создает новые последующие записи 814, 815, 816 (и так далее до бесконечности) о событии блоков и передает 853, 859, 865 каждую из этих записей 814, 815, 816 о событии в журнал 801 событий для включения в журнал 801 событий в том порядке, в котором происходили различные события из обоих журналов 801, 811 событий. События 814, 815, 816 также передаются (в настоящем документе показаны как передаваемые 854, 860, 866 события) из журнала 801 событий в журнал 821 событий для включения в журнал 821 событий в том порядке, в котором происходило каждое из различных событий из журналов 801, 811, 821 событий. Журнал 821 событий также создает новые последующие записи 824, 825, 826 о событии блоков, соответствующие последующим новым блокам блокчейна, связанным с журналом 821 событий, и передает 857, 863, 869 записи 824, 825, 826 о событии в журнал 801 событий. Записи 824, 825, 826 о событии также передаются (показаны на ФИГ. 7 как переданные 858, 864, 870 журналом 801 событий) в журнал 811 событий. Каждая запись 805 …, 815 …, 824 … о событии после создания передается таким образом, что каждый журнал 801, 811, 821 событий может содержать всеобъемлющую последовательность всех записей о событии блоков, созданных всеми блокчейнами в сети блокчейна. [0098] As the blockchain associated with the
[0099] На ФИГ. 8 представлен подробный вид участка векторных часов 800 по ФИГ. 7. Показана часть журналов 801, 811, 821 событий, соответствующая записи 806 о событии (журнала 801 событий), записи 815 о событии (журнала 811 событий) и записи 826 о событии (журнала 821 событий). На ФИГ. 7 для простоты иллюстрации передача записи 815 о событии показана как переход от журнала 811 событий к журналу 801 событий и от журнала 801 событий к журналу 821 событий. Аналогичным образом запись 825 о событии журнала 821 событий показана как переданная из журнала 821 событий в журнал 801 событий и из журнала 801 событий в журнал 811 событий. Кроме того, многоэтапная передача происходит из одного журнала событий во второй журнал событий и из второго журнала событий в третий журнал событий, причем каждый журнал 801, 811, 821 событий может осуществлять передачу непосредственно в каждый другой журнал 801, 811, 821 событий. На ФИГ. 8 запись 815 о событии из журнала 811 событий передается 859 из журнала 811 событий в журнал 801 событий, передается 860 из журнала 801 событий в журнал 821 событий, а также передается 880 из журнала 811 событий в журнал 821 событий. Более того, когда журнал 821 событий принял (посредством 880) запись 815 о событии из журнала 811 событий, журнал 821 событий может передать 881 запись 815 о событии в журнал 801 событий. [0099] FIG. 8 is a detailed view of a portion of the
[00100] Запись 806 о событии из журнала 801 событий передается 861 из журнала 801 событий в журнал 811 событий, передается 862 из журнала 801 событий в журнал 821 событий, передается 882 из журнала 811 событий в журнал 821 событий, а также передается 883 из журнала 821 событий в журнал 811 событий. Благодаря передаче каждой записи о событии из каждого журнала событий в каждый другой журнал событий каждый журнал событий сможет регистрировать каждую запись о событии для каждого события, происходящего в каждом блокчейне, участвующем в сети блокчейна. Более того, при передаче какой-либо записи о событии из одного журнала событий в каждый другой журнал событий может быть разрешен ввод каждой записи о событии в каждый журнал событий даже при сбое сети. Например, журнал 821 событий может попытаться передать 863 и 884 событие 825 соответственно в журнал 801 событий и журнал 811 событий. Показано, что запись 825 о событии успешно передана 884 в журнал 811 событий; однако из-за сбоя 886 сети произошла ошибка передачи 863 записи 825 о событии в журнал 801 событий. Поскольку журнал 811 событий передает все записи о событии из журнала 811 событий в журнал 801 событий, запись 825 о событии из журнала 811 событий может быть передана 888 в журнал 801 событий, несмотря на сбой 886 сети между журналом 821 событий и журналом 801 событий. [00100] The
[00101] Поскольку каждая запись о событии из каждого журнала событий передается в каждый другой журнал событий каждым журналом событий каждого блокчейна, участвующего в сети блокчейна, создается неизменяемая запись о создании блока для всех участвующих блокчейнов. Как показано на рисунке, запись 825 о событии достигла каждого журнала 801, 811, 821 событий, даже несмотря на сбой сети 886 между журналами 801, 811 событий. Такая многоэтапная передача (или мультисорсинг) записей о событии может также служить для предотвращения или выявления размещенной в неверном порядке записи о событии. Каждый журнал событий, помимо приема отдельных записей о событии из каждого другого журнала событий, может сравнивать порядок событий независимо или путем периодического обмена для частичного или полного сравнения списка событий, содержащихся в журнале событий. Другими словами, компьютерный процесс, создающий каждый журнал 801, 811, 821 событий, может время от времени обмениваться частью журнала 801, 811, 821 событий, созданного в связи с каждым конкретным блокчейном в сети блокчейна. Каждый компьютерный процесс, создающий журнал 801, 811, 821 событий, может сравнивать принятый журнал событий с журналом событий конкретного связанного блокчейна. Если компьютерный процесс, создающий журнал 801, 811, 821 событий, выявит в принятом журнале событий запись о событии, введенную в принятом журнале событий в более раннем положении, чем отражено в текущий момент времени в собственном журнале событий компьютерного процесса, этот компьютерный процесс может изменять собственный журнал событий, чтобы учесть положение этого события в предыдущем порядке. [00101] Since every event record from every event log is passed to every other event log by every event log of every blockchain participating in the blockchain network, an immutable block creation record is created for all participating blockchains. As shown in the figure, the
[0100] В качестве примера сбой 886 сети по ФИГ. 8 вместо предотвращения передачи 863 записи 825 о событии в журнал 801 событий просто приводит к задержке, т. е. запись 825 о событии вводится в журнал 801 событий после другой записи о событии блока (например, о новом последующем блоке 816 журнала 811 событий, переданном 865 в журнал 801 событий по ФИГ. 7). Таким образом, журнал 801 событий может отражать частичный порядок событий (как показано на ФИГ. 7) как 815 (блок B03), 806 (блок A04), 816 (блок B04) и 825 (блок C03). Когда компьютерный процесс журнала 801 событий принимает журналы 811, 821 событий, компьютерный процесс журнала 801 событий может определять порядок этих конкретных событий в журналах 811, 821 событий как 815, 806, 825, 816 и может изменять журнал 801 событий с возможностью отражения в нем самого раннего положения события 825 в этом порядке. Аналогичным образом, если в каждом журнале 801, 811, 821 событий событие 825 находится в каком-либо отличном положении порядка, за счет обмена журналами 801, 811, 821 событий и их сравнения каждый журнал 801, 811, 821 событий сможет устанавливать событие 825 в самое раннее положение в последовательности порядка. Таким образом, каждый журнал 801, 811, 821 событий может отражать самую раннюю (в порядке их появления) точку, в которой был впервые создан каждый блок каждого связанного с ним блокчейна. Другими словами, благодаря векторным часам 800 каждый журнал 801, 811, 821 событий может сохранять в неизменном виде запись о порядке создания блоков каждого блока в каждом блокчейне, участвующем в сети блокчейна, в порядке создания блоков. Неизменяемый порядок расположения векторных часов повышает степень неизменяемости каждого блока, достигаемого благодаря взаимно-объединенному майнингу в процессе перекрестной мерклизации. [0100] As an example,
[0101] Каждая запись о событии может дополнительно содержать пригодный для применения элемент. Пригодный для применения элемент может представлять собой реальное физическое действие, которое необходимо выполнить, или исполняемую компьютером логическую функцию, или и то и другое. Иными словами, конкретная запись о событии может ссылаться на связанный блок одного из блокчейнов в сети блокчейна и может содержать данные, принятие которых одной из вычислительных систем, применяющих какой-либо блокчейн из сети блокчейна, может указывать на возможность выполнения физического процесса или действия в субъекте, субъектом или под управлением субъекта принимающей вычислительной системы и/или применения для выполнения логического процесса или функции в принимающей вычислительной системе (или компоненте принимающей вычислительной системы). В качестве примера, не имеющего ограничительного характера, и в соответствии с ФИГ. 7-8, вычислительная система, применяющая журнал 801 событий, может создавать в дополнение к блоку A04 (показанному в записи 806 события) запись 806 события. Запись 806 о событии может содержать в дополнение к ссылке на блок A04 блокчейна, связанного с журналом 801 событий (такого как основной блокчейн 200 по ФИГ. 2), команду, исполняемую субъектом, применяющим вычислительную систему журнала 811 событий, для отправки конкретного груза и дополнительную команду, исполняемую субъектом, применяющим вычислительную систему журнала 821 событий, для перевода оплаты субъекту, применяющему вычислительную систему журнала 811 событий, после получения от вычислительной системы журнала 811 событий записи о событии (например, записи 816 о событии по ФИГ. 7), подтверждающей, что груз был отправлен. [0101] Each event record may further contain a usable element. The usable element may be an actual physical action to be performed, or a computer-executable logical function, or both. In other words, a specific event record may refer to a related block of one of the blockchains in the blockchain network and may contain data, the acceptance of which by one of the computing systems using any blockchain from the blockchain network, may indicate the possibility of performing a physical process or action in the subject , by or under the control of an entity of the receiving computing system and/or application to perform a logical process or function on the receiving computing system (or component of the receiving computing system). As a non-limiting example, and in accordance with FIG. 7-8, a computer system employing the
[00102] На ФИГ. 9 представлена схема вычислительной системы 1000, обеспечивающей неизменяемые записи в соответствии с одним вариантом осуществления настоящего описания. Вычислительная система 1000 может содержать один или более процессоров 1002, запоминающее устройство 1004, сетевой интерфейс 1006, блокчейн 1010, вектор 1020 векторных часов, журнал 1022 событий и процесс 1030 проверки хронологического соответствия. Вычислительная система 1000 может быть аналогичной вычислительной системе 1, показанной на ФИГ. 1 и 6 и описанной выше. [00102] FIG. 9 is a diagram of a
[00103] Вектор 1020 может обеспечивать регистрацию событий в журнале 1022 событий и может обеспечивать функциональные возможности для приема других журналов событий от других вычислительных систем, реализующих различные блокчейны, а затем сравнивать журнал 1022 событий с другими журналами событий. [00103]
[0102] Следует понимать, что возможны и другие конфигурации вычислительных устройств, включая распределенные вычислительные системы, содержащие множество процессоров и/или запоминающих устройств, распределенных и взаимно соединенных посредством сети передачи данных. [0102] It should be understood that other configurations of computing devices are possible, including distributed computing systems containing a plurality of processors and/or storage devices distributed and interconnected via a data communication network.
[0103][0103] Примеры осуществленияImplementation examples
[0104] Ниже приведены некоторые примеры осуществления в пределах объема описания. Чтобы избежать сложностей при предоставлении описания, не все из перечисленных ниже примеров описываются отдельно и явно как рассматриваемые в настоящем документе и как комбинируемые со всеми другими из примеров, перечисленных ниже, и другими вариантами осуществления, описанными выше в настоящем документе. Если для специалиста в данной области техники не будет очевидно, что перечисленные ниже примеры (и описанные выше варианты осуществления) нельзя комбинировать, в пределах объема описания предполагается, что такие примеры и варианты осуществления можно комбинировать. [0104] The following are some examples of implementation within the scope of the description. To avoid difficulties in providing a description, not all of the examples listed below are described separately and expressly as being contemplated herein and as being combinable with all of the other examples listed below and other embodiments described above herein. Unless it is clear to one skilled in the art that the examples listed below (and the embodiments described above) cannot be combined, it is intended within the scope of the description that such examples and embodiments can be combined.
[0105] Пример 1. Основная вычислительная система, обеспечивающая регистрацию неизменяемых записей (и/или порядок событий, и/или доказуемый порядок событий), содержащая: один или более машиночитаемых носителей данных для хранения основного блокчейна для хранения данных записей в основном ряде блоков которые связаны друг с другом хронологически, самый последний блок из основного ряда блоков, включающий в себя криптографический хеш (например, дайджест блока самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока, случайный код для криптографического хеша предыдущего по порядку блока, целевую сложность для криптографического хеша, временную метку и часть данных записей; один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненных с возможностью создания основного блокчейна или иной реализации протокола основного блокчейна, один или более процессоров для: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока; и необязательно случайного кода для криптографического хеша самого последнего блока, целевой сложности для криптографического хеша самого последнего блока и временной метки, новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша (например, нового дайджеста блока) нового блока из основного ряда блоков с помощью нового случайного кода и согласования целевой сложности для криптографического хеша нового блока; сохранения нового криптографического хеша и нового случайного кода в новом блоке; и передачи в первую соседнюю вычислительную систему по сети передачи данных через сетевой интерфейс нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. [0105] Example 1. The main computing system providing the registration of immutable records (and / or the order of events, and / or the provable order of events), containing: one or more machine-readable storage media for storing the main blockchain for storing record data in the main set of blocks that related to each other chronologically, the most recent block from the main series of blocks, including a cryptographic hash (for example, the block digest of the block of the latest block, a random code for the cryptographic hash of the most recent block, a cryptographic hash of the previous block in order, a random code for the cryptographic hash of the previous in block order, the target complexity for the cryptographic hash, the timestamp and data portion of the records; one or more processors in electrical communication with one or more machine-readable storage media and configured to create the main blockchain or other implementation of the main blockchain protocol, one or more processors for: creating a new block of the main row of blocks for storing new record data, the new block being associated with the most recent block by including a cryptographic hash (eg, block digest) of the most recent block; and optionally a random code for the cryptographic hash of the latest block, a target difficulty for the cryptographic hash of the latest block, and a timestamp, the new block becomes the new most recent block of the main block row; generating a new cryptographic hash (eg, a new block digest) of a new block from the main row of blocks with the new random code and negotiating a difficulty target for the new block's cryptographic hash; saving a new cryptographic hash and a new random code in a new block; and transmitting to the first neighboring computing system over the data network through the network interface a new cryptographic hash of the new block and a new random code for the cryptographic hash of the new block for cross-merclization of the main blockchain with the first participating neighboring blockchain on the first neighboring computing system.
[0106] Пример 2. Система по примеру 1, в которой криптографический хеш каждого блока основного блокчейна создается с помощью одностороннего защищенного алгоритма хеширования. [0106] Example 2. The system of example 1, in which the cryptographic hash of each block of the main blockchain is created using a one-way secure hashing algorithm.
[0107] Пример 3. Система по примеру 1, в которой криптографический хеш содержит бинарное хеш-дерево, в котором криптографический хеш получен в результате конкатенации со случайным кодом для образования входной строки для односторонней криптографической функции, выход которой соответствует целевой сложности, которая содержит правило, задающее совместимый криптографический хеш. [0107] Example 3. The system of Example 1, in which the cryptographic hash contains a binary hash tree, in which the cryptographic hash is obtained by concatenation with a random code to form an input string for a one-way cryptographic function whose output corresponds to the target complexity that contains the rule A that specifies a compatible cryptographic hash.
[0108] Пример 4. Система по примеру 3, в которой правило указывает на конкретный набор из одной или более бинарных величин в заданных положениях совместимого криптографического хеша. [0108] Example 4. The system of example 3, in which the rule points to a specific set of one or more binary values at given positions of a compatible cryptographic hash.
[0109] Пример 5. Система по примеру 1, в которой один или более процессоров дополнительно выполнены с возможностью приема криптографического хеша, соответствующего случайного кода и набора криптографических хешей самого последнего блока из первого соседнего ряда блоков от первой соседней вычислительной системы. [0109] Example 5. The system of Example 1, wherein one or more processors are further configured to receive a cryptographic hash, a corresponding random code, and a set of cryptographic hashes of the most recent block from the first adjacent row of blocks from the first neighboring computing system.
[0110] Пример 6. Система по примеру 5, в которой криптографический хеш каждого блока из первого участвующего соседнего блокчейна создается с помощью одностороннего защищенного алгоритма хеширования. [0110] Example 6. The system of example 5, in which the cryptographic hash of each block from the first participating neighbor blockchain is created using a one-way secure hashing algorithm.
[0111] Пример 7. Система по примеру 5, в которой набор криптографических хешей содержит по меньшей мере один криптографический хеш из самого последнего блока основного блокчейна. [0111] Example 7. The system of Example 5, wherein the set of cryptographic hashes contains at least one cryptographic hash from the most recent block of the main blockchain.
[0112] Пример 8. Система по примеру 5, в которой набор криптографических хешей содержит по меньшей мере один криптографический хеш из самого последнего блока из второго участвующего соседнего блокчейна. [0112] Example 8. The system of Example 5, wherein the set of cryptographic hashes contains at least one cryptographic hash from the most recent block from the second participating neighbor blockchain.
[0113] Пример 9. Система по примеру 5, в которой один или более процессоров дополнительно служат для создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения нового криптографического хеша (нового самого последнего блока) и нового случайного кода (для криптографического хеша нового самого последнего блока), следующий блок также включает в себя криптографический хеш (и соответствующий случайный код) самого последнего блока из первого соседнего ряда блоков (первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе). [0113] Example 9. The system of Example 5, in which one or more processors additionally serve to create the next block of the main series of blocks, and the next block is associated with the new most recent block by including a new cryptographic hash (new most recent block) and a new random code (for the cryptographic hash of the new most recent block), the next block also includes the cryptographic hash (and the corresponding random code) of the most recent block from the first neighboring row of blocks (the first participating neighboring blockchain implemented on the first neighboring computing system).
[0114] Пример 10. Система по примеру 5, в которой в одном или более процессоров дополнительно хранится основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из данных записей, хранящихся в основном ряду блоков основного блокчейна. [0114] Example 10. The system of Example 5, wherein one or more processors further stores a main event log including an ordered list of event records, each corresponding to a transaction record from the record data stored in the main row of blocks main blockchain.
[0115] Пример 11. Система по примеру 10, в которой один или более процессоров дополнительно выполнены с возможностью: регистрации в основном журнале событий записи о событии, указывающей на создание нового блока; и регистрации в основном журнале событий записи о событии, соответствующем самому последнему блоку первого соседнего ряда блоков первого участвующего соседнего блокчейна, после принятия криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков первого участвующего соседнего блокчейна. [0115] Example 11. The system of example 10, in which one or more processors are further configured to: register in the main event log an event entry indicating the creation of a new block; and registering in the main event log an event entry corresponding to the most recent block of the first neighboring block row of the first participating neighboring blockchain after receiving the cryptographic hash and the corresponding random code of the latest block from the first neighboring block row of the first participating neighboring blockchain.
[0116] Пример 12. Система по примеру 10, в которой один или более процессоров дополнительно выполнены с возможностью: идентификации записи о транзакции из данных записей как соответствующей какому-либо событию; и регистрации в основном журнале событий записи о событии, соответствующем этому событию. [0116] Example 12. The system of example 10, in which one or more processors are additionally configured to: identify a transaction record from these records as corresponding to an event; and registering in the main event log an entry about an event corresponding to this event.
[0117] Пример 13. Система по примеру 1, в которой на одном или более машиночитаемых носителях данных дополнительно хранится основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции, включенной в данные записей основного блокчейна, причем один или более процессоров дополнительно выполнены с возможностью регистрации в основном журнале событий записи о событии, указывающей на создание нового блока. [0117] Example 13. The system of example 1, in which one or more computer-readable storage media additionally stores the main event log, including an ordered list of event records, each of which corresponds to any transaction record included in the data records of the main blockchain, and one or more processors are additionally configured to register in the main event log an event record indicating the creation of a new block.
[0118] Пример 14. Система по примеру 13, в которой один или более процессоров дополнительно выполнены с возможностью: приема (например, от первой соседней вычислительной системы по сети передачи данных посредством сетевого интерфейса) по меньшей мере части первого соседнего журнала событий; сравнения основного журнала событий с первым соседним журналом событий; и обеспечения отражения самого раннего появления каждого блока в основном журнале событий на основе сравнения. [0118] Example 14. The system of example 13, in which one or more processors are further configured to: receive (for example, from the first neighboring computing system over a data network via a network interface) at least a portion of the first neighboring event log; comparing the main event log with the first adjacent event log; and ensuring that the earliest occurrence of each block is reflected in the main event log based on the comparison.
[0119] Пример 15. Система по примеру 14, в которой один или более процессоров дополнительно выполнены с возможностью: переупорядочения записей о событии в основном журнале событий на основании сравнения и/или на основании более ранней записи в одном из основного журнала событий и соседнего журнала событий для каждой записи о событии. [0119] Example 15. The system of example 14, in which one or more processors are further configured to: reorder event entries in the main event log based on a comparison and/or based on an earlier entry in one of the main event log and adjacent log events for each event entry.
[0120] Пример 16. Система по примеру 1, в которой первая соседняя вычислительная система находится в электронной связи с системой и реализует первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш (например, дайджест блока) самого последнего блока, случайный код для криптографического хеша самого последнего блока и криптографический хеш предыдущего по порядку блока, случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков). [0120] Example 16. The system of Example 1, in which the first neighboring computing system is in electronic communication with the system and implements the first participating neighboring blockchain containing the first neighboring row of blocks that are connected to each other chronologically, the most recent block from the first neighboring row blocks includes a cryptographic hash (e.g., a block digest) of the most recent block, a random code for the cryptographic hash of the most recent block and a cryptographic hash of the previous block in order, a random code for the cryptographic hash of the block preceding in order from the first neighboring row of blocks (and optionally code for the cryptographic hash of the previous block in order from the first adjacent row of blocks).
[0121] Пример 17. Система по примеру 16, в которой самый последний блок из первого соседнего ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из первого основного ряда блоков и случайный код для криптографического хеша самого последнего блока из первого основного ряда блоков для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном. [0121] Example 17. The system of Example 16, wherein the latest block from the first adjacent block row further includes a cryptographic hash of the latest block from the first main block row and a random code for the cryptographic hash of the latest block from the first main block row for cross-merklization of the main blockchain with the first participating neighboring blockchain.
[0122] Пример 18. Система по примеру 1, в которой один или более процессоров дополнительно выполнены с возможностью передачи на вторую соседнюю вычислительную систему (например, по сети передачи данных посредством сетевого интерфейса) нового криптографического хеша (нового блока) и нового случайного кода (для криптографического хеша нового блока) для перекрестной мерклизации основного блокчейна со вторым участвующим соседним блокчейном на второй соседней вычислительной системе. [0122] Example 18. The system of example 1, in which one or more processors are additionally configured to transmit to a second neighboring computing system (for example, over a data network via a network interface) a new cryptographic hash (new block) and a new random code ( for the cryptographic hash of the new block) to cross-merklize the main blockchain with the second participating neighboring blockchain on the second neighboring computing system.
[0123] Пример 19. Система по примеру 18, в которой один или более процессоров дополнительно выполнены с возможностью приема от второй соседней вычислительной системы криптографического хеша, соответствующего случайного кода и набора криптографических хешей самого последнего блока из второй соседнего ряда блоков второго участвующего соседнего блокчейна, реализованного на второй соседней вычислительной системе. [0123] Example 19. The system of Example 18, in which one or more processors are further configured to receive from the second neighboring computing system a cryptographic hash, a corresponding random code, and a set of cryptographic hashes of the most recent block from the second neighboring row of blocks of the second participating neighboring blockchain, implemented on the second neighboring computing system.
[0124] Пример 20. Система по примеру 1, в которой данные записей содержат множество записей о транзакции. [0124] Example 20. The system of example 1, in which the record data contains a plurality of transaction records.
[0125] Пример 21. Распределенная электронная система записей, обеспечивающая регистрацию неизменяемых записей (с помощью которой можно обеспечивать неизменяемую запись о порядке событий и/или можно обеспечивать доказуемый порядок событий), содержащая: основную вычислительную систему, на которой реализован основной блокчейн, для хранения данных записей в основного ряда блоков которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш (например, дайджест блока) самого последнего блока из основного ряда блоков, случайный код для криптографического хеша самого последнего блока из основного ряда блоков, криптографический хеш предыдущего по порядку блока основного ряда блоков, случайный код для криптографического хеша предыдущего по порядку блока основного ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока основного ряда блоков) и часть данных записей; первую соседнюю вычислительную систему, находящуюся в электронной связи с основной вычислительной системой по сети передачи данных, причем первая соседняя вычислительная система реализует первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков, криптографический хеш предыдущего по порядку блока из первого соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков), при этом основная вычислительная система выполнена с возможностью: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком основного ряда блоков путем включения криптографического хеша (например, дайджеста блока) самого последнего блока из основного ряда блоков (и необязательно случайного кода для криптографического хеша самого последнего блока из основного ряда блоков), новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша (например, нового дайджеста с доказательством выполнения работы) нового блока из основного ряда блоков с помощью нового случайного кода (и согласования целевой сложности для криптографического хеша нового блока), нового криптографического хеша и нового случайного кода, хранящегося в новом блоке; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном. [0125] Example 21. A distributed electronic record system providing immutable record logging (which can provide an immutable record of the order of events and/or can provide a provable order of events), comprising: a main computing system on which the main blockchain is implemented, for storage data records in the main row of blocks that are related to each other chronologically, and the most recent block from the main row of blocks includes a cryptographic hash (for example, a block digest) of the most recent block from the main row of blocks, a random code for the cryptographic hash of the most recent block from the main a block row, a cryptographic hash of the previous block in order of the main block row, a random code for the cryptographic hash of the previous block in order of the main block row (and optionally a random code for the cryptographic hash of the previous block in order of the main block row), and a part of the record data; a first neighboring computing system in electronic communication with the main computing system over a data network, wherein the first neighboring computing system implements a first participating neighboring blockchain containing a first neighboring row of blocks that are chronologically related to each other, the most recent block from the first neighboring row blocks includes the cryptographic hash of the most recent block from the first adjacent row of blocks, the random code for the cryptographic hash of the most recent block from the first adjacent row of blocks, the cryptographic hash of the previous block in order from the first adjacent row of blocks (and optionally the random code for the cryptographic hash of the previous block row) block order from the first adjacent row of blocks), wherein the main computing system is configured to: create a new block of the main row of blocks for storing new record data, and the new block is associated with the most recent block of the main row of blocks by including a cryptographic hash (e.g., a block digest) of the most recent block in the main block row (and optionally a random code for the cryptographic hash of the most recent block in the main block row), the new block becomes the new most recent block of the main block row; generating a new cryptographic hash (e.g., a new proof-of-work digest) of a new block from the main row of blocks using a new random code (and negotiating a difficulty target for the new block's cryptographic hash), a new cryptographic hash, and a new random code stored in the new block; and transmitting to the first neighboring computing system (for example, over a data network via a network interface) a new cryptographic hash of the new block and a new random code for the cryptographic hash of the new block to cross merklize the main blockchain with the first participating neighboring blockchain.
[0126] Пример 22. Система по примеру 21, в которой криптографический хеш каждого блока основного блокчейна создается с помощью одностороннего защищенного алгоритма хеширования и в которой криптографический хеш каждого блока из первого участвующего соседнего блокчейна создается с помощью одностороннего защищенного алгоритма хеширования. [0126] Example 22 The system of Example 21, wherein the cryptographic hash of each block of the main blockchain is generated using a one-way secure hash algorithm, and wherein the cryptographic hash of each block from the first participating neighbor blockchain is generated using a one-way secure hash algorithm.
[0127] Пример 23. Система по примеру 21, в которой самый последний блок из первого соседнего ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из основного ряда блоков и случайный код для криптографического хеша самого последнего блока из первого основного ряда блоков. [0127] Example 23 The system of Example 21, wherein the latest block from the first adjacent block row further includes a cryptographic hash of the latest block from the main block row and a random code for the cryptographic hash of the latest block from the first main block row.
[0128] Пример 24. Система по примеру 21, в которой самый последний блок из основного ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков и случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков. [0128] Example 24 The system of Example 21, wherein the latest block in the main block row further includes a cryptographic hash of the latest block in the first neighboring block row and a random code for the cryptographic hash of the latest block in the first neighboring block row.
[0129] Пример 25. Система по примеру 21, в которой первая соседняя вычислительная система дополнительно выполнена с возможностью передачи в основную вычислительную систему криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе. [0129] Example 25. The system of Example 21, wherein the first neighbor computing system is further configured to transmit to the main computing system a cryptographic hash and the corresponding random code of the most recent block from the first neighboring row of blocks from the first participating neighboring blockchain implemented on the first neighboring computing system.
[0130] Пример 26. Система по примеру 21, в которой основная вычислительная система дополнительно выполнена с возможностью приема от первой соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе. [0130] Example 26. The system of Example 21, wherein the main computing system is further configured to receive from the first neighbor computing system a cryptographic hash and the corresponding random code of the most recent block from the first neighboring row of blocks from the first participating neighbor blockchain implemented on the first neighboring computing system.
[0131] Пример 27. Система по примеру 21, в которой первая соседняя вычислительная система выполнена с возможностью: создания нового соседнего блока из первого соседнего ряда блоков, причем новый соседний блок связан с самым последним блоком первого соседнего ряда блоков путем включения криптографического хеша самого последнего блока из первого соседнего ряда блоков (и случайного кода для криптографического хеша самого последнего блока из первого соседнего ряда блоков), при этом новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша нового блока из первого соседнего ряда блоков с помощью нового случайного кода и согласования целевой сложности для криптографического хеша нового блока, нового криптографического хеша и нового случайного кода, хранящегося в новом соседнем блоке; и передачи в основную вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового соседнего блока и нового случайного кода для криптографического хеша нового соседнего блока для перекрестной мерклизации первого участвующего соседнего блокчейна с основным блокчейном. Первая соседняя вычислительная система может дополнительно хранить в новом соседнем блоке новый криптографический хеш нового блока основного ряда блоков и новый случайный код для криптографического хеша нового блока основного ряда блоков для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. [0131] Example 27. The system of Example 21, wherein the first neighbor computing system is configured to: create a new neighbor block from a first neighbor row of blocks, wherein the new neighbor block is associated with the most recent block of the first neighbor row of blocks by including a cryptographic hash of the most recent a block from the first adjacent row of blocks (and a random code for the cryptographic hash of the most recent block from the first adjacent row of blocks), with the new block becoming the new most recent block of the main row of blocks; creating a new cryptographic hash of the new block from the first adjacent row of blocks with the new random code and negotiating a target complexity for the cryptographic hash of the new block, the new cryptographic hash, and the new random code stored in the new adjacent block; and transmitting to the main computing system (eg, over a data network via a network interface) the new cryptographic hash of the new neighbor block and the new random code for the cryptographic hash of the new neighbor block to cross merklize the first participating neighbor blockchain with the main blockchain. The first neighboring computing system can additionally store in the new neighboring block a new cryptographic hash of the new block of the main row of blocks and a new random code for the cryptographic hash of the new block of the main row of blocks for cross-merclization of the main blockchain with the first participating neighboring blockchain on the first neighboring computing system.
[0132] Пример 28. Система по примеру 21, дополнительно содержащая: вторую соседнюю вычислительную систему, находящуюся в электронной связи с основной вычислительной системой и/или первой соседней вычислительной системой по сети передачи данных, причем вторая соседняя вычислительная система реализует второй участвующий соседний блокчейн, содержащий второй соседний ряд блоков, которые связаны друг с другом хронологически, при этом самый последний блок второй соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из второго соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из второго соседнего ряда блоков, криптографический хеш предыдущего по порядку блока из второго соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из второго соседнего ряда блоков), причем основная вычислительная система дополнительно выполнена с возможностью передачи на вторую соседнюю вычислительную систему (например, по сети передачи данных посредством сетевого интерфейса) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна со вторым участвующим соседним блокчейном. [0132] Example 28. The system of Example 21, further comprising: a second neighbor computing system in electronic communication with the main computing system and/or the first neighbor computing system over a data network, the second neighbor computing system implementing the second participating neighbor blockchain, containing a second adjacent row of blocks that are chronologically related to each other, while the most recent block of the second adjacent row of blocks includes a cryptographic hash of the latest block from the second adjacent row of blocks, a random code for the cryptographic hash of the latest block from the second adjacent row of blocks, a cryptographic hash of the previous block in order from the second adjacent row of blocks (and optionally a random code for the cryptographic hash of the previous block in order from the second adjacent row of blocks), and the main computing system is additionally configured to be transmitted to the second neighboring computing a separate system (for example, over a data network via a network interface) of a new cryptographic hash of the new block and a new random code for the cryptographic hash of the new block for cross-merclization of the main blockchain with the second participating neighboring blockchain.
[0133] Пример 29. Система по примеру 28, в которой первая соседняя вычислительная система дополнительно выполнена с возможностью передачи во вторую соседнюю вычислительную систему криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе. [0133] Example 29. The system of Example 28, in which the first neighboring computing system is further configured to transmit to the second neighboring computing system a cryptographic hash and the corresponding random code of the most recent block from the first neighboring row of blocks from the first participating neighboring blockchain implemented on the first neighboring computer system.
[0134] Пример 30. Система по примеру 28, в которой основная вычислительная система дополнительно выполнена с возможностью приема от второй соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из второго соседнего ряда блоков из второго участвующего соседнего блокчейна, реализованного на второй соседней вычислительной системе. [0134] Example 30. The system of Example 28, wherein the main computing system is further configured to receive from the second neighboring computing system a cryptographic hash and the corresponding random code of the most recent block from the second neighboring row of blocks from the second participating neighboring blockchain implemented on the second neighboring computing system.
[0135] Пример 31. Система по примеру 28, в которой вторая соседняя вычислительная система дополнительно выполнена с возможностью приема от основной вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из основного ряда блоков из первого участвующего соседнего блокчейна, реализованного на основной вычислительной системе, и в которой вторая соседняя вычислительная система дополнительно выполнена с возможностью приема от первой соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе. [0135] Example 31. The system of Example 28, wherein the second neighbor computing system is further configured to receive from the host computing system a cryptographic hash and the corresponding random code of the most recent block from the main row of blocks from the first participating neighbor blockchain implemented on the host computing system , and in which the second neighboring computing system is further configured to receive from the first neighboring computing system a cryptographic hash and a corresponding random code of the most recent block from the first neighboring row of blocks from the first participating neighboring blockchain implemented on the first neighboring computing system.
[0136] Пример 32. Способ обеспечения регистрации неизменяемых записей (например, записей о транзакции) (и/или неизменяемой записи о порядке событий и/или доказуемом порядке событий), включающий в себя: создание или реализацию иным образом основного блокчейна на основной вычислительной системе, причем основной блокчейн выполнен с возможностью хранения записей о транзакции в основном ряду блоков, которые хранятся на одном или более машиночитаемых носителях данных основной вычислительной системы и которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш (например, дайджест с доказательством выполнения работы (POW)) самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока и часть записей о транзакции; создание нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока (и необязательно случайного кода для криптографического хеша самого последнего блока), при этом новый блок становится новым самым последним блоком основного ряда блоков; создание нового криптографического хеша (например, нового дайджеста POW) нового блока из основного ряда блоков с помощью нового случайного кода (и согласования целевой сложности для криптографического хеша нового блока); сохранение нового криптографического хеша и нового случайного кода в новом блоке; и передачу в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. [0136] Example 32. A method for providing immutable records (e.g., transaction records) (and/or an immutable order of events and/or provable order of events) record, including: creating or otherwise implementing a main blockchain on a main computing system , and the main blockchain is configured to store transaction records in the main series of blocks that are stored on one or more machine-readable storage media of the main computing system and which are linked to each other chronologically, and the most recent block from the main series of blocks includes a cryptographic hash ( for example, a proof-of-work (POW) digest of the most recent block, a random code for the cryptographic hash of the most recent block, a cryptographic hash of the previous block in sequence, and a portion of the transaction records; creation of a new block of the main block row to hold new transaction records, the new block being associated with the most recent block by including a cryptographic hash (e.g., a block digest) of the most recent block (and optionally a random code for the cryptographic hash of the most recent block), wherein the new the block becomes the new most recent block of the main row of blocks; generating a new cryptographic hash (eg, a new POW digest) of a new block from the main row of blocks with a new random code (and negotiating a difficulty target for the new block's cryptographic hash); saving a new cryptographic hash and a new random code in a new block; and transmitting to the first neighboring computing system (e.g., over a data network via a network interface) a new cryptographic hash of the new block and a new random code for the cryptographic hash of the new block to cross merklize the main blockchain with the first participating neighboring blockchain on the first neighboring computing system.
[0137] Пример 33. Система (например, основная вычислительная система), обеспечивающая регистрацию неизменяемых записей (например, записи о транзакции и/или о порядке событий) или иным образом обеспечивающая доказуемый порядок событий, содержащая: один или более машиночитаемых носителей данных для хранения основного блокчейна для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (который представляет собой созданный криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (обеспечения соответствия) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненные с возможностью реализации протокола основного блокчейна, при этом один или более процессоров выполнены с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (например, корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции; создания дайджеста блока нового блока путем криптографического хеширования дайджеста записей с помощью нового случайного кода; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (или иного обеспечения соответствия) целевой сложности; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) заголовка нового блока, причем заголовок включает в себя новый дайджест POW нового блока, новый случайный код и дайджест записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. [0137] Example 33. A system (e.g., a host computer system) that maintains immutable records (e.g., a transaction and/or order of events record) or otherwise maintains a provable order of events, comprising: one or more machine-readable storage media the main blockchain to store transaction records in the main series of blocks that are related to each other chronologically, with the most recent block of the main series of blocks including a proof-of-work (POW) digest (which is a cryptographically hashed block digest of the most recent block ), with a random code to achieve (match) the target complexity, the block digest of the previous block in order, and a part of the transaction records; one or more processors in electrical communication with one or more machine-readable storage media and configured to implement the main blockchain protocol, wherein one or more processors are configured to: create a new block of the main row of blocks to store new transaction records, and the new the block is linked to the most recent block by including a cryptographic hash (eg, a block digest) of the most recent block, with the new block becoming the new most recent block of the main row of blocks; creating a digest of records (eg, the root of a Merkle tree) from the new transaction records by cryptographically hashing the new transaction records; generating a block digest of the new block by cryptographically hashing the entry digest with the new random code; generating a new POW digest of the new block by cryptographically hashing the new block's block digest with the new random code to achieve (or otherwise match) the target difficulty; storing the new POW digest, the new random code, and the new block record digest in the new block; and transmitting to the first neighboring computing system (for example, over a data network via a network interface) a header of the new block, the header including the new POW digest of the new block, the new random code, and the record digest for cross-merklization of the main blockchain with the first participating neighbor blockchain on the first neighboring computing system.
[0138] Пример 34. Система по примеру 33, в которой один или более процессоров дополнительно выполнены с возможностью приема от первой соседней вычислительной системы (например, по сети передачи данных через сетевой интерфейс) заголовка самого последнего первого соседнего блока из первого участвующего соседнего блокчейна в первой соседней вычислительной системе, причем заголовок содержит дайджест POW самого последнего первого соседнего блока из первого участвующего соседнего блокчейна в первой соседней вычислительной системе, случайный код самого последнего первого соседнего блока и дайджест записей самого последнего первого соседнего блока для перекрестной мерклизации первого участвующего соседнего блокчейна с основным блокчейном. [0138] Example 34. The system of Example 33, wherein the one or more processors are further configured to receive from a first neighbor computing system (e.g., over a data network via a network interface) a header of the most recent first neighbor block from a first participating neighbor blockchain in the first neighbor computing system, wherein the header contains a POW digest of the latest first neighbor block from the first participating neighbor blockchain in the first neighbor computing system, a random code of the most recent first neighbor block, and a digest of the records of the latest first neighbor block for cross merklization of the first participating neighbor blockchain with the main blockchain.
[0139] Пример 35. Система по примеру 34, в которой один или более процессоров дополнительно выполнены с возможностью создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения нового дайджеста POW нового блока, нового случайного кода и дайджеста записей, дайджеста POW самого последнего первого соседнего блока, случайного кода самого последнего первого соседнего блока и дайджеста записей самого последнего первого соседнего блока. [0139] Example 35. The system of Example 34, wherein one or more processors are further configured to create the next block of the main block row, with the next block associated with the new most recent block by including a new POW digest of the new block, a new random code, and a digest records, the POW digest of the latest first neighbor block, the random code of the latest first neighbor block, and the record digest of the latest first neighbor block.
[0140] Пример 36. Система по примеру 33, в которой один или более процессоров выполнены с возможностью ведения (например, на машиночитаемом носителе данных) основного журнала событий, включающего в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из записей о транзакции, хранящихся в основного ряда блоков основного блокчейна. [0140] Example 36. The system of Example 33, wherein one or more processors are configured to maintain (e.g., on a computer-readable storage medium) a master event log including an ordered list of event records, each corresponding to a transaction record from transaction records stored in the main row of blocks of the main blockchain.
[0141] Пример 37. Система по примеру 36, в которой один или более процессоров дополнительно выполнены с возможностью регистрации в основном журнале событий записи о событии, указывающей на создание нового блока. [0141] Example 37. The system of Example 36, wherein one or more processors are further configured to log an event entry in the main event log indicating the creation of a new block.
[0142] Пример 38. Система по примеру 36, в которой один или более процессоров дополнительно выполнены с возможностью: приема от первой соседней вычислительной системы (например, по сети передачи данных посредством сетевого интерфейса) по меньшей мере части первого соседнего журнала событий; сравнения основного журнала событий с первым соседним журналом событий; и обеспечения отражения самого раннего появления каждой записи о событии (например, записи о событии создания нового блока) в основном журнале событий на основе сравнения. [0142] Example 38. The system of example 36, in which one or more processors are further configured to: receive from the first neighboring computing system (eg, over a data network via a network interface) at least a portion of the first neighboring event log; comparing the main event log with the first adjacent event log; and ensuring that the earliest occurrence of each event entry (eg, a new block creation event entry) is reflected in the main event log based on the comparison.
[0143] Пример 39. Система по примеру 38, в которой один или более процессоров дополнительно выполнены с возможностью: переупорядочения записей о событии в основном журнале событий на основании сравнения и/или на основании более ранней записи в одном из основного журнала событий и соседнего журнала событий для каждой записи о событии. [0143] Example 39. The system of Example 38, wherein one or more processors are further configured to: reorder event entries in the main event log based on a comparison and/or based on an earlier entry in one of the main event log and adjacent log events for each event entry.
[0144] Пример 40. Способ обеспечения регистрации неизменяемых записей (например, записи о транзакции и/или о порядке событий) или иного обеспечения доказуемого порядка событий, включающий в себя: создание или реализацию иным образом (протокола) основного блокчейна на основной вычислительной системе, причем основной блокчейн выполнен с возможностью хранения записей о транзакции в основном ряду блоков, которые хранятся на одном или более машиночитаемых носителях данных основной вычислительной системы и которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (которая представляет собой созданный криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (или обеспечения соответствия иным образом) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; создание нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создание нового дайджеста записей (корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции; создание нового дайджеста блока нового блока путем криптографического хеширования нового дайджеста записей с помощью нового случайного кода; создание нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (или иного обеспечения соответствия) целевой сложности; сохранение нового дайджеста POW, нового случайного кода и нового дайджеста записей в новом блоке; и передачу в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) заголовка нового блока, причем заголовок включает в себя новый дайджест POW нового блока, новый случайный код и новый дайджест записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. [0144] Example 40. A method for ensuring the registration of immutable records (for example, a record of a transaction and / or an order of events) or otherwise providing a provable order of events, including: creating or otherwise implementing (protocol) the main blockchain on the main computing system, moreover, the main blockchain is configured to store transaction records in the main series of blocks that are stored on one or more machine-readable storage media of the main computing system and which are related to each other chronologically, and the most recent block from the main series of blocks includes a digest with proof of execution work (POW) (which is a cryptographically hashed block digest of the most recent block), with a random code to achieve (or otherwise match) the target complexity, the block digest of the block of the previous block in order, and part of the transaction records; creating a new block of the main block row to store new transaction records, the new block being associated with the most recent block by including a cryptographic hash (e.g., a block digest) of the most recent block, the new block becoming the new most recent block of the main block series; creating a new record digest (Merkle tree root) from the new transaction records by cryptographic hashing of the new transaction records; generating a new block digest of the new block by cryptographically hashing the new record digest with the new random code; generating a new POW digest of the new block by cryptographically hashing the new block's block digest with the new random code to achieve (or otherwise match) the target difficulty; saving a new POW digest, a new random code, and a new record digest in a new block; and transmitting to the first neighbor computing system (e.g., over a data network via a network interface) a header of the new block, the header including the new POW digest of the new block, the new random code, and the new record digest to cross-merklize the main blockchain with the first participating neighbor blockchain. on the first neighboring computing system.
[0145] Пример 41. Распределенная электронная система записей, обеспечивающая регистрацию неизменяемых записей и содержащая: основной блокчейн для хранения данных записей в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока и часть данных записей; первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков и криптографический хеш предыдущего по порядку блока из первого соседнего ряда блоков, при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком основного ряда блоков путем включения криптографического хеша самого последнего блока из основного ряда блоков, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша нового блока основного ряда блоков с помощью нового случайного кода, нового криптографического хеша и нового случайного кода, хранящегося в новом блоке; и передачи в первый участвующий соседний блокчейн нового криптографического хеша и нового случайного кода. [0145] Example 41. A distributed electronic record system providing immutable record logging and comprising: a main blockchain for storing record data in a main set of blocks that are chronologically related to each other, the most recent block of the main set of blocks including a cryptographic hash of itself the last block, a random code for the cryptographic hash of the most recent block, the cryptographic hash of the previous block in order, and a part of the record data; the first participating neighboring blockchain containing the first neighboring row of blocks that are chronologically related to each other, and the most recent block from the first neighboring row of blocks includes the cryptographic hash of the most recent block from the first neighboring row of blocks, a random code for the cryptographic hash of the most recent block from of the first neighboring row of blocks and a cryptographic hash of the previous block in order from the first neighboring row of blocks, while the main blockchain is configured to: create a new block of the main row of blocks to store new record data, and the new block is associated with the most recent block of the main row of blocks by including a cryptographic hash of the latest block from the main block row, whereby the new block becomes the new most recent block of the main block row; creating a new cryptographic hash of the new block of the main series of blocks using the new random code, the new cryptographic hash, and the new random code stored in the new block; and transmitting to the first participating neighboring blockchain a new cryptographic hash and a new random code.
[0146] Пример 42. Система, обеспечивающая регистрацию неизменяемых записей, содержащая: основной блокчейн для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест, подтверждающий выполнение работы (POW), дайджест блока предыдущего по порядку блока и часть записей о транзакции; первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя дайджест с доказательством выполнения работы (POW), самый последний блок из первого соседнего ряда блоков и дайджест блока предыдущего по порядку блока из первого соседнего ряда блоков; при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения дайджеста блока самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (корня дерева Меркла) из новых записей о транзакции; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; и передачи нового дайджеста POW, нового случайного кода и дайджеста записей в первый участвующий соседний блокчейн. [0146] Example 42. A system providing immutable record logging, comprising: a main blockchain for storing transaction records in a main set of blocks that are related to each other chronologically, and the most recent block of the main set of blocks includes a digest confirming the completion of work (POW), block digest of the previous block in order and part of the transaction records; the first participating neighbor chain containing the first neighboring row of blocks that are chronologically related to each other, with the most recent block from the first neighboring row of blocks including a proof-of-work (POW) digest, the most recent block from the first neighboring row of blocks, and a block digest the block preceding in order from the first adjacent row of blocks; wherein the main blockchain is configured to: create a new block of the main block series to store new transaction records, the new block being associated with the most recent block by including a block digest of the latest block, the new block becoming the new most recent block of the main block series; creating a digest of records (the root of the Merkle tree) from new transaction records; generating a new POW digest of the new block by cryptographically hashing the block digest of the new block with the new random code; storing the new POW digest, the new random code, and the new block record digest in the new block; and transmitting the new POW digest, the new random code, and the record digest to the first participating neighbor blockchain.
[0147] Пример 43. Система по примеру 41, в которой основной блокчейн дополнительно выполнен с возможностью приема из первого участвующего соседнего блокчейна дайджеста POW самого последнего первого соседнего блока из первого участвующего соседнего блокчейна, случайного кода самого последнего первого соседнего блока и дайджеста записей самого последнего первого соседнего блока. [0147] Example 43. The system of Example 41, wherein the main blockchain is further configured to receive from the first participating neighbor blockchain a POW digest of the most recent first neighbor block from the first participating neighbor blockchain, a random code of the latest first neighbor block, and a digest of the records of the most recent first adjacent block.
[0148] Пример 44. Система по примеру 43, в которой основной блокчейн дополнительно выполнен с возможностью создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения дайджеста блока нового блока, нового случайного кода нового блока и дайджеста записей нового блока, и при этом новый блок включает в себя дайджест POW самого последнего первого соседнего блока и дайджест записей самого последнего первого соседнего блока. [0148] Example 44. The system of Example 43, in which the main blockchain is further configured to create the next block of the main series of blocks, and the next block is associated with the new most recent block by including the block digest of the new block, the new random code of the new block, and the digest of records of the new block, wherein the new block includes the POW digest of the latest first neighbor block and the record digest of the latest first neighbor block.
[0149] Пример 45. Система по примеру 41, дополнительно содержащая векторные часы, содержащие: основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; и первый участвующий соседний журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, сохраненных в первом соседнем ряду блоков первого участвующего соседнего блокчейна, причем векторные часы сравнивают основной журнал событий с первым соседним журналом событий и обеспечивают отражение в основном журнале событий самого раннего появления каждой записи о событии. [0149] Example 45. The system of Example 41, further comprising a vector clock comprising: a main event log including an ordered list of event records, each corresponding to a transaction record from transaction records stored in the main row of blocks of the main blockchain; and a first participating neighbor event log including an ordered list of event records, each corresponding to a transaction record from the transaction records stored in the first neighbor row of blocks of the first participating neighbor blockchain, the vector clock comparing the main event log with the first adjacent event log and ensure that the main event log reflects the earliest occurrence of each event entry.
[0150] Пример 46. Система по примеру 45, в которой векторные часы выполнены с возможностью переупорядочения записей о событии в основном журнале событий на основании сравнения. [0150] Example 46. The system of Example 45, wherein the vector clock is configured to reorder event entries in the main event log based on comparison.
[0151] Пример 47. Система по примеру 45, в которой один или более процессоров дополнительно выполнены с возможностью регистрации (например, в основном журнале событий) записи о событии, указывающей на создание нового блока. [0151] Example 47. The system of Example 45, wherein one or more processors are further configured to log (eg, in the main event log) an event entry indicating the creation of a new block.
[0152] Пример 48. Система, обеспечивающая неизменяемое ведение записей для обеспечения доказуемого порядка событий, содержащая: основной блокчейн (в основной вычислительной системе) для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW), дайджест блока предыдущего по порядку блока и часть записей о транзакции; основной журнал событий (в основной вычислительной системе), включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; первый участвующий соседний блокчейн (в первой участвующей соседней вычислительной системе), содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) самого последнего блока из первого соседнего ряда блоков и дайджест блока предыдущего по порядку блока из первого соседнего ряда блоков; первый участвующий соседний журнал событий (на первой участвующей соседней вычислительной системе), включающий в себя упорядоченный список записей о событии, причем каждый из них соответствует какой-либо записи транзакции из записей транзакций, сохраненных в первом соседнем ряду блоков первого участвующего соседнего блокчейна; и векторные часы, которые выполнены с возможностью сравнения основного журнала событий с первым соседним журналом событий и обеспечения отражения в основном журнале событий самого раннего появления каждой записи о событии, при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения дайджеста блока самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (корня дерева Меркла) из новых записей о транзакции; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; регистрации в основном журнале событий записи о событии, соответствующем созданию нового блока; и передачи нового дайджеста POW, нового случайного кода и дайджеста записей в первый участвующий соседний блокчейн. [0152] Example 48. A system that provides immutable record keeping to ensure a provable order of events, comprising: a main blockchain (in the main computing system) for storing transaction records in a main set of blocks that are related to each other chronologically, with the most recent block of the main row of blocks includes a proof-of-work (POW) digest, a block digest of the previous block in order, and a portion of the transaction records; a main event log (in the main computing system) including an ordered list of event records, each corresponding to a transaction record from the transaction records stored in the main row of blocks of the main blockchain; the first participating neighbor blockchain (on the first participating neighbor computing system) containing the first neighboring row of blocks that are related to each other chronologically, where the most recent block from the first neighboring row of blocks includes a proof-of-work (POW) digest of the most recent block from the first adjacent row of blocks and the block digest of the previous block in order from the first adjacent row of blocks; a first participating neighbor event log (on the first participating neighbor computing system) including an ordered list of event records, each corresponding to a transaction record from the transaction records stored in the first neighbor row of blocks of the first participating neighbor blockchain; and a vector clock, which is configured to compare the main event log with the first adjacent event log and ensure that the main event log reflects the earliest occurrence of each event record, while the main blockchain is configured to: create a new block of the main row of blocks to store new records about a transaction, wherein the new block is linked to the most recent block by including a block digest of the most recent block, the new block becoming the new most recent block of the main block row; creating a digest of records (the root of the Merkle tree) from new transaction records; generating a new POW digest of the new block by cryptographically hashing the block digest of the new block with the new random code; storing the new POW digest, the new random code, and the new block record digest in the new block; registration in the main event log of an event record corresponding to the creation of a new block; and transmitting the new POW digest, the new random code, and the record digest to the first participating neighbor blockchain.
[0153] Пример 49. Основная вычислительная система, обеспечивающая неизменяемое ведение записей для обеспечения доказуемого порядка событий, содержащая: один или более машиночитаемых носителей данных для хранения: основного блокчейна для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (которая представляет собой созданную криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (обеспечения соответствия) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; и основной журнал событий, содержащий упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; и один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненных с возможностью реализации протокола основного блокчейна, причем один или более процессоров выполнены с возможностью: приема из первой соседней вычислительной системы дайджеста POW самого последнего блока из первого соседнего ряда блоков первого участвующего соседнего блокчейна, реализованного в первой соседней вычислительной системе, соответствующего случайного кода дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков; создания нового блока основного ряда блоков для хранения новых записей о транзакции, включающих в себя дайджест POW самого последнего блока из первого соседнего ряда блоков, соответствующий случайный код дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока и новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (например, корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции, включающих в себя дайджест POW самого последнего блока из первого соседнего ряда блоков, соответствующий случайный код дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков; создания дайджеста блока нового блока путем криптографического хеширования …. дайджеста записей с помощью нового случайного кода; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (обеспечения соответствия) целевой сложности; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; регистрации в основном журнале событий записи о событии, соответствующем созданию нового блока; сравнения основного журнала событий с первым соседним журналом событий и обеспечение отражения в основном журнале событий самого раннего появления каждой записи о событии, причем первый соседний журнал событий включает в себя упорядоченный список записей о событии, при этом каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, сохраненных в первом соседнем ряду блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового дайджеста POW нового блока, нового случайного кода и дайджеста записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. Описанные признаки, операции или характеристики могут быть скомпонованы и разработаны в широком диапазоне различных конфигураций и/или могут быть скомбинированы любым подходящим способом в одном или более вариантах осуществления. Таким образом, подробное описание различных вариантов осуществления систем и способов не предполагает ограничения заявленного объема описания и служит только для представления возможных вариантов осуществления описания. Кроме того, следует понимать, что порядок стадий или действий в способах, описанных в связи с описанными вариантами осуществления, может быть изменен, как очевидно специалистам в данной области. Таким образом, любая последовательность на графических материалах или в подробном описании приведена исключительно в иллюстративных целях и не подразумевает требуемого порядка, если не указано иное. [0153] Example 49. The main computing system, providing immutable record keeping to ensure a provable order of events, containing: one or more machine-readable storage media for storage: the main blockchain for storing transaction records in the main series of blocks that are related to each other chronologically, wherein the most recent block of the main series of blocks includes a proof-of-work (POW) digest (which is a cryptographically hashed block digest of the most recent block), with a random code to achieve (match) the target complexity, a digest of the block of the previous one in order block and part of transaction records; and a main event log containing an ordered list of event records, each corresponding to a transaction record from the transaction records stored in the main row of blocks of the main blockchain; and one or more processors in electrical communication with one or more computer-readable storage media and configured to implement the main blockchain protocol, wherein one or more processors are configured to: receive from the first neighboring computing system a POW digest of the latest block from the first neighboring row blocks of a first participating neighbor blockchain implemented in a first neighbor computing system, a corresponding random POW digest code of the most recent block from the first neighbor row of blocks, and a digest of the records of the latest block from the first neighbor row of blocks; creating a new block of the main block row to store new transaction records, including the POW digest of the most recent block from the first adjacent row of blocks, the corresponding random code of the POW digest of the most recent block from the first adjacent row of blocks, and the digest of the records of the latest block from the first adjacent row blocks, wherein the new block is linked to the most recent block by including a cryptographic hash (eg, block digest) of the most recent block, and the new block becomes the new most recent block of the main block row; creating a record digest (e.g. the root of a Merkle tree) from new transaction records by cryptographically hashing the new transaction records including the POW digest of the most recent block from the first neighboring block row, the corresponding random code of the POW digest of the most recent block from the first neighboring block row and a digest of the records of the most recent block from the first adjacent row of blocks; creating a block digest of a new block by cryptographic hashing…. digest records using a new random code; generating a new POW digest of the new block by cryptographically hashing the block digest of the new block with the new random code to achieve (match) the target complexity; storing the new POW digest, the new random code, and the new block record digest in the new block; registration in the main event log of an event record corresponding to the creation of a new block; comparing the main event log with the first adjacent event log and ensuring that the main event log reflects the earliest occurrence of each event entry, where the first adjacent event log includes an ordered list of event entries, each corresponding to a transaction entry from transaction records stored in a first neighbor row of blocks from a first participating neighbor blockchain implemented on a first neighbor computing system; and transmitting to the first neighbor computing system (e.g., over a data network via a network interface) the new POW digest of the new block, the new random code, and the record digest to cross-merklize the main blockchain with the first participating neighbor blockchain on the first neighbor computing system. The described features, operations, or characteristics may be arranged and designed in a wide range of different configurations and/or may be combined in any suitable manner in one or more embodiments. Thus, the detailed description of the various embodiments of systems and methods is not intended to limit the claimed scope of the description, and only serves to introduce possible embodiments of the description. In addition, it should be understood that the order of steps or actions in the methods described in connection with the described embodiments may be changed, as is obvious to experts in this field. Thus, any sequence in the drawings or in the detailed description is for illustrative purposes only and does not imply the required order unless otherwise indicated.
[0154] Варианты осуществления могут включать в себя различные стадии, которые могут быть включены в исполняемые компьютером команды для исполнения компьютером общего назначения или специального назначения (или другим электронным устройством). В альтернативном варианте осуществления эти стадии могут быть выполнены аппаратными компонентами, в которых включена специальная логика для выполнения этих стадий, или любой комбинацией оборудования, программного обеспечения и/или микропрограммного обеспечения. [0154] Embodiments may include various steps that may be included in computer-executable instructions for execution by a general-purpose or special-purpose computer (or other electronic device). In an alternative embodiment, these steps may be performed by hardware components that include specific logic to perform these steps, or by any combination of hardware, software, and/or firmware.
[0155] Варианты осуществления могут также быть обеспечены в виде компьютерного программного продукта, содержащего машиночитаемый носитель данных, имеющий хранящиеся на нем команды, которые можно использовать для программирования компьютера (или другого электронного устройства) для выполнения способов, описанных в настоящем документе. Машиночитаемый носитель данных может включать в себя, без ограничений: жесткие диски, дискеты, оптические диски, диски CD-ROM, DVD-ROM, ПЗУ, ОЗУ, СППЗУ, ЭСППЗУ, магнитные или оптические карты, твердотельные запоминающие устройства или другие типы носителей/машиночитаемых носителей, применимых для хранения электронных команд. [0155] Embodiments may also be provided as a computer program product containing a computer-readable storage medium having instructions stored thereon that can be used to program a computer (or other electronic device) to perform the methods described herein. A computer-readable storage medium may include, without limitation: hard disks, floppy disks, optical disks, CD-ROMs, DVD-ROMs, ROMs, RAM, EPROMs, EEPROMs, magnetic or optical cards, mass storage devices, or other types of media/machine-readable media suitable for storing electronic commands.
[0156] В настоящем документе программный модуль или компонент может включать в себя любой тип компьютерной программы или компьютерного исполняемого кода, размещенного на запоминающем устройстве и/или машиночитаемом носителе данных. Программный модуль может, например, содержать один или более физических или логических блоков компьютерных команд, которые могут быть организованы в виде подпрограммы, программы, объекта, компонента, структуры данных и т. п., которые выполняют одну или более задач или реализуют определенные абстрактные типы данных. [0156] As used herein, a program module or component may include any type of computer program or computer executable code located on a storage device and/or computer-readable storage medium. A software module may, for example, contain one or more physical or logical blocks of computer instructions, which may be organized as a subroutine, program, object, component, data structure, or the like, that perform one or more tasks or implement certain abstract types. data.
[0157] В определенных вариантах осуществления конкретный программный модуль может содержать разнородные команды, хранящиеся в различных областях запоминающего устройства, которые в совокупности реализуют описанные функциональные возможности модуля. В действительности модуль может содержать одну команду или множество команд и может быть распределен по нескольким различным сегментам кода, между различными программами и между несколькими запоминающими устройствами. Некоторые варианты осуществления могут быть реализованы в распределенной вычислительной среде, в которой задачи выполняет удаленное устройство обработки данных, связанное через сеть передачи данных. В распределенной вычислительной среде программные модули можно размещать на локальных и/или на удаленных запоминающих устройствах для хранения данных. Кроме того, данные, привязанные друг к другу или объединенные друг с другом в какой-либо записи базы данных, могут находиться на одном запоминающем устройстве или на нескольких запоминающих устройствах и могут быть связаны друг с другом по сети в полях записи в базе данных. [0157] In certain embodiments, a particular software module may contain heterogeneous instructions stored in different areas of the storage device that collectively implement the described functionality of the module. In reality, a module may contain a single instruction or multiple instructions and may be distributed across several different code segments, between different programs, and across multiple storage devices. Some embodiments may be implemented in a distributed computing environment in which tasks are performed by a remote processing device that is linked through a data network. In a distributed computing environment, program modules may be located in local and/or remote storage devices for data storage. In addition, data linked to or concatenated with each other in a database entry may reside on the same storage device or on multiple storage devices and may be linked to each other over a network in the fields of the database entry.
[0158] Вышеизложенное описание приведено со ссылкой на различные варианты осуществления, включая наилучший вариант осуществления. Однако специалистам в данной области будет понятно, что возможны различные модификации и изменения без отступления от объема настоящего описания и принципов, лежащих в основе изобретения. Соответственно, настоящее описание следует рассматривать как иллюстративное, а не имеющее ограничительный характер, и предполагается, что все указанные модификации включены в его объем. Кроме того, выше описаны выгоды, другие преимущества и решения проблем с приведением различных вариантов осуществления. Однако выгоды, преимущества, решения проблем и любой элемент (-ы), благодаря которым можно получить какие-либо выгоды, преимущества или решения или приобрести большую выраженность, не следует истолковывать как критический, обязательный или существенный признак или элемент. [0158] The foregoing description has been made with reference to various embodiments, including the best embodiment. However, those skilled in the art will appreciate that various modifications and changes are possible without departing from the scope of the present description and the principles underlying the invention. Accordingly, the present description is to be considered illustrative and not restrictive, and all such modifications are intended to be included within its scope. In addition, the benefits, other advantages, and solutions to problems with bringing various embodiments are described above. However, benefits, benefits, solutions to problems, and any element(s) that may provide any benefits, advantages, or solutions or gain greater prominence should not be construed as a critical, mandatory, or essential feature or element.
[0159] В настоящем документе термины «содержит», «содержащий» или любые иные их вариации, представленные в настоящем документе, используют для обозначения неисключительного включения, т. е. процесс, способ, изделие или устройство, в том числе перечень элементов, состоит не только из этих элементов, но может содержать другие элементы, не указанные явно или свойственные такому процессу, способу, изделию или устройству. Кроме того, в настоящем документе термины «связанный», «связывающий» или любые иные их вариации, представленные в настоящем документе, охватывают физическое присоединение, электрическое соединение, магнитное соединение, оптическое соединение, коммуникативное соединение, функциональное соединение и/или любое другое соединение. [0159] In this document, the terms "comprises", "comprising", or any other variations thereof, presented herein, are used to denote a non-exclusive inclusion, i.e. a process, method, product or device, including a list of elements, consists not only of these elements, but may contain other elements not explicitly specified or inherent in such a process, method, product or device. In addition, as used herein, the terms "coupled", "coupling", or any other variation thereof provided herein, encompasses a physical connection, an electrical connection, a magnetic connection, an optical connection, a communication connection, a functional connection, and/or any other connection.
[0160] Включение в формулу изобретения термина «первый» по отношению к какому-либо признаку или элементу не обязательно предполагает наличие второго или дополнительного такого признака или элемента. Принципы настоящего описания могут быть отражены в компьютерном программном продукте, хранящемся на материальном машиночитаемом носителе данных, имеющем машиночитаемые средства программного кода, сохраненные на носителе данных. Можно применять любой подходящий машиночитаемый носитель данных, включая магнитные запоминающие устройства (жесткие диски, дискеты и т. п.), оптические запоминающие устройства (диски CD-ROM, DVD, Blu-Ray и т. п.), флеш-память и/или т. п. Эти компьютерные программные команды могут быть загружены на компьютер общего назначения, компьютер специального назначения или другое программируемое устройство обработки данных для создания машины так, что с помощью команд, исполняемых на компьютере или другом программируемом устройстве обработки данных, получаются средства для реализации указанных функций. Эти компьютерные программные команды могут также храниться на машиночитаемом запоминающем устройстве, которое может указывать компьютеру или другому программируемому устройству обработки данных на необходимость выполнения определенных действий так, что с помощью команд, хранящихся на машиночитаемом запоминающем устройстве, получается готовое изделие, включающее в себя команды для реализации указанной функции. Команды компьютерной программы могут также быть загружены на компьютер или другое программируемое устройство обработки данных для инициирования выполнения серии операционных стадий на компьютере или другом программируемом устройстве для создания реализованного на компьютере процесса, благодаря которому с помощью команд, исполняемых на компьютере или другом программируемом устройстве, обеспечиваются стадии для реализации указанных функций. [0160] The inclusion in the claims of the term "first" in relation to any feature or element does not necessarily imply the presence of a second or additional such feature or element. The principles of the present disclosure may be reflected in a computer program product stored on a tangible computer-readable storage medium having computer-readable program code means stored on the storage medium. Any suitable computer-readable storage medium may be used, including magnetic storage devices (hard disks, floppy disks, etc.), optical storage devices (CD-ROMs, DVDs, Blu-Rays, etc.), flash memory, and/ or the like. These computer program instructions can be downloaded to a general purpose computer, special purpose computer, or other programmable data processing device to create a machine, such that the means for implementing the specified functions. These computer program instructions may also be stored on a computer-readable storage device, which may indicate to a computer or other programmable data processing device to perform certain actions, so that the instructions stored on the computer-readable storage device produce a finished product, including instructions for implementing the specified function. Computer program instructions may also be downloaded to a computer or other programmable processing device to cause a series of operating steps to be performed on the computer or other programmable device to create a computer-implemented process by which the steps are provided by the instructions executed on the computer or other programmable device. to implement these functions.
[0161] Принципы настоящего описания могут быть отражены в компьютерной программе, реализованной в виде одного или более программных модулей или компонентов. В настоящем документе программный модуль или компонент (например, обработчик, двигатель, система, подсистема) может включать в себя любой тип компьютерной программы или компьютерного исполняемого кода, размещенного на запоминающем устройстве и/или машиночитаемом носителе данных. Программный модуль может, например, содержать один или более физических или логических блоков компьютерных команд, которые могут быть организованы в виде подпрограммы, программы, объекта, компонента, структуры данных и т. п., которые выполняют одну или более задач или реализуют определенные типы данных. [0161] The principles of the present disclosure may be reflected in a computer program implemented as one or more program modules or components. As used herein, a software module or component (eg, handler, engine, system, subsystem) may include any type of computer program or computer executable code located on a storage device and/or computer-readable storage medium. A software module may, for example, contain one or more physical or logical blocks of computer instructions, which may be organized as a subroutine, program, object, component, data structure, or the like, that perform one or more tasks or implement certain types of data. .
[0162] В определенных вариантах осуществления конкретный программный модуль может содержать разнородные команды, хранящиеся в различных областях запоминающего устройства, которые в совокупности реализуют описанные функциональные возможности модуля. В действительности модуль может содержать одну команду или множество команд и может быть распределен по нескольким различным сегментам кода, между различными программами и между несколькими запоминающими устройствами. Некоторые варианты осуществления могут быть реализованы в распределенной вычислительной среде, в которой задачи выполняет удаленное устройство обработки данных, связанное через сеть передачи данных. В распределенной вычислительной среде программные модули можно размещать на локальных и/или на удаленных запоминающих устройствах для хранения данных. Кроме того, данные, привязанные друг к другу или объединенные друг с другом в какой-либо записи базы данных, могут находиться на одном запоминающем устройстве или на нескольких запоминающих устройствах и могут быть связаны друг с другом по сети в полях записи в базе данных. [0162] In certain embodiments, a particular software module may contain heterogeneous instructions stored in different areas of the storage device that collectively implement the described functionality of the module. In reality, a module may contain a single instruction or multiple instructions and may be distributed across several different code segments, between different programs, and across multiple storage devices. Some embodiments may be implemented in a distributed computing environment in which tasks are performed by a remote processing device that is linked through a data network. In a distributed computing environment, program modules may be located in local and/or remote storage devices for data storage. In addition, data linked to or concatenated with each other in a database entry may reside on the same storage device or on multiple storage devices and may be linked to each other over a network in the fields of the database entry.
[0163] Подходящее программное обеспечение для облегчения реализации изобретения легко обеспечивают специалисты в соответствующей (-их) области (-ях) техники с применением идей, представленных в настоящем документе, и языков программирования и инструментов, таких как Java, Pascal, C++, C, языки баз данных, API, SDK, узел, микропрограмма, микрокод и/или другие языки и инструменты. [0163] Suitable software to facilitate the implementation of the invention is readily provided by those skilled in the relevant art(s) using the ideas presented herein and programming languages and tools such as Java, Pascal, C++, C, database languages, API, SDK, host, firmware, microcode, and/or other languages and tools.
[0164] Варианты осуществления, описанные в настоящем документе, могут быть полностью или частично реализованы на цифровом компьютере. Цифровой компьютер включает в себя процессор, выполняющий необходимые вычисления. Компьютер дополнительно включает в себя запоминающее устройство, которое находится в электронной связи с процессором для хранения операционной системы компьютера. Операционные системы компьютера могут включать в себя, без ограничений, MS-DOS, Windows, Linux, Unix, AIX, CLIX, QNX, OS/2 и Apple. Кроме того, будущие варианты осуществления будут, предположительно, адаптированы для исполнения в других будущих операционных системах. [0164] The embodiments described herein may be fully or partially implemented on a digital computer. The digital computer includes a processor that performs the necessary calculations. The computer further includes a storage device that is in electronic communication with the processor for storing the operating system of the computer. Computer operating systems may include, without limitation, MS-DOS, Windows, Linux, Unix, AIX, CLIX, QNX, OS/2, and Apple. In addition, future embodiments will presumably be adapted to run on other future operating systems.
[0165] В некоторых случаях общеизвестные признаки, структуры или операции не показаны и не описаны подробно. Более того, описанные признаки, структуры или операции можно комбинировать любым приемлемым способом в одном или более вариантах осуществления. Следует также понимать, что размещение и конструкция компонентов вариантов осуществления, по существу описанных и показанных в графических материалах в настоящем документе, могут иметь множество различных конфигураций. [0165] In some instances, well-known features, structures, or operations are not shown or described in detail. Moreover, the described features, structures, or operations can be combined in any suitable manner in one or more embodiments. It should also be understood that the placement and construction of the components of the embodiments substantially described and shown in the drawings herein may have many different configurations.
[0166] Различные операционные стадии, а также компоненты для выполнения операционных стадий могут быть реализованы альтернативными способами в зависимости от конкретного применения или с учетом любого числа функций затрат, связанных с работой системы, например одну или более стадий можно удалять, изменять или комбинировать с другими стадиями. [0166] Various operational steps, as well as components for performing operational steps, may be implemented in alternative ways, depending on the particular application or taking into account any number of cost functions associated with the operation of the system, for example, one or more stages can be removed, changed or combined with others. stages.
[0167] Несмотря на то что принципы настоящего описания показаны в различных вариантах осуществления, можно использовать множество модификаций структуры, конструкций, пропорций, элементов, материалов и компонентов, применяемых на практике, которые специально адаптированы для конкретных условий и рабочих требований, без отступления от принципов и объема настоящего описания. Предполагается, что объем настоящего описания включает в себя все подобные модификации и варианты. [0167] Although the principles of the present disclosure are shown in various embodiments, many modifications to the structure, structures, proportions, elements, materials, and components used in practice, which are specifically adapted to specific conditions and operating requirements, can be used, without departing from the principles and the scope of this description. The scope of the present description is intended to include all such modifications and variations.
[0168] Таким образом, объем настоящего изобретения следует определять только по следующим пунктам формулы изобретения. [0168] Thus, the scope of the present invention should be determined only by the following claims.
Claims (65)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762556212P | 2017-09-08 | 2017-09-08 | |
US62/556,212 | 2017-09-08 | ||
US201862693870P | 2018-07-03 | 2018-07-03 | |
US62/693,870 | 2018-07-03 | ||
PCT/US2018/050302 WO2019051429A1 (en) | 2017-09-08 | 2018-09-10 | Systems and methods of providing immutable records |
Publications (3)
Publication Number | Publication Date |
---|---|
RU2020112598A RU2020112598A (en) | 2021-10-08 |
RU2020112598A3 RU2020112598A3 (en) | 2022-01-25 |
RU2768202C2 true RU2768202C2 (en) | 2022-03-23 |
Family
ID=
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090016534A1 (en) * | 2006-07-14 | 2009-01-15 | Kinamik Data Integrity, S.L. | Method and system of generating immutable audit logs |
RU2510623C2 (en) * | 2012-04-19 | 2014-04-10 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | Method for information replication in distributed databases with competitive flow distribution |
US20140298034A1 (en) * | 2011-10-14 | 2014-10-02 | Hitachi, Ltd. | Data authenticity assurance method, management computer, and storage medium |
US20150207790A1 (en) * | 2012-09-12 | 2015-07-23 | Feitian Technologies Co., Ltd. | Method and system for generating and authorizing dynamic password |
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090016534A1 (en) * | 2006-07-14 | 2009-01-15 | Kinamik Data Integrity, S.L. | Method and system of generating immutable audit logs |
US20140298034A1 (en) * | 2011-10-14 | 2014-10-02 | Hitachi, Ltd. | Data authenticity assurance method, management computer, and storage medium |
RU2510623C2 (en) * | 2012-04-19 | 2014-04-10 | Государственное казенное образовательное учреждение высшего профессионального образования Академия Федеральной службы охраны Российской Федерации (Академия ФСО России) | Method for information replication in distributed databases with competitive flow distribution |
US20150207790A1 (en) * | 2012-09-12 | 2015-07-23 | Feitian Technologies Co., Ltd. | Method and system for generating and authorizing dynamic password |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11580075B2 (en) | Systems and methods of providing immutable records | |
US11663090B2 (en) | Method and system for desynchronization recovery for permissioned blockchains using bloom filters | |
US20220141018A1 (en) | Method and system for an efficient consensus mechanism for permissioned blockchains using audit guarantees | |
TWI820024B (en) | Trustless deterministic state machine | |
CN111723406B (en) | Block chain consensus algorithm and system | |
CN110599175A (en) | Block processing method and related equipment | |
EP4022843A1 (en) | Methods and devices for secure symbiotic mining | |
CN111555860A (en) | Block link point consensus method and device, electronic equipment and storage medium | |
RU2768202C2 (en) | Systems and methods for providing immutable records | |
CN110324422B (en) | Cloud application verification method and system | |
CN117692149B (en) | Method, equipment and medium for checking integrity of log transparent entity | |
CN116846916B (en) | Data synchronization method, device, electronic equipment and computer readable storage medium | |
US20230140623A1 (en) | Method and system for tamper-resistant event sourcing using a distributed ledger | |
CN117234672A (en) | Transaction processing method, apparatus, product, device, and medium | |
WO2023239692A1 (en) | Verifiable code execution via role-based validation | |
CN117335956A (en) | Block chain-based data processing method, device, equipment and readable storage medium | |
CN117333175A (en) | Blockchain system, intelligent contract synchronization method, computer equipment and storage medium |