СИСТЕМЫ И СПОСОБЫ ДЛЯ ОБЕСПЕЧЕНИЯ НЕИЗМЕНЯЕМЫХ ЗАПИСЕЙ
SYSTEMS AND METHODS FOR PROVIDING IMMUTABLE RECORDS

РОДСТВЕННЫЕ ЗАЯВКИ
[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 г., каждая из которых полностью включена в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[0002]
Настоящее описание в целом относится к первичным электронным консенсусным реестрам регистрации записей, таким как распределенные реестры, обеспечиваемые блокчейном, и в частности к системам и способам обеспечения неизменяемых записей.
КРАТКОЕ ОПИСАНИЕ ГРАФИЧЕСКИХ МАТЕРИАЛОВ
[0003]
Настоящие варианты осуществления станут более понятными из представленного ниже описания и прилагаемой формулы изобретения в сочетании с прилагаемыми чертежами. Следует понимать, что на сопроводительных чертежах изображены только типовые варианты осуществления, и, таким образом, их не следует рассматривать как ограничивающие объем описания, и варианты осуществления будут конкретно и подробно описаны и объяснены со ссылкой на прилагаемые чертежи.
[0004]
На ФИГ. 1 представлена схема блока блокчейна в вычислительной системе согласно варианту осуществления настоящего описания.
[0005]
На ФИГ. 2 представлена схема перекрестно-мерклизированной сети блокчейна в соответствии с вариантом осуществления настоящего описания, содержащей три участвующих блокчейна, а именно основной блокчейн, первый участвующий соседний блокчейн и второй участвующий соседний блокчейн.
[0006]
На ФИГ. 3A представлена частичная блок-схема, иллюстрирующая перекрестную мерклизацию блоков из участвующих соседних блокчейнов в пределах основного блокчейна, показанного на ФИГ. 1-2.
[0007]
На ФИГ. 3B представлена частичная блок-схема, иллюстрирующая создание блока.
[0008]
На ФИГ. 4 представлен график, иллюстрирующий геометрически прогрессирующую степень неизменяемости, которая может быть достигнута в сети блокчейна в соответствии с вариантом осуществления настоящего описания, такой как сеть блокчейна, показанная на ФИГ. 1-3B.
[0009]
На ФИГ. 5 представлена частичная блок-схема операций, выполняемых в вычислительной системе, на которой показан основной блокчейн и журнал событий, в соответствии с вариантом осуществления настоящего описания.
[0010]
На ФИГ. 6 представлена подробная частичная блок-схема операций вычислительной системы, описанной на ФИГ. 5, в соответствии с вариантом осуществления настоящего описания.
[0011]
На ФИГ. 7 представлена блок-схема векторных часов сети блокчейна в соответствии с вариантом осуществления настоящего описания.
[0012]
На ФИГ. 8 представлен подробный вид участка векторных часов, показанных на ФИГ. 7.
[0013]
На ФИГ. 9 представлена схема вычислительной системы, обеспечивающей неизменяемые записи, в соответствии с вариантом осуществления настоящего описания.
ПОДРОБНОЕ ОПИСАНИЕ
[0014]
Регистрация записей о транзакции распространена в сфере бизнеса и имеет ключевое значение, при этом необходимо обеспечивать ее точность, доступность, безопасность и надежность. Благодаря последним технологическим достижениям можно обеспечивать соответствие этим требованиям. С помощью компьютерных систем (аппаратное и программное обеспечение) можно в определенной степени получать точную, доступную, безопасную и надежную регистрацию записей о транзакции. Благодаря ряду аспектов регистрации записей о транзакции на основе компьютера получают как новые преимущества, так и недостатки по сравнению с более старыми традиционными способами письменной регистрации записей в журнале.
[0015]
Настоящее описание относится к системам и способам для обеспечения неизменяемых записей. Варианты осуществления настоящего описания могут включать в себя распределенные динамически изменяющиеся машины состояний. Настоящее описание может включать в себя системы и способы для обеспечения доказуемого порядка событий в пределах таких машин (и между ними), взаимосвязанных/выполненных с возможностью обмена данными друг с другом. Динамически изменяющаяся машина состояний (например, вычислительная система) может, например, быть использована для регистрации записей о транзакции. Для регистрации записей о транзакции самой по себе требуется достоверность и доказуемая точность, в том числе порядок, в котором транзакционные и иные события происходили и были записаны в вычислительной системе. Сбой оборудования или программного обеспечения, а также действия злоумышленников могут отрицательно сказываться на надежности и доказуемости регистрации записей в вычислительной системе. В настоящем изобретении предложены системы и способы обеспечения надежности и доказуемости регистрации записи для множества вычислительных систем, обменивающихся между собой конкретной транзакционной и хронометражной информацией.
[0016]
Термин «аномалия» относится к изменению состояния на компьютере или в вычислительной системе, отличному от ожиданий владельца/оператора компьютера, например, без ограничений, к фактическому или предположительному несоответствию хронометрирования или же отклонению в регистрации порядка событий, а также фактическому нарушению целостности данных (нарушение целостности данных не обязательно предполагает искажение самих данных, но из-за него возникают сомнения в достоверности и доказуемости данных).
[0017]
Термин «компьютер» относится к электронным устройствам, выполненным с возможностью выполнения машиночитаемых команд; которые пригодны для хранения и/или обработки данных; и которые содержат по меньшей мере процессор, запоминающее устройство, средство ввода и средство вывода. Компьютер может представлять собой полную вычислительную систему или компонент вычислительной системы. Компьютер может быть выполнен с возможностью осуществления одной или более компьютерных функций, а именно приема данных, обработки данных, хранения данных, передачи данных и вывода данных.
[0018]
Термин «вычислительная система» относится к компьютеру или группе компьютеров и аналогичных устройств, обменивающихся данными друг с другом для выполнения одной или более функций компьютера.
[0019]
Термин «сеть» относится к системе или способу и связанному с ними оборудованию межсетевого взаимодействия между вычислительными системами, независимо от топологии, протокола, операционной системы или геофизического местоположения. В частности, сеть в контексте настоящего документа включает в себя мультиплексную сеть, обеспечивающую многонаправленный синхронный и асинхронный обмен данными между узлами, причем один узел представляет одну вычислительную систему или конкретную группу вычислительных систем, и при этом один узел может быть одновременно обмениваться данными со множеством других узлов, и причем множество узлов могут одновременно обмениваться данными со множеством узлов.
[0020]
Термин «блокчейн» относится к системе или способу, в которой или в соответствии с которым данные содержатся в логическом блоке, различные блоки данных логически организованы в относительную упорядоченную по времени последовательность, а элемент данных каждого блока содержит маркер, идентифицирующий и логически связывающий блок с непосредственно предшествующим блоком.
[0021]
Термин «сеть блокчейна» относится к группе из по меньшей мере двух блокчейнов, которые обмениваются друг с другом некоторым количеством конкретных данных, благодаря чему каждый блокчейн в сети блокчейна обеспечивает некоторую степень доказательства достоверности и доказательства выполнения работы для каждой другого блокчейна в пределах сети блокчейна. Конкретные данные, которыми они обмениваются, могут содержать блоки блокчейна. Сеть блокчейна может быть реализована с применением криптографии с использованием односторонних функций, включающей в себя перекрестную мерклизацию, как описано в данном документе.
[0022]
Термин «основной блокчейн», как правило, относится к блокчейну, функционирующему в качестве ключевого элемента; однако в контексте настоящего описания основной блокчейн представляет собой типовой блокчейн, рассматриваемый в настоящем документе, как если бы указанный типовой блокчейн функционировал как ключевой элемент считывающего устройства. Кроме того, для целей настоящего описания типовой основной блокчейн участвует в сети блокчейна.
[0023]
Термин «участвующий соседний блокчейн» относится к блокчейну, участвующему в сети блокчейна и не являющемуся основным блокчейном, но участвующему в той же сети блокчейна, что и основной блокчейн. Каждый из блокчейнов, будь то основной блокчейн или участвующий соседний блокчейн, представляет собой участвующий блокчейн.
[0024]
Термин «блок» относится к элементной единице блокчейна, а также относится к группе данных, логически объединенных друг с другом, и может включать в себя различные данные фиксированных типов и размеров, а также данные нефиксированных типов и размеров. Другими словами, блок может содержать, например, без ограничений, (1) идентификатор версии, (2) идентификатор блока, (3) случайный код, (4) дайджест, (5) родительский дайджест, (6) метку времени (TS) и (7) данные транзакций. Каждый из элементов (1)-(6) может относиться к конкретному типу данных и иметь конкретный размер, а элемент (7) может содержать совокупность данных различных типов и/или с различной длиной. Каждый блок может содержать маркер (например, родительский хеш), который идентифицирует непосредственно предшествующий блок в блокчейне, членом которого является блок.
[0025]
Proceedings of the American Mathematical Society
Термин «набор» относится к частично упорядоченному набору или ч. у. набору, как обсуждалось в научной статье Deshpande, Jayant V. (1968) «On Continuity of a Partial Order» , 19 (2): 383-386. Doi:10.1-9-/S0002-9939-1968-0236071-7, которая полностью включена в настоящий документ посредством ссылки.
[0026]
SHA представляет собой защищенный алгоритм хеширования. SHA представляет собой одностороннюю криптографическую функцию или набор функций, принимающих в качестве входных данных строку, которая может иметь переменную длину и создавать выходные данные фиксированной длины. Задача SHA заключается в создании выходной строки, из которой не может быть получена входная строка. Для целей настоящего описания ссылки на SHA относятся к реализации семейства SHA-2, известной как SHA256, соответствующей (или удовлетворяющей) стандарту Агентства национальной безопасности США, опубликованному в публикации 180-4 Федеральных стандартов обработки информации (FIPS) Национального института стандартов и технологий (NIST). SHA256 может принимать входную строку переменной длины до 1,844e19 символов (свыше 2 000 000 терабайт) и создавать 256-разрядную (32-байтовую) выходную строку. По меньшей мере в некоторых вариантах реализации SHA256 возможны прием входной строки (нуль) и генерация выходной строки. Выходную строку SHA256 (или другого алгоритма SHA) называют дайджестом. Термин «хеш» может быть использован взаимозаменяемо с термином «дайджест». В некоторых вариантах осуществления настоящего описания могут быть использованы другие подходящие защищенные криптографические алгоритмы хеширования.
[0027]
256
Дайджест представляет собой результат защищенного алгоритма хеширования. В SHA256 дайджест имеет длину 256 бит или 32 байта. Дайджест, также известный как хеш, имеет фиксированную длину 256 бит; таким образом, SHA256 может создавать до 2 отдельных дайджестов (хешей). Представление дайджеста может варьироваться по длине в зависимости от способа кодирования в вычислительной системе. Например, шестнадцатеричная вычислительная система может представлять дайджест в виде 32-символьной строки.
[0028]
Термин «двойной хеш» или «двойное хеширование» относится к «хешированию хеша» или созданию дайджеста, а затем использованию этого дайджеста в качестве входной строки или части входной строки для другой итерации хеширования для создания нового дайджеста. Для второй итерации выходной дайджест первой итерации может быть объединен с другим дайджестом, например путем конкатенации, а комбинация двух дайджестов формирует входное значение для второй итерации хеширования. Если другой дайджест недоступен, первый выходной дайджест может быть продублирован с оригиналом, а продублированные дайджесты могут быть объединены с образованием входных данных для второй итерации хеширования.
[0029]
Термин «мерклизация» (в некоторых публикациях «меркелизация») относится к процессу, при котором каждую группу строк данных обрабатывают с помощью алгоритма SHA и каждый полученный дайджест объединяют в пару с другим полученным подобным образом дайджестом, например путем конкатенации, а затем снова обрабатывают с помощью SHA для создания нового дайджеста, причем указанную процедуру повторяют, пока не останется только один дайджест. Если в любой итерации существует нечетное количество дайджестов (более одного (1)), один из дайджестов дублируют, а дубликат конкатенируют с его оригиналом и затем обрабатывают с помощью SHA. Один оставшийся дайджест может упоминаться как корень дерева Меркла для конкретной группы строк данных. Аналогичным образом термин «мерклизированный» относится к данным, которые были обработаны путем мерклизации.
[0030]
Термин «перекрестная мерклизация» относится к мерклизации, при которой данные из одного блокчейна (в форме дайджеста) мерклизируют с данными другого блокчейна также в форме дайджеста. В сети блокчейна каждый участвующий блокчейн вносит свой вклад в дайджест, связывающий последний блок блокчейна с каждым другим участвующим блокчейном, а каждый участвующий блокчейн мерклизирует друг с другом все дайджесты, принятые для текущего блока. Перекрестная мерклизация также подробно описана ниже.
[0031]
Термин «системное время» относится ко времени подсистемы хронометрирования вычислительной системы. Общепринятой практикой является конфигурирование подсистемы хронометрирования вычислительной системы для ее периодической синхронизации с удаленной системой хронометрирования (например, сервером времени, находящимся в ведении Национального института стандартов и технологий (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.
[0033]
Термин «коллизия» относится либо к идентичным дайджестам, созданным SHA (коллизия дайджестов), либо к одновременному возникновению двух или более блоков (коллизия блоков). Коллизия дайджестов, хотя и маловероятна, теоретически возможна из-за различных входных строк. Коллизия дайджестов может возникнуть вследствие того, что множество вычислительных систем создают идентичные дайджесты одновременно или почти одновременно друг с другом и при этом, например, участвуют в сети блокчейна. Коллизия блоков может произойти, когда две (или более) вычислительные системы, участвующие в сети блокчейна, создают, и/или доставляют, и/или принимают блоки одновременно или с идентичными метками времени. С помощью методов блокчейновых систем минимизируют коллизии каждого из указанных типов с возможностью предотвращения сбоя или блокирования блокчейна (-ов). Например, вычислительная система, принимающая блок из другого блокчейна, имеющего метку времени, идентичную метке времени последнего собственного блока принимающей вычислительной системы, может просто игнорировать метку времени входного блока и обрабатывать входной блок как поступающий непосредственно после последнего собственного блока. Аналогичным образом участвующая в блокчейне вычислительная система, принимающая блок из другого блокчейна одновременно с созданием собственного блока, может быть выполнена с возможностью обработки входящего блока как поступившего после создания нового собственного блока, независимо от метки времени входящего блока. Участвующая в блокчейне вычислительная система, принимающая блок от каждой из двух (или более) участвующих вычислительных систем, может быть выполнена с возможностью упорядочивания множества входящих блоков на основании одной из меток времени каждого блока, длины (также называемой высотой) каждого отправляющего блокчейна, присвоения идентификатора блокчейна и т. д.
[0034]
256
x
Термин «устойчивость к коллизиям» относится к малой вероятности коллизии дайджестов для различных входных строк (поскольку устранение коллизии блоков зависит лишь от выбора способа упорядочивания блоков, устойчивость к коллизиям блоков не является серьезной проблемой). Поскольку алгоритм SHA256 способен создавать до 2 отдельных дайджестов, устойчивость к коллизиям может считаться достаточно высокой. В некоторых вычислительных приложениях устойчивость SHA256 к коллизиям может теоретически снижаться за счет искусственного введения одного или более ограничений на допустимые результирующие дайджесты. Другими словами, в конкретном приложении может быть применено правило  последовательных битов, имеющих значение 0, за счет чего можно эффективно уменьшать количество отдельных дайджестов, которые конкретное приложение может принимать в качестве выходных данных от алгоритма SHA256. Поскольку SHA является односторонней криптографической функцией, такое правило ограничения выходных данных не может быть применено в качестве входного параметра для SHA256, а лишь в качестве реализации последующей обработки, предполагающей итеративное создание дайджестов с различными входными строками, пока не будет создан дайджест, удовлетворяющий правилу. По меньшей мере в некоторых вариантах реализации блокчейна изменение входной строки может быть выполнено путем добавления случайного кода к началу или концу входной строки, а также приращения случайного кода, или же произвольной генерации, или получения иным способом произвольного нового случайного кода при каждой итерации SHA, пока не будет создан дайджест, удовлетворяющий правилу.
[0035]
Термин «разрешение коллизий» относится к системе (-ам) или способу (-ам) для исключения всех идентичных дайджестов с возможностью отбрасывания каждого исключенного дайджеста. При отбрасывании дайджеста блок, элементом которого является отброшенный дайджест, может также быть отброшен.
[0036]
Термин «случайный код» относится к произвольному целому числу (например, 32-разрядному целому числу). Случайный код может представлять собой элемент из ряда случайных кодов. В некоторых вариантах осуществления случайный код генерируется случайным образом или генерируется псевдослучайным образом для каждой итерации использования. В других вариантах осуществления случайный код может быть увеличен до следующего значения для каждой последующей итерации использования. Начальное значение случайного кода (случайный код для первой итерации цикла генерации блока) может быть выбрано, например, без ограничений, с помощью алгоритма, генерирующего 32-битовое целое число, или может представлять собой заданное протоколом начальное значение. Следующий случайный код (последующая итерация в том же цикле генерации блока) может быть определен с помощью алгоритма, который заново генерирует 32-битовое целое число, или может представлять собой заданное протоколом увеличение предыдущего использованного случайного кода. В одном варианте осуществления случайный код может генерироваться заново для каждой итерации независимо от предыдущего значения случайного кода.
[0037]
x
x
Термин «доказательство выполнения работы» относится к дайджесту, удовлетворяющему правилу ограничения выходных данных, устанавливающему требование к  последовательным битам со значением 0. Поскольку SHA не принимает параметр, определяющий выходные данные, дайджест можно сравнивать с правилом после генерации. Дайджест, удовлетворяющий правилу, создают путем итеративной генерации дайджестов, пока не будет получен удовлетворяющий правилу дайджест. Удовлетворяющий правилу дайджест может служить свидетельством («доказательством») выполнения некоторого объема компьютерной обработки («работы») для создания дайджеста. Для правила ограничения выходных данных могут аналогичным образом потребоваться  последовательных битов, имеющих значение 1, или определенной подстроки конкретной длины с конкретным порядком 0 и 1. Требование лучшего (более продолжительного) доказательства выполнения работы может обусловить более низкую устойчивость к коллизиям.
[0038]
Термин «целевая сложность» относится к элементу, который определяет конкретное ограничение для создания дайджеста с доказательством выполнения работы. Например, без ограничений, целевая сложность может указывать на то, что дайджест должен иметь десять (10) последовательных 0-битов, чтобы считаться дайджестом, имеющим доказательство выполнения работы.
[0039]
Термин «транзакция», как правило, может относиться к (а) обмену, например обмену товаров/услуг на товары/услуги, товаров/услуг на оплату, обмену долговых обязательств, обмену обязательств по срокам поставки, обмену денежных обязательств и т. д.; и к (b) компьютерной функции, посредством которой регистрируют или иным образом обрабатывают транзакцию типа (a); и к (c) компьютерной функции, посредством которой регистрируют транзакцию типа (b). В качестве примера транзакция типа (a) может представлять собой продажу виджета за денежные средства; связанная с ней транзакция типа (b) может представлять собой уменьшение количества виджетов на складе в результате указанной продажи; а связанная с ними транзакция типа (c) может представлять собой регистрацию в журнале компьютера информации (например, идентификационных данных пользователя, времени входа в систему, доступа к программному обеспечению товарных запасов, вычитания проданного виджета и т. д.) об осуществлении доступа, из-за которого стало меньше товара на складе. Транзакции типа (c) могут также включать в себя сведения об установке, изменении или удалении микропрограммного или программного обеспечения, включая размер изображения, цифровую подпись, лицензию, сертификат и т. д.
[0040]
Следует понимать, что размещение и конфигурация компонентов вариантов осуществления, по существу описанных и показанных на фигурах в настоящем документе, могут иметь широкое разнообразие разных конфигураций. Таким образом, последующее более подробное описание различных вариантов осуществления, представленных на фигурах, не предполагает ограничения объема описания, как заявлено, но представляет различные варианты осуществления. Несмотря на то что различные аспекты вариантов осуществления представлены на рисунках, причем, если это конкретно не указано, рисунки не обязательно выполнены в масштабе.
[0041]
Грамматические средства выражения единственного числа можно описать как «один», но без ограничения одним. Например, хотя описание может включать в себя выражение «группа с дайджестом», в этом описании также предполагается, что в указанной группе может быть два или более дайджестов.
[0042]
Если не указано иное, все диапазоны включают в себя обе конечные точки и все числа между конечными точками.
[0043]
В данном описании ссылка на «один вариант осуществления» или «вариант осуществления» означает, что конкретный признак, структура или характеристика, описанные в отношении данного варианта осуществления, включены в по меньшей мере по меньшей мере один вариант осуществления. Таким образом, приведенные в настоящем описании выражения или их вариации не обязательно относятся к одному и тому же варианту осуществления.
[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 блока для блоков, принятых из других блокчейнов (например, участвующих соседних блокчейнов).
[0045]
Блок 10 может включать в себя группу 90 записей в рамках полезной нагрузки 13. Указанная группа записей может содержать записи о транзакции. Записи о транзакции могут содержать информацию, касающуюся транзакции.
[0046]
Заголовок 11 блока 10 может содержать идентификатор блока 12, версию 14 блокчейна, идентификатор 16 блокчейна, метку 18 времени, POWR 20, дайджест 30 блока, целевую сложность 40, случайный код 50 блока, группу 60 вспомогательных дайджестов блока и дайджест 70 (корень дерева Меркла) записи о транзакции блока 10. Полезная нагрузка 13 может содержать группу из 90 записей.
[0047]
Идентификатор 12 блока может представлять собой порядковый идентификатор, указывающий относительный порядок блока 10 в блокчейне, к которому относится блок 10. Идентификатор 14 версии блокчейна может указывать конкретную версию протокола блокчейна, на основании которого работает блокчейн, создавший блок 10. Метка 18 времени может представлять собой индикатор системного времени, получаемый от подсистемы хронометрирования вычислительной системы 1, в которой размещен блокчейн, в котором был создан блок 10. Далее будут описаны POWR 20, дайджест 30 блока, целевая сложность 40 и группа 60 вспомогательных дайджестов блока. Форма и порядок вышеуказанных элементов в блоке 10 могут быть определены протоколом блокчейна, на основании которого работает блокчейн, создавший блок 10.
[0048]
Вычислительная система 1 может представлять собой любую подходящую вычислительную систему, включающую в себя одно или более вычислительных устройств, причем каждое содержит один или более процессоров, один или более машиночитаемых носителей, одно или более электронных запоминающих устройств, одно или более устройств ввода/вывода и/или один или более интерфейсов связи.
[0049]
Порядок элементов 12-90, показанных на ФИГ. 1, приведен для удобства читателя и не является обязательным для конкретного варианта осуществления настоящего описания. Один вариант осуществления настоящего описания может включать в себя больше или меньше элементов, чем описано в настоящем документе.
[0050]
На ФИГ. 2 представлена схема перекрестно-мерклизированной сети блокчейна 100, содержащей три участвующих блокчейна, а именно, основной блокчейн 200, первый участвующий соседний блокчейн 300 и второй участвующий соседний блокчейн 400 в соответствии с вариантом осуществления настоящего описания. Основной блокчейн 200 содержит ряд блоков в соответствии с вариантом осуществления настоящего описания, на основе которого идентифицирован блок 230. Блок 10, изображенный на ФИГ. 1, также показан в контексте сети блокчейна 100 и основного блокчейна 200. Хотя на ФИГ. 2 показаны три участвующих блокчейна 200, 300, 400 сети блокчейна 100, сеть блокчейна согласно настоящему описанию может включать в себя меньше (но по меньшей мере два) или больше участвующих блокчейнов. Кроме того, сеть блокчейна 100 может представлять собой мультиплексную сеть.
[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.
[0052]
P
N
P
N
P
N
Каждый из блоков 230, 330, 430 представлен снизу соответствующих блокчейнов 200, 300, 400, хотя они показаны таким образом исключительно для удобства описания. Каждый из блоков 230, 330, 430 может быть получен с помощью ряда блоков соответствующего блокчейна 200, 300, 400 каждого блока 230, 330, 430. В качестве примера показано, что для блока 230 основного блокчейна 200 следующим блоком является блок 10, за которым следует блок 10, а за блоком 10 далее идет блок 10. Каждый из последующих блоков 10, 10, 10 и т. д. основного блокчейна 200 имеет метку времени, аналогичную метке 218 времени блока 230. Метки времени для каждого последующего блока 10, 10, 10 показаны как регистрируемые последовательно в более поздние моменты времени. В пределах основного блокчейна 200 метки времени, записанные в каждом из последующих блоков, формируют по меньшей мере логический порядок событий в пределах основного блокчейна 200. Другими словами, метка времени каждого блока в пределах основного блокчейна 200 получена на основании системного времени вычислительной системы, в которой сгенерированы блоки.
[0053]
P
P
Аналогичным образом представлены участвующие соседние блокчейны 300, 400, имеющие последовательно расположенные в более поздние моменты времени следующие блоки 330, 430, а в остальном в целом и функционально подобные основному блокчейну 200. Как и последующие метки времени блока основного блокчейна 200, последующие метки времени блока каждого участвующего соседнего блокчейна 300, 400 устанавливают эталонный последовательный неизменяемый порядок в пределах соответствующего блокчейна 300, 400.
[0054]
Основной блокчейн 200 может постоянно присутствовать в вычислительной системе 1, показанной на ФИГ. 1, из которой блокчейн 200 получает значение времени для каждой последующей метки времени блока. Каждый участвующий соседний блокчейн 300, 400 может аналогичным образом постоянно присутствовать в соответствующей отличной вычислительной системе, аналогичной вычислительной системе 1 основного блокчейна 200. Каждый участвующий соседний блокчейн 300, 400 может определять значение времени для каждой последующей метки времени блока соответствующего блокчейна 300, 400 на основании системного времени вычислительной системы (аналогично вычислительной системе 1 блокчейна 200), в которой постоянно присутствует соответствующий участвующий соседний блокчейн 300, 400. Как будет очевидно для специалиста в данной области техники, каждая из вычислительных систем (аналогичная вычислительной системе 1 основного блокчейна 200) может иметь различные параметры и/или механизмы обеспечения системного времени.
[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 ниже.
[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), или любую другую форму, соответствующую варианту осуществления протокола блокчейна в соответствии с настоящим описанием.
[0057]
Группа 60 вспомогательных дайджестов блока включает в себя самые последние дайджесты 66, 64, 62 блока из каждого блокчейна 200, 300, 400, участвующего в сети блокчейна 100. В примере, показанном на ФИГ. 1, группа 60 дайджестов блока содержит дайджест 62 блока самого последнего блока из первого участвующего соседнего блокчейна 300, дайджест 64 блока самого последнего блока из второго участвующего соседнего блокчейна 400 и дайджест 66 блока самого последнего блока в основном блокчейне 200 непосредственно перед блоком 10.
[0058]
P
P
N
N
P
P
P
P
Дайджест 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 блока, который был создан таким же образом, как и часть самого последнего блока 10 перед основным блокчейном 200 и в его пределах. Дайджест 66 блока может соединять блок 10 с самым последним ранее созданным блоком 10 в пределах основного блокчейна 200. Аналогичным образом протокол блокчейна 200 блока 10 может обеспечивать передачу дайджеста 30 блока в непосредственно следующий за ним блок 10 в основном блокчейне 200. Таким образом, блок 10, следующий за блоком 10, связан с блоком 10, а блок 10 связан с самым последним блоком 10, предшествующим блоку 10. Такая взаимосвязь блоков характерна для всего основного блокчейна 200 и выполнена с возможностью обеспечения связи каждого блока с непосредственно предшествующим ему и непосредственно следующим за ним блоками. Аналогичным образом дайджест 62 блока может быть передан от участвующего соседнего блокчейна 300 к основному блокчейну 200, а дайджест 64 блока может быть передан от участвующего соседнего блокчейна 400 к основному блокчейну 200. Таким образом можно связать блок 10 с непосредственно предшествующим блоком 330, 430 в пределах каждого участвующего соседнего блокчейна 300, 400 аналогично установлению связи блока 10 с непосредственно предшествующим блоком 10 в пределах основного блокчейна 200.
[0059]
N
N
P
P
Протокол блокчейна 200 блока 10 может также обеспечивать передачу 222, 224 дайджеста 30 блока в каждый участвующий соседний блокчейн 300, 400 с возможностью связывания непосредственно следующего за ним блока 330, 430 каждого участвующего соседнего блокчейна 300, 400 с блоком 10 основного блокчейна 200. Таким образом, каждый из участвующих блокчейнов 200, 300, 400 связан с каждым другим из участвующих блокчейнов 200, 300, 400. В частности, основной блокчейн 200 непосредственно связан с каждым участвующим соседним блокчейном 300, 400 за счет непосредственного приема от каждого участвующего соседнего блокчейна 300, 400 предшествующих дайджестов 62, 64 блока для блоков 330, 430; а также отправки дайджеста 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.
[0060]
P
P
P
P
P
P
P
P
На ФИГ. 3A представлена частичная блок-схема, иллюстрирующая перекрестную мерклизацию блоков 330 и 430 участвующих соседних блокчейнов 300, 400 с основным блокчейном 200, показанным на ФИГ. 1-2, в соответствии с вариантом осуществления настоящего описания. На ФИГ. 3B представлена частичная блок-схема, иллюстрирующая создание блока 10. Как показано на ФИГ. 3A и 3B, в основном блокчейне 200 блоку 10 может непосредственно предшествовать блок 10. Дайджест 66 блока 10 может быть передан 701 непосредственно в блок 10. Дайджест 66 блока может выполнять функцию ссылки на предшествующий блок 10, причем блок непосредственно предшествует блоку 10. Самый последний предшествующий блок 330 участвующего соседнего блокчейна 300 может быть передан (см. позицию 324 на ФИГ. 2) в основной блокчейн 200. Дайджест 62 блока 330 может быть извлечен и передан 702 непосредственно в блок 10. Аналогичным образом самый последний предшествующий блок 430 участвующего соседнего блокчейна 400 может быть передан (см. позицию 422 на ФИГ. 2) в основной блокчейн 200, а дайджест 64 блока извлекают и передают 703 непосредственно в блок 10.
[0061]
P
P
P
P
Целевая сложность 40 может также быть извлечена 704 из предшествующего блока 10. В одном варианте осуществления целевая сложность 40 может также быть извлечена из блока 330, 430 участвующего соседнего блокчейна 300, 400 для сравнения с целевой сложностью 40 предшествующего блока 10 в качестве дополнительной проверки достоверности перед включением в блок 10 данных от участвующего соседнего блокчейна 300, 400.
[0062]
P
P
N
N
N
P
Дайджест 62 блока из блока 330 и дайджест 64 блока из блока 430 могут быть конкатенированы 710, 711 друг с другом с образованием входной строки 29. Порядок участия в процессе конкатенации может быть установлен в качестве требования конкретного варианта реализации протокола блокчейна сети блокчейна 100. Затем входная строка 29 может быть передана 712 и обработана с применением SHA 600 для генерации 713 дайджеста 30 блока для блока 10. Дайджест 30 блока может быть передан 764 (посредством R4) в блок 10. На более позднем этапе, когда основной блокчейн 200 генерирует следующий блок 10, дайджест 30 блока может быть передан в качестве элемента блока 10 в блок 10 и может выполнять функцию ссылки от блока 10 обратно к блоку 10, которая включает в себя дайджест 66 блока в качестве ссылки на предшествующий блок 10. Данная процедура включения дайджеста блока каждого предшествующего блока в следующий блок обеспечивает образование цепочки ссылочных связей между всеми блоками блокчейна с возможностью создания неизменяемой записи порядка блоков в пределах блокчейна. Указанный неизменяемый порядок блоков в пределах блокчейна по существу обеспечивает неизменяемую запись данных, включенных в каждый из блоков конкретного блокчейна, и, следовательно, каждого участвующего блокчейна в сети блокчейна 100. Кроме того, неизменяемость не связана с какими-либо требованиями в отношении отдельного блокчейна для согласованности участвующих узлов в отношении добавления блока.
[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 представляет собой двойной хеш.
[0064]
Целевая сложность 40 представлена в настоящем примере в виде шестнадцатеричного значения; однако для настоящего описания не требуется ни явное выражение 0xFFFF0000, ни шестнадцатеричный формат. Целевая сложность 40 может быть выражена в форме, которая передает определенное количество последовательных битов, имеющих значение «off» (или байтов, имеющих значение «0»), возникающих либо на большем, либо на меньшем конце результирующего дайджеста для квалификации в качестве POW, в каждый блокчейн 200, 300, 400 сети блокчейна 100. В другом варианте осуществления целевая сложность 40 может быть структурирована таким образом, чтобы требовалось определенное количество последовательных битов, имеющих значение «on» (или байтов, имеющих значение «1»). В другом варианте осуществления целевая сложность 40 может быть определена определенной последовательностью битов «off» и «on» (байтов «0» и «1»), имеющихся на определенном участке дайджеста-кандидата 32 POW.
[0065]
1
Если дайджест-кандидат 32 POW не соответствует 552 целевой сложности 40, происходит отбрасывание 590 дайджеста-кандидата 32 POW и случайного кода-кандидата 510, и блокчейн возвращает R к источнику 500 случайного кода. Происходит выбор нового случайного кода-кандидата 510. Способ выбора нового случайного кода-кандидата 510 может быть определен в протоколе блокчейна участвующего блокчейна 200, 300, 400 и может быть определен в протоколе сети блокчейна 100 как, например, без ограничений, постоянное увеличение значения случайного кода при каждой итерации или постоянное уменьшение при каждой итерации. Новый случайный код-кандидат 510 может быть конкатенирован с дайджестом 30 блока, затем обработан с применением SHA 600, затем сравнен 550 на соответствие целевой сложности 40. Эти этапы могут включать в себя повторение итераций с новым случайным кодом-кандидатом 510 при каждой итерации до получения дайджест-кандидата 32 POW, удовлетворяющего целевой сложности 40.
[0066]
2
1
Если дайджест-кандидат 32 POW удовлетворяет 550 целевой сложности 40, происходит передача 558 дайджеста-кандидата 32 POW для выполнения краткого теста 560, чтобы определить, требуются ли для завершения POWR 20 блока 10 другие дайджесты POW. Поскольку текущий дайджест-кандидат 32 POW получен на основе текущего блока 10, требуется по меньшей мере один дополнительный дайджест POW. В данном примере необходимы два дополнительных дайджеста POW. Из-за этого тест 560 «последнего дайджеста» завершается с ошибкой 562. Текущий дайджест-кандидат 32 POW может быть помещен 760 в запоминающее устройство 563 для временного хранения данных и блокчейн 200 возвращает R текущему случайному коду-кандидату 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 возвращает R для выбора нового случайного кода-кандидата 510.
[0067]
1
2
Если дайджест-кандидат 22 POW удовлетворяет 550 целевой сложности 40, дайджест-кандидат 22 POW может быть сохранен 760 в запоминающем устройстве 563 для временного хранения данных вместе с предшествующим дайджестом-кандидатом 32 POW. Блокчейн продолжает выполнять итеративный обход R, R случайного кода, пока не будет сгенерирован дайджест-кандидат 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.
[0068]
P
P
P
После создания блока 10 основной блокчейн 200 может передавать блок 10 каждому из участвующих соседних блокчейнов 300, 400. Блок 10 включает в себя дайджесты 62 и 64 блока, которые блокчейн 200 принимает от последнего предшествующего блока 330, 430 каждого из соответствующих участвующих соседних блокчейнов 300, 400. Другими словами, элемент блока 10 представляет собой дайджест 62 из последнего предшествующего блока 330 первого участвующего соседнего блокчейна 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.
[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 можно будет выполнить реконструкцию события аномалии, а также выполнить коррекцию и уменьшить отрицательные последствия.
[0070]
Вышеописанный процесс перекрестной мерклизации можно также назвать взаимным перекрестным интеллектуальным анализом, поскольку каждый участвующий блокчейн 200, 300, 400 создает блоки одновременно и независимо от каждого из других участвующих блокчейнов 200, 300, 400 и при этом принимает любые блоки, которые могут быть представлены каждым из участвующих блокчейнов 200, 300, 400.
[0071]
На ФИГ. 4 представлен график 150, иллюстрирующий геометрически прогрессирующую степень неизменяемости, которая может быть обеспечена в сети блокчейна, такой как сеть блокчейна 100, изображенная на ФИГ. 2-3B, в соответствии с вариантом осуществления настоящего описания, а также для несетевого блокчейна. В настоящем примере степень неизменяемости зависит местоположения итерационно вложенного начального дайджеста блока в пределах заданного порожденного блока. Другими словами, степень неизменяемости начального блока равна 1 в пределах начального блока, 2 после второго блока, 4 после третьего блока, 8 после четвертого блока и т. д. В сетевом блокчейне степень неизменяемости начального блока возрастает гораздо быстрее, поскольку второй блок конкретного блокчейна имеет начальный блок, вложенный путем перекрестной мерклизации в участвующие соседние блокчейны. Например, в сети блокчейна с тремя участвующими блокчейнами, такими как основной блокчейн 200, показанный на ФИГ. 2-3B, начальный блок имеет степень неизменяемости 6 после второго блока, 21 после третьего блока, 44 после третьего блока и т. д. Благодаря множественному вложению, в частности горизонтальному вложению, дополнительно повышается неизменяемость.
[0072]
90
Вертикальная шкала 152 графика 150 представляет степень неизменяемости, которая может быть достигнута в различных вариантах реализации настоящего описания. Горизонтальная шкала 154 графика 150 представляет множество блоков, созданных в различных вариантах реализации. Следует отметить, что вертикальная шкала 152 графика 150 наглядно демонстрирует увеличение неизменяемости на три порядка величины для каждой метки шкалы таким образом, что график 150 охватывает по вертикали диапазон значений от 0 до 10 (1, а затем 91 0). В частности, график 150 отражает, без ограничений, общую тенденцию к геометрической прогрессии неизменяемости.
[0073]
14
23
8
17
59
Линия 160 данных представляет приблизительную степень неизменяемости несетевого блокчейна для первых 100 созданных блоков. Линия 162 данных представляет приблизительную степень неизменяемости для блокчейна, участвующего в сети блокчейна из трех участвующих блокчейнов, аналогично основному блокчейну 200, показанному на ФИГ. 2-3B. Линии 164 и 166 данных представляют степень неизменяемости блокчейна в сети блокчейна с пятью и восемью участвующими блокчейнами соответственно. Из-за отображения вертикальной шкалы 152 в порядке величины линии 160, 162, 164, 166 данных, по-видимому, изображают только линейное отклонение. В качестве справочной информации: степень неизменяемости линии 160 данных (представляющей несетевой блокчейн) после создания 50-го блока составляет 2,815×10, а степень неизменяемости линии 162 данных (которая представляет сеть блокчейна из трех блокчейнов) составляет 1,994×10, или в 7,084×10 раз больше, чем для несетевого блокчейна. После 100 блоков блокчейн, представленный линией 162 данных, имеет степень неизменяемости, которая в 4,517×10 раз больше степени неизменяемости несетевого блокчейна, представленного линией 160 данных. Блокчейн в сети из восьми блокчейнов, представленный линией 166 данных, имеет степень неизменяемости приблизительно в 2,152×10 раз большую, чем несетевой блокчейн после создания 100 блоков.
[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, которая может представлять собой мультиплексную сеть.
[0075]
Журнал 280 событий содержит группу записей о событиях, представленных на ФИГ. 5 рядом меток на схеме журнала 280 событий. Запись 284 о событии показана в виде увеличенной метки и может представлять собой запись о событии в журнале 280 событий, регистрирующую первоначальную инициализацию вычислительной системы 1. Запись 284 о событии может содержать начальный идентификатор 286 последовательности (идентификатор последовательности), который в данном случае показан как «0000» для представления первой и начальной записи о событии в журнале 280 событий. Запись 284 о событии может также содержать идентификатор 288, представляющий логического владельца события. Для записи 284 о событии идентификатор 288 показан как «0000» для представления, например, без ограничений, главной операционной системы вычислительной системы 1. Каждая запись о событии может также содержать реализуемый элемент, как описано ниже.
[0076]
Каждая запись о событии (представленная рядом меток в журнале 280 событий) может быть внесена в журнал 280 событий в виде отдельных последовательных рядов. Каждая запись о событии в журнале 280 событий может включать в себя метку времени (не показана), и наличие такой метки в записи о событии может быть предпочтительным для оператора компьютера (не показан), выполняющего ручную проверку журнала 280 событий. Записи в журнале 280 событий и сам журнал 280 событий могут не зависеть от времени. Идентификатор каждой записи о событии, следующей за начальной записью о событии с идентификатором 286 последовательности «0000», может быть увеличен на 1. Другими словами, запись о событии, непосредственно следующая за начальной записью 284 о событии, может иметь идентификатор последовательности: «0001».
[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 событий.
[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.
[0079]
После создания блоков 240 и 340 второй участвующий соседний блокчейн 400 может генерировать блок 440. Второй участвующий соседний блокчейн 400 передает 441 блок 440 (или криптографический хеш блока 440 (например, хеш POW, хеш блока и/или хеш записей) и любой соответствующий случайный код) в основной блокчейн 200. Основной блокчейн 200 создает 442 запись 444 о событии в журнале 280 событий. Запись 444 о событии содержит идентификатор 446 последовательности «000b» и идентификатор 448 события «C02». Идентификатор 446 последовательности «000b» указывает на то, что запись 444 о событии является двенадцатой записью о событии в журнале событий.
[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.
[0081]
Хотя в настоящем примере представлен журнал 280 событий, содержащий только записи, связанные с блоками блокчейна, в другом варианте осуществления журнал событий может также включать в себя другие записи. Например, журнал событий может включать в себя записи о событиях, соответствующих любым из разных событий, зарегистрированных в блокчейнах, включая реализуемые события, которые могут приводить к выполнению действия или иным образом вызывать его. Аналогичным образом значения «A02», «B02» и «C02» идентификаторов 248, 348, 448 событий выполнены с возможностью обеспечения удобных ссылок и необязательно отражают конкретное событие или значение идентификатора события в каждой соответствующей записи 244, 344, 444 о событии. Другими словами, каждая связанная с блоком блокчейна запись 244, 344, 444 о событии может содержать множество элементов данных, относящихся к конкретному соответствующему блоку блокчейна, например, без ограничений, идентификатор блока, дайджест блока, метку времени блока, идентификатор блокчейна и т. д.
[0082]
На ФИГ. 5 представлен журнал 280 событий вычислительной системы 1, в которой размещен основной блокчейн 200. Каждый участвующий блокчейн 200, 300, 400 и т. д. может аналогичным образом иметь журнал 280 событий, причем каждый такой журнал событий независим от каждого другого журнала событий.
[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. Разница во времени для двух идущих подряд или почти идущих подряд записей в журнале событий, скорее всего, не имеет значения, учитывая, что векторные часы (описанные ниже) выполнены с возможностью исправления любой ошибки порядка записей о событиях.
[0084]
На ФИГ. 6 представлена подробная частичная блок-схема операций вычислительной системы 1, описанной по ФИГ. 5, в соответствии с вариантом осуществления настоящего описания. Зона детализации на ФИГ. 6 соответствует области журнала 280 событий, относящейся к блокам 240, 340, 440, описанным выше, и соответствующей осуществлению валидации с жесткой привязкой ко времени в соответствии с вариантом осуществления настоящего описания. Основной блокчейн 200 показан в виде логического процесса в вычислительной системе 1. Вычислительная система 1 содержит все логические процессы для управления основным блокчейном 200 (или, другими словами, в ней реализован протокол основного блокчейна 200) и дополнительно содержит журнал 280 событий и процесс 900 проверки хронологического соответствия. Кроме того, показаны первый и второй участвующие соседние блокчейны 300, 400.
[0085]
Процесс 900 проверки хронологического соответствия происходит по существу независимо от времени, поскольку процесс 900 проверки хронологического соответствия не ограничен и им не управляет подсистема времени вычислительной системы 1. Модуль процесса 900 проверки хронологического соответствия отправляет и принимает данные и запросы для обеспечения и регистрации сравнения группы временных меток, как дополнительно описано ниже.
[0086]
Как показано на фигуре, основной блокчейн 200 генерирует блок 240 блокчейна. Блок 240 может включать в себя метку времени блока (не показана, но см., например, позицию 18 на ФИГ. 1), указывающую момент системного времени, в который был создан блок 240. Основной блокчейн 200 может обмениваться 910 данными с модулем процесса 900 проверки хронологического соответствия вычислительной системы 1. В частности, основной блокчейн 200 может обмениваться 910 с модулем процесса 900 проверки хронологического соответствия множеством данных, относящихся к вновь созданному блоку 240, таких как, например, идентификатор блока, метка времени блока, дайджест блока и т. д. Процесс 900 проверки хронологического соответствия может электронным образом взаимодействовать 922 с первым сервером 920 времени посредством отправки на указанный сервер времени подписанного сообщения, включающего в себя по меньшей мере некоторые из предоставляемых данных, относящихся к вновь созданному блоку 240, и запроса на первом сервере 920 времени отправки ответа с подписанным сертификатом времени (не показано). Способ запроса текущего времени от первого сервера 920 времени может представлять собой любой подходящий и стандартизированный способ или протокол, пригодный для получения данных о текущем времени от общего сервера времени, такой как сетевой протокол синхронизации времени с асимметричным ключом. Первый сервер 920 времени может передавать ответ 922 посредством той же среды передачи данных, и отправлять обратно подписанное сообщение, и включать в себя подписанный сертификат текущего времени на первом сервере 920 времени.
[0087]
Процесс 900 проверки хронологического соответствия после приема подписанного сообщения, возвращенного от первого сервера 920 времени вместе с подписанным сертификатом времени, может повторять этот процесс, посредством отправления 932 подписанного сообщения на второй сервер 930 времени вместе с запросом на прием подписанного сертификата времени (не показано). Второй сервер 930 времени может возвращать подписанное сообщение, относящееся к вновь созданному блоку 240, вместе с подписанным сертификатом времени (не показано), указывающим текущее время на втором сервере 930 времени, посредством той же среды передачи данных. Затем с помощью процесса 900 проверки хронологического соответствия можно сравнивать время, сообщенное первым сервером 920 времени и вторым сервером 930 времени, для определения, соответствует ли отклонение во времени допустимым пределам, установленным в протоколе блокчейна. Если это отклонение превышает ограничение, установленное в протоколе блокчейна, с помощью процесса 900 проверки хронологического соответствия можно повторно отправлять запросы на один или оба сервера 920, 930 времени или можно отправлять запросы на один или более дополнительных серверов времени, аналогичных серверам 920, 930 времени.
[0088]
Если отклонение между значениями времени, сообщенными первым и вторым серверами 920, 930 времени, находится в допустимых пределах согласно протоколу блокчейна, процесс 900 проверки хронологического соответствия может затем сравнивать метку 18 времени блока с подписанными сертификатами времени, принятыми от первого и второго серверов 920, 930 времени. Если разность между меткой 18 времени блока и подписанными сертификатами времени от первого и второго серверов 920, 930 времени находится в пределах допуска для отклонения времени, установленного в протоколе блокчейна, процесс 900 проверки хронологического соответствия отправляет в основной блокчейн 900 подписанное сообщение, содержащее данные, относящиеся к вновь созданному блоку 240, вместе с подписанными сертификатами времени и сигнал, указывающий успешную валидацию с привязкой ко времени. В другом варианте осуществления процесс 900 проверки хронологического соответствия может непосредственно инициировать 242 создание записи 244 о событии в журнале 280 событий. В другом варианте осуществления процесс 900 проверки хронологического соответствия может инициировать другой процесс, осуществляемый в вычислительной системе 1, для инициирования 242 создания записи 244 о событии.
[0089]
Запись 244 о событии в журнале 280 событий, относящаяся (или логически относящаяся) к вновь созданному блоку 240, может содержать идентификатор 246 последовательности, идентификатор 248 события, указывающий логического владельца записи 244 о событии, метку 249 времени блока (аналогичную метке 18 времени блока, показанной на ФИГ. 1) и значения времени, записанные в подписанных сертификатах времени, принятых от первого и второго серверов 920, 930 времени.
[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.
[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.
[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, которая может представлять собой мультиплексную сеть.
[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 событий в том порядке, в котором они происходят, и независимо от времени.
[0094]
Третий блокчейн для целей настоящего примера аналогично второму участвующему соседнему блокчейну, изображенному на ФИГ. 2, может инициировать и генерировать запись 821 о событии инициирования в журнале 822 событий. Запись 822 о событии инициирования может быть передана 834 и вставлена в журнал 801 событий. Третий блокчейн может генерировать первый блок и запись 823 о событии создания первого блока. Запись 823 о событии создания первого блока может быть передана 836 и вставлена в журнал 801 событий.
[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 событий.
[0096]
Аналогичным образом журнал 821 событий может достигать добавленной точки 840. Журнал 821 событий может запрашивать и принимать все записи о событии, содержащиеся в журнале 801 событий, и может вставлять 842 записи о событии, принятые из журнала 801 событий так, что журнал 821 событий может содержать последовательность всех записей о событии из журнала событий, начинающихся с начальной записи 802 о событии из журнала 801 событий, в том порядке, в котором происходили события, представленные записями 802, 803, 804, 812, 813, 822, 823 о событии.
[0097]
Поскольку каждый блокчейн в сети блокчейнов создает новый блок, любая последующая запись о событии блока может быть внесена в журнал событий связанного блокчейна и может быть передана в журналы событий других блокчейнов в сети блокчейна. В качестве примера, не имеющего ограничительного характера, любая последующая запись 804 о событии блока может быть внесена в журнал 801 событий в момент создания связанным блокчейном первого последующего блока. Затем запись 804 о событии может быть передана 850 в журнал 811 событий. В настоящем примере запись 804 о событии может быть передана в журнал 821 событий в тот момент, когда журнал 821 событий достиг добавленной точки 840. Журнал 821 событий может создавать последующую запись 823 о событии блока и передавать 836 запись 823 о событии в журнал 801 событий. Запись 823 о событии может также быть передана 852 в журнал 811 событий.
[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 событий может содержать всеобъемлющую последовательность всех записей о событии блоков, созданных всеми блокчейнами в сети блокчейна.
[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 событий.
[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 событий.
[00101]
Поскольку каждая запись о событии из каждого журнала событий передается в каждый другой журнал событий каждым журналом событий каждого блокчейна, участвующего в сети блокчейна, создается неизменяемая запись о создании блока для всех участвующих блокчейнов. Как показано на рисунке, запись 825 о событии достигла каждого журнала 801, 811, 821 событий, даже несмотря на сбой сети 886 между журналами 801, 811 событий. Такая многоэтапная передача (или мультисорсинг) записей о событии может также служить для предотвращения или выявления размещенной в неверном порядке записи о событии. Каждый журнал событий, помимо приема отдельных записей о событии из каждого другого журнала событий, может сравнивать порядок событий независимо или путем периодического обмена для частичного или полного сравнения списка событий, содержащихся в журнале событий. Другими словами, компьютерный процесс, создающий каждый журнал 801, 811, 821 событий, может время от времени обмениваться частью журнала 801, 811, 821 событий, созданного в связи с каждым конкретным блокчейном в сети блокчейна. Каждый компьютерный процесс, создающий журнал 801, 811, 821 событий, может сравнивать принятый журнал событий с журналом событий конкретного связанного блокчейна. Если компьютерный процесс, создающий журнал 801, 811, 821 событий, выявит в принятом журнале событий запись о событии, введенную в принятом журнале событий в более раннем положении, чем отражено в текущий момент времени в собственном журнале событий компьютерного процесса, этот компьютерный процесс может изменять собственный журнал событий, чтобы учесть положение этого события в предыдущем порядке.
[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 событий может сохранять в неизменном виде запись о порядке создания блоков каждого блока в каждом блокчейне, участвующем в сети блокчейна, в порядке создания блоков. Неизменяемый порядок расположения векторных часов повышает степень неизменяемости каждого блока, достигаемого благодаря взаимно-объединенному майнингу в процессе перекрестной мерклизации.
[0101]
Каждая запись о событии может дополнительно содержать пригодный для применения элемент. Пригодный для применения элемент может представлять собой реальное физическое действие, которое необходимо выполнить, или исполняемую компьютером логическую функцию, или и то и другое. Иными словами, конкретная запись о событии может ссылаться на связанный блок одного из блокчейнов в сети блокчейна и может содержать данные, принятие которых одной из вычислительных систем, применяющих какой-либо блокчейн из сети блокчейна, может указывать на возможность выполнения физического процесса или действия в субъекте, субъектом или под управлением субъекта принимающей вычислительной системы и/или применения для выполнения логического процесса или функции в принимающей вычислительной системе (или компоненте принимающей вычислительной системы). В качестве примера, не имеющего ограничительного характера, и в соответствии с ФИГ. 7-8, вычислительная система, применяющая журнал 801 событий, может создавать в дополнение к блоку A04 (показанному в записи 806 события) запись 806 события. Запись 806 о событии может содержать в дополнение к ссылке на блок A04 блокчейна, связанного с журналом 801 событий (такого как основной блокчейн 200 по ФИГ. 2), команду, исполняемую субъектом, применяющим вычислительную систему журнала 811 событий, для отправки конкретного груза и дополнительную команду, исполняемую субъектом, применяющим вычислительную систему журнала 821 событий, для перевода оплаты субъекту, применяющему вычислительную систему журнала 811 событий, после получения от вычислительной системы журнала 811 событий записи о событии (например, записи 816 о событии по ФИГ. 7), подтверждающей, что груз был отправлен.
[00102]
На ФИГ. 9 представлена схема вычислительной системы 1000, обеспечивающей неизменяемые записи в соответствии с одним вариантом осуществления настоящего описания. Вычислительная система 1000 может содержать один или более процессоров 1002, запоминающее устройство 1004, сетевой интерфейс 1006, блокчейн 1010, вектор 1020 векторных часов, журнал 1022 событий и процесс 1030 проверки хронологического соответствия. Вычислительная система 1000 может быть аналогичной вычислительной системе 1, показанной на ФИГ. 1 и 6 и описанной выше.
[00103]
Вектор 1020 может обеспечивать регистрацию событий в журнале 1022 событий и может обеспечивать функциональные возможности для приема других журналов событий от других вычислительных систем, реализующих различные блокчейны, а затем сравнивать журнал 1022 событий с другими журналами событий.
[0102]
Следует понимать, что возможны и другие конфигурации вычислительных устройств, включая распределенные вычислительные системы, содержащие множество процессоров и/или запоминающих устройств, распределенных и взаимно соединенных посредством сети передачи данных.
[0103]
Примеры осуществления
[0104]
Ниже приведены некоторые примеры осуществления в пределах объема описания. Чтобы избежать сложностей при предоставлении описания, не все из перечисленных ниже примеров описываются отдельно и явно как рассматриваемые в настоящем документе и как комбинируемые со всеми другими из примеров, перечисленных ниже, и другими вариантами осуществления, описанными выше в настоящем документе. Если для специалиста в данной области техники не будет очевидно, что перечисленные ниже примеры (и описанные выше варианты осуществления) нельзя комбинировать, в пределах объема описания предполагается, что такие примеры и варианты осуществления можно комбинировать.
[0105]
Пример 1. Основная вычислительная система, обеспечивающая регистрацию неизменяемых записей (и/или порядок событий, и/или доказуемый порядок событий), содержащая: один или более машиночитаемых носителей данных для хранения основного блокчейна для хранения данных записей в основном ряде блоков которые связаны друг с другом хронологически, самый последний блок из основного ряда блоков, включающий в себя криптографический хеш (например, дайджест блока самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока, случайный код для криптографического хеша предыдущего по порядку блока, целевую сложность для криптографического хеша, временную метку и часть данных записей; один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненных с возможностью создания основного блокчейна или иной реализации протокола основного блокчейна, один или более процессоров для: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока; и необязательно случайного кода для криптографического хеша самого последнего блока, целевой сложности для криптографического хеша самого последнего блока и временной метки, новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша (например, нового дайджеста блока) нового блока из основного ряда блоков с помощью нового случайного кода и согласования целевой сложности для криптографического хеша нового блока; сохранения нового криптографического хеша и нового случайного кода в новом блоке; и передачи в первую соседнюю вычислительную систему по сети передачи данных через сетевой интерфейс нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе.
[0106]
Пример 2. Система по примеру 1, в которой криптографический хеш каждого блока основного блокчейна создается с помощью одностороннего защищенного алгоритма хеширования.
[0107]
Пример 3. Система по примеру 1, в которой криптографический хеш содержит бинарное хеш-дерево, в котором криптографический хеш получен в результате конкатенации со случайным кодом для образования входной строки для односторонней криптографической функции, выход которой соответствует целевой сложности, которая содержит правило, задающее совместимый криптографический хеш.
[0108]
Пример 4. Система по примеру 3, в которой правило указывает на конкретный набор из одной или более бинарных величин в заданных положениях совместимого криптографического хеша.
[0109]
Пример 5. Система по примеру 1, в которой один или более процессоров дополнительно выполнены с возможностью приема криптографического хеша, соответствующего случайного кода и набора криптографических хешей самого последнего блока из первого соседнего ряда блоков от первой соседней вычислительной системы.
[0110]
Пример 6. Система по примеру 5, в которой криптографический хеш каждого блока из первого участвующего соседнего блокчейна создается с помощью одностороннего защищенного алгоритма хеширования.
[0111]
Пример 7. Система по примеру 5, в которой набор криптографических хешей содержит по меньшей мере один криптографический хеш из самого последнего блока основного блокчейна.
[0112]
Пример 8. Система по примеру 5, в которой набор криптографических хешей содержит по меньшей мере один криптографический хеш из самого последнего блока из второго участвующего соседнего блокчейна.
[0113]
Пример 9. Система по примеру 5, в которой один или более процессоров дополнительно служат для создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения нового криптографического хеша (нового самого последнего блока) и нового случайного кода (для криптографического хеша нового самого последнего блока), следующий блок также включает в себя криптографический хеш (и соответствующий случайный код) самого последнего блока из первого соседнего ряда блоков (первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе).
[0114]
Пример 10. Система по примеру 5, в которой в одном или более процессоров дополнительно хранится основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из данных записей, хранящихся в основном ряду блоков основного блокчейна.
[0115]
Пример 11. Система по примеру 10, в которой один или более процессоров дополнительно выполнены с возможностью: регистрации в основном журнале событий записи о событии, указывающей на создание нового блока; и регистрации в основном журнале событий записи о событии, соответствующем самому последнему блоку первого соседнего ряда блоков первого участвующего соседнего блокчейна, после принятия криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков первого участвующего соседнего блокчейна.
[0116]
Пример 12. Система по примеру 10, в которой один или более процессоров дополнительно выполнены с возможностью: идентификации записи о транзакции из данных записей как соответствующей какому-либо событию; и регистрации в основном журнале событий записи о событии, соответствующем этому событию.
[0117]
Пример 13. Система по примеру 1, в которой на одном или более машиночитаемых носителях данных дополнительно хранится основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции, включенной в данные записей основного блокчейна, причем один или более процессоров дополнительно выполнены с возможностью регистрации в основном журнале событий записи о событии, указывающей на создание нового блока.
[0118]
Пример 14. Система по примеру 13, в которой один или более процессоров дополнительно выполнены с возможностью: приема (например, от первой соседней вычислительной системы по сети передачи данных посредством сетевого интерфейса) по меньшей мере части первого соседнего журнала событий; сравнения основного журнала событий с первым соседним журналом событий; и обеспечения отражения самого раннего появления каждого блока в основном журнале событий на основе сравнения.
[0119]
Пример 15. Система по примеру 14, в которой один или более процессоров дополнительно выполнены с возможностью: переупорядочения записей о событии в основном журнале событий на основании сравнения и/или на основании более ранней записи в одном из основного журнала событий и соседнего журнала событий для каждой записи о событии.
[0120]
Пример 16. Система по примеру 1, в которой первая соседняя вычислительная система находится в электронной связи с системой и реализует первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш (например, дайджест блока) самого последнего блока, случайный код для криптографического хеша самого последнего блока и криптографический хеш предыдущего по порядку блока, случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков).
[0121]
Пример 17. Система по примеру 16, в которой самый последний блок из первого соседнего ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из первого основного ряда блоков и случайный код для криптографического хеша самого последнего блока из первого основного ряда блоков для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном.
[0122]
Пример 18. Система по примеру 1, в которой один или более процессоров дополнительно выполнены с возможностью передачи на вторую соседнюю вычислительную систему (например, по сети передачи данных посредством сетевого интерфейса) нового криптографического хеша (нового блока) и нового случайного кода (для криптографического хеша нового блока) для перекрестной мерклизации основного блокчейна со вторым участвующим соседним блокчейном на второй соседней вычислительной системе.
[0123]
Пример 19. Система по примеру 18, в которой один или более процессоров дополнительно выполнены с возможностью приема от второй соседней вычислительной системы криптографического хеша, соответствующего случайного кода и набора криптографических хешей самого последнего блока из второй соседнего ряда блоков второго участвующего соседнего блокчейна, реализованного на второй соседней вычислительной системе.
[0124]
Пример 20. Система по примеру 1, в которой данные записей содержат множество записей о транзакции.
[0125]
Пример 21. Распределенная электронная система записей, обеспечивающая регистрацию неизменяемых записей (с помощью которой можно обеспечивать неизменяемую запись о порядке событий и/или можно обеспечивать доказуемый порядок событий), содержащая: основную вычислительную систему, на которой реализован основной блокчейн, для хранения данных записей в основного ряда блоков которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш (например, дайджест блока) самого последнего блока из основного ряда блоков, случайный код для криптографического хеша самого последнего блока из основного ряда блоков, криптографический хеш предыдущего по порядку блока основного ряда блоков, случайный код для криптографического хеша предыдущего по порядку блока основного ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока основного ряда блоков) и часть данных записей; первую соседнюю вычислительную систему, находящуюся в электронной связи с основной вычислительной системой по сети передачи данных, причем первая соседняя вычислительная система реализует первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков, криптографический хеш предыдущего по порядку блока из первого соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из первого соседнего ряда блоков), при этом основная вычислительная система выполнена с возможностью: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком основного ряда блоков путем включения криптографического хеша (например, дайджеста блока) самого последнего блока из основного ряда блоков (и необязательно случайного кода для криптографического хеша самого последнего блока из основного ряда блоков), новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша (например, нового дайджеста с доказательством выполнения работы) нового блока из основного ряда блоков с помощью нового случайного кода (и согласования целевой сложности для криптографического хеша нового блока), нового криптографического хеша и нового случайного кода, хранящегося в новом блоке; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном.
[0126]
Пример 22. Система по примеру 21, в которой криптографический хеш каждого блока основного блокчейна создается с помощью одностороннего защищенного алгоритма хеширования и в которой криптографический хеш каждого блока из первого участвующего соседнего блокчейна создается с помощью одностороннего защищенного алгоритма хеширования.
[0127]
Пример 23. Система по примеру 21, в которой самый последний блок из первого соседнего ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из основного ряда блоков и случайный код для криптографического хеша самого последнего блока из первого основного ряда блоков.
[0128]
Пример 24. Система по примеру 21, в которой самый последний блок из основного ряда блоков дополнительно включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков и случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков.
[0129]
Пример 25. Система по примеру 21, в которой первая соседняя вычислительная система дополнительно выполнена с возможностью передачи в основную вычислительную систему криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе.
[0130]
Пример 26. Система по примеру 21, в которой основная вычислительная система дополнительно выполнена с возможностью приема от первой соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе.
[0131]
Пример 27. Система по примеру 21, в которой первая соседняя вычислительная система выполнена с возможностью: создания нового соседнего блока из первого соседнего ряда блоков, причем новый соседний блок связан с самым последним блоком первого соседнего ряда блоков путем включения криптографического хеша самого последнего блока из первого соседнего ряда блоков (и случайного кода для криптографического хеша самого последнего блока из первого соседнего ряда блоков), при этом новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша нового блока из первого соседнего ряда блоков с помощью нового случайного кода и согласования целевой сложности для криптографического хеша нового блока, нового криптографического хеша и нового случайного кода, хранящегося в новом соседнем блоке; и передачи в основную вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового соседнего блока и нового случайного кода для криптографического хеша нового соседнего блока для перекрестной мерклизации первого участвующего соседнего блокчейна с основным блокчейном. Первая соседняя вычислительная система может дополнительно хранить в новом соседнем блоке новый криптографический хеш нового блока основного ряда блоков и новый случайный код для криптографического хеша нового блока основного ряда блоков для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе.
[0132]
Пример 28. Система по примеру 21, дополнительно содержащая: вторую соседнюю вычислительную систему, находящуюся в электронной связи с основной вычислительной системой и/или первой соседней вычислительной системой по сети передачи данных, причем вторая соседняя вычислительная система реализует второй участвующий соседний блокчейн, содержащий второй соседний ряд блоков, которые связаны друг с другом хронологически, при этом самый последний блок второй соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из второго соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из второго соседнего ряда блоков, криптографический хеш предыдущего по порядку блока из второго соседнего ряда блоков (и необязательно случайный код для криптографического хеша предыдущего по порядку блока из второго соседнего ряда блоков), причем основная вычислительная система дополнительно выполнена с возможностью передачи на вторую соседнюю вычислительную систему (например, по сети передачи данных посредством сетевого интерфейса) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна со вторым участвующим соседним блокчейном.
[0133]
Пример 29. Система по примеру 28, в которой первая соседняя вычислительная система дополнительно выполнена с возможностью передачи во вторую соседнюю вычислительную систему криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе.
[0134]
Пример 30. Система по примеру 28, в которой основная вычислительная система дополнительно выполнена с возможностью приема от второй соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из второго соседнего ряда блоков из второго участвующего соседнего блокчейна, реализованного на второй соседней вычислительной системе.
[0135]
Пример 31. Система по примеру 28, в которой вторая соседняя вычислительная система дополнительно выполнена с возможностью приема от основной вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из основного ряда блоков из первого участвующего соседнего блокчейна, реализованного на основной вычислительной системе, и в которой вторая соседняя вычислительная система дополнительно выполнена с возможностью приема от первой соседней вычислительной системы криптографического хеша и соответствующего случайного кода самого последнего блока из первого соседнего ряда блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе.
[0136]
Пример 32. Способ обеспечения регистрации неизменяемых записей (например, записей о транзакции) (и/или неизменяемой записи о порядке событий и/или доказуемом порядке событий), включающий в себя: создание или реализацию иным образом основного блокчейна на основной вычислительной системе, причем основной блокчейн выполнен с возможностью хранения записей о транзакции в основном ряду блоков, которые хранятся на одном или более машиночитаемых носителях данных основной вычислительной системы и которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш (например, дайджест с доказательством выполнения работы (POW)) самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока и часть записей о транзакции; создание нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока (и необязательно случайного кода для криптографического хеша самого последнего блока), при этом новый блок становится новым самым последним блоком основного ряда блоков; создание нового криптографического хеша (например, нового дайджеста POW) нового блока из основного ряда блоков с помощью нового случайного кода (и согласования целевой сложности для криптографического хеша нового блока); сохранение нового криптографического хеша и нового случайного кода в новом блоке; и передачу в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового криптографического хеша нового блока и нового случайного кода для криптографического хеша нового блока для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе.
[0137]
Пример 33. Система (например, основная вычислительная система), обеспечивающая регистрацию неизменяемых записей (например, записи о транзакции и/или о порядке событий) или иным образом обеспечивающая доказуемый порядок событий, содержащая: один или более машиночитаемых носителей данных для хранения основного блокчейна для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (который представляет собой созданный криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (обеспечения соответствия) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненные с возможностью реализации протокола основного блокчейна, при этом один или более процессоров выполнены с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (например, корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции; создания дайджеста блока нового блока путем криптографического хеширования дайджеста записей с помощью нового случайного кода; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (или иного обеспечения соответствия) целевой сложности; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) заголовка нового блока, причем заголовок включает в себя новый дайджест POW нового блока, новый случайный код и дайджест записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе.
[0138]
Пример 34. Система по примеру 33, в которой один или более процессоров дополнительно выполнены с возможностью приема от первой соседней вычислительной системы (например, по сети передачи данных через сетевой интерфейс) заголовка самого последнего первого соседнего блока из первого участвующего соседнего блокчейна в первой соседней вычислительной системе, причем заголовок содержит дайджест POW самого последнего первого соседнего блока из первого участвующего соседнего блокчейна в первой соседней вычислительной системе, случайный код самого последнего первого соседнего блока и дайджест записей самого последнего первого соседнего блока для перекрестной мерклизации первого участвующего соседнего блокчейна с основным блокчейном.
[0139]
Пример 35. Система по примеру 34, в которой один или более процессоров дополнительно выполнены с возможностью создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения нового дайджеста POW нового блока, нового случайного кода и дайджеста записей, дайджеста POW самого последнего первого соседнего блока, случайного кода самого последнего первого соседнего блока и дайджеста записей самого последнего первого соседнего блока.
[0140]
Пример 36. Система по примеру 33, в которой один или более процессоров выполнены с возможностью ведения (например, на машиночитаемом носителе данных) основного журнала событий, включающего в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из записей о транзакции, хранящихся в основного ряда блоков основного блокчейна.
[0141]
Пример 37. Система по примеру 36, в которой один или более процессоров дополнительно выполнены с возможностью регистрации в основном журнале событий записи о событии, указывающей на создание нового блока.
[0142]
Пример 38. Система по примеру 36, в которой один или более процессоров дополнительно выполнены с возможностью: приема от первой соседней вычислительной системы (например, по сети передачи данных посредством сетевого интерфейса) по меньшей мере части первого соседнего журнала событий; сравнения основного журнала событий с первым соседним журналом событий; и обеспечения отражения самого раннего появления каждой записи о событии (например, записи о событии создания нового блока) в основном журнале событий на основе сравнения.
[0143]
Пример 39. Система по примеру 38, в которой один или более процессоров дополнительно выполнены с возможностью: переупорядочения записей о событии в основном журнале событий на основании сравнения и/или на основании более ранней записи в одном из основного журнала событий и соседнего журнала событий для каждой записи о событии.
[0144]
Пример 40. Способ обеспечения регистрации неизменяемых записей (например, записи о транзакции и/или о порядке событий) или иного обеспечения доказуемого порядка событий, включающий в себя: создание или реализацию иным образом (протокола) основного блокчейна на основной вычислительной системе, причем основной блокчейн выполнен с возможностью хранения записей о транзакции в основном ряду блоков, которые хранятся на одном или более машиночитаемых носителях данных основной вычислительной системы и которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (которая представляет собой созданный криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (или обеспечения соответствия иным образом) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; создание нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создание нового дайджеста записей (корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции; создание нового дайджеста блока нового блока путем криптографического хеширования нового дайджеста записей с помощью нового случайного кода; создание нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (или иного обеспечения соответствия) целевой сложности; сохранение нового дайджеста POW, нового случайного кода и нового дайджеста записей в новом блоке; и передачу в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) заголовка нового блока, причем заголовок включает в себя новый дайджест POW нового блока, новый случайный код и новый дайджест записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе.
[0145]
Пример 41. Распределенная электронная система записей, обеспечивающая регистрацию неизменяемых записей и содержащая: основной блокчейн для хранения данных записей в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя криптографический хеш самого последнего блока, случайный код для криптографического хеша самого последнего блока, криптографический хеш предыдущего по порядку блока и часть данных записей; первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя криптографический хеш самого последнего блока из первого соседнего ряда блоков, случайный код для криптографического хеша самого последнего блока из первого соседнего ряда блоков и криптографический хеш предыдущего по порядку блока из первого соседнего ряда блоков, при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых данных записей, причем новый блок связан с самым последним блоком основного ряда блоков путем включения криптографического хеша самого последнего блока из основного ряда блоков, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания нового криптографического хеша нового блока основного ряда блоков с помощью нового случайного кода, нового криптографического хеша и нового случайного кода, хранящегося в новом блоке; и передачи в первый участвующий соседний блокчейн нового криптографического хеша и нового случайного кода.
[0146]
Пример 42. Система, обеспечивающая регистрацию неизменяемых записей, содержащая: основной блокчейн для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест, подтверждающий выполнение работы (POW), дайджест блока предыдущего по порядку блока и часть записей о транзакции; первый участвующий соседний блокчейн, содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя дайджест с доказательством выполнения работы (POW), самый последний блок из первого соседнего ряда блоков и дайджест блока предыдущего по порядку блока из первого соседнего ряда блоков; при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения дайджеста блока самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (корня дерева Меркла) из новых записей о транзакции; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; и передачи нового дайджеста POW, нового случайного кода и дайджеста записей в первый участвующий соседний блокчейн.
[0147]
Пример 43. Система по примеру 41, в которой основной блокчейн дополнительно выполнен с возможностью приема из первого участвующего соседнего блокчейна дайджеста POW самого последнего первого соседнего блока из первого участвующего соседнего блокчейна, случайного кода самого последнего первого соседнего блока и дайджеста записей самого последнего первого соседнего блока.
[0148]
Пример 44. Система по примеру 43, в которой основной блокчейн дополнительно выполнен с возможностью создания следующего блока основного ряда блоков, причем следующий блок связан с новым самым последним блоком посредством включения дайджеста блока нового блока, нового случайного кода нового блока и дайджеста записей нового блока, и при этом новый блок включает в себя дайджест POW самого последнего первого соседнего блока и дайджест записей самого последнего первого соседнего блока.
[0149]
Пример 45. Система по примеру 41, дополнительно содержащая векторные часы, содержащие: основной журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; и первый участвующий соседний журнал событий, включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, сохраненных в первом соседнем ряду блоков первого участвующего соседнего блокчейна, причем векторные часы сравнивают основной журнал событий с первым соседним журналом событий и обеспечивают отражение в основном журнале событий самого раннего появления каждой записи о событии.
[0150]
Пример 46. Система по примеру 45, в которой векторные часы выполнены с возможностью переупорядочения записей о событии в основном журнале событий на основании сравнения.
[0151]
Пример 47. Система по примеру 45, в которой один или более процессоров дополнительно выполнены с возможностью регистрации (например, в основном журнале событий) записи о событии, указывающей на создание нового блока.
[0152]
Пример 48. Система, обеспечивающая неизменяемое ведение записей для обеспечения доказуемого порядка событий, содержащая: основной блокчейн (в основной вычислительной системе) для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW), дайджест блока предыдущего по порядку блока и часть записей о транзакции; основной журнал событий (в основной вычислительной системе), включающий в себя упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; первый участвующий соседний блокчейн (в первой участвующей соседней вычислительной системе), содержащий первый соседний ряд блоков, которые связаны друг с другом хронологически, причем самый последний блок из первого соседнего ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) самого последнего блока из первого соседнего ряда блоков и дайджест блока предыдущего по порядку блока из первого соседнего ряда блоков; первый участвующий соседний журнал событий (на первой участвующей соседней вычислительной системе), включающий в себя упорядоченный список записей о событии, причем каждый из них соответствует какой-либо записи транзакции из записей транзакций, сохраненных в первом соседнем ряду блоков первого участвующего соседнего блокчейна; и векторные часы, которые выполнены с возможностью сравнения основного журнала событий с первым соседним журналом событий и обеспечения отражения в основном журнале событий самого раннего появления каждой записи о событии, при этом основной блокчейн выполнен с возможностью: создания нового блока основного ряда блоков для хранения новых записей о транзакции, причем новый блок связан с самым последним блоком путем включения дайджеста блока самого последнего блока, при этом новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (корня дерева Меркла) из новых записей о транзакции; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; регистрации в основном журнале событий записи о событии, соответствующем созданию нового блока; и передачи нового дайджеста POW, нового случайного кода и дайджеста записей в первый участвующий соседний блокчейн.
[0153]
Пример 49. Основная вычислительная система, обеспечивающая неизменяемое ведение записей для обеспечения доказуемого порядка событий, содержащая: один или более машиночитаемых носителей данных для хранения: основного блокчейна для хранения записей о транзакции в основном ряду блоков, которые связаны друг с другом хронологически, причем самый последний блок из основного ряда блоков включает в себя дайджест с доказательством выполнения работы (POW) (которая представляет собой созданную криптографическим хешированием дайджест блока самого последнего блока), со случайным кодом для достижения (обеспечения соответствия) целевой сложности, дайджест блока предыдущего по порядку блока и часть записей о транзакции; и основной журнал событий, содержащий упорядоченный список записей о событии, причем каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, хранящихся в основном ряду блоков основного блокчейна; и один или более процессоров, находящихся в электрической связи с одним или более машиночитаемыми носителями данных и выполненных с возможностью реализации протокола основного блокчейна, причем один или более процессоров выполнены с возможностью: приема из первой соседней вычислительной системы дайджеста POW самого последнего блока из первого соседнего ряда блоков первого участвующего соседнего блокчейна, реализованного в первой соседней вычислительной системе, соответствующего случайного кода дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков; создания нового блока основного ряда блоков для хранения новых записей о транзакции, включающих в себя дайджест POW самого последнего блока из первого соседнего ряда блоков, соответствующий случайный код дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков, причем новый блок связан с самым последним блоком путем включения криптографического хеша (например, дайджеста блока) самого последнего блока и новый блок становится новым самым последним блоком основного ряда блоков; создания дайджеста записей (например, корня дерева Меркла) из новых записей о транзакции путем криптографического хеширования новых записей о транзакции, включающих в себя дайджест POW самого последнего блока из первого соседнего ряда блоков, соответствующий случайный код дайджеста POW самого последнего блока из первого соседнего ряда блоков и дайджест записей самого последнего блока из первого соседнего ряда блоков; создания дайджеста блока нового блока путем криптографического хеширования …. дайджеста записей с помощью нового случайного кода; создания нового дайджеста POW нового блока путем криптографического хеширования дайджеста блока нового блока с помощью нового случайного кода для достижения (обеспечения соответствия) целевой сложности; сохранения нового дайджеста POW, нового случайного кода и дайджеста записей нового блока в новом блоке; регистрации в основном журнале событий записи о событии, соответствующем созданию нового блока; сравнения основного журнала событий с первым соседним журналом событий и обеспечение отражения в основном журнале событий самого раннего появления каждой записи о событии, причем первый соседний журнал событий включает в себя упорядоченный список записей о событии, при этом каждая из них соответствует какой-либо записи о транзакции из записей о транзакции, сохраненных в первом соседнем ряду блоков из первого участвующего соседнего блокчейна, реализованного на первой соседней вычислительной системе; и передачи в первую соседнюю вычислительную систему (например, по сети передачи данных через сетевой интерфейс) нового дайджеста POW нового блока, нового случайного кода и дайджеста записей для перекрестной мерклизации основного блокчейна с первым участвующим соседним блокчейном на первой соседней вычислительной системе. Описанные признаки, операции или характеристики могут быть скомпонованы и разработаны в широком диапазоне различных конфигураций и/или могут быть скомбинированы любым подходящим способом в одном или более вариантах осуществления. Таким образом, подробное описание различных вариантов осуществления систем и способов не предполагает ограничения заявленного объема описания и служит только для представления возможных вариантов осуществления описания. Кроме того, следует понимать, что порядок стадий или действий в способах, описанных в связи с описанными вариантами осуществления, может быть изменен, как очевидно специалистам в данной области. Таким образом, любая последовательность на графических материалах или в подробном описании приведена исключительно в иллюстративных целях и не подразумевает требуемого порядка, если не указано иное.
[0154]
Варианты осуществления могут включать в себя различные стадии, которые могут быть включены в исполняемые компьютером команды для исполнения компьютером общего назначения или специального назначения (или другим электронным устройством). В альтернативном варианте осуществления эти стадии могут быть выполнены аппаратными компонентами, в которых включена специальная логика для выполнения этих стадий, или любой комбинацией оборудования, программного обеспечения и/или микропрограммного обеспечения.
[0155]
Варианты осуществления могут также быть обеспечены в виде компьютерного программного продукта, содержащего машиночитаемый носитель данных, имеющий хранящиеся на нем команды, которые можно использовать для программирования компьютера (или другого электронного устройства) для выполнения способов, описанных в настоящем документе. Машиночитаемый носитель данных может включать в себя, без ограничений: жесткие диски, дискеты, оптические диски, диски CD-ROM, DVD-ROM, ПЗУ, ОЗУ, СППЗУ, ЭСППЗУ, магнитные или оптические карты, твердотельные запоминающие устройства или другие типы носителей/машиночитаемых носителей, применимых для хранения электронных команд.
[0156]
В настоящем документе программный модуль или компонент может включать в себя любой тип компьютерной программы или компьютерного исполняемого кода, размещенного на запоминающем устройстве и/или машиночитаемом носителе данных. Программный модуль может, например, содержать один или более физических или логических блоков компьютерных команд, которые могут быть организованы в виде подпрограммы, программы, объекта, компонента, структуры данных и т. п., которые выполняют одну или более задач или реализуют определенные абстрактные типы данных.
[0157]
В определенных вариантах осуществления конкретный программный модуль может содержать разнородные команды, хранящиеся в различных областях запоминающего устройства, которые в совокупности реализуют описанные функциональные возможности модуля. В действительности модуль может содержать одну команду или множество команд и может быть распределен по нескольким различным сегментам кода, между различными программами и между несколькими запоминающими устройствами. Некоторые варианты осуществления могут быть реализованы в распределенной вычислительной среде, в которой задачи выполняет удаленное устройство обработки данных, связанное через сеть передачи данных. В распределенной вычислительной среде программные модули можно размещать на локальных и/или на удаленных запоминающих устройствах для хранения данных. Кроме того, данные, привязанные друг к другу или объединенные друг с другом в какой-либо записи базы данных, могут находиться на одном запоминающем устройстве или на нескольких запоминающих устройствах и могут быть связаны друг с другом по сети в полях записи в базе данных.
[0158]
Вышеизложенное описание приведено со ссылкой на различные варианты осуществления, включая наилучший вариант осуществления. Однако специалистам в данной области будет понятно, что возможны различные модификации и изменения без отступления от объема настоящего описания и принципов, лежащих в основе изобретения. Соответственно, настоящее описание следует рассматривать как иллюстративное, а не имеющее ограничительный характер, и предполагается, что все указанные модификации включены в его объем. Кроме того, выше описаны выгоды, другие преимущества и решения проблем с приведением различных вариантов осуществления. Однако выгоды, преимущества, решения проблем и любой элемент (-ы), благодаря которым можно получить какие-либо выгоды, преимущества или решения или приобрести большую выраженность, не следует истолковывать как критический, обязательный или существенный признак или элемент.
[0159]
В настоящем документе термины «содержит», «содержащий» или любые иные их вариации, представленные в настоящем документе, используют для обозначения неисключительного включения, т. е. процесс, способ, изделие или устройство, в том числе перечень элементов, состоит не только из этих элементов, но может содержать другие элементы, не указанные явно или свойственные такому процессу, способу, изделию или устройству. Кроме того, в настоящем документе термины «связанный», «связывающий» или любые иные их вариации, представленные в настоящем документе, охватывают физическое присоединение, электрическое соединение, магнитное соединение, оптическое соединение, коммуникативное соединение, функциональное соединение и/или любое другое соединение.
[0160]
Включение в формулу изобретения термина «первый» по отношению к какому-либо признаку или элементу не обязательно предполагает наличие второго или дополнительного такого признака или элемента. Принципы настоящего описания могут быть отражены в компьютерном программном продукте, хранящемся на материальном машиночитаемом носителе данных, имеющем машиночитаемые средства программного кода, сохраненные на носителе данных. Можно применять любой подходящий машиночитаемый носитель данных, включая магнитные запоминающие устройства (жесткие диски, дискеты и т. п.), оптические запоминающие устройства (диски CD-ROM, DVD, Blu-Ray и т. п.), флеш-память и/или т. п. Эти компьютерные программные команды могут быть загружены на компьютер общего назначения, компьютер специального назначения или другое программируемое устройство обработки данных для создания машины так, что с помощью команд, исполняемых на компьютере или другом программируемом устройстве обработки данных, получаются средства для реализации указанных функций. Эти компьютерные программные команды могут также храниться на машиночитаемом запоминающем устройстве, которое может указывать компьютеру или другому программируемому устройству обработки данных на необходимость выполнения определенных действий так, что с помощью команд, хранящихся на машиночитаемом запоминающем устройстве, получается готовое изделие, включающее в себя команды для реализации указанной функции. Команды компьютерной программы могут также быть загружены на компьютер или другое программируемое устройство обработки данных для инициирования выполнения серии операционных стадий на компьютере или другом программируемом устройстве для создания реализованного на компьютере процесса, благодаря которому с помощью команд, исполняемых на компьютере или другом программируемом устройстве, обеспечиваются стадии для реализации указанных функций.
[0161]
Принципы настоящего описания могут быть отражены в компьютерной программе, реализованной в виде одного или более программных модулей или компонентов. В настоящем документе программный модуль или компонент (например, обработчик, двигатель, система, подсистема) может включать в себя любой тип компьютерной программы или компьютерного исполняемого кода, размещенного на запоминающем устройстве и/или машиночитаемом носителе данных. Программный модуль может, например, содержать один или более физических или логических блоков компьютерных команд, которые могут быть организованы в виде подпрограммы, программы, объекта, компонента, структуры данных и т. п., которые выполняют одну или более задач или реализуют определенные типы данных.
[0162]
В определенных вариантах осуществления конкретный программный модуль может содержать разнородные команды, хранящиеся в различных областях запоминающего устройства, которые в совокупности реализуют описанные функциональные возможности модуля. В действительности модуль может содержать одну команду или множество команд и может быть распределен по нескольким различным сегментам кода, между различными программами и между несколькими запоминающими устройствами. Некоторые варианты осуществления могут быть реализованы в распределенной вычислительной среде, в которой задачи выполняет удаленное устройство обработки данных, связанное через сеть передачи данных. В распределенной вычислительной среде программные модули можно размещать на локальных и/или на удаленных запоминающих устройствах для хранения данных. Кроме того, данные, привязанные друг к другу или объединенные друг с другом в какой-либо записи базы данных, могут находиться на одном запоминающем устройстве или на нескольких запоминающих устройствах и могут быть связаны друг с другом по сети в полях записи в базе данных.
[0163]
Подходящее программное обеспечение для облегчения реализации изобретения легко обеспечивают специалисты в соответствующей (-их) области (-ях) техники с применением идей, представленных в настоящем документе, и языков программирования и инструментов, таких как Java, Pascal, C++, C, языки баз данных, API, SDK, узел, микропрограмма, микрокод и/или другие языки и инструменты.
[0164]
Варианты осуществления, описанные в настоящем документе, могут быть полностью или частично реализованы на цифровом компьютере. Цифровой компьютер включает в себя процессор, выполняющий необходимые вычисления. Компьютер дополнительно включает в себя запоминающее устройство, которое находится в электронной связи с процессором для хранения операционной системы компьютера. Операционные системы компьютера могут включать в себя, без ограничений, MS-DOS, Windows, Linux, Unix, AIX, CLIX, QNX, OS/2 и Apple. Кроме того, будущие варианты осуществления будут, предположительно, адаптированы для исполнения в других будущих операционных системах.
[0165]
В некоторых случаях общеизвестные признаки, структуры или операции не показаны и не описаны подробно. Более того, описанные признаки, структуры или операции можно комбинировать любым приемлемым способом в одном или более вариантах осуществления. Следует также понимать, что размещение и конструкция компонентов вариантов осуществления, по существу описанных и показанных в графических материалах в настоящем документе, могут иметь множество различных конфигураций.
[0166]
Различные операционные стадии, а также компоненты для выполнения операционных стадий могут быть реализованы альтернативными способами в зависимости от конкретного применения или с учетом любого числа функций затрат, связанных с работой системы, например одну или более стадий можно удалять, изменять или комбинировать с другими стадиями.
[0167]
Несмотря на то что принципы настоящего описания показаны в различных вариантах осуществления, можно использовать множество модификаций структуры, конструкций, пропорций, элементов, материалов и компонентов, применяемых на практике, которые специально адаптированы для конкретных условий и рабочих требований, без отступления от принципов и объема настоящего описания. Предполагается, что объем настоящего описания включает в себя все подобные модификации и варианты.
[0168]
Таким образом, объем настоящего изобретения следует определять только по следующим пунктам формулы изобретения.