ВЫПОЛНЕНИЕ ПРОЦЕССА ВОССТАНОВЛЕНИЯ ДЛЯ СЕТЕВОГО УЗЛА В РАСПРЕДЕЛЁННОЙ СИСТЕМЕ Российский патент 2020 года по МПК H04L9/28 

Описание патента на изобретение RU2718411C1

Уровень техники

[0001] Системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети и/или сети цепочек блоков, позволяют участвующим объектам защищенно и неизменно сохранять данные. DLS обычно упоминаются как сети цепочек блоков без ссылки на конкретные случаи использования. Примеры сетей цепочек блоков могут включать в себя: открытые сети цепочек блоков, закрытые сети цепочек блоков и консорциальные сети цепочек блоков. Открытая сеть цепочек блоков является открытой для всех объектов в том, чтобы использовать DLS и участвовать в консенсусном процессе. Закрытая сеть цепочек блоков предоставляется для конкретного объекта, который централизованно управляет разрешениями на считывание и запись. Консорциальная сеть цепочек блоков предоставляется для выбранной группы объектов, которые управляют консенсусным процессом, и включает в себя уровень управления доступом.

[0002] Консенсусные механизмы представляют собой первичный компонент распределенных систем цепочек блоков. Консенсусный механизм представляет собой процесс в компьютерной науке, который используется для того, чтобы достигать соглашения по одному значению данных между распределенными процессами или системами. Консенсусные механизмы спроектированы с возможностью достигать надежности в сети, заключающей в себе несколько ненадежных узлов. Решение этой проблемы (известной как проблема консенсуса) является важным в распределенных вычислительных и многоагентных системах.

[0003] Цепочка блоков основывается на консенсусных механизмах, чтобы достигать соглашения между узлами. Цепочка блоков представляет собой децентрализованную базу данных, которая управляется посредством распределенных компьютеров в сети между равноправными узлами (P2P). Каждый равноправный узел поддерживает копию реестра, чтобы предотвращать единую точку сбоя (SPOF). Обновления и проверки достоверности отражаются во всех копиях одновременно.

[0004] Хотя ряд существующих технологий может использоваться для выполнения консенсуса между сетевыми узлами системы цепочек блоков, более эффективное решение для выполнения консенсуса должно быть преимущественным.

Сущность изобретения

[0005] Реализации настоящего описания изобретения включают в себя машинореализованные способы для решения консенсусных проблем в распределенной системе (например, в сети цепочек блоков). Более конкретно, реализации настоящего описания изобретения направлены на выполнение процесса восстановления для сетевого узла в распределенной системе.

[0006] В некоторых реализациях, действия включают в себя: широковещательную передачу сообщения с запросом состояния в ряд сетевых узлов сети цепочек блоков посредством сетевого узла сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера; прием ряда сообщений с ответом по состоянию посредством сетевого узла из ряда сетевых узлов, при этом каждое из ряда сообщений с ответом по состоянию включает в себя порядковый номер; идентификацию целевого порядкового номера посредством сетевого узла на основе идентичного порядкового номера в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию включает в себя идентичный порядковый номер; отправку запрашивающего сообщения во множество сетевых узлов посредством сетевого узла, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из ряда сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из ряда сетевых узлов, для достижения консенсуса между рядом сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение включает в себя часть целевой транзакции и подпись каждого из множества сетевых узлов; прием ряда эхо-сообщений посредством сетевого узла из множества сетевых узлов; определение ряда допустимых эхо-сообщений из множества эхо-сообщений посредством сетевого узла, при этом каждое из ряда допустимых эхо-сообщений включает в себя целевой порядковый номер; восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение; отправку сообщения во множество сетевых узлов посредством сетевого узла, указывающего то, что сетевой узел восстановлен.

[0007] Другие реализации включают в себя соответствующие системы, оборудование и компьютерные программы, выполненные с возможностью выполнять действия способов, кодированных на компьютерных устройствах хранения данных.

[0008] Эти и другие реализации необязательно могут включать в себя один или более следующих признаков:

[0009] Первый признак, комбинированный с любым из следующих признаков, в котором ряд сетевых узлов включает в себя первичный узел и один или более резервных узлов.

[0010] Второй признак, комбинированный с любым из следующих признаков, в котором сетевой узел представляет собой первичный узел или резервный узел.

[0011] Третий признак, комбинированный с любым из следующих признаков, в котором запрашивающее сообщение включает в себя целевой порядковый номер.

[0012] Четвертый признак, комбинированный с любым из следующих признаков, в котором каждый из ряда сетевых узлов, отличных от сетевого узла, верифицирует запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

[0013] Пятый признак, комбинированный с любым из следующих признаков, в котором сетевой узел верифицирует то, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

[0014] Шестой признак, комбинированный с любым из следующих признаков, в котором сетевой узел дополнительно верифицирует то, является или нет подпись в эхо-сообщении достоверной.

[0015] Седьмой признак, комбинированный с любым из следующих признаков, в котором каждое из эхо-сообщений дополнительно включает в себя, по меньшей мере, один из ряда блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом ряд EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

[0016] Восьмой признак, комбинированный с любым из следующих признаков, в котором сетевой узел восстанавливает целевую транзакцию с использованием поднабора ряда EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

[0017] Девятый признак, комбинированный с любым из следующих признаков, в котором сообщение в ряде сетевых узлов, указывающее то, что сетевой узел восстановлен, включает в себя набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

[0018] Настоящее описание изобретения также предоставляет один или более энергонезависимых машиночитаемых носителей хранения данных, соединенных с одним или более процессоров и имеющих сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессорам выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.

[0019] Настоящее описание изобретения дополнительно предоставляет систему для реализации способов, предусмотренных в настоящем документе. Система включает в себя один или более процессоров и машиночитаемый носитель хранения данных, соединенный с одним или более процессоров, имеющий сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.

[0020] Настоящее описание изобретения раскрывает улучшенные консенсусные механизмы, включающие в себя технологии для достижения консенсуса между сетевыми узлами в распределенной системе, выполнения изменения первичного узла в распределенной системе и выполнения процесса восстановления для сетевого узла в распределенной системе. Описанные консенсусные механизмы могут достигать различных преимуществ в различных вариантах применения.

[0021] Например, консенсусный процесс, как пояснено ниже, включает в себя множество признаков, которые улучшают операции системы цепочек блоков, и помогает смягчать узкое место сети. Например, описанный консенсусный процесс включает в себя преобразование запроса на проведение транзакции в ряде блоков кодов стирания ошибок (EC) согласно EC-коду и отправку одного из EC-блоков в каждый из сетевых узлов. EC-блок меньше по размеру, чем исходный запрос на проведение транзакции. Соответственно, отправка EC-блока вместо полного запроса на проведение транзакции в сетевые узлы уменьшает размер блоков данных, которые передаются между сетевыми узлами сети цепочек блоков, за счет этого экономя полосу пропускания сети и уменьшая сетевую нагрузку. Это дополнительно уменьшает размер данных, которые записываются и считываются в/из пространства запоминающего устройства сетевых узлов, за счет этого уменьшая нагрузку на пространство запоминающего устройства сетевых узлов и повышая эффективность полной системы цепочек блоков.

[0022] Кроме того, настоящее описание изобретения описывает процесс изменения сверхкадров, который включает в себя назначение соответствующих весовых коэффициентов для нескольких фаз консенсусного процесса, определение суммы весовых коэффициентов на основе соответствующих весовых коэффициентов нескольких фаз и определение нового первичного узла на основе суммы весовых коэффициентов. Процесс изменения сверхкадров на основе суммы весовых коэффициентов вместо кругового способа может упрощать выбор нового первичного узла, который является неотказавшим, своевременно. В отличие от кругового способа, процесс изменения сверхкадров в настоящем описании изобретения основывается на сумме весовых коэффициентов, чтобы выбирать новый первичный узел, что позволяет уменьшать задержку или задержку при нахождении нового первичного узла, который не является отказавшим. Это дополнительно может повышать эффективность полной системы цепочек блоков в предоставлении услуг на основе цепочек блоков.

[0023] Кроме того, настоящее описание изобретения поясняет процесс восстановления, который включает в себя такие операции, как отправка сообщения с запросом состояния посредством сетевого узла, который применяется в качестве нового первичного узла, и прием сообщений с ответом по состоянию из других сетевых узлов. Эти операции выполняются таким образом, что процесс восстановления отказавшего сетевого узла не создает помехи нормальной работе консенсусного процесса между другими неотказавшими сетевыми узлами. Это упрощает экономию вычислительных и сетевых ресурсов для восстановления отказавшего сетевого узла посредством уменьшения сложности процесса восстановления.

[0024] Следует принимать во внимание, что способы в соответствии с настоящим описанием изобретения могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. Таким образом, способы в соответствии с настоящим описанием изобретения не ограничены комбинациями аспектов и признаков, конкретно описанными в данном документе, но также включают в себя любую предоставленную комбинацию аспектов и признаков.

[0025] Подробности одной или более реализаций настоящего описания изобретения изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества настоящего описания изобретения должны становиться очевидными из описания и чертежей, а также из формулы изобретения.

Описание чертежей

[0026] Фиг. 1 иллюстрирует пример окружения, которое может использоваться для того, чтобы выполнять реализации настоящего описания изобретения.

[0027] Фиг. 2 иллюстрирует пример концептуальной архитектуры в соответствии с реализациями настоящего описания изобретения.

[0028] Фиг. 3 иллюстрирует пример консенсусного процесса, который может выполняться в соответствии с реализациями настоящего описания изобретения.

[0029] Фиг. 4 иллюстрирует пример консенсусного процесса, который может выполняться в соответствии с реализациями настоящего описания изобретения.

[0030] Фиг. 5 иллюстрирует пример хэш-дерева в соответствии с реализациями настоящего описания изобретения.

[0031] Фиг. 6 иллюстрирует пример сообщений, которые передаются между сетевыми узлами распределенной системы в соответствии с реализациями настоящего описания изобретения.

[0032] Фиг. 7 иллюстрирует пример процесса выполнения изменения первичного узла в распределенной системе в соответствии с реализациями настоящего описания изобретения.

[0033] Фиг. 8 иллюстрирует пример процесса выполнения изменения первичного узла в распределенной системе в соответствии с реализациями настоящего описания изобретения.

[0034] Фиг. 9 иллюстрирует пример сообщений, которые передаются между сетевыми узлами распределенной системы в соответствии с реализациями настоящего описания изобретения.

[0035] Фиг. 10 иллюстрирует пример процесса выполнения процесса восстановления сетевого узла в распределенной системе в соответствии с реализациями настоящего описания изобретения.

[0036] Фиг. 11 иллюстрирует пример процесса выполнения процесса восстановления сетевого узла в распределенной системе в соответствии с реализациями настоящего описания изобретения.

[0037] Фиг. 12 иллюстрирует пример сообщений, которые передаются между сетевыми узлами распределенной системы в соответствии с реализациями настоящего описания изобретения.

[0038] Фиг. 13 иллюстрирует пример схемы, иллюстрирующей модули консенсусного оборудования, согласно реализации настоящего описания изобретения.

[0039] Фиг. 14 иллюстрирует пример схемы, иллюстрирующей модули консенсусного оборудования, согласно реализации настоящего описания изобретения.

[0040] Фиг. 15 иллюстрирует пример схемы, иллюстрирующей модули оборудования изменения первичных узлов, согласно реализации настоящего описания изобретения.

[0041] Фиг. 16 иллюстрирует пример схемы, иллюстрирующей модули оборудования изменения первичных узлов, согласно реализации настоящего описания изобретения.

[0042] Фиг. 17 иллюстрирует пример схемы, иллюстрирующей модули оборудования восстановления, согласно реализации настоящего описания изобретения.

[0043] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.

Подробное описание изобретения

[0044] Реализации настоящего описания изобретения включают в себя машинореализованные способы для решения консенсусных проблем в распределенной системе (например, в сети цепочек блоков). Более конкретно, реализации настоящего описания изобретения направлены на выполнение процесса восстановления для сетевого узла в распределенной системе.

[0045] В некоторых реализациях, действия включают в себя: широковещательную передачу сообщения с запросом состояния в ряде сетевых узлов сети цепочек блоков посредством сетевого узла сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера; прием ряда сообщений с ответом по состоянию посредством сетевого узла из ряда сетевых узлов, при этом каждое из ряда сообщений с ответом по состоянию включает в себя порядковый номер; идентификацию целевого порядкового номера посредством сетевого узла на основе идентичного порядкового номера в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию включает в себя идентичный порядковый номер; отправку запрашивающего сообщения во множество сетевых узлов посредством сетевого узла, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из ряда сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из ряда сетевых узлов, для достижения консенсуса между рядом сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение включает в себя часть целевой транзакции и подпись каждого из множества сетевых узлов; прием ряда эхо-сообщений посредством сетевого узла из множества сетевых узлов; определение ряда допустимых эхо-сообщений из множества эхо-сообщений посредством сетевого узла, при этом каждое из ряда допустимых эхо-сообщений включает в себя целевой порядковый номер; восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение; отправку сообщения во множество сетевых узлов посредством сетевого узла, указывающего то, что сетевой узел восстановлен.

[0046] Чтобы предоставлять дополнительный контекст для реализаций настоящего описания изобретения, и как представлено выше, системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети (например, состоящие из узлов между равноправными узлами) или сети цепочек блоков, позволяют участвующим объектам защищенно и неизменно проводить транзакции и сохранять данные. Термин "цепочка блоков" используется в данном документе, чтобы, в общем, означать DLS независимо от конкретных вариантов использования. Как представлено выше, сеть цепочек блоков может предоставляться в качестве открытой сети цепочек блоков, закрытой сети цепочек блоков или консорциальной сети цепочек блоков.

[0047] Цепочка блоков представляет собой структуру данных, которая сохраняет транзакции таким способом, который обеспечивает возможность верификации будущих транзакций для согласованности со всеми предшествующими транзакциями, сохраненными в цепочке. Цепочка блоков включает в себя один или более блоков. Каждый блок в цепочке сразу связывается с предыдущим блоком перед ним в цепочке посредством включения криптографического хэша предыдущего блока. Каждый блок также включает в себя временную метку, собственный криптографический хэш и одну или более транзакций. Транзакции, которые уже верифицированы посредством узлов сети цепочек блоков, хэшируются и кодируются в дерево Меркла. Дерево Меркла представляет собой структуру данных, в которой данные в концевых узлах дерева хэшируются, и все хэши в каждой ветви дерева конкатенируются в корне ветви. Этот процесс продолжает дерево вплоть до корня всего дерева, которое сохраняет хэш, который представляет все данные в дереве. Хэш, подразумеваемый в качестве транзакции, сохраненной в дереве, может быстро верифицироваться посредством определения того, является или нет оно согласованным со структурой дерева.

[0048] Исходя из того, что цепочка блоков представляет собой структуру данных для сохранения транзакций, сеть цепочек блоков представляет собой сеть вычислительных узлов, которые управляют, обновляют и поддерживают одну или более структур цепочки блоков. Как представлено выше, сеть цепочек блоков может предоставляться в качестве открытой сети цепочек блоков, закрытой сети цепочек блоков или консорциальной сети цепочек блоков.

[0049] В открытой сети цепочек блоков, консенсусный процесс управляется посредством узлов консенсусной сети. Например, сотни, тысячи, даже миллионы объектов могут взаимодействовать в открытой сети цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в открытой сети цепочек блоков. Соответственно, открытая сеть цепочек блоков может считаться открытой сетью относительно участвующих объектов. В некоторых примерах, большинство объектов (узлов) должны подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков (распределенный реестр) сети цепочек блоков. Примерные открытые сети цепочек блоков включают в себя конкретные платежные сети между равноправными узлами, которые используют распределенный реестр, называемый "цепочкой блоков". Тем не менее, как отмечено выше, термин "цепочка блоков" используется для того, чтобы, в общем, означать распределенные реестры без конкретной ссылки на конкретные сети цепочек блоков.

[0050] В общем, открытая сеть цепочек блоков поддерживает открытые транзакции. Открытая транзакция совместно используется со всеми узлами в открытой сети цепочек блоков и сохраняется в глобальной цепочке блоков. Глобальная цепочка блоков представляет собой цепочку блоков, которая реплицируется по всем узлам. Таким образом, все узлы находятся в идеальном консенсусе состояния относительно глобальной цепочки блоков. Чтобы достигать консенсуса (например, соглашения с добавлением блока в цепочку блоков), консенсусный протокол реализуется в открытой сети цепочек блоков. Примеры консенсусных протоколов включают в себя, без ограничения, доказательство выполнения работы (POW), доказательство доли владения (POS) и доказательство наличия полномочий (POA). POW упоминается дополнительно в данном документе в качестве неограничивающего примера.

[0051] В общем, закрытая сеть цепочек блоков предоставляется для конкретного объекта, который централизованно управляет разрешениями на считывание и запись. Объект управляет тем, какие узлы имеют возможность участвовать в сети цепочек блоков, так что закрытые сети цепочек блоков, в общем, упоминаются в качестве сетей с контролируемым доступом, которые устанавливают ограничения касательно того, кому разрешается участвовать в сети, и касательно их уровня участия (например, только в некоторых транзакциях). Различные типы механизмов управления доступом могут использоваться (например, существующие участники голосуют по добавлению новых объектов, контролирующий орган может управлять допуском).

[0052] В общем, консорциальная сеть цепочек блоков является закрытой между участвующими объектами. В консорциальной сети цепочек блоков, консенсусный процесс управляется посредством авторизованного набора узлов, причем один или более узлов управляются посредством соответствующего объекта (например, финансового учреждения, страховой компании). Например, консорциум из десяти (10) объектов (например, финансовых учреждений, страховых компаний) может управлять консорциальной сетью цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в консорциальной сети цепочек блоков. Соответственно, консорциальная сеть цепочек блоков может считаться закрытой сетью относительно участвующих объектов. В некоторых примерах, каждый объект (узел) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков. В некоторых примерах, по меньшей мере, поднабор объектов (узлов) (например, по меньшей мере, 7 объектов) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков.

[0053] Реализации настоящего описания изобретения подробнее описываются в данном документе со ссылкой на консорциальную сеть цепочек блоков. Тем не менее, предполагается, что реализации настоящего описания изобретения могут быть реализованы в любом соответствующем типе сети цепочек блоков.

[0054] В дальнейшем подробнее описываются реализации настоящего описания изобретения в данном документе с учетом вышеизложенного контекста. Более конкретно и как представлено выше, реализации настоящего описания изобретения направлены на выполнение процесса восстановления для сетевого узла в распределенной системе.

[0055] Цепочка блоков представляет собой защищенный от несанкционированного использования совместно используемый цифровой реестр, который записывает транзакции в открытую или закрытую сеть с равноправными узлами. Реестр распределяется во все узлы-члены в сети, и предыстория транзакций актива, возникающих в сети, постоянно записывается в блоке.

[0056] Консенсусные механизмы обеспечивают то, что все сетевые узлы в распределенной сети цепочек блоков выполняют транзакции в идентичном порядке и затем записывают в идентичные реестры. Одна проблема, на решение которой нацелены консенсусные модели, заключается в том, чтобы преодолевать византийские сбои. В византийском сбое, компонент, такой как сервер или сетевой узел распределенной сети цепочек блоков, может не согласованно выглядеть как сбойным, так и функционирующим для систем обнаружения сбоев, представляя различные признаки для различных наблюдателей. Для других сетевых узлов затруднительно чтобы объявлять его сбойным и отключать его от сети, поскольку они должны сначала достигать консенсуса относительно того, какой сетевой узел сбоит первым.

[0057] В контексте распределенных систем, отказоустойчивость на основе византийского соглашения (BFT) представляет собой способность распределенной компьютерной сети функционировать требуемым образом и корректно достигать достаточного консенсуса, несмотря на злоумышленные компоненты (т.е. сетевые узлы сети цепочек блоков) системы, приводящие к сбою или распространяющие некорректную информацию другим равноправным узлам. Цель состоит в том, чтобы защищать от катастрофических системных сбоев посредством уменьшения влияния, которое эти злоумышленные узлы имеют на корректную функцию сети, и правильного консенсуса, который достигается посредством честных узлов в системе.

[0058] Тем не менее, существующие BFT-механизмы оказываются неэффективными во многих аспектах. Например, существующие BFT-механизмы имеют дополнительную сложность реализации для распределенной сети цепочек блоков при попытке преодолевать византийские сбои таким образом, что задержка увеличивается для связи между сетевыми узлами распределенной сети цепочек блоков. Практическая отказоустойчивость на основе византийского соглашения (PBFT) представляет собой одну из оптимизаций, которые нацелены на улучшение существующих консенсусных BFT-механизмов. PBFT-модель акцентирует внимание на предоставлении практической репликации византийского конечного автомата, которая допускает византийские отказы (злоумышленные узлы) через предположение, что имеются сбои независимых узлов и манипулируемые сообщения, которые распространяются посредством конкретных независимых узлов.

[0059] В PBFT-модели, все узлы упорядочиваются в последовательности, при этом один узел представляет собой первичный узел (лидера), а другие называются "резервными узлами". Все узлы в системе обмениваются данными между собой, и цель для мажорантности честных узлов заключается в том, чтобы прийти к соглашению по состоянию системы. Узлы обмениваются данными между собой и не только должны доказывать, что сообщения исходят из конкретного равноправного узла, но также и должны верифицировать то, что сообщение не модифицировано во время передачи.

[0060] Для работы PBFT-модели, выдвигается такое допущение, что сумма злоумышленных узлов в сети не может одновременно быть равной или превышать 1/3 от общего числа узлов в системе в данном окне уязвимости. Чем больше узлов в системе, тем более математически маловероятно, что число, приближающееся к 1/3 от всех узлов, являются злоумышленными. Алгоритм эффективно предоставляет как живучесть, так и безопасность при условии, что самое большее (n-1)/3 узлов являются злоумышленными или отказавшими одновременно, где n представляет общее число узлов.

[0061] Каждый раунд PBFT-консенсуса (называемый "видами") включает в себя 4 фазы:

(1) Клиент отправляет запрос в узел-лидер, чтобы активировать операцию предоставления услуг;

(2) Узел-лидер многоадресно передает запрос в резервные узлы;

(3) Узлы выполняют запрос и затем отправляют ответ клиенту; и

(4) Клиент ждет f+1 (f представляет максимальное число узлов, которые могут быть отказавшими) ответов из различных узлов с идентичным результатом.

Конечный результат состоит в том, что все честные узлы приходят к соглашению порядка записи, и они либо подтверждают, либо отклоняют его. Узел-лидер изменяется в круговой схеме в ходе каждого вида и может даже заменяться протоколом, называемым изменением вида, если конкретное количество времени проходит без многоадресной передачи, посредством узла-лидера, запроса. Мажорантность честных узлов также может решать то, является или нет лидер отказавшим, и удалять его со следующим лидером в линии в качестве замены.

[0062] Тем не менее, имеются некоторые ограничения на консенсусный PBFT-механизм. Например, PBFT-модель может хорошо работать в классической форме с относительно небольшими размерами консенсусных групп вследствие огромного объема связи, который требуется между узлами. Большие блочные данные, которые передаются между сетевыми узлами, вызывают проблему сетевой нагрузки и приводят к узкому месту сети. Кроме того, использование кодов аутентификации по методам (MAC) в качестве формата для аутентификационных сообщений в PBFT-модели может быть неэффективным с объемом связи, необходимым между узлами в больших консенсусных группах, таких как криптовалютные сети, и с MAC. Может возникать внутренне присущая неспособность доказывать подлинность сообщений третьей стороне.

[0063] Кроме того, появление последовательных злоумышленных узлов при изменении узла-лидера с использованием кругового способа, используемого посредством PBFT, затрагивает услугу на основе цепочек блоков посредством введения времени задержки или задержки при нахождении узла-лидера, который является честным. Например, при выборе первого сетевого узла в качестве нового узла-лидера, первый сетевой узел может представлять собой злоумышленный узел, в силу чего не может выбираться в качестве нового узла-лидера. В круговом способе, второй сетевой узел в линии может выбираться в качестве нового узла-лидера. Тем не менее, если второй сетевой узел также представляет собой злоумышленный узел, другой сетевой узел в линии верифицируется как целесообразный в качестве узла-лидера. Этот процесс продолжается до тех пор, пока новый узел-лидер, который является честным, не идентифицируется. Такое частое изменение узла-лидера вводит значительную задержку в услугах на основе цепочек блоков.

[0064] Кроме того, сетевые узлы в сети цепочек блоков могут подвергаться византийскому отказу или катастрофическому отказу в любое время. Например, сетевой узел может компрометироваться посредством злоумышленного кибервзломщика и вести себя неправильно. Если сетевые узлы, которые компрометируются, не восстанавливаются быстро, злоумышленный кибервзломщик может компрометировать сеть цепочек блоков и услуги посредством коррумпирования более 1/3 сетевых узлов без обнаружения.

[0065] Чтобы разрешать вышеописанные сложности и проблемы, ассоциированные с существующими консенсусными BFT-механизмами и консенсусным PBFT-механизмом, настоящее описание изобретения раскрывает улучшенные консенсусные механизмы, включающие в себя технологии для достижения консенсуса между сетевыми узлами в распределенной системе, выполнения изменения первичного узла в распределенной системе и выполнения процесса восстановления для сетевого узла в распределенной системе. Описанные консенсусные механизмы могут достигать различных преимуществ в различных вариантах применения.

[0066] Например, консенсусный процесс, как пояснено ниже, включает в себя множество признаков, которые улучшают операции системы цепочек блоков, и помогает смягчать узкое место сети. Например, описанный консенсусный процесс включает в себя преобразование запроса на проведение транзакции в ряд блоков кодов стирания ошибок (EC) согласно EC-коду и отправку одного из EC-блоков в каждый из сетевых узлов. EC-блок меньше по размеру, чем исходный запрос на проведение транзакции. Соответственно, отправка EC-блока вместо полного запроса на проведение транзакции в сетевые узлы уменьшает размер блоков данных, которые передаются между сетевыми узлами сети цепочек блоков, за счет этого экономя полосу пропускания сети и уменьшая сетевую нагрузку. Это дополнительно уменьшает размер данных, которые записываются и считываются в/из пространства запоминающего устройства сетевых узлов, за счет этого уменьшая нагрузку на пространство запоминающего устройства сетевых узлов и повышая эффективность полной системы цепочек блоков.

[0067] Кроме того, настоящее описание изобретения описывает процесс изменения сверхкадров, который включает в себя назначение соответствующих весовых коэффициентов для нескольких фаз консенсусного процесса, определение суммы весовых коэффициентов на основе соответствующих весовых коэффициентов нескольких фаз и определение нового первичного узла на основе суммы весовых коэффициентов. Процесс изменения сверхкадров на основе суммы весовых коэффициентов вместо кругового способа может упрощать выбор нового первичного узла, который является неотказавшим, своевременно. Первичный узел может представлять собой узел-лидер, который имеет полномочия инициировать раунд консенсусного процесса между рядом сетевых узлов, включающих в себя первичный узел. Другие сетевые узлы сети цепочек блоков могут упоминаться как резервные узлы. Процесс изменения сверхкадров может помогать разрешать проблему кругового способа, которая вызывает частое изменение первичного узла, когда несколько сетевых узлов в линии для нового первичного узла являются отказавшими. В отличие от кругового способа, процесс изменения сверхкадров в настоящем описании изобретения основывается на сумме весовых коэффициентов, чтобы выбирать новый первичный узел, что позволяет уменьшать задержку или задержку при нахождении нового первичного узла, который не является отказавшим. Это дополнительно может повышать эффективность полной системы цепочек блоков в предоставлении услуг на основе цепочек блоков.

[0068] Кроме того, настоящее описание изобретения поясняет процесс восстановления, который включает в себя такие операции, как отправка сообщения с запросом состояния посредством сетевого узла, который применяется в качестве нового первичного узла, и прием сообщений с ответом по состоянию из других сетевых узлов. Эти операции выполняются таким образом, что процесс восстановления отказавшего сетевого узла не создает помехи нормальной работе консенсусного процесса между другими неотказавшими сетевыми узлами. Это упрощает экономию вычислительных и сетевых ресурсов для восстановления отказавшего сетевого узла посредством уменьшения сложности процесса восстановления.

[0069] Фиг. 1 иллюстрирует пример окружения 100, которое может использоваться для того, чтобы выполнять реализации настоящего описания изобретения. В некоторых примерах, окружение 100 обеспечивает возможность объектам участвовать в консорциальной сети 102 цепочек блоков. Окружение 100 включает в себя вычислительные устройства или системы 106, 108 и сеть 110. В некоторых примерах, сеть 110 включает в себя локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), Интернет либо комбинацию вышеозначенного и соединяет веб-узлы, пользовательские устройства (например, вычислительные устройства) и внутренние интерфейсные системы. В некоторых примерах, к сети 110 может осуществляться доступ по линии проводной и/или беспроводной связи. В некоторых примерах, сеть 110 обеспечивает связь с и в консорциальной сети 102 цепочек блоков. В общем, сеть 110 представляет одну или более сетей связи. В некоторых случаях, вычислительные устройства 106, 108 могут представлять собой узлы облачной вычислительной системы (не показана), либо вычислительное устройство 106, 108 может представлять собой отдельную облачную вычислительную систему, включающую в себя множество компьютеров, взаимно соединенных посредством сети, и функционирующую в качестве системы распределенной обработки.

[0070] В проиллюстрированном примере, вычислительные системы 106, 108 могут включать в себя любую соответствующую вычислительную систему, которая обеспечивает участие в качестве узла в консорциальной сети 102 цепочек блоков. Примерные вычислительные устройства включают в себя, без ограничения, сервер, настольный компьютер, переносной компьютер, планшетное вычислительное устройство и смартфон. В некоторых примерах, вычислительные системы 106, 108 выполняют хостинг одной или более машинореализованных услуг для взаимодействия с консорциальной сетью 102 цепочек блоков. Например, вычислительная система 106 может выполнять хостинг машинореализованных услуг первого объекта (например, пользователя A), к примеру, системы управления транзакциями, которую использует первый объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других пользователей). Вычислительная система 108 может выполнять хостинг машинореализованных услуг второго объекта (например, пользователя B), к примеру, системы управления транзакциями, которую использует второй объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других пользователей). В примере по фиг. 1, консорциальная сеть 102 цепочек блоков представляется как сеть с равноправными узлами для узлов, и вычислительные системы 106, 108 предоставляют узлы первого объекта и второго объекта, соответственно, которые участвуют в консорциальной сети 102 цепочек блоков.

[0071] Фиг. 2 иллюстрирует пример концептуальной архитектуры 200 в соответствии с реализациями настоящего описания изобретения. Пример концептуальной архитектуры 200 включает в себя системы 202, 204, 206 участников, которые соответствуют участнику A, участнику B и участнику C, соответственно. Каждый участник (например, пользователь, организация) участвует в сети 212 цепочек блоков, предоставленной в качестве сети с равноправными узлами, включающей в себя множество узлов 214, по меньшей мере, некоторые из которых неизменно записывают информацию в цепочку 216 блоков. Хотя одна цепочка 216 блоков схематично проиллюстрирована в сети 212 цепочек блоков, несколько копий цепочки 216 блоков предоставляются и поддерживаются в сети 212 цепочек блоков, как подробнее описано в данном документе.

[0072] В проиллюстрированном примере, каждая система 202, 204, 206 участников предоставляется посредством или от имени участника A, участника B и участника C, соответственно, и функционирует в качестве соответствующего узла 214 в сети цепочек блоков. При использовании в данном документе, узел, в общем, означает отдельную систему (например, компьютер, сервер), которая соединяется с сетью 212 цепочек блоков и обеспечивает возможность соответствующему участнику участвовать в сети цепочек блоков. В примере по фиг. 2, участник соответствует каждому узлу 214. Тем не менее, предполагается, что участник может управлять несколькими узлами 214 в сети 212 цепочек блоков, и/или несколько участников могут совместно использовать узел 214. В некоторых примерах, системы 202, 204, 206 участников обмениваются данными с/через сеть 212 цепочек блоков с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)) и/или с использованием удаленных вызовов процедур (RPC).

[0073] Узлы 214 могут иметь различные степени участия в сети 212 цепочек блоков. Например, некоторые узлы 214 могут участвовать в консенсусном процессе (например, в качестве узлов-майнеров, которые добавляют блоки в цепочку 216 блоков), в то время как другие узлы 214 не участвуют в консенсусном процессе. В качестве другого примера, некоторые узлы 214 сохраняют полную копию цепочки 216 блоков, в то время как другие узлы 214 сохраняют копии только частей цепочки 216 блоков. Например, привилегии доступа к данным могут ограничивать данные цепочек блоков, которые соответствующий участник сохраняет в соответствующей системе. В примере по фиг. 2, системы 202, 204, 206 участников сохраняют соответствующие полные копии 216', 216'', 216''' цепочки 216 блоков.

[0074] Цепочка блоков (например, цепочка 216 блоков по фиг. 2) состоит из цепочки блоков, причем каждый блок хранит данные. Примеры данных включают в себя данные транзакции, представляющие транзакцию между двумя или более участников. Хотя транзакции используются в данном документе в качестве неограничивающего примера, предполагается, что, любые соответствующие данные могут сохраняться в цепочке блоков (например, документы, изображения, видео, аудио). Примеры транзакций могут включать в себя, без ограничения, обмены чем-либо, имеющим стоимость (например, активами, продуктами, услугами и валютой). Данные транзакции неизменно сохраняются в цепочке блоков. Таким образом, данные транзакции не могут изменяться.

[0075] До сохранения в блоке, данные транзакции хэшируются. Хэширование представляет собой процесс преобразования данных транзакции (предоставляются в качестве строковых данных) в хэш-значение фиксированной длины (также предоставляются в качестве строковых данных). Невозможно дехэшировать хэш-значение, чтобы получать данные транзакции. Хэширование обеспечивает то, что даже небольшое изменение данных транзакции приводит к совершенно другому хэш-значению. Дополнительно и как отмечено выше, хэш-значение имеет фиксированную длину. Таким образом, независимо от размера данных транзакции, длина хэш-значения является фиксированной. Хэширование включает в себя обработку данных транзакции через хэш-функцию, чтобы формировать хэш-значение. Пример хэш-функции включает в себя, без ограничения, защищенный хэш-алгоритм (SHA)-256, который выводит 256-битовые хэш-значения.

[0076] Данные транзакции для нескольких транзакций хэшируются и сохраняются в блоке. Например, хэш-значения двух транзакций предоставляются и непосредственно хэшируются для того, чтобы предоставлять другой хэш. Этот процесс повторяется до тех пор, пока, для всех транзакций, которые должны сохраняться в блоке, не предоставляется одно хэш-значение. Это хэш-значение упоминается как корневой хэш Меркла и сохраняется в заголовке блока. Изменение любой из транзакций должно приводить к изменению ее хэш-значения и, в конечном счете, к изменению корневого хэша Меркла.

[0077] Блоки добавляются в цепочку блоков через консенсусный протокол. Несколько узлов в сети цепочек блоков участвуют в консенсусном протоколе и конкурируют за то, чтобы добавлять блок в цепочку блоков. Такие узлы упоминаются как майнеры (или узлы-майнеры). POW, введенное выше, используется в качестве неограничивающего примера.

[0078] Узлы-майнеры выполняют консенсусный процесс, чтобы добавлять транзакции в цепочку блоков. Хотя несколько узлов-майнеров участвуют в консенсусном процессе, только один узел-майнер может записывать блок в цепочку блоков. Таким образом, узлы-майнеры конкурируют в консенсусном процессе за то, чтобы добавлять свой блок в цепочку блоков. Подробнее, узел-майнер периодически собирает отложенные транзакции из пула транзакций (например, вплоть до предварительно заданного предела для ряда транзакций, которые могут быть включены в блок, если таковые имеются). Пул транзакций включает в себя сообщения по транзакциям от участников сети цепочек блоков. Узел-майнер конструирует блок и добавляет транзакции в блок. До добавления транзакций в блок, узел-майнер проверяет то, включена или нет какая-либо из транзакций уже в блок цепочки блоков. Если транзакция уже включена в другой блок, транзакция отбрасывается.

[0079] Узел-майнер формирует заголовок блока, хэширует все транзакции в блоке и комбинирует хэш-значение в пары, чтобы формировать дополнительные хэш-значения, до тех пор, пока одно хэш-значение не предоставляется для всех транзакций в блоке (корневой хэш Меркла). Этот хэш добавляется в заголовок блока. Майнер также определяет хэш-значение последнего блока в цепочке блоков (т.е. последнего блока, добавленного в цепочку блоков). Узел-майнер также добавляет значение одноразового номера и временную метку в заголовок блока. В процессе майнинга, узел-майнер пытается находить хэш-значение, которое удовлетворяет обязательным параметрам. Узел-майнер продолжает изменять значение одноразового номера до нахождения хэш-значения, которое удовлетворяет обязательным параметрам.

[0080] Каждый майнер в сети цепочек блоков пытается находить хэш-значение, которое удовлетворяет обязательным параметрам, и в силу этого конкурируют друг с другом. В конечном счете один из узлов-майнеров находит хэш-значение, которое удовлетворяет обязательным параметрам, и оповещает его во все другие узлы-майнеры в сети цепочек блоков. Другие узлы-майнеры верифицируют хэш-значение, и если оно определено как корректное, верифицируют каждую транзакцию в блоке, подтверждают блок и добавляют блок в свою копию цепочки блоков. Таким образом, глобальное состояние цепочки блоков является согласованным для всех узлов-майнеров в сети цепочек блоков. Вышеописанный процесс представляет собой консенсусный POW-протокол.

[0081] Неограничивающий пример содержит ссылку на фиг. 2. В этом примере, участник A хочет отправлять сумму денежных средств участнику B. Участник A формирует сообщение по транзакции (например, включающее в себя поля From, To и Value) и отправляет сообщение по транзакции в сеть цепочек блоков, которая добавляет сообщение по транзакции в пул транзакций. Каждый узел-майнер в сети цепочек блоков создает блок и принимает все транзакции из пула транзакций (например, вплоть до предварительно заданного предела для номера транзакции, который может добавляться в блок, если таковые имеются) и добавляет транзакции в блок. Таким образом, транзакция, опубликованная посредством участника A, добавляется в блоки узлов-майнеров.

[0082] В некоторых сетях цепочек блоков, криптография реализуется, чтобы поддерживать конфиденциальность транзакций. Например, если два узла хотят поддерживать транзакцию закрытой таким образом, что другие узлы в сети цепочек блоков не могут различать подробности транзакции, узлы могут шифровать данные транзакции. Примеры криптографических способов включают в себя, без ограничения, симметричное шифрование и асимметричное шифрование. Симметричное шифрование означает процесс шифрования, который использует один ключ для шифрования (формирования зашифрованного текста из простого текста) и дешифрования (формирования простого текста из зашифрованного текста). При симметричном шифровании, идентичный ключ доступен для нескольких узлов, так что каждый узел может шифровать/дешифровать данные транзакции.

[0083] Асимметричное шифрование использует пары ключей, которые включают в себя закрытый ключ и открытый ключ, причем закрытый ключ известен только для соответствующего узла, и открытый ключ известен для всех других узлов в сети цепочек блоков. Узел может использовать открытый ключ другого узла, чтобы шифровать данные, и зашифрованные данные могут дешифроваться с использованием закрытого ключа другого узла. Например, и снова ссылаясь на фиг. 2, участник A может использовать открытый ключ участника B, чтобы шифровать данные и отправлять зашифрованные данные участнику B. Участник B может использовать свой закрытый ключ для того, чтобы дешифровать зашифрованные данные (зашифрованный текст) и извлекать исходные данные (простой текст). Сообщения, зашифрованные с помощью открытого ключа узла, могут дешифроваться только с использованием закрытого ключа узла.

[0084] Асимметричное шифрование используется для того, чтобы предоставлять цифровые подписи, что обеспечивает возможность участникам транзакции подтверждать других участников транзакции, а также достоверность транзакции. Например, узел может снабжать цифровой подписью сообщение, и другой узел может подтверждать то, что сообщение отправлено посредством узла, на основе цифровой подписи участника A. Цифровые подписи также могут использоваться для того, чтобы обеспечивать то, что сообщения не изменяются несанкционированно в транзите. Например, и снова ссылаясь на фиг. 2, участник A должен отправлять сообщение участнику B. Участник A формирует хэш сообщения и затем, с использованием своего закрытого ключа, шифрует хэш, чтобы предоставлять цифровую подпись в качестве зашифрованного хэша. Участник A добавляет цифровую подпись в сообщение и отправляет сообщение с цифровой подписью участнику B. Участник B дешифрует цифровую подпись с использованием открытого ключа участника A и извлекает хэш. Участник B хэширует сообщение и сравнивает хэши. Если хэши являются идентичными, участник B может подтверждать то, что сообщение фактически исходит от участника A и не изменено несанкционированно.

[0085] Фиг. 3 иллюстрирует пример процесса 300 для достижения консенсуса между сетевыми узлами (например, узлом 214) распределенной системы (например, сети 102 и 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В частности, фиг. 3 иллюстрирует схему, представляющую примерный вариант осуществления способа 300 достижения консенсуса в нормальном случае, согласно настоящему описанию изобретения. Как проиллюстрировано на фиг. 3, консенсусный процесс 300 включает в себя три фазы или стадии 310, 320 и 330, как пояснено ниже.

[0086] В первой фазе 310 консенсусного процесса 300, первичный узел (или узел-лидер) сети цепочек блоков отправляет первое сообщение в другие сетевые узлы (т.е. резервные узлы). Первое сообщение указывает то, что первичный узел инициирует консенсусный процесс. Например, как проиллюстрировано на фиг. 3, первичный узел R0 отправляет начальное сообщение в другие сетевые узлы R1, R2 и R3 в сети цепочек блоков. Следует отметить, что процесс 300 проиллюстрирован как включающий в себя четыре сетевых узла R0, R1, R2 и R3 только в качестве иллюстрации, процесс 300 может включать в себя любой подходящий ряд сетевых узлов. Ниже подробнее поясняются первая фаза и формат начального сообщения со ссылкой на фиг. 4-6.

[0087] Во второй фазе 320 консенсусного процесса 300, каждый из резервных узлов принимает первое сообщение, которое отправляется посредством первичного узла, подготавливает второе сообщение в ответ на первое сообщение и многоадресно передает второе сообщение в другой сетевой узел. Второе сообщение указывает то, что резервный узел принял первое сообщение из первичного узла, и отправляет ответ в ответ на первое сообщение. Например, как проиллюстрировано на фиг. 3, резервный узел R1 принимает начальное сообщение, которое отправлено посредством первичного узла R0, и отвечает первичному узлу R0 с эхо-сообщением в качестве примера второго сообщения. Между тем, резервный узел R1 также многоадресно передает эхо-сообщение в другие резервные узлы, к примеру, в резервные узлы R2 и R3. Аналогично, резервный узел R2 и R3 многоадресно передает эхо-сообщение в другие сетевые узлы, включающие в себя первичный узел R0.

[0088] Когда сетевой узел, например, такой как первичный узел или резервный узел, принимает эхо-сообщения из других сетевых узлов, сетевой узел может верифицировать информацию в эхо-сообщениях. Ниже подробнее поясняются вторая фаза и формат эхо-сообщения со ссылкой на фиг. 4-6.

[0089] В третьей фазе 330 консенсусного процесса 300, каждый из сетевых узлов многоадресно передает третье сообщение в другие сетевые узлы. Третье сообщение указывает то, что сетевой узел подтверждает предварительно определенный ряд вторых сообщений. В некоторых реализациях, третье сообщение может указывать то, что сетевой узел готов выполнять транзакцию. В некоторых реализациях, третье сообщение может указывать то, что транзакция успешно восстановлена в сетевом узле. Например, как проиллюстрировано на фиг. 3, первичный узел R0 многоадресно передает сообщение подтверждения в резервные узлы R1, R2 и R3. Аналогично, резервные узлы R1, R2 и R2 многоадресно передают сообщение подтверждения в другие сетевые узлы. В некоторых реализациях настоящего описания изобретения, до многоадресной передачи сообщения подтверждения, сетевой узел определяет то, отправляется или нет подтверждение, согласно коду стирания ошибок (EC), и информация в эхо-сообщениях представляет собой информацию, которая принята во второй фазе. Ниже подробнее поясняются третья фаза, EC-код и формат сообщения подтверждения со ссылкой на фиг. 4-6.

[0090] Когда сетевой узел принимает достаточно сообщений подтверждения из других сетевых узлов, сетевой узел определяет то, что консенсус достигнут. Например, если первичный узел R0 или резервные узлы R1, R2 или R3 принимают кворумное (например, 2f+1, где f представляет ряд отказавших сетевых узлов) ряд сообщений подтверждения, консенсус достигается автоматически между сетевыми узлами.

[0091] Фиг. 4 иллюстрирует пример процесса 400 для достижения консенсуса между сетевыми узлами (например, узлом 214 или узлами R0, R1, R2 и R3) распределенной системы (например, сети 102 или 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В некоторых реализациях, процесс 400 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств. Для ясности представления, нижеприведенное описание, в общем, описывает способ 400 в контексте других чертежей в этом описании. Следует понимать, что способ 400 может осуществляться, например, посредством любой подходящей системы, окружения, программного обеспечения и аппаратных средств либо комбинации систем, окружений, программного обеспечения и аппаратных средств, надлежащим образом. В некоторых реализациях, различные этапы способа 400 могут выполняться параллельно, в комбинации, циклически или в любом порядке.

[0092] В начале, процесс 400 может реализовываться в сочетании с системой 100-300, как проиллюстрировано на фиг. 1-3. В некоторых реализациях настоящего описания изобретения, сеть 102 и/или 212 цепочек блоков включает в себя первичный узел 404 и один или более резервных узлов 406. Сеть 102 и/или 212 цепочек блоков обменивается данными с вычислительной системой 106 и/или 108, к примеру, с клиентскими узлами 402 через сеть 110, чтобы предоставлять услуги на основе цепочек блоков. Каждый из клиентского узла 402, первичного узла 404 и резервного узла 406 может представлять собой компьютер специального назначения или другое оборудование обработки данных, выполненное с возможностью выполнять процессы, поясненные в данном документе. Например, клиентский узел 402 также может называться "клиентским терминалом" или "клиентским устройством", которое взаимодействует с сетью цепочек блоков. Клиентский узел 402 может устанавливать, например, клиентское приложение или комплект разработчика клиентского программного обеспечения (SDK) в связи с сетью цепочек блоков для осуществления доступа и обмена данными с сетью цепочек блоков. Первичный узел 404 и один или более резервных узлов 406 также могут упоминаться как консенсусные узлы или сетевые узлы, которые достигают консенсуса и неизменно записывают информацию в сеть цепочек блоков.

[0093] Процесс 400 начинается на 408, на котором клиентский узел 402 формирует запрос на проведение транзакции. В некоторых реализациях настоящего описания изобретения, запрос на проведение транзакции может включать в себя запрос, запрашивающий услугу на основе цепочек блоков из сети 102 и/или 212 цепочек блоков.

[0094] На 410, клиентский узел 402 многоадресно передает запрос на проведение транзакции в первичный узел 404 сети 102 и/или 212 цепочек блоков. В некоторых реализациях настоящего описания изобретения, первичный узел 404 назначает порядковый номер запросу на проведение транзакции для того, чтобы отслеживать запросы на проведение транзакций после приема запроса на проведение транзакции из клиентского узла 402.

[0095] На 412, первичный узел 402 формирует ряд EC-блоков после приема запроса на проведение транзакции из клиентского узла 402. В некоторых реализациях настоящего описания изобретения, первичный узел 404 формирует ряд EC-блоков согласно EC-коду с использованием запроса на проведение транзакции. Например, ссылаясь на фиг. 5, первичный узел 404 применяет EC-код 504 к запросу 502 на проведение транзакции и преобразует запрос 502 на проведение транзакции в EC-сообщение 506 с использованием EC-кода 504. EC-код 504 представляет собой код с прямой коррекцией ошибок (FEC) согласно предположению относительно битовых стираний. EC-код 504 преобразует исходный запрос 502 на проведение транзакции в более длинное EC-сообщение 506 таким образом, что исходный запрос 502 на проведение транзакции может восстанавливаться из части или фрагмента EC-сообщения 506.

[0096] В некоторых реализациях настоящего описания изобретения, EC-код 504 представляет собой почти оптимальный код стирания ошибок, такой как торнадо-код или код разреженного контроля по четности. В альтернативных реализациях настоящего описания изобретения, EC-код 504 представляет собой почти оптимальный фонтанный код, такой как фонтанный код, онлайновый код, код на основе преобразования Луби (LT) или хищнический код. В альтернативных реализациях настоящего описания изобретения, EC-код 504 представляет собой оптимальный код стирания ошибок, такой как код четности, пархивный код, код Рида-Соломона или регенерирующий код. В некоторых реализациях настоящего описания изобретения, EC-код 504 может представлять собой любой подходящий тип кода стирания ошибок.

[0097] После преобразования запроса 502 на проведение транзакции в EC-сообщение 506, первичный узел 404 формирует ряд EC-блоков 508 с использованием EC-сообщения 506. Например, как проиллюстрировано на фиг. 5, первичный узел 404 формирует четыре EC-блока 508, EC-блок A, EC-блок B, EC-блок C и EC-блок D посредством разделения EC-сообщения 506. Следует отметить, что EC-блоки 508 проиллюстрированы на фиг. 5 как включающие в себя четыре блока в качестве иллюстрации, EC-блоки 508 могут формироваться как включающие в себя любой подходящий ряд EC-блоков 508. EC-блоки 508 должны отправляться в соответствующие резервные узлы 406 в начальных сообщениях.

[0098] В некоторых реализациях настоящего описания изобретения, EC-блоки 508 имеют идентичный размер. Тем не менее, в альтернативных реализациях, EC-блоки 508 могут иметь размеры, которые отличаются друг от друга.

[0099] В некоторых реализациях настоящего описания изобретения, первичный узел 404 формирует хэш-дерево 500 (например, дерево Меркла) с использованием EC-блоков 508. Хэш-дерево 500 включает в себя ряд концевых узлов, которые помечаются хэшем блоков данных, и ряд неконцевых узлов, которые помечаются криптографическим хэшем меток его дочерних узлов. Например, как проиллюстрировано на фиг. 5, сконфигурировано хэш-дерево 500, включающее в себя четыре концевых узла 510, хэш A, хэш B, хэш C и хэш D, которые формируются в качестве криптографического хэша соответствующих EC-блоков 508, четыре неконцевых узла 512, которые формируются в качестве хэша конкатенации соответствующих дочерних узлов 510, и неконцевой узел 514, который формируется в качестве хэша дочерних узлов 512 и представляет собой корневой хэш хэш-дерева 500.

[00100] Хэш-деревья 500 обеспечивают возможность эффективной и защищенной верификации контента больших структур данных. Хэш-деревья 500 могут использоваться для того, чтобы верифицировать любой вид данных, сохраненных, обработанных и передаваемых в/между компьютерами. Они могут помогать обеспечивать то, что блоки данных, принимаемые от других равноправных узлов в P2P-сети, принимаются неповрежденными и неизмененными, и даже проверять то, что другие равноправные узлы не отправляют поддельные блоки. Ниже подробнее поясняется верификация блоков данных с использованием хэш-дерева 500 со ссылкой на следующие этапы консенсусного процесса 400.

[00101] Снова ссылаясь на фиг. 4, первичный узел 404 формирует первое сообщение (например, начальное сообщение) после формирования EC-блоков 508 и хэш-дерево 500. Первое сообщение указывает то, что первичный узел инициирует консенсусный процесс. В некоторых реализациях, начальное сообщение, в качестве примера первого сообщения, формируется с использованием информации в EC-блоках 508 и хэш-дерево 500. В некоторых реализациях настоящего описания изобретения, ссылаясь на фиг. 6, начальное сообщение имеет формат <epoch, tx_root_hash, ec_block_hash, ec_block, seq, j>, где "epoch" представляет раунд консенсуса, в котором отправляется сообщение, "tx_root_hash" представляет корневой хэш 514 в хэш-дереве 500, "ec_block_hash" представляет хэши 510 и/или 512 в хэш-дереве 500, "ec_block" представляет EC-блоки 508 в хэш-дереве 500, "seq" представляет порядковый номер, ассоциированный с запросом 502 на проведение транзакции, и "j" представляет сетевой узел, который формирует и отправляет начальное сообщение. В некоторых реализациях, начальное сообщение может иметь другой формат, например, посредством включения дополнительных или других полей.

[00102] Снова ссылаясь на фиг. 4, на 416, в первой фазе консенсусного процесса, первичный узел 404 многоадресно передает начальное сообщение в другие сетевые узлы (например, резервные узлы 406). В некоторых реализациях, начальные сообщения, которые отправляются в резервные узлы 406, имеют формат <epoch, tx_root_hash, ec_block_hash, ec_block, seq, j>. Например, первичный узел 404 может отправлять первое начальное сообщение <epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 0> в первый резервный узел 406 и второе начальное сообщение <epoch 1, Hash ABCD, {Hash A, Hash C, Hash D}, EC block B, 1, 0> во второй резервный узел 406 и т.д. Следует отметить, что информация в начальном сообщении, такая как "ec_block", может использоваться с "ec_block_hash" для восстановления хэш-дерева 500. Например, в первом начальном сообщении <epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 0>, EC-блок 508 "EC block A" может хэшироваться, чтобы формировать криптографический хэш 510 "Hash A", который дополнительно используется с другими хэшами 510 "{Hash B, Hash C, Hash D}", чтобы восстанавливать хэш-дерево 500. Восстановленное хэш-дерево 500 используется для того, чтобы верифицировать эхо-сообщения, как подробнее пояснено ниже со ссылкой на следующие этапы консенсусного процесса.

[00103] На 418, каждый из резервных узлов 406 формирует второе сообщение (например, эхо-сообщение) во второй фазе консенсусного процесса после приема начального сообщения из первичного узла 404. Второе сообщение указывает то, что резервный узел принимает первое сообщение из первичного узла. Второе сообщение отправляется в качестве ответа в ответ на первое сообщение. В некоторых реализациях настоящего описания изобретения, эхо-сообщение формируется посредством резервного узла 406 как включающее в себя начальное сообщение или часть начального сообщения и подпись резервного узла 406, ассоциированного с начальным сообщением. Например, резервный узел 406 может формировать подпись посредством подписания начального сообщения или дайджеста начального сообщения с использованием закрытого ключа. Подпись с закрытым ключом может использоваться посредством других сетевых узлов с использованием открытого ключа, спаренного с закрытым ключом, чтобы аутентифицировать эхо-сообщение, которое включает в себя подпись с закрытым ключом.

[00104] В некоторых реализациях настоящего описания изобретения, ссылаясь на фиг. 6, эхо-сообщение имеет формат <epoch, tx_root_hash, ec_block_hash, ec_block, seq, sign_proof, j>, где "epoch" представляет раунд консенсуса, в котором отправляется сообщение, "tx_root_hash" представляет корневой хэш 514 в хэш-дереве 500, "ec_block_hash" представляет хэши 510 и/или 512 в хэш-дереве 500, "ec_block" представляет EC-блоки 508 в хэш-дереве 500, которые принимаются посредством соответствующих резервных узлов 406, "seq" представляет порядковый номер, ассоциированный с запросом 502 на проведение транзакции, "sign-proof" представляет подпись резервных узлов 406, ассоциированных с начальными сообщениями, и "j" представляет сетевой узел, который формирует и отправляет эхо-сообщение. В некоторых реализациях, эхо-сообщение может иметь другой формат, например, посредством включения дополнительных или других полей.

[00105] Снова ссылаясь на фиг. 4, на 420, резервные узлы 406 отправляют эхо-сообщения в первичный узел 404. На 421, каждый из резервных узлов 406 отправляет эхо-сообщения в другие резервные узлы 406. На 423, каждый из резервных узлов 406 может принимать эхо-сообщения из других резервных узлов 406.

[00106] На 422, первичный узел 404 верифицирует эхо-сообщения, которые отправляются посредством резервных узлов 406. В некоторых реализациях настоящего описания изобретения, первичный узел 404 верифицирует то, являются или нет эхо-сообщения достоверными, согласно хэш-дереву 500. Например, первичный узел 404 может принимать первое эхо-сообщение<epoch 1, Hash ABCD, {Hash B, Hash C, Hash D}, EC block A, 1, 1> из первого резервного узла 406. Первичный узел 404 может извлекать EC-блок 508 "EC block A" из сообщения и хэшировать его, чтобы формировать криптографический хэш 510 "Hash A". Первичный узел 404 дополнительно использует сформированный хэш 510 "Hash A" с другими хэшами 510 "{Hash B, Hash C, Hash D}" в сообщении, для того чтобы восстанавливать хэш-дерево 500. Затем первичный узел 404 определяет корневой хэш 514 из восстановленного хэш-дерева 500 и сравнивает его с корневым хэшем 514 в эхо-сообщении, таким как "Hash ABCD". Если два корневых хэша 514 совпадают, первичный узел 404 определяет то, что эхо-сообщение является достоверным. Первичный узел 404 может хранить допустимые эхо-сообщения и отбрасывать эхо-сообщения, которые определяются как недостоверные.

[00107] На 424, первичный узел 404 определяет то, превышает или нет ряд допустимых эхо-сообщений предварительно определенное пороговое значение. В некоторых реализациях настоящего описания изобретения, первичный узел 404 определяет то, достигает или нет ряд допустимых эхо-сообщений кворумного числа n-f или 2f+1, где n является общим числом сетевых узлов, и f является максимальным числом отказавших узлов, которые может допускать сеть.

[00108] На 426, первичный узел 404 восстанавливает запрос 502 на проведение транзакции в ответ на определение того, что ряд допустимых эхо-сообщений достигает кворумного числа. В некоторых реализациях настоящего описания изобретения, первичный узел 404 восстанавливает запрос 502 на проведение транзакции на основе, по меньшей мере, поднабора допустимых эхо-сообщений согласно EC-коду. Например, первичный узел 404 может извлекать число n-2f или f+1 EC-блоков 508, которые находятся в кворумном числе (например, n-f или 2f+1) допустимых эхо-сообщений, и использовать извлеченные EC-блоки 508 для того, чтобы восстанавливать запрос 502 на проведение транзакции согласно EC-коду 504.

[00109] На 428, в третьей фазе консенсусного процесса, первичный узел 404 формирует третье сообщение (например, сообщение подтверждения) в ответ на определение того, что запрос 502 на проведение транзакции успешно восстановлен. Третье сообщение указывает то, что сетевой узел подтверждает предварительно определенный ряд вторых сообщений. В некоторых реализациях, третье сообщение может указывать то, что сетевой узел готов выполнять транзакцию. В некоторых реализациях, третье сообщение может указывать то, что транзакция успешно восстановлена в сетевом узле. Например, сообщение подтверждения может использоваться для того, чтобы указывать другим сетевым узлам то, что запрос 502 на проведение транзакции успешно восстановлен. Если первичный узел 404 не может восстанавливать запрос 502 на проведение транзакции, первичный узел 404 не может формировать сообщение подтверждения.

[00110] В некоторых реализациях настоящего описания изобретения, ссылаясь на фиг. 6, сообщение подтверждения имеет формат <epoch, tx_root_hash, seq, sign_proofs, j>, где "epoch" представляет раунд консенсуса, в котором отправляется сообщение, "tx_root_hash" представляет корневой хэш 514 в хэш-дереве 500, "seq" представляет порядковый номер, ассоциированный с запросом 502 на проведение транзакции, "sign-proofs" представляет набор подписей в допустимых эхо-сообщениях, и "j" представляет сетевой узел, который формирует и отправляет сообщение подтверждения. В некоторых реализациях, сообщение подтверждения может иметь другой формат, например, посредством включения дополнительных или других полей.

[00111] Снова ссылаясь на фиг. 4, на 430, первичный узел 404 отправляет сообщение подтверждения в резервные узлы 406.

[00112] Аналогично первичному узлу 404, каждый из резервных узлов 406 может восстанавливать запрос на проведение транзакции, например, посредством выполнения аналогичных этапов с этапами 422-428 в качестве первичного узла 404. На 432, каждый из резервных узлов 406 формирует сообщение подтверждения в ответ на определение того, что запрос 502 на проведение транзакции успешно восстановлен посредством резервного узла 406. В некоторых реализациях, первичный узел 404 и резервный узел 406 могут выполнять этапы 422-428 параллельным способом, например, как указано на фиг. 3.

[00113] На 434, резервные узлы 406 отправляют сообщения подтверждения в первичный узел 404. Между тем, каждый из резервных узлов 406 может отправлять сообщения подтверждения в другие резервные узлы 406.

[00114] На 436, первичный узел 404 выполняет запрос 502 на проведение транзакции в ответ на определение того, что ряд сообщений подтверждения превышает предварительно определенное пороговое значение. В некоторых реализациях настоящего описания изобретения, первичный узел 404 определяет то, являются или нет принятые сообщения подтверждения идентичными, и то, достигает или нет ряд сообщений подтверждения, которые являются идентичными, кворумного числа (например, 2f+1). Если ряд идентичных сообщений подтверждения достигает кворумного числа, первичный узел 404 определяет то, что консенсус достигнут между всеми сетевыми узлами, и затем выполняет запрос 502 на проведение транзакции локально. В некоторых реализациях настоящего описания изобретения, если первичный узел 404 определяет то, что ряд сообщений подтверждения, которые являются идентичными, не достигает кворумного числа, первичный узел 404 определяет то, что консенсус не достигнут между всеми сетевыми узлами, и затем отказывается от выполнения запроса 502 на проведение транзакции.

[00115] В некоторых реализациях настоящего описания изобретения, каждый из резервных узлов 406 может выполнять идентичные операции, которые выполняются посредством первичного узла 404, как описано выше на 436 перед выполнением запроса 502 на проведение транзакции. Если резервный узел 406 определяет то, что сообщения подтверждения, которые он принимает, превышают предварительно определенное пороговое значение, резервный узел 406 определяет то, что консенсус достигнут между сетевыми узлами, и выполняет запрос 502 на проведение транзакции локально. В некоторых реализациях настоящего описания изобретения, если резервный узел 406 определяет то, что ряд сообщений подтверждения, которые являются идентичными, не достигает кворумного числа, резервный узел 406 определяет то, что консенсус не достигнут между всеми сетевыми узлами, и затем отказывается от выполнения запроса 502 на проведение транзакции.

[00116] На 438, первичный узел 404 отправляет результат транзакции в клиентский узел 402 после выполнения запроса 502 на проведение транзакции. Резервные узлы 406, которые успешно выполняют запрос 502 на проведение транзакции локально, также могут отправлять свои соответствующие результаты транзакции в клиентский узел 402.

[00117] Консенсусный процесс, как пояснено выше, включает в себя множество признаков, которые улучшают работу всей системы цепочек блоков, и помогает смягчать узкое место сети. Например, консенсусный процесс в настоящем описании изобретения включает в себя формирование ряда EC-блоков согласно EC-коду с использованием запроса на проведение транзакции и отправку одного из EC-блоков в каждый из сетевых узлов. EC-блок меньше по размеру, чем исходный запрос на проведение транзакции. Следовательно, отправка EC-блока вместо запроса на проведение транзакции в сетевые узлы уменьшает размер блоков данных, которые передаются между сетевыми узлами сети цепочек блоков, за счет этого экономя полосу пропускания сети и уменьшая сетевую нагрузку. Это дополнительно уменьшает размер данных, которые записываются и считываются в/из пространства запоминающего устройства сетевых узлов, за счет этого уменьшая нагрузку на пространство запоминающего устройства сетевых узлов и повышая эффективность полной системы цепочек блоков.

[00118] Во время консенсусного процесса, резервные узлы ожидают запроса из первичного узла. Тем не менее, первичный узел может сталкиваться с византийским сбоем или катастрофическим сбоем таким образом, что первичный узел не может передавать в широковещательном режиме запрос в пределах предварительно определенного временного окна. Когда конкретное количество времени проходит без многоадресной передачи, посредством первичного узла, запроса, новый первичный узел, возможно, должен выбираться, чтобы предотвращать неограниченное ожидание посредством резервных узлов запросов, которые следует выполнять.

[00119] Фиг. 7 иллюстрирует пример процесса 700 для выполнения изменения первичного узла (например, узла 214 или 404) распределенной системы (например, сети 102 и 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В частности, фиг. 7 иллюстрирует схему, представляющую примерный вариант осуществления способа 700 выполнения изменения первичного узла, согласно настоящему описанию изобретения. В некоторых реализациях, первичный узел ассоциирован со сверхкадром, который включает в себя консенсусный процесс, в котором первичный узел представляет собой лидера. Изменение первичного узла может приводить к изменению сверхкадра.

[00120] В некоторых реализациях, в ответ на определение того, что первичный узел текущего сверхкадра должен изменяться, резервный узел сети цепочек блоков отправляет первое сообщение в другие сетевые узлы. Первое сообщение указывает то, что резервный узел должен представлять собой новый первичный узел в новом сверхкадре. Например, как проиллюстрировано на фиг. 7, резервный узел R0 отправляет сообщение изменения сверхкадров (сообщение EPOCH_CHANGE) в другие сетевые узлы R1, R2 и R3 в сети цепочек блоков в ответ на то, что резервный узел, R0 определяет то, что текущий первичный узел является отказавшим, и на то, что изменение сверхкадров должно выполняться. Сообщение изменения сверхкадров (EPOCH_CHANGE) представляет собой пример первого сообщения, указывающего то, что резервный узел R0 применяется в качестве нового первичного узла. Изменение сверхкадров может вызывать изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом. Следует отметить, что процесс 700 проиллюстрирован как реализованный в сочетании с четырьмя сетевыми узлами только в качестве иллюстрации. Процесс 700 может реализовываться в сочетании с любым подходящим рядом сетевых узлов.

[00121] Затем каждый из сетевых узлов принимает первое сообщение, которое отправляется посредством резервного узла, подготавливает второе сообщение в ответ на первое сообщение и многоадресно передает второе сообщение в другие сетевые узлы. Например, как проиллюстрировано на фиг. 7, сетевой узел R1 принимает сообщение изменения сверхкадров (EPOCH_CHANGE), которое отправляется посредством резервного узла R0, и отвечает резервному узлу R0 сообщением нового сверхкадра (сообщение NEW_EPOCH), указывающим подтверждение того, что резервный узел R0 может становиться новым первичным узлом. Между тем, сетевой узел R1 также многоадресно передает сообщение нового сверхкадра в другие сетевые узлы, к примеру, в сетевые узлы R2 и R3. Аналогично, сетевой узел R2 и R3 многоадресно передает сообщение нового сверхкадра в другие сетевые узлы.

[00122] Ниже подробнее поясняются процесс изменения сверхкадров, как пояснено выше, формат сообщения изменения сверхкадров и формат сообщения нового сверхкадра со ссылкой на фиг. 8-9.

[00123] Фиг. 8 иллюстрирует пример процесса 800 для выполнения изменения первичного узла в распределенной системе (например, в сети 102 или 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В некоторых реализациях, примерный процесс 800 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств. Для ясности представления, нижеприведенное описание, в общем, описывает способ 800 в контексте других чертежей в этом описании. Следует понимать, что способ 800 может осуществляться, например, посредством любой подходящей системы, окружения, программного обеспечения и аппаратных средств либо комбинации систем, окружений, программного обеспечения и аппаратных средств, надлежащим образом. В некоторых реализациях, различные этапы способа 800 могут выполняться параллельно, в комбинации, циклически или в любом порядке.

[00124] Процесс 800 начинается на 806, на котором резервный узел 802 определяет то, что изменение сверхкадров должно выполняться. Изменение сверхкадров, поясненное в данном документе, вызывает изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом. Примерный сверхкадр может включать в себя консенсусный процесс (например, консенсусный процесс 300 или 400) для достижения консенсуса между рядом сетевых узлов с использованием первичного узла, как пояснено выше со ссылкой на фиг. 3-6.

[00125] В некоторых реализациях настоящего описания изобретения, резервный узел 802 определяет то, что изменение сверхкадров должно выполняться, в ответ на определение того, что резервный узел 802 по-прежнему ожидает запроса из текущего первичного узла после того, как конкретное количество времени проходит без приема запроса из текущего первичного узла. Например, текущий первичный узел может сталкиваться с византийским сбоем или катастрофическим сбоем таким образом, что текущий первичный узел не может многоадресно передавать запрос в пределах предварительно определенного временного окна. Следовательно, изменение сверхкадров могут инициироваться посредством тайм-аутов, которые предотвращают неограниченное ожидание посредством резервных узлов запросов, которые следует выполнять. Процесс изменения сверхкадров, поясненный в данном документе, предоставляет живучесть и сокращает сетевую задержку посредством предоставления возможности системе добиваться прогресса, когда первичный узел сбоит.

[00126] На 808, резервный узел 802 определяет соответствующий весовой коэффициент резервного узла 802, ассоциированного с каждой из фаз консенсусного процесса в текущем сверхкадре. В некоторых реализациях, консенсусный процесс включает в себя три фазы, как описано выше со ссылкой на фиг. 3-6. Весовой коэффициент представляет собой показатель классификации резервного узла 802 в качестве нового первичного узла в новом сверхкадре.

[00127] В некоторых реализациях настоящего описания изобретения, резервный узел 802 определяет весовой коэффициент резервного узла 802 для первой фазы консенсусного процесса в текущем сверхкадре в качестве первого значения. Например, резервному узлу 802 может назначаться начальный вес 10%, если резервный узел 802 переходит к первой фазе консенсусного процесса (например, к первой фазе 310 консенсусного процесса 300). В альтернативных реализациях настоящего описания изобретения, резервный узел 802 может назначать любое подходящее значение весового коэффициента резервному узлу 802 для первой фазы текущего консенсусного процесса.

[00128] В некоторых реализациях настоящего описания изобретения, резервный узел 802 определяет весовой коэффициент резервного узла 802 для второй фазы консенсусного процесса (например, первой фазы 320 консенсусного процесса 300) в текущем сверхкадре на основе процесса кворумной верификации. Процесс кворумной верификации выполняется посредством определения того, принимает или нет резервный узел 802 предварительно определенное число (например, 2f+1) эхо-сообщений из других сетевых узлов во второй фазе консенсусного процесса.

[00129] В некоторых реализациях настоящего описания изобретения, если резервный узел 802 не проходит кворумную верификацию (например, резервный узел 802 принимает ряд эхо-сообщений, которое ниже предварительно определенного порогового значения), резервный узел 802 может определять весовой коэффициент резервного узла 802 для второй фазы консенсусного процесса в качестве первого значения. Если резервный узел 802 проходит кворумную верификацию (например, резервный узел 802 принимает ряд эхо-сообщений, которое равно или превышает предварительно определенное пороговое значение), резервный узел 802 может определять весовой коэффициент резервного узла 802 для второй фазы консенсусного процесса в качестве второго значения. В некоторых реализациях настоящего описания изобретения, второе значение определяется как большее первого значения. Например, если резервный узел 802 не проходит кворумную верификацию, резервному узлу 802 может назначаться значение весового коэффициента в нуль для второй фазы консенсусного процесса. Если резервный узел 802 проходит кворумную верификацию, резервному узлу 802 может назначаться значение весового коэффициента 45% для резервного узла 802 для второй фазы консенсусного процесса. Тем не менее, в альтернативных реализациях настоящего описания изобретения, резервный узел 802 может назначать любое подходящее значение резервному узлу 802 для второй фазы консенсусного процесса в текущем сверхкадре.

[00130] В некоторых реализациях настоящего описания изобретения, кворумная верификация дополнительно включает в себя верификацию того, являются или нет эхо-сообщения, которые резервный узел 802 принимает из других сетевых узлов в течение второй фазы консенсусного процесса, достоверными. Например, резервный узел 802 может аутентифицировать подписи с закрытым ключом в эхо-сообщениях с использованием открытого ключа, чтобы определять то, являются или нет эхо-сообщения достоверными.

[00131] Аналогично определению весового коэффициента для второй фазы, в некоторых реализациях, резервный узел 802 определяет весовой коэффициент резервного узла 802 для третьей фазы консенсусного процесса (например, третьей фазы 330 консенсусного процесса 300) в текущем сверхкадре на основе процесса кворумной верификации. Процесс кворумной верификации выполняется посредством определения того, принимает или нет резервный узел 802 предварительно определенное число (например, 2f+1) сообщений подтверждения из других сетевых узлов в третьей фазе консенсусного процесса в текущем сверхкадре. Каждое из сообщений подтверждения из других сетевых узлов указывает то, что каждый из других сетевых узлов подтверждает предварительно определенный ряд эхо-сообщений. Сообщение подтверждения, например, может представлять собой сообщения подтверждения, описанные выше со ссылкой на третью фазу 330 консенсусного процесса 300.

[00132] В некоторых реализациях настоящего описания изобретения, если резервный узел 802 не проходит кворумную верификацию (например, резервный узел 802 принимает ряд сообщений подтверждения, которое ниже предварительно определенного порогового значения), резервный узел 802 может определять весовой коэффициент резервного узла 802 для третьей фазы консенсусного процесса в качестве первого значения. Если резервный узел 802 проходит кворумную верификацию (например, резервный узел 802 принимает ряд сообщений подтверждения, которое равно или превышает предварительно определенное пороговое значение), резервный узел 802 может определять весовой коэффициент резервного узла 802 для третьей фазы консенсусного процесса в качестве второго значения. В некоторых реализациях, второе значение определяется как большее первого значения. Например, если резервный узел 802 не проходит кворумную верификацию, резервному узлу 802 может назначаться значение весового коэффициента в нуль для резервного узла 802 для второй фазы консенсусного процесса. Если резервный узел 802 проходит кворумную верификацию, резервному узлу 802 может назначаться значение весового коэффициента 45% для резервного узла 802 для второй фазы консенсусного процесса. Тем не менее, в альтернативных реализациях настоящего описания изобретения, резервный узел 802 может назначать любое подходящее значение резервному узлу 802 для третьей фазы консенсусного процесса в текущем сверхкадре.

[00133] На 810, после определения соответствующих весовых коэффициентов резервного узла 802 для фаз консенсусного процесса в текущем сверхкадре, резервный узел 802 определяет сумму весовых коэффициентов резервного узла 802 для консенсусного процесса на основе соответствующих весовых коэффициентов. В некоторых реализациях настоящего описания изобретения, сумма весовых коэффициентов представляет собой сумму соответствующих сумм резервных узлов, ассоциированных с каждой из фаз консенсусного процесса в текущем сверхкадре. Например, если резервный узел 802 определяет первое значение весового коэффициента резервного узла 802 для первой фазы как равное 10%, второе значение весового коэффициента резервного узла 802 для второй фазы как равное 45% и третье значение весового коэффициента резервного узла 802 для третьей фазы как равное 45%, резервный узел 802 определяет сумму весовых коэффициентов как равное 100%. В качестве другого примера, если резервный узел 802 определяет первое значение весового коэффициента резервного узла 802 для первой фазы как равное 10%, второе значение весового коэффициента резервного узла 802 для второй фазы как равное 45% и третье значение весового коэффициента резервного узла 802 для третьей фазы как равное 0, резервный узел 802 определяет сумму весовых коэффициентов как равную 55%.

[00134] На 812, резервный узел 802 отправляет сообщение изменения сверхкадров в другие сетевые узлы 804, если резервный узел 802 определяет то, что сумма весовых коэффициентов, которая определена на 810, достигает или превышает предварительно определенное пороговое значение. Например, резервный узел 802 может отправлять сообщение изменения сверхкадров в другие сетевые узлы 804, если сумма весовых коэффициентов, определенная на 810, достигает 100%. Сообщение изменения сверхкадров указывает запрос на изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр, в котором резервный узел представляет собой новый первичный узел.

[00135] В некоторых реализациях настоящего описания изобретения, ссылаясь на фиг. 9, сообщение изменения сверхкадров имеет формат <weight, epoch+1, ECHO{}, ACCEPT{}, j>, где "weight" представляет сумму весовых коэффициентов резервного узла 802, как определено ранее на 810 для консенсусного процесса, "epoch+1" представляет раунд нового консенсуса (т.е. нового сверхкадра), ассоциированный с новым первичным узлом, "ECHO{}" представляет набор эхо-сообщений, которые резервный узел 802 принимает в течение второй фазы консенсусного процесса, "ACCEPT{}" представляет набор сообщений подтверждения, которые резервный узел 802 принимает в течение третьей фазы консенсусного процесса, и "j" представляет сетевой узел (например, резервный узел 802), который формирует и отправляет сообщение изменения сверхкадров. В некоторых реализациях, сообщение изменения сверхкадров может иметь другой формат, например, посредством включения дополнительных или других полей.

[00136] Снова ссылаясь на фиг. 8, на 814, сетевые узлы 804, отличные от резервного узла 802, верифицируют сообщение изменения сверхкадров, которое отправляется посредством резервного узла 802. В некоторых реализациях, каждый из сетевых узлов 804 верифицирует то, является или нет сообщение изменения сверхкадров достоверным, посредством верификации то, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной. В некоторых реализациях, верификация того, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной, включает в себя верификацию того, является или нет набор подписей в эхо-сообщениях, включенных в сообщение изменения сверхкадров, достоверным. Например, каждый из сетевых узлов 804 может аутентифицировать набор подписей с закрытым ключом в эхо-сообщениях, включенных в сообщение изменения сверхкадров, с использованием открытого ключа.

[00137] На 816, каждый из сетевых узлов 804 отправляет сообщение нового сверхкадра в резервный узел 802 в ответ на верификацию того, что сообщение изменения сверхкадров, отправленное посредством резервного узла 802, является достоверным. Сообщение нового сверхкадра указывает подтверждение резервного узла в качестве нового первичного узла. Например, сообщение нового сверхкадра, отправленное посредством сетевого узла 804, включает в себя индикатор того, что сетевой узел 804 подтверждает то, что резервный узел 802 должен становиться новым первичным узлом в новом сверхкадре. Между тем, каждый из сетевых узлов 804 также отправляет сообщение нового сверхкадра в другие сетевые узлы 804.

[00138] Ссылаясь на фиг. 9, сообщение нового сверхкадра формируется как имеющее формат <epoch+1, i, j, seq, ec_digest>, где ""epoch+1" представляет раунд нового консенсуса (т.е. нового сверхкадра) ассоциированный с новым первичным узлом, "i" представляет новый первичный узел в новом сверхкадре, "j" представляет сетевой узел 804, который отправляет сообщение нового сверхкадра, и "ec_digest" представляет дайджест сообщения изменения сверхкадров. В некоторых реализациях, дайджест сообщения изменения сверхкадров включает в себя хэш-значение сообщения изменения сверхкадров. В некоторых реализациях, сообщение нового сверхкадра может иметь другой формат, например, посредством включения дополнительных или других полей.

[00139] Снова ссылаясь на фиг. 8, на 818, резервный узел 802 верифицирует то, являются или нет сообщения нового сверхкадра, которые отправляются посредством сетевых узлов 804, достоверными. В некоторых реализациях, резервный узел 802 верифицирует сообщения нового сверхкадра посредством верификации то, является или нет дайджест сообщения изменения сверхкадров в сообщениях нового сверхкадра достоверным. Поскольку дайджест включает в себя информацию сообщения изменения сверхкадров, дайджест также включает подписи в сообщение изменения сверхкадров. Резервный узел 802 может верифицировать дайджест сообщения изменения сверхкадров посредством верификации то, является или нет набор подписей в сообщении изменения сверхкадров достоверным.

[00140] На 820, резервный узел 802 определяет то, превышает или нет ряд достоверных сообщений нового сверхкадра, как определено на 818, предварительно определенное пороговое значение. В некоторых реализациях, предварительно определенное пороговое значение составляет кворумное число (например, 2f+1).

[00141] На 822, резервный узел 802 определяет резервный узел 802 в качестве нового первичного узла в новом сверхкадре в ответ на определение того, что ряд достоверных сообщений нового сверхкадра превышает предварительно определенное пороговое значение. Следует отметить, что каждый из сетевых узлов 804 выполняет этапы 818-822, идентичные этапам резервного узла 802, и сетевые узлы 804 и резервный узел 802 могут выполнять этапы 818-822 параллельным способом. Например, каждый из сетевых узлов 804 может верифицировать набор сообщений нового сверхкадра, которые отправляются из других сетевых узлов 804, определять то, превышает или нет ряд достоверных сообщений нового сверхкадра предварительно определенное пороговое значение, и определять новый первичный узел.

[00142] Процесс изменения сверхкадров (например, процесс 700 или 800), как пояснено выше, включает в себя множество признаков, которые улучшают работу всей системы цепочек блоков, и помогает смягчать узкое место сети. Например, процесс изменения сверхкадров в настоящем описании изобретения включает в себя назначение соответствующих весовых коэффициентов в три фазы консенсусного процесса, определение суммы весовых коэффициентов на основе соответствующих весовых коэффициентов трех фаз и определение нового первичного узла на основе суммы весовых коэффициентов. Процесс изменения сверхкадров на основе суммы весовых коэффициентов вместо кругового способа может упрощать выбор нового первичного узла, который является неотказавшим, своевременно. Круговой способ может вызывать частое изменение первичного узла, когда несколько сетевых узлов в линии для нового первичного узла являются отказавшими. Это значительно затрагивает услугу на основе цепочек блоков посредством введения времени задержки или задержки при нахождении первичного узла, который является неотказавшим. В отличие от кругового способа, процесс изменения сверхкадров в настоящем описании изобретения основывается на сумме весовых коэффициентов, чтобы выбирать новый первичный узел, что позволяет уменьшать время при нахождении нового первичного узла, который не является отказавшим. Это дополнительно может повышать эффективность полной системы цепочек блоков в предоставлении услуг на основе цепочек блоков.

[00143] В ходе работы сети цепочек блоков, скорость выполнения некоторых сетевых узлов может запаздывать относительно скорости большинства сетевых узлов вследствие дрожания сети, внезапного сбоя подачи мощности, сбоя диска и т.п. В этом сценарии, более 1/3 сетевых узлов в системе могут сбоить. BFT предоставляет безопасность и живучесть, если менее 1/3 сетевых узлов сбоят в течение продолжительности существования системы. Тем не менее, эти гарантии являются недостаточными для долгосрочных систем, поскольку верхняя граница с большой вероятностью должна превышаться в сценарии, как описано выше. Следовательно, требуется процесс восстановления, который заставляет отказавшие сетевые узлы вести себя корректно снова, и продолжает участвовать в последующих консенсусных процессах, чтобы обеспечивать возможность системе допускать больше f отказов в течение своей продолжительности существования. Кроме того, описанный процесс восстановления может восстанавливать один или более сетевых узлов, которые по-прежнему выполняют консенсусный процесс (например, консенсусный процесс 300 или 400) и не должны ожидать до тех пор, пока консенсус не достигается между всеми сетевыми узлами. В связи с этим, описанный процесс восстановления дополнительно может уменьшать системную задержку и повышать эффективность сети цепочек блоков.

[00144] Фиг. 10 иллюстрирует пример процесса 1000 для выполнения процесса восстановления сетевого узла (например, узла 214 или 404) распределенной системы (например, сети 102 и 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В частности, фиг. 10 иллюстрирует схему, представляющую примерный вариант осуществления способа 1000 выполнения процесса восстановления сетевого узла, согласно настоящему описанию изобретения. Как проиллюстрировано на фиг. 10, процесс 1000 включает в себя несколько фаз и стадий.

[00145] В первой фазе 1010, сетевой узел (например, сетевой узел R0), который хочет восстанавливать целевую транзакцию с целевым порядковым номером R0, многоадресно передает сообщение с запросом состояния (например, сообщение с запросом состояния) в другие сетевые узлы, указывающее то, что сетевой узел должен восстанавливаться. Сообщение с запросом состояния может включать в себя целевой порядковый номер, который сетевой узел R0 хочет восстанавливать. Во второй фазе 1020, другие сетевые узлы принимают сообщение с запросом состояния и отправляют сообщение с ответом по состоянию (например, сообщение с ответом по состоянию) в сетевой узел R0. В третьей фазе 1030, сетевой узел R0 отправляет запрашивающее сообщение (например, сообщение эхо-выборки) в другие сетевые узлы, запрашивающее эхо-сообщение из каждого из других сетевых узлов. Эхо-сообщение может быть идентичным эхо-сообщению, отправленному посредством соответствующих других сетевых узлов во второй фазе 320 консенсусного процесса 300, как описано выше со ссылкой на фиг. 3-6. В четвертой фазе 1040, каждый из других сетевых узлов отправляет эхо-сообщение в сетевой узел R0 в ответ на сообщение эхо-выборки. В пятой фазе 1050, сетевой узел R0 верифицирует эхо-сообщения и восстанавливает целевую транзакцию согласно EC-коду, например, согласно примерным технологиям восстановления, как описано выше со ссылкой на фиг. 4. В шестой фазе 1060, сетевой узел R0 отправляет сообщение подтверждения в другие сетевые узлы, указывающее то, что сетевой узел восстановлен.

[00146] Следует отметить, что процесс 1000 проиллюстрирован как реализованный в сочетании с четырьмя сетевыми узлами только в качестве иллюстрации. Процесс 1000 может реализовываться в сочетании с любым подходящим рядом сетевых узлов. Ниже подробнее поясняются процесс 1000, формат сообщения с запросом состояния и формат сообщения с ответом по состоянию со ссылкой на фиг. 11-12.

[00147] Фиг. 11 иллюстрирует пример процесса 1100 для выполнения процесса восстановления сетевого узла в распределенной системе (например, в сети 102 или 212 цепочек блоков), который может выполняться в соответствии с реализациями настоящего описания изобретения. В некоторых реализациях, процесс 1100 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств. Для ясности представления, нижеприведенное описание, в общем, описывает способ 1100 в контексте других чертежей в этом описании. Следует понимать, что способ 1100 может осуществляться, например, посредством любой подходящей системы, окружения, программного обеспечения и аппаратных средств либо комбинации систем, окружений, программного обеспечения и аппаратных средств, надлежащим образом. В некоторых реализациях, различные этапы способа 1100 могут выполняться параллельно, в комбинации, циклически или в любом порядке.

[00148] Процесс 1100 начинается на 1106 на котором сетевой узел 1102 многоадресно передает сообщение с запросом состояния в другие сетевые узлы 1104. Сообщение с запросом состояния включает в себя индикатор того, что сетевой узел 1102 должен восстанавливать целевую транзакцию с целевым порядковым номером. Сетевой узел 1102 может представлять собой первичный узел или резервный узел.

[00149] В некоторых реализациях настоящего описания изобретения, ссылаясь на фиг. 12, сообщение с запросом состояния (сообщение QUERY_STATE), в качестве примера сообщения с запросом состояния, имеет формат <j, seq>, где "j" представляет сетевой узел 1102, который отправляет сообщение с запросом состояния, и "seq" представляет наибольший порядковый номер или последний порядковый номер для сетевого узла 1102 в текущем консенсусном процессе. В некоторых реализациях, сообщение с запросом состояния может иметь другой формат, например, посредством включения дополнительных или других полей.

[00150] Посредством широковещательной передачи сообщения с запросом состояния в другие сетевые узлы 1104 сетевой узел 1102 запрашивает другие сетевые узлы 1104 на предмет того, чтобы отправлять последний порядковый номер в сетевой узел 1102, за счет этого получая последнюю информацию блоков в системе цепочек блоков. Кроме того, посредством получения последней информации блоков для всей системы цепочек блоков, сетевой узел 1102 может иметь возможность синхронизироваться с последним состоянием всей системы, за счет этого восстанавливая себя и продолжая участвовать в консенсусном процессе.

[00151] Снова ссылаясь на фиг. 11, на 1108, каждый из других сетевых узлов 1104 отправляет сообщение с ответом по состоянию (например, сообщение с ответом по состоянию (сообщение REPLY_STATE)) в сетевой узел 1102 в ответ на прием сообщения с запросом состояния. В некоторых реализациях, сообщение с ответом по состоянию включает в себя предыдущий порядковый номер, ассоциированный с сетевыми узлами 1104.

[00152] В некоторых реализациях, ссылаясь на фиг. 12, сообщение с ответом по состоянию, в качестве примера сообщения воспроизведения состояния, имеет формат <j, last_seq>, где "j" представляет сетевой узел 1104, который отправляет сообщение с ответом по состоянию, и "last_seq" представляет предыдущий порядковый номер для сетевого узла 1104 в текущем консенсусном процессе. В некоторых реализациях, сообщение с ответом по состоянию может иметь другой формат, например, посредством включения дополнительных или других полей.

[00153] Снова ссылаясь на фиг. 11, на 1110, сетевой узел 1102 определяет то, превышает или нет ряд принимаемых сообщений с ответом по состоянию предварительно определенное пороговое значение. Например, сетевой узел 1102 может определять то, превышает или нет ряд принимаемых сообщений с ответом по состоянию кворумное число (например, 2f+1 или n-f). В некоторых реализациях, сетевой узел 1102 дополнительно определяет то, включает или нет кворумное число принимаемых сообщений с ответом по состоянию в себя идентичный порядковый номер. То, что кворумное число принимаемых сообщений с ответом по состоянию включает в себя идентичный порядковый номер, означает то, что мажорантность сетевых узлов 1104 согласует общее состояние всей системы.

[00154] На 1112, сетевой узел 1102 определяет целевой порядковый номер на основе идентичного порядкового номера, если сетевой узел 1102 определяет то, что ряд сообщений с ответом по состоянию, включающих в себя идентичный порядковый номер, принимаемых из сетевых узлов 1104, превышает предварительно определенное пороговое значение. Например, сетевой узел 1102 может определять целевой порядковый номер в качестве приращения (например, "last_seq+1") идентичного порядкового номера (например, "last_seq").

[00155] На 1114, сетевой узел 1102 отправляет запрашивающее сообщение (например, сообщение эхо-выборки (сообщение FETCH_ECHO)) в другие сетевые узлы 1104. Сообщение эхо-выборки отправляется посредством сетевого узла 1102, чтобы запрашивать эхо-сообщение из каждого из других сетевых узлов 1104. Как пояснено выше со ссылкой на фиг. 3-6, эхо-сообщение представляет собой сообщение, передаваемое посредством сетевых узлов 1104 для достижения консенсуса между сетевыми узлами 1104 по целевой транзакции. Эхо-сообщение включает в себя часть целевой транзакции (например, EC-блок) и подпись сетевого узла 1104, который отправляет эхо-сообщение.

[00156] В некоторых реализациях, ссылаясь на фиг. 12, сообщение эхо-выборки, в качестве примера запрашивающего сообщения, имеет формат <j, last_seq+1>, где "j" представляет сетевой узел 1102, который отправляет сообщение эхо-выборки, и "last_seq+1" представляет целевой порядковый номер, ассоциированный с эхо-сообщениями, которые сетевой узел 1102 запрашивает из других сетевых узлов 1104. В некоторых реализациях, сообщение эхо-выборки может иметь другой формат, например, посредством включения дополнительных или других полей.

[00157] Сообщение эхо-выборки, как пояснено в данном документе отправляется посредством сетевого узла 1102, чтобы запрашивать эхо-сообщения, включающие в себя последний порядковый номер или наибольший порядковый номер, из других сетевых узлов 1104. Посредством сбора эхо-сообщений, включающих в себя последний порядковый номер или наибольший порядковый номер, из других сетевых узлов 1104, сетевой узел 1102 может иметь возможность восстанавливаться в последнее состояние, ассоциированное с последним порядковым номером.

[00158] Снова ссылаясь на фиг. 11, на 1116, каждый из сетевых узлов 1104 отправляет эхо-сообщение в сетевой узел 1102 в ответ на прием сообщения эхо-выборки. В некоторых реализациях, каждый из сетевых узлов 1104 верифицирует сообщение эхо-выборки до отправки эхо-сообщения в сетевой узел 1102. В некоторых реализациях, каждый из сетевых узлов 1104 верифицирует сообщение эхо-выборки посредством определения того, превышает или нет порядковый номер, включенный в сообщения эхо-выборки, последний порядковый номер, ассоциированный с сетевым узлом 1104. Если порядковый номер, включенный в сообщения эхо-выборки, равен последнему порядковому номеру, ассоциированному с сетевым узлом 1104, сетевой узел 1104 определяет то, что сообщение эхо-выборки является достоверным, и то, что эхо-сообщение должно отправляться в сетевой узел 1102. Если порядковый номер, включенный в сообщения эхо-выборки, превышает последний порядковый номер, ассоциированный с сетевым узлом 1104, сетевой узел 1104 определяет то, что сообщение эхо-выборки является недостоверным, и то, что эхо-сообщение не должно отправляться в сетевой узел 1102.

[00159] На 1118, сетевой узел, который верифицирует 1102, являются или нет эхо-сообщения, отправленные посредством сетевых узлов 1104, достоверными. В некоторых реализациях, сетевой узел 1102 верифицирует эхо-сообщения с использованием дерева Меркла. Например, сетевой узел 1102 может использовать данные, включенные в эхо-сообщение, для того чтобы восстанавливать дерево Меркла и определять восстановленное значение корневого хэша восстановленного дерева Меркла. Сетевой узел 1102 затем может сравнивать восстановленное значение корневого хэша со значением корневого хэша, включенным в эхо-сообщение. Если восстановленное значение корневого хэша совпадает со значением корневого хэша, включенным в эхо-сообщение, сетевой узел 1102 определяет то, что эхо-сообщение является достоверным. Если восстановленное значение корневого хэша не совпадает со значением корневого хэша, включенным в эхо-сообщение, сетевой узел 1102 определяет то, что эхо-сообщение является недостоверным, и может отбрасывать недопустимое эхо-сообщение.

[00160] В некоторых реализациях, сетевой узел 1102 верифицирует то, является или нет эхо-сообщение достоверным, посредством дополнительной верификации того, является или нет подпись в эхо-сообщении достоверной. Например, сетевой узел 1102 может аутентифицировать подпись с закрытым ключом в эхо-сообщении с использованием открытого ключа, спаренного с закрытым ключом, чтобы верифицировать подпись.

[00161] На 1120, сетевой узел 1102 определяет то, превышает или нет ряд допустимых эхо-сообщений, принимаемых из других сетевых узлов 1104, предварительно определенное пороговое значение. Например, сетевой узел может определять 1102 то, превышает или нет ряд допустимых эхо-сообщений, принимаемых из других сетевых узлов 1104, кворумное число (например, 2f+1).

[00162] На 1122 сетевой узел 1102 восстанавливает целевую транзакцию с целевым порядковым номером в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение. В некоторых реализациях, сетевой узел 1102 восстанавливает целевую транзакцию с использованием данных, включенных в ряде допустимых эхо-сообщений. Например, сетевой узел 1102 может извлекать поднабор EC-блоков, включенных в эхо-сообщения, чтобы восстанавливать целевую транзакцию согласно EC-коду.

[00163] На 1124, сетевой узел 1102 многоадресно передает сообщение подтверждения (сообщение ACCEPT) в другие сетевые узлы 1104 после восстановления целевой транзакции. Например, сетевой узел 1102 может многоадресно передавать сообщение подтверждения в другие сетевые узлы 1104 после успешного восстановления целевой транзакции. В некоторых реализациях, сообщение подтверждения включает в себя набор подписей в эхо-сообщениях и целевой порядковый номер. Посредством отправки сообщения подтверждения, включающего в себя подписи и целевой порядковый номер, в другие сетевые узлы 1104, сетевой узел 1102 указывает другим сетевым узлам 1104 то, что сетевой узел 1102 восстановлен и синхронизирован с последним состоянием системы.

[00164] Процесс восстановления, как пояснено выше в настоящем описании изобретения, включает в себя множество признаков, которые улучшают операцию компьютеров, которая реализует процесс восстановления и помогает смягчать узкое место сети. Например, процесс восстановления в настоящем описании изобретения включает в себя операции, включающие в себя отправку сообщения с запросом состояния посредством сетевого узла, который применяется в качестве нового первичного узла, прием сообщений с ответом по состоянию из других сетевых узлов и отправку сообщения эхо-выборки посредством сетевого узла, чтобы запрашивать эхо-сообщения из других сетевых узлов. Эти операции выполняются таким образом, что процесс восстановления отказавшего сетевого узла не создает помехи нормальной работе консенсусного процесса между другими неотказавшими сетевыми узлами. Это упрощает экономию вычислительных и сетевых ресурсов для восстановления отказавшего сетевого узла посредством уменьшения сложности процесса восстановления.

[00165] Ссылаясь на фиг. 13, фиг. 13 является схемой, иллюстрирующей модули консенсусного оборудования 1300, согласно реализации настоящего описания изобретения. Оборудование 1300 для достижения консенсуса может применяться к консенсусной системе на основе технологии работы с цепочками блоков. Например, оборудование 1300 может соответствовать реализациям, показанным на фиг. 1-6. Оборудование 1300 может реализовываться в первичном узле в сети цепочек блоков. Оборудование 1300 включает в себя следующее: приемник или приемный блок 1302, выполненный с возможностью принимать запрос на проведение транзакции; блок 1304 формирования, выполненный с возможностью формировать ряд блоков кодов стирания ошибок (EC) согласно EC-коду с использованием запроса на проведение транзакции; передатчик или передающий блок 1306, выполненный с возможностью отправлять ряд первых сообщений в один или более резервных узлов, соответственно, при этом каждое из ряда первых сообщений включает в себя составное хэш-значение, ассоциированное с рядом EC-блоков; приемник или приемный блок 1302, дополнительно выполненный с возможностью принимать, по меньшей мере, одно второе сообщение, по меньшей мере, из одного из резервных узлов, при этом, по меньшей мере, одно второе сообщение включает в себя одно из ряда первых сообщений и подписи, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений; блок 1306 верификации, выполненный с возможностью верифицировать то, является или нет, по меньшей мере, одно второе сообщение достоверным, в ответ на прием, по меньшей мере, одного второго сообщения, по меньшей мере, из одного из резервного узла; блок 1310 определения, выполненный с возможностью определять то, превышает или нет ряд достоверных вторых сообщений предварительно определенное пороговое значение; блок 1312 восстановления, выполненный с возможностью восстанавливать запрос на проведение транзакции на основе поднабора ряда достоверных вторых сообщений согласно EC-коду в ответ на определение того, что ряд достоверных вторых сообщений превышает предварительно определенное пороговое значение; передатчик или передающий блок 1306, дополнительно выполненный с возможностью отправлять третье сообщение в другие сетевые узлы в ответ на определение того, что запрос на проведение транзакции успешно восстановлен, при этом третье сообщение включает в себя набор подписей, которые находятся в достоверных вторых сообщениях; приемник или приемный блок 1302, дополнительно выполненный с возможностью принимать, по меньшей мере, одно третье сообщение, по меньшей мере, из одного из резервных узлов; и блок 1314 выполнения, выполненный с возможностью выполнять запрос на проведение транзакции в ответ на прием предварительно определенного ряда третьих сообщений, которые являются идентичными.

[00166] В необязательной реализации, запрос на проведение транзакции ассоциирован с порядковым номером.

[00167] В необязательной реализации, формирование множества EC-блоков согласно EC-коду включает в себя следующее: преобразование запроса на проведение транзакции в EC-сообщение с использованием EC-кода и разделение EC-сообщения на определенное ряд EC-блоков.

[00168] В необязательной реализации, составное хэш-значение ряда EC-блоков формируется с использованием хэш-дерева.

[00169] В необязательной реализации, хэш-дерево включает в себя дерево Меркла, при этом составное хэш-значение представляет собой значение корневого хэша дерева Меркла.

[00170] В необязательной реализации, подпись, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений, включает в себя подпись с закрытым ключом, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений.

[00171] В необязательной реализации, по меньшей мере, одно второе сообщение дополнительно включает в себя, по меньшей мере, один из ряда EC-блоков.

[00172] В необязательной реализации, верификация того, является или нет, по меньшей мере, одно второе сообщение достоверным, включает в себя следующее: формирование восстановленного хэш-дерева с использованием, по меньшей мере, одного из ряда EC-блоков, по меньшей мере, в одном втором сообщении; определение восстановленного составного хэш-значения восстановленного хэш-дерева; и определение того, совпадает или нет восстановленное составное хэш-значение с составными хэш-значениями, по меньшей мере, в одном втором сообщении.

[00173] В необязательной реализации, блок 1310 определения дополнительно выполнен с возможностью определять то, что, по меньшей мере, одно второе сообщение является достоверным, в ответ на определение того, что восстановленное составное хэш-значение совпадает с составными хэш-значениями во вторых сообщениях.

[00174] В необязательной реализации, предварительно определенный ряд третьих сообщений, которые являются идентичными, включает в себя предварительно определенный ряд третьих сообщений, имеющих идентичный набор подписей.

[00175] Фиг. 13 является принципиальной схемой, иллюстрирующей внутренний функциональный модуль и структуру консенсусного оборудования 1300. Исполнительный механизм, в сущности, может представлять собой электронное устройство, и электронное устройство включает в себя следующее: по меньшей мере, один процессор; и запоминающее устройство, выполненное с возможностью сохранять выполняемую инструкцию, по меньшей мере, одного процессора.

[00176] По меньшей мере, один процессор выполнен с возможностью принимать запрос на проведение транзакции; формировать ряд блоков кодов стирания ошибок (EC) согласно EC-коду с использованием запроса на проведение транзакции; отправлять ряд первых сообщений в один или более резервных узлов, соответственно, при этом каждое из ряда первых сообщений включает в себя составное хэш-значение, ассоциированное с рядом EC-блоков; принимать, по меньшей мере, одно второе сообщение, по меньшей мере, из одного из резервных узлов, при этом, по меньшей мере, одно второе сообщение включает в себя одно из ряда первых сообщений и подписи, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений; верифицировать то, является или нет, по меньшей мере, одно второе сообщение достоверным, в ответ на прием, по меньшей мере, одного второго сообщения, по меньшей мере, из одного из резервного узла; определять то, превышает или нет ряд достоверных вторых сообщений предварительно определенное пороговое значение; восстанавливать запрос на проведение транзакции на основе поднабора ряда достоверных вторых сообщений согласно EC-коду в ответ на определение того, что ряд достоверных вторых сообщений превышает предварительно определенное пороговое значение; отправлять третье сообщение в другие сетевые узлы в ответ на определение того, что запрос на проведение транзакции успешно восстановлен, при этом третье сообщение включает в себя набор подписей, которые находятся в достоверных вторых сообщениях; принимать, по меньшей мере, одно третье сообщение, по меньшей мере, из одного из резервных узлов; и выполнять запрос на проведение транзакции в ответ на прием предварительно определенного ряда третьих сообщений, которые являются идентичными.

[00177] Необязательно, запрос на проведение транзакции ассоциирован с порядковым номером.

[00178] Необязательно, формирование множества EC-блоков согласно EC-коду включает в себя следующее: преобразование запроса на проведение транзакции в EC-сообщение с использованием EC-кода и разделение EC-сообщения на ряда EC-блоков.

[00179] Необязательно, составное хэш-значение ряда EC-блоков формируется с использованием хэш-дерева.

[00180] Необязательно, хэш-дерево включает в себя дерево Меркла, при этом составное хэш-значение представляет собой значение корневого хэша дерева Меркла.

[00181] Необязательно, подпись, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений, включает в себя подпись с закрытым ключом, по меньшей мере, одного из резервных узлов, ассоциированных с одним из ряда первых сообщений.

[00182] Необязательно, по меньшей мере, одно второе сообщение дополнительно включает в себя, по меньшей мере, один из ряда EC-блоков.

[00183] Необязательно, верификация того, является или нет, по меньшей мере, одно второе сообщение достоверным, включает в себя следующее: формирование восстановленного хэш-дерева с использованием, по меньшей мере, одного из ряда EC-блоков, по меньшей мере, в одном втором сообщении; определение восстановленного составного хэш-значения восстановленного хэш-дерева; и определение того, совпадает или нет восстановленное составное хэш-значение с составными хэш-значениями, по меньшей мере, в одном втором сообщении.

[00184] Необязательно, по меньшей мере, один процессор дополнительно выполнен с возможностью определять то, что, по меньшей мере, одно второе сообщение является достоверным, в ответ на определение того, что восстановленное составное хэш-значение совпадает с составными хэш-значениями во вторых сообщениях.

[00185] Необязательно, предварительно определенный ряд третьих сообщений, которые являются идентичными, включает в себя предварительно определенный ряд третьих сообщений, имеющих идентичный набор подписей.

[00186] Ссылаясь на фиг. 14, фиг. 14 является схемой, иллюстрирующей модули консенсусного оборудования 1400, согласно реализации настоящего описания изобретения. Оборудование 1400 для достижения консенсуса может применяться к консенсусной системе на основе технологии работы с цепочками блоков. Оборудование 1400 может соответствовать реализациям, показанным на фиг. 1-6. Например, оборудование 1400 может реализовываться в резервном узле сети цепочек блоков. Оборудование 1400 включает в себя следующее: приемник или приемный блок 1402, выполненный с возможностью принимать первое сообщение из первичного узла, при этом первое сообщение включает в себя составное хэш-значение, ассоциированное с рядом EC-блоков, при этом ряд EC-блоков формируется посредством первичного узла согласно EC-коду с использованием запроса на проведение транзакции; передатчик или передающий блок 1404, выполненный с возможностью отправлять, посредством резервного узла, второе сообщение в другие сетевые узлы в ответ на прием первого сообщения, при этом второе сообщение включает в себя первое сообщение и подпись резервного узла, ассоциированного с первым сообщением; приемник или приемный блок 1402, дополнительно выполненный с возможностью принимать, по меньшей мере, одно второе сообщение, по меньшей мере, из одного резервного узла, отличного от резервного узла; блок 1406 верификации, выполненный с возможностью верифицировать то, является или нет, по меньшей мере, одно второе сообщение достоверным, в ответ на прием, по меньшей мере, одного второго сообщения, по меньшей мере, из одного резервного узла; блок 1408 определения, выполненный с возможностью определять то, превышает или нет ряд достоверных вторых сообщений предварительно определенное пороговое значение; блок 1410 восстановления, выполненный с возможностью восстанавливать запрос на проведение транзакции на основе поднабора ряда достоверных вторых сообщений согласно EC-коду в ответ на определение того, что ряд достоверных вторых сообщений превышает предварительно определенное пороговое значение; передатчик или передающий блок 1404, выполненный с возможностью отправлять третье сообщение в другие сетевые узлы в ответ на определение того, что запрос на проведение транзакции успешно восстановлен, при этом третье сообщение включает в себя набор подписей, которые находятся в достоверных вторых сообщениях; приемник или приемный блок 1402, дополнительно выполненный с возможностью принимать, по меньшей мере, одно третье сообщение, по меньшей мере, из одного из резервных узлов; и блок 1412 выполнения, выполненный с возможностью выполнять запрос на проведение транзакции в ответ на прием предварительно определенного ряда третьих сообщений, которые являются идентичными.

[00187] В необязательной реализации, формирование множества EC-блоков согласно EC-коду включает в себя следующее: преобразование запроса на проведение транзакции в EC-сообщение с использованием EC-кода; и разделение EC-сообщения на ряд EC-блоков.

[00188] В необязательной реализации, составное хэш-значение множества EC-блока формируется с использованием хэш-дерева.

[00189] В необязательной реализации, хэш-дерево включает в себя дерево Меркла, и составное хэш-значение представляет собой значение корневого хэша дерева Меркла.

[00190] В необязательной реализации, подпись резервного узла, ассоциированного с первым сообщением, включает в себя подпись с закрытым ключом резервного узла, ассоциированного с первым сообщением.

[00191] В необязательной реализации, по меньшей мере, одно второе сообщение дополнительно включает в себя, по меньшей мере, один из ряда EC-блоков.

[00192] В необязательной реализации, верификация того, является или нет, по меньшей мере, одно второе сообщение достоверным, включает в себя следующее: формирование восстановленного хэш-дерева с использованием, по меньшей мере, одного из ряда EC-блоков, по меньшей мере, в одном втором сообщении; определение восстановленного составного хэш-значения восстановленного хэш-дерева; сравнение восстановленного составного хэш-значения с составным хэш-значением, по меньшей мере, в одном втором сообщении; и определение того, совпадает или нет восстановленное составное хэш-значение с составными хэш-значениями, по меньшей мере, в одном втором сообщении.

[00193] В необязательной реализации, блок 1408 определения дополнительно выполнен с возможностью определять то, что, по меньшей мере, одно второе сообщение является достоверным, в ответ на определение того, что восстановленное составное хэш-значение совпадает с составными хэш-значениями во вторых сообщениях.

[00194] В необязательной реализации, предварительно определенный ряд третьих сообщений, которые являются идентичными, включает в себя предварительно определенный ряд третьих сообщений, имеющих идентичный набор подписей.

[00195] Фиг. 14 является принципиальной схемой, иллюстрирующей внутренний функциональный модуль и структуру консенсусного оборудования 1400. Исполнительный механизм, в сущности, может представлять собой электронное устройство, и электронное устройство включает в себя следующее: по меньшей мере, один процессор; и запоминающее устройство, выполненное с возможностью сохранять выполняемую инструкцию, по меньшей мере, одного процессора.

[00196] По меньшей мере, один процессор выполнен с возможностью принимать первое сообщение из первичного узла, при этом первое сообщение включает в себя составное хэш-значение, ассоциированное с рядом EC-блоков, при этом ряд EC-блоков формируется посредством первичного узла согласно EC-коду с использованием запроса на проведение транзакции; отправлять, посредством резервного узла, второе сообщение в другие сетевые узлы в ответ на прием первого сообщения, при этом второе сообщение включает в себя первое сообщение и подпись резервного узла, ассоциированного с первым сообщением; принимать, по меньшей мере, одно второе сообщение, по меньшей мере, из одного резервного узла, отличного от резервного узла; верифицировать то, является или нет, по меньшей мере, одно второе сообщение достоверным, в ответ на прием, по меньшей мере, одного второго сообщения, по меньшей мере, из одного резервного узла; определять то, превышает или нет ряд достоверных вторых сообщений предварительно определенное пороговое значение; восстанавливать запрос на проведение транзакции на основе поднабора ряда достоверных вторых сообщений согласно EC-коду в ответ на определение того, что ряд достоверных вторых сообщений превышает предварительно определенное пороговое значение; отправлять третье сообщение в другие сетевые узлы в ответ на определение того, что запрос на проведение транзакции успешно восстановлен, при этом третье сообщение включает в себя набор подписей, которые находятся в достоверных вторых сообщениях; принимать, по меньшей мере, одно третье сообщение, по меньшей мере, из одного из резервных узлов; и выполнять запрос на проведение транзакции в ответ на прием предварительно определенного ряда третьих сообщений, которые являются идентичными.

[00197] Необязательно, формирование множества EC-блоков согласно EC-коду включает в себя следующее: преобразование запроса на проведение транзакции в EC-сообщение с использованием EC-кода; и разделение EC-сообщения на ряд EC-блоков.

[00198] Необязательно, составное хэш-значение множества EC-блока формируется с использованием хэш-дерева.

[00199] Необязательно, хэш-дерево включает в себя дерево Меркла, и составное хэш-значение представляет собой значение корневого хэша дерева Меркла.

[00200] Необязательно, подпись резервного узла, ассоциированного с первым сообщением, включает в себя подпись с закрытым ключом резервного узла, ассоциированного с первым сообщением.

[00201] Необязательно, по меньшей мере, одно второе сообщение дополнительно включает в себя, по меньшей мере, один из ряда EC-блоков.

[00202] Необязательно, верификация того, является или нет, по меньшей мере, одно второе сообщение достоверным, включает в себя следующее: формирование восстановленного хэш-дерева с использованием, по меньшей мере, одного из ряда EC-блоков, по меньшей мере, в одном втором сообщении; определение восстановленного составного хэш-значения восстановленного хэш-дерева; сравнение восстановленного составного хэш-значения с составным хэш-значением, по меньшей мере, в одном втором сообщении; и определение того, совпадает или нет восстановленное составное хэш-значение с составными хэш-значениями, по меньшей мере, в одном втором сообщении.

[00203] Необязательно, по меньшей мере, один процессор дополнительно выполнен с возможностью определять то, что, по меньшей мере, одно второе сообщение является достоверным, в ответ на определение того, что восстановленное составное хэш-значение совпадает с составными хэш-значениями во вторых сообщениях.

[00204] Необязательно, предварительно определенный ряд третьих сообщений, которые являются идентичными, включает в себя предварительно определенный ряд третьих сообщений, имеющих идентичный набор подписей.

[00205] Ссылаясь на фиг. 15, фиг. 15 является схемой, иллюстрирующей модули оборудования 1500 изменения первичных узлов, согласно реализации настоящего описания изобретения. Оборудование 1500 для изменения первичного узла может применяться к консенсусной системе на основе технологии работы с цепочками блоков. Оборудование 1500 может соответствовать реализациям, показанным на фиг. 7-9. Например, оборудование 1500 может реализовываться в резервном узле сети цепочек блоков. Оборудование 1500 включает в себя следующее: блок 1502 определения, выполненный с возможностью определять то, что изменение сверхкадров должно выполняться, при этом изменение сверхкадров вызывает изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом, при этом текущий сверхкадр содержит консенсусный процесс для достижения консенсуса между рядом сетевых узлов с использованием первичного узла, причем консенсусный процесс включает в себя три фазы; блок 1502 определения, дополнительно выполненный с возможностью определять соответствующий весовой коэффициент резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, при этом весовой коэффициент представляет собой показатель классификации резервного узла в качестве нового первичного узла; блок 1502 определения, дополнительно выполненный с возможностью определять сумму весовых коэффициентов для резервного узла на основе соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз в текущем сверхкадре; передатчик или передающий блок 1504, выполненный с возможностью отправлять сообщение изменения сверхкадров в ряд сетевых узлов, отличных от сетевого узла, в ответ на определение того, что сумма весовых коэффициентов достигает первого предварительно определенного порогового значения, при этом сообщение изменения сверхкадров указывает запрос на изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр, в котором резервный узел представляет собой новый первичный узел, и сообщение изменения сверхкадров включает в себя сумму весовых коэффициентов резервного узла; приемник или приемный блок 1506, выполненный с возможностью принимать, по меньшей мере, одно сообщение нового сверхкадра, по меньшей мере, из одного из ряда сетевых узлов, отличных от резервного узла, при этом сообщение нового сверхкадра указывает подтверждение приема резервного узла в качестве нового первичного узла; блок 1508 верификации, выполненный с возможностью верифицировать то, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным; блок 1502 определения, дополнительно выполненный с возможностью определять то, превышает или нет ряд достоверных сообщений нового сверхкадра, по меньшей мере, из одного сообщения нового сверхкадра второе предварительно определенное пороговое значение; и блок 1502 определения, дополнительно выполненный с возможностью определять резервный узел в качестве нового первичного узла в новом сверхкадре в ответ на определение того, что ряд достоверных сообщений нового сверхкадра превышает второе предварительно определенное пороговое значение.

[00206] В необязательной реализации, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя определение весового коэффициента резервного узла для первой фазы консенсусного процесса в качестве первого значения.

[00207] В необязательной реализации, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя следующее: в ответ на определение сбоя кворумной верификации во второй фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для второй фазы консенсусного процесса в качестве первого значения; и в ответ на определение успешности кворумной верификации во второй фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для второй фазы консенсусного процесса в качестве второго значения, при этом первое значение меньше второго значения.

[00208] В необязательной реализации, кворумная верификация во второй фазе для сетевого узла включает в себя прием предварительно определенного ряда эхо-сообщений из других сетевых узлов.

[00209] В необязательной реализации, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя следующее: в ответ на определение сбоя кворумной верификации в третьей фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для третьей фазы консенсусного процесса в качестве третьего значения; и в ответ на определение успешности кворумной верификации в третьей фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для третьей фазы консенсусного процесса в качестве четвертого значения, при этом третье значение меньше четвертого значения.

[00210] В необязательной реализации, кворумная верификация в третьей фазе для сетевого узла включает в себя прием предварительно определенного ряда сообщений подтверждения из других сетевых узлов, при этом каждое из сообщений подтверждения из других сетевых узлов указывает то, что каждый из других сетевых узлов подтверждает предварительно определенный ряд эхо-сообщений.

[00211] В необязательной реализации, сообщение изменения сверхкадров дополнительно включает в себя набор подписей, ассоциированных с набором сетевых узлов из ряда сетевых узлов, при этом сообщение нового сверхкадра содержит дайджест сообщения изменения сверхкадров.

[00212] В необязательной реализации, верификация того, является или нет, по меньшей мере, одно достоверное сообщение нового сверхкадра достоверным, включает в себя верификацию того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, и верификация того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, включает в себя верификацию того, является или нет набор подписей в сообщении изменения сверхкадров достоверным.

[00213] В необязательной реализации, определение того, что изменение сверхкадров должно выполняться, включает в себя определение того, что изменение сверхкадров должно выполняться, в ответ на определение того, что консенсус не достигнут в старом сверхкадре в течение предварительно определенного периода времени.

[00214] В необязательной реализации, оборудование 1500 изменения первичных узлов дополнительно включает в себя следующее: функциональный блок 1510, выполненный с возможностью работать в новом сверхкадре с новым первичным узлом, при этом новый сверхкадр содержит консенсусный процесс для достижения консенсуса между множеством сетевых узлов с использованием нового первичного узла.

[00215] Фиг. 15 является принципиальной схемой, иллюстрирующей внутренний функциональный модуль и структуру оборудования 1500 изменения первичных узлов. Исполнительный механизм, в сущности, может представлять собой электронное устройство, и электронное устройство включает в себя следующее: по меньшей мере, один процессор; и запоминающее устройство, выполненное с возможностью сохранять выполняемую инструкцию, по меньшей мере, одного процессора.

[00216] По меньшей мере, один процессор выполнен с возможностью определять то, что изменение сверхкадров должно выполняться, при этом изменение сверхкадров вызывает изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом, при этом текущий сверхкадр содержит консенсусный процесс для достижения консенсуса между рядом сетевых узлов с использованием первичного узла, причем консенсусный процесс включает в себя три фазы; определять соответствующий весовой коэффициент резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, при этом весовой коэффициент представляет собой показатель классификации резервного узла в качестве нового первичного узла; определять сумму весовых коэффициентов для резервного узла на основе соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз в текущем сверхкадре; отправлять сообщение изменения сверхкадров в ряд сетевых узлов, отличных от сетевого узла, в ответ на определение того, что сумма весовых коэффициентов достигает первого предварительно определенного порогового значения, при этом сообщение изменения сверхкадров указывает запрос на изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр, в котором резервный узел представляет собой новый первичный узел, и сообщение изменения сверхкадров включает в себя сумму весовых коэффициентов резервного узла; принимать, по меньшей мере, одно сообщение нового сверхкадра, по меньшей мере, из одного из ряда сетевых узлов, отличных от резервного узла, при этом сообщение нового сверхкадра указывает подтверждение приема резервного узла в качестве нового первичного узла; верифицировать то, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным; определять то, превышает или нет ряд достоверных сообщений нового сверхкадра, по меньшей мере, из одного сообщения нового сверхкадра второе предварительно определенное пороговое значение; и определять резервный узел в качестве нового первичного узла в новом сверхкадре в ответ на определение того, что ряд достоверных сообщений нового сверхкадра превышает второе предварительно определенное пороговое значение.

[00217] Необязательно, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя определение весового коэффициента резервного узла для первой фазы консенсусного процесса в качестве первого значения.

[00218] Необязательно, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя следующее: в ответ на определение сбоя кворумной верификации во второй фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для второй фазы консенсусного процесса в качестве первого значения; и в ответ на определение успешности кворумной верификации во второй фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для второй фазы консенсусного процесса в качестве второго значения, при этом первое значение меньше второго значения.

[00219] Необязательно, кворумная верификация во второй фазе для сетевого узла включает в себя прием предварительно определенного ряда эхо-сообщений из других сетевых узлов.

[00220] Необязательно, определение соответствующего весового коэффициента резервного узла, ассоциированного с каждой из трех фаз консенсусного процесса в текущем сверхкадре, включает в себя следующее: в ответ на определение сбоя кворумной верификации в третьей фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для третьей фазы консенсусного процесса в качестве третьего значения; и в ответ на определение успешности кворумной верификации в третьей фазе консенсусного процесса в текущем сверхкадре, определение весового коэффициента резервного узла для третьей фазы консенсусного процесса в качестве четвертого значения, при этом третье значение меньше четвертого значения.

[00221] Необязательно, кворумная верификация в третьей фазе для сетевого узла включает в себя прием предварительно определенного ряда сообщений подтверждения из других сетевых узлов, при этом каждое из сообщений подтверждения из других сетевых узлов указывает то, что каждый из других сетевых узлов подтверждает предварительно определенный ряд эхо-сообщений.

[00222] Необязательно, сообщение изменения сверхкадров дополнительно включает в себя набор подписей, ассоциированных с набором сетевых узлов из ряда сетевых узлов, при этом сообщение нового сверхкадра содержит дайджест сообщения изменения сверхкадров.

[00223] Необязательно, верификация того, является или нет, по меньшей мере, одно достоверное сообщение нового сверхкадра достоверным, включает в себя верификацию того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, и верификация того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, включает в себя верификацию того, является или нет набор подписей в сообщении изменения сверхкадров достоверным.

[00224] Необязательно, определение того, что изменение сверхкадров должно выполняться, включает в себя определение того, что изменение сверхкадров должно выполняться, в ответ на определение того, что консенсус не достигнут в старом сверхкадре в течение предварительно определенного периода времени.

[00225] Необязательно, по меньшей мере, один процессор дополнительно выполнен с возможностью работать в новом сверхкадре с новым первичным узлом, при этом новый сверхкадр содержит консенсусный процесс для достижения консенсуса между множеством сетевых узлов с использованием нового первичного узла.

[00226] Ссылаясь на фиг. 16, фиг. 16 является схемой, иллюстрирующей модули оборудования 1600 изменения первичных узлов, согласно реализации настоящего описания изобретения. Оборудование 1600 для изменения первичного узла может применяться к консенсусной системе на основе технологии работы с цепочками блоков. Оборудование 1600 соответствует реализациям, показанным на фиг. 7-9. Например, оборудование 1400 может реализовываться в сетевом узле сети цепочек блоков. Оборудование 1600 включает в себя следующее: приемник или приемный блок 1602, выполненный с возможностью принимать сообщение изменения сверхкадров из резервного узла, отличного от сетевого узла, при этом сообщение изменения сверхкадров включает в себя индикатор того, что изменение сверхкадров должно выполняться, при этом изменение сверхкадров вызывает изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом; блок 1604 верификации, выполненный с возможностью верифицировать то, является или нет сообщение изменения сверхкадров достоверным; передатчик или передающий блок 1606, выполненный с возможностью отправлять сообщение нового сверхкадра в другие сетевые узлы в ответ на верификацию того, что сообщение изменения сверхкадров является достоверным, при этом сообщение нового сверхкадра содержит дайджест сообщения изменения сверхкадров; приемник или приемный блок 1602, дополнительно выполненный с возможностью принимать, по меньшей мере, одно сообщение нового сверхкадра, по меньшей мере, из одного из ряда сетевых узлов, отличных от сетевого узла; блок 1604 верификации, дополнительно выполненный с возможностью верифицировать то, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным; блок 1608 определения, выполненный с возможностью определять то, превышает или нет ряд достоверных сообщений нового сверхкадра, по меньшей мере, из одного сообщения нового сверхкадра предварительно определенное пороговое значение; и блок 1608 определения, дополнительно выполненный с возможностью определять резервный узел в качестве нового первичного узла в новом сверхкадре в ответ на определение того, что ряд достоверных сообщений нового сверхкадра превышает предварительно определенное пороговое значение.

[00227] В необязательной реализации, сообщение изменения сверхкадров включает в себя сумму весовых коэффициентов, ассоциированную с резервным узлом, и набор подписей, ассоциированных с набором сетевых узлов из ряда сетевых узлов.

[00228] В необязательной реализации, верификация того, является или нет сообщение изменения сверхкадров достоверным, включает в себя верификацию того, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной, и верификация того, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной, включает в себя верификацию того, является или нет набор подписей достоверным.

[00229] В необязательной реализации, верификация того, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным, включает в себя верификацию того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, и верификация того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, включает в себя верификацию того, является или нет набор подписей в сообщении изменения сверхкадров достоверным.

[00230] Фиг. 16 является принципиальной схемой, иллюстрирующей внутренний функциональный модуль и структуру оборудования 1600 изменения первичных узлов. Исполнительный механизм, в сущности, может представлять собой электронное устройство, и электронное устройство включает в себя следующее: по меньшей мере, один процессор; и запоминающее устройство, выполненное с возможностью сохранять выполняемую инструкцию, по меньшей мере, одного процессора.

[00231] По меньшей мере, один процессор выполнен с возможностью принимать сообщение изменения сверхкадров из резервного узла, отличного от сетевого узла, при этом сообщение изменения сверхкадров включает в себя индикатор того, что изменение сверхкадров должно выполняться, при этом изменение сверхкадров вызывает изменение с текущего сверхкадра с текущим первичным узлом на новый сверхкадр с новым первичным узлом; верифицировать то, является или нет сообщение изменения сверхкадров достоверным; отправлять сообщение нового сверхкадра в другие сетевые узлы в ответ на верификацию того, что сообщение изменения сверхкадров является достоверным, при этом сообщение нового сверхкадра содержит дайджест сообщения изменения сверхкадров; принимать, по меньшей мере, одно сообщение нового сверхкадра, по меньшей мере, из одного из ряда сетевых узлов, отличных от сетевого узла; верифицировать то, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным; определять то, превышает или нет ряд достоверных сообщений нового сверхкадра, по меньшей мере, из одного сообщения нового сверхкадра предварительно определенное пороговое значение; и определять резервный узел в качестве нового первичного узла в новом сверхкадре в ответ на определение того, что ряд достоверных сообщений нового сверхкадра превышает предварительно определенное пороговое значение.

[00232] Необязательно, сообщение изменения сверхкадров включает в себя сумму весовых коэффициентов, ассоциированную с резервным узлом, и набор подписей, ассоциированных с набором сетевых узлов из ряда сетевых узлов.

[00233] Необязательно, верификация того, является или нет сообщение изменения сверхкадров достоверным, включает в себя верификацию того, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной, и верификация того, является или нет сумма весовых коэффициентов в сообщении изменения сверхкадров достоверной, включает в себя верификацию того, является или нет набор подписей достоверным.

[00234] Необязательно, верификация того, является или нет, по меньшей мере, одно сообщение нового сверхкадра достоверным, включает в себя верификацию того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, и верификация того, является или нет дайджест сообщения изменения сверхкадров, по меньшей мере, в одном сообщении нового сверхкадра достоверным, включает в себя верификацию того, является или нет набор подписей в сообщении изменения сверхкадров достоверным.

[00235] Ссылаясь на фиг. 17, фиг. 17 является схемой, иллюстрирующей модули оборудования 1700 восстановления, согласно реализации настоящего описания изобретения. Оборудование 1700 для восстановления может применяться к консенсусной системе на основе технологии работы с цепочками блоков. Оборудование 1700 может соответствовать реализациям, показанным на фиг. 10-12. Например, оборудование 1700 может реализовываться в сетевом узле сети цепочек блоков. Оборудование 1700 включает в себя следующее: широковещательный блок 1702, выполненный с возможностью передавать в широковещательном режиме, посредством сетевого узла сети цепочек блоков, сообщение с запросом состояния в ряд других сетевых узлов сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера; приемник 1704 или приемный блок 1704, выполненный с возможностью принимать ряд сообщений с ответом по состоянию из ряда других сетевых узлов, при этом каждое из ряда сообщений с ответом по состоянию включает в себя порядковый номер; блок 706 идентификации, выполненный с возможностью идентифицировать целевой порядковый номер на основе идентичного порядкового номера в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию содержит идентичный порядковый номер; передатчик 1708 или передающий блок 1708, выполненный с возможностью отправлять запрашивающее сообщение в ряд других сетевых узлов, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из ряда других сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из ряда других сетевых узлов для достижения консенсуса между рядом других сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение включает в себя часть целевой транзакции и подпись каждого из ряда других сетевых узлов; приемник 1704 или приемный блок 1704, дополнительно выполненный с возможностью принимать ряд эхо-сообщений из ряда других сетевых узлов; блок 1710 определения, выполненный с возможностью определять ряд допустимых эхо-сообщений из ряда эхо-сообщений, при этом каждое из ряда допустимых эхо-сообщений включает в себя целевой порядковый номер; блок 1712 восстановления, выполненный с возможностью восстанавливать целевую транзакцию, имеющую идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение; и передатчик 1708, дополнительно выполненный с возможностью отправлять сообщение в ряда других сетевых узлов, указывающее то, что сетевой узел восстановлен.

[00236] В необязательной реализации, ряд сетевых узлов включает в себя первичный узел и один или более резервных узлов.

[00237] В необязательной реализации, сетевой узел представляет собой первичный узел или резервный узел.

[00238] В необязательной реализации, запрашивающее сообщение включает в себя целевой порядковый номер.

[00239] В необязательной реализации, оборудование 1700 восстановления дополнительно включает в себя следующее: блок 1714 верификации, выполненный с возможностью верифицировать, посредством каждого из ряда других сетевых узлов, отличных от сетевого узла, запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

[00240] В необязательной реализации, блок 1714 верификации дополнительно выполнен с возможностью верифицировать то, является или нет каждое из эхо-сообщений достоверным, при этом верификация того, является или нет каждое из эхо-сообщений достоверным, включает в себя верификацию того, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

[00241] В необязательной реализации, верификация того, является или нет каждое эхо-сообщение достоверным, дополнительно включает в себя верификацию того, является или нет подпись в эхо-сообщении достоверной.

[00242] В необязательной реализации, каждое из эхо-сообщений дополнительно включает в себя, по меньшей мере, один из ряда блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом ряд EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

[00243] В необязательной реализации, восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений, содержит восстановление целевой транзакции с использованием поднабора множества EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

[00244] В необязательной реализации, сообщение в ряде других сетевых узлов, указывающее то, что сетевой узел восстановлен, включает в себя набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

[00245] Система, оборудование, модуль или блок, проиллюстрированные в предыдущих реализациях, могут реализовываться посредством использования компьютерной микросхемы или объекта либо могут реализовываться посредством использования продукта, имеющего некоторую функцию. Устройство согласно типичной реализации представляет собой компьютер, и компьютер может представлять собой персональный компьютер, переносной компьютер, сотовый телефон, камерофон, смартфон, персональное цифровое устройство, мультимедийный проигрыватель, навигационное устройство, устройство приема и отправки электронной почты, игровую приставку, планшетный компьютер, носимое устройство либо любую комбинацию этих устройств.

[00246] На предмет процесса реализации функций и ролей каждого блока в оборудовании, следует обратиться к процессу реализации соответствующих этапов в предыдущем способе. Подробности опускаются здесь для простоты.

[00247] Поскольку реализация оборудования по существу соответствует реализации способа для связанных частей, следует обратиться к соответствующим описаниям в реализации способа. Вышеописанная реализация оборудования представляет собой просто пример. Блоки, описанные в качестве отдельных частей, могут быть или не быть физически отдельными, и части, отображаемые в качестве блоков, могут быть или не быть физическими блоками, могут быть расположены в одной позиции либо могут быть распределены по множеству сетевых блоков. Некоторые или все модули могут выбираться на основе фактических потребностей для достижения целей решений настоящего описания изобретения. Специалисты в данной области техники могут понимать и реализовывать реализации настоящей заявки без творческих усилий.

[00248] Фиг. 17 является принципиальной схемой, иллюстрирующей внутренний функциональный модуль и структуру оборудования 1700 восстановления. Исполнительный механизм, в сущности, может представлять собой электронное устройство, и электронное устройство включает в себя следующее: по меньшей мере, один процессор; и запоминающее устройство, выполненное с возможностью сохранять выполняемую инструкцию, по меньшей мере, одного процессора.

[00249] По меньшей мере, один процессор выполнен с возможностью передавать в широковещательном режиме, посредством сетевого узла сети цепочек блоков, сообщение с запросом состояния в ряд других сетевых узлов сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера; принимать ряд сообщений с ответом по состоянию из ряда других сетевых узлов, при этом каждое из ряда сообщений с ответом по состоянию включает в себя порядковый номер; идентифицировать целевой порядковый номер на основе идентичного порядкового номера в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию содержит идентичный порядковый номер; отправлять запрашивающее сообщение в ряд других сетевых узлов, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из ряда других сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из ряда других сетевых узлов для достижения консенсуса между рядом других сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение включает в себя часть целевой транзакции и подпись каждого из ряда других сетевых узлов; принимать ряд эхо-сообщений из множества других сетевых узлов; определять ряд допустимых эхо-сообщений из ряда эхо-сообщений, при этом каждое из ряда допустимых эхо-сообщений включает в себя целевой порядковый номер; восстанавливать целевую транзакцию, имеющую идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение; и отправлять сообщение в ряд других сетевых узлов, указывающее то, что сетевой узел восстановлен.

[00250] Необязательно, ряд сетевых узлов включают в себя первичный узел и один или более резервных узлов.

[00251] Необязательно, сетевой узел представляет собой первичный узел или резервный узел.

[00252] Необязательно, запрашивающее сообщение включает в себя целевой порядковый номер.

[00253] Необязательно, по меньшей мере, один процессор дополнительно выполнен с возможностью верифицировать, посредством каждого из ряда других сетевых узлов, отличных от сетевого узла, запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

[00254] Необязательно, по меньшей мере, один процессор дополнительно выполнен с возможностью верифицировать то, является или нет каждое из эхо-сообщений достоверным, при этом верификация того, является или нет каждое из эхо-сообщений достоверным, включает в себя верификацию того, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

[00255] Необязательно, верификация того, является или нет каждое эхо-сообщение достоверным, дополнительно включает в себя верификацию того, является или нет подпись в эхо-сообщении достоверной.

[00256] Необязательно, каждое из эхо-сообщений дополнительно включает в себя, по меньшей мере, один из ряда блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом ряд EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

[00257] Необязательно, восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений, включает в себя восстановление целевой транзакции с использованием поднабора ряда EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

[00258] Необязательно, сообщение в ряде других сетевых узлов, указывающее то, что сетевой узел восстановлен, включает в себя набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

[00259] Реализации предмета изобретения и действий и операций, описанных в этом подробном описании, могут реализовываться в цифровой электронной схеме, в материально осуществленном компьютерном программном обеспечении или микропрограммном обеспечении, в компьютерных аппаратных средствах, включающих в себя структуры, раскрытые в этом подробном описании, и их структурные эквиваленты, либо в комбинациях одного или более из означенного. Реализации предмета изобретения, описанного в этом подробном описании, могут быть реализованы как одна или более компьютерных программ, т.е. один или более модулей компьютерных программных инструкций, кодированных на компьютерной передающей среде программ, для выполнения или управления работой оборудования обработки данных. Передающая среда может представлять собой материальный энергонезависимый компьютерный носитель хранения данных. Альтернативно или помимо этого, передающая среда может представлять собой искусственно сформированный распространяемый сигнал, например, машиносформированный электрический, оптический или электромагнитный сигнал, который формируется для того, чтобы кодировать информацию для передачи в подходящее приемное оборудование для выполнения посредством оборудования обработки данных. Компьютерный носитель хранения данных может представлять собой или составлять часть машиночитаемого устройства хранения данных, машиночитаемой платы хранения данных, запоминающего устройства с произвольным или последовательным доступом либо комбинации одного или более из означенного. Компьютерный носитель хранения данных не представляет собой распространяемый сигнал.

[00260] Термин "оборудование обработки данных" охватывает все виды оборудования, устройств и машин для обработки данных, включающие в себя в качестве примера программируемый процессор, компьютер либо несколько процессоров или компьютеров. Оборудование обработки данных может включать в себя логическую схему специального назначения, например, FPGA (программируемую пользователем вентильную матрицу), ASIC (специализированную интегральную схему) или GPU (графический процессор). Оборудование также может включать в себя, в дополнение к аппаратным средствам, код, который создает среду выполнения для компьютерных программ, например, код, который составляет микропрограммное обеспечение процессора, стек протоколов, систему управления базами данных, операционную систему либо комбинацию одного или более из означенного.

[00261] Компьютерная программа, которая также может называться или описываться как программа, программное обеспечение, программное приложение, приложение, модуль, программный модуль, механизм, сценарий или код, может быть написана на любой форме языка программирования, включающей в себя компилируемые или интерпретируемые языки либо декларативные или процедурные языки; и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, механизма, вложенной процедуры или другого блока, подходящего для выполнения в вычислительном окружении, причем это окружение может включать в себя один или более компьютеров, взаимно соединенных посредством сети передачи данных в одном или более местоположений.

[00262] Компьютерная программа может, но не обязательно должна, соответствовать файлу в файловой системе. Компьютерная программа может сохраняться в части файла, который хранит другие программы или данные (например, один или более сценариев, сохраняемых в документе на языке разметки), в одном файле, выделенном для рассматриваемой программы, или в нескольких координированных файлах (например, в файлах, которые сохраняют один или более модулей, подпрограмм либо частей кода).

[00263] Процессы и логические последовательности операций, поясненные в этом описании изобретения, могут выполняться посредством одного или более компьютеров, выполняющих одну или более компьютерных программ, чтобы осуществлять операции посредством обработки входных данных и формирования вывода. Процессы и логические последовательности операций также могут выполняться посредством логической схемы специального назначения, например, FPGA, ASIC или GPU, либо посредством комбинации логической схемы специального назначения и одного или более запрограммированных компьютеров.

[00264] Компьютеры, подходящие для выполнения компьютерной программы, могут быть основаны на микропроцессорах общего или специального назначения либо на том и на другом, либо на любом другом виде центрального процессора. В общем, центральный процессор принимает инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, либо из того и из другого. Элементы компьютера могут включать в себя центральный процессор для выполнения инструкций и одно или более запоминающих устройств для сохранения инструкций и данных. Центральный процессор и запоминающее устройство могут дополняться или включаться в логическую схему специального назначения.

[00265] Обычно, компьютер должен соединяться, по меньшей мере, с одним энергонезависимым машиночитаемым носителем хранения данных (также называемым "машиночитаемым запоминающим устройством"). Носитель хранения данных, соединенный с компьютером, может представлять собой внутренний компонент компьютера (например, интегрированный жесткий диск) или внешний компонент (например, жесткий диск по стандарту универсальной последовательной шины (USB) или систему хранения данных, доступную по сети). Примеры носителей хранения данных могут включать в себя, например, магнитные, магнитооптические или оптические диски, полупроводниковые накопители, сетевые ресурсы хранения, к примеру, системы облачного хранения данных или другие типы носителей хранения данных. Тем не менее, компьютер не должен обязательно иметь такие устройства. Кроме того, компьютер может встраиваться в другое устройство, например, в мобильный телефон, персональное цифровое устройство (PDA), мобильный аудио- или видеопроигрыватель, игровую приставку, приемник на основе глобальной системы позиционирования (GPS) или портативное устройство хранения данных, например, флэш-накопитель по стандарту универсальной последовательной шины (USB), помимо прочего.

[00266] Чтобы предоставлять взаимодействие с пользователем, реализации предмета изобретения, описанного в этом подробном описании, могут реализовываться или конфигурироваться с возможностью обмениваться данными с компьютером, имеющим устройство отображения, например, монитор ЖК-дисплея (жидкокристаллического дисплея), для отображения информации пользователю и устройство ввода, посредством которого пользователь может предоставлять ввод в компьютер, например, клавиатуру и указательное устройство, например, мышь, шаровой манипулятор или сенсорную панель. Другие виды устройств также могут использоваться для того, чтобы предоставлять взаимодействие с пользователем; например, обратная связь, предоставляемая пользователю, может представлять собой любую форму сенсорной обратной связи, такую как визуальная обратная связь, акустическая обратная связь или тактильная обратная связь; и ввод от пользователя может приниматься в любой форме, включающей в себя акустический, речевой или тактильный ввод. Помимо этого, компьютер может взаимодействовать с пользователем посредством отправки документов и приема документов из устройства, которое используется пользователем; например, посредством отправки веб-страниц в веб-браузер на устройстве пользователя в ответ на запросы, принимаемые из веб-браузера, либо посредством взаимодействия с приложением, выполняющимся на пользовательском устройстве, например, на смартфоне или электронном планшетном компьютере. Кроме того, компьютер может взаимодействовать с пользователем посредством отправки текстовых сообщений или других форм сообщения в персональное устройство, например, в смартфон, который выполняет приложение обмена сообщениями и принимает ответные сообщения от пользователя в ответ.

[00267] Это описание изобретения использует термин "выполнен с возможностью" в связи с системами, оборудованием и компьютерными программными компонентами. Для системы из одного или более компьютеров, "выполненный с возможностью" выполнять конкретные операции или действия означает то, что система имеет установленное на ней программное обеспечение, микропрограммное обеспечение, аппаратные средства либо комбинацию означенного, которая при работе инструктирует системе выполнять операции или действия. Для одной или более компьютерных программ, "выполненный с возможностью" с возможностью выполнять конкретные операции или действия означает то, что одна или более программ включают в себя инструкции, которые, при выполнении посредством оборудования обработки данных, инструктируют оборудованию выполнять операции или действия. Для логической схемы специального назначения, "выполненный с возможностью" с возможностью выполнять конкретные операции или действия означает то, что схема имеет электронную логику, которая выполняет операции или действия.

[00268] Хотя это описание изобретения содержит множество конкретных сведений по реализации, они не должны истолковываться в качестве ограничений на заявленный объем, который задается непосредственно посредством формулы изобретения, а вместо этого должны истолковываться в качестве описаний признаков, которые могут быть конкретными для конкретных реализаций. Некоторые признаки, которые описываются в этом подробном описании в контексте отдельных реализаций, также могут реализовываться, в комбинации, в одной реализации. Наоборот, различные признаки, которые описываются в контексте одной реализации, также могут быть реализованы в нескольких реализациях по отдельности либо в любой подходящей субкомбинации. Кроме того, хотя признаки могут описываться выше как работающие в некоторых комбинациях и даже первоначально заявляться в формуле изобретения по существу, один или более признаков из заявленной комбинации в некоторых случаях могут быть исключены из комбинации, и формула изобретения может быть направлена на субкомбинацию или на изменение субкомбинации.

[00269] Аналогично, хотя операции проиллюстрированы на чертежах и приведены в формуле изобретения в конкретном порядке, это не следует понимать как обязательность того, что такие операции должны выполняться в конкретном показанном порядке либо в последовательном порядке, либо того, что что все проиллюстрированные операции должны выполняться для того, чтобы достигать требуемых результатов. При некоторых обстоятельствах, может быть преимущественной многозадачная и параллельная обработка. Кроме того, разделение различных системных модулей и компонентов в реализациях, описанных выше, не должно пониматься как требующее такого разделения во всех реализациях, и следует понимать, что описанные программные компоненты и системы, в общем, могут интегрироваться в один программный продукт либо комплектоваться в несколько программных продуктов.

[00270] Выше описываются конкретные реализации предмета изобретения. Другие реализации находятся в пределах объем прилагаемой формулы изобретения. Например, действия, изложенные в формуле изобретения, могут выполняться в другом порядке и при этом достигать требуемых результатов. В качестве одного примера, процессы, проиллюстрированные на прилагаемых чертежах, не обязательно требуют конкретного показанного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. В некоторых случаях, может быть преимущественной многозадачная и параллельная обработка.

Похожие патенты RU2718411C1

название год авторы номер документа
ВЫПОЛНЕНИЕ ИЗМЕНЕНИЯ ПЕРВИЧНОГО УЗЛА В РАСПРЕДЕЛЕННОЙ СИСТЕМЕ 2018
  • Линь, Пэн
RU2716558C1
ДОСТИЖЕНИЕ КОНСЕНУСА МЕЖДУ СЕТЕВЫВЫМИ УЗЛАМИ В РАСПРЕДЕЛЕННОЙ СИСТЕМЕ 2018
  • Линь, Пэн
RU2723072C1
УПРОЩЕНИЕ КОНСЕНСУСА В ЦЕПОЧКАХ БЛОКОВ ПО ПРИНЦИПУ ПРАКТИЧНОЙ ОТКАЗОУСТОЙЧИВОСТИ НА ОСНОВЕ ВИЗАНТИЙСКОГО СОГЛАШЕНИЯ И СИНХРОНИЗАЦИИ УЗЛОВ 2018
  • Ян, Даи
RU2724181C1
СПОСОБ И ОБОРУДОВАНИЕ БИЗНЕС-ВЕРИФИКАЦИИ 2018
  • Ли, Нин
RU2722392C1
СПОСОБ И УСТРОЙСТВО КОНСЕНСУСНОЙ ВЕРИФИКАЦИИ 2018
  • Тан, Цян
RU2728524C1
ЗАЩИТА ДАННЫХ ЦЕПОЧЕК БЛОКОВ НА ОСНОВЕ ОБЩЕЙ МОДЕЛИ НА ОСНОВЕ СЧЕТОВ И ГОМОМОРФНОГО ШИФРОВАНИЯ 2018
  • Чжан, Вэньбинь
  • Ма, Баоли
  • Ма, Хуаньюй
RU2733223C1
МОДУЛЬ ВИЗУАЛЬНОГО ПРОСМОТРА ЦЕПОЧКИ БЛОКОВ 2018
  • Ли, Яньпэн
RU2746584C2
ПАРАЛЛЕЛЬНОЕ ВЫПОЛНЕНИЕ ТРАНЗАКЦИЙ В СЕТИ ЦЕПОЧЕК БЛОКОВ НА ОСНОВЕ БЕЛЫХ СПИСКОВ СМАРТ-КОНТРАКТОВ 2018
  • Ся, Нин
  • Се, Гуйлу
  • Дэн, Фуси
RU2731417C1
СХЕМА УПРАВЛЕНИЯ ДОМЕННЫМИ ИМЕНАМИ ДЛЯ КРОСС-ЦЕПОЧЕЧНЫХ ВЗАИМОДЕЙСТВИЙ В БЛОКЧЕЙН СИСТЕМАХ 2018
  • Цю, Хунлинь
RU2718959C1
ЗАЩИТА ДАННЫХ ЦЕПОЧЕК БЛОКОВ С ИСПОЛЬЗОВАНИЕМ ГОМОМОРФНОГО ШИФРОВАНИЯ 2018
  • Ма, Баоли
  • Чжан, Вэньбинь
RU2727161C1

Иллюстрации к изобретению RU 2 718 411 C1

Реферат патента 2020 года ВЫПОЛНЕНИЕ ПРОЦЕССА ВОССТАНОВЛЕНИЯ ДЛЯ СЕТЕВОГО УЗЛА В РАСПРЕДЕЛЁННОЙ СИСТЕМЕ

Изобретение относиться к обработке информации. Технический результат заключается в расширении арсенала средств. Способ для выполнения процесса восстановления сетевого узла сети цепочек блоков включает в себя широковещательную передачу сообщения с запросом состояния посредством сетевого узла в другие сетевые узлы, чтобы восстанавливать целевую транзакцию целевого порядкового номера, прием сообщений с ответом по состоянию, которые включают в себя порядковый номер, из других сетевых узлов, идентификацию целевого порядкового номера на основе порядковых номеров в сообщениях с ответом по состоянию, отправку запрашивающего сообщения в другие сетевые узлы, чтобы запрашивать эхо-сообщение из каждого из других сетевых узлов, определение ряда допустимых эхо-сообщений, которые отправляются посредством других сетевых узлов, восстановление целевой транзакции на основе ряда допустимых эхо-сообщений и отправку сообщения в другие сетевые узлы, указывающего то, что сетевой узел восстановлен. 3 н. и 27 з.п. ф-лы, 17 ил.

Формула изобретения RU 2 718 411 C1

1. Машинореализованный способ для выполнения процесса восстановления сетевого узла сети цепочек блоков, при этом способ содержит этапы, на которых:

- широковещательно передают, посредством сетевого узла сети цепочек блоков, сообщение с запросом состояния во множество других сетевых узлов сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера;

- принимают, посредством сетевого узла, множество сообщений с ответом по состоянию из множества других сетевых узлов, при этом каждое из множества сообщений с ответом по состоянию содержит порядковый номер;

- в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию содержит идентичный порядковый номер, идентифицируют, посредством сетевого узла, целевой порядковый номер на основе идентичного порядкового номера;

- отправляют, посредством сетевого узла, запрашивающее сообщение во множество других сетевых узлов, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из множества других сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из множества других сетевых узлов для достижения консенсуса между множеством других сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение содержит часть целевой транзакции и подпись каждого из множества других сетевых узлов;

- принимают, посредством сетевого узла, множество эхо-сообщений из множества других сетевых узлов;

- определяют, посредством сетевого узла, ряд допустимых эхо-сообщений из множества эхо-сообщений, при этом каждое из ряда допустимых эхо-сообщений содержит целевой порядковый номер;

- в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение, восстанавливают, посредством сетевого узла, целевую транзакцию, имеющую идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений; и

- отправляют, посредством сетевого узла, сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен.

2. Способ по п. 1, в котором множество сетевых узлов содержит первичный узел и один или более резервных узлов.

3. Способ по п. 1, в котором сетевой узел представляет собой первичный узел или резервный узел.

4. Способ по п. 1, в котором запрашивающее сообщение содержит целевой порядковый номер.

5. Способ по п. 4, при этом способ дополнительно содержит этап, на котором:

- верифицируют, посредством каждого из множества других сетевых узлов, отличных от сетевого узла, запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

6. Способ по п. 1, при этом способ дополнительно содержит этап, на котором:

- верифицируют, посредством сетевого узла, то, является или нет каждое из эхо-сообщений достоверным, при этом верификация того, является или нет каждое из эхо-сообщений достоверным, содержит этап, на котором верифицируют то, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

7. Способ по п. 6, в котором верификация того, является или нет каждое эхо-сообщение достоверным, дополнительно содержит этап, на котором верифицируют то, является или нет подпись в эхо-сообщении достоверной.

8. Способ по п. 1, в котором каждое из эхо-сообщений дополнительно содержит, по меньшей мере, один из множества блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом множество EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

9. Способ по п. 1, в котором восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений, содержит этап, на котором восстанавливают целевую транзакцию с использованием поднабора множества EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

10. Способ по п. 1, в котором сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен, содержит набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

11. Энергонезависимый машиночитаемый носитель хранения данных, соединенный с одним или более компьютеров и сконфигурированный с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- широковещательно передавать, посредством сетевого узла сети цепочек блоков, сообщение с запросом состояния во множество других сетевых узлов сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера;

- принимать посредством сетевого узла, множество сообщений с ответом по состоянию из множества других сетевых узлов, при этом каждое из множества сообщений с ответом по состоянию содержит порядковый номер;

- в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию содержит идентичный порядковый номер, идентифицировать, посредством сетевого узла, целевой порядковый номер на основе идентичного порядкового номера;

- отправлять, посредством сетевого узла, запрашивающее сообщение во множество других сетевых узлов, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из множества других сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из множества других сетевых узлов для достижения консенсуса между множеством других сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение содержит часть целевой транзакции и подпись каждого из множества других сетевых узлов;

- принимать, посредством сетевого узла, множество эхо-сообщений из множества других сетевых узлов;

- определять, посредством сетевого узла, ряд допустимых эхо-сообщений из множества эхо-сообщений, при этом каждое из ряда допустимых эхо-сообщений содержит целевой порядковый номер;

- в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение, восстанавливать, посредством сетевого узла, целевую транзакцию, имеющую идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений; и

- отправлять, посредством сетевого узла, сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен.

12. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором множество сетевых узлов содержит первичный узел и один или более резервных узлов.

13. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором сетевой узел представляет собой первичный узел или резервный узел.

14. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором запрашивающее сообщение содержит целевой порядковый номер.

15. Энергонезависимый машиночитаемый носитель хранения данных по п. 14, дополнительно сконфигурированный с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- верифицировать, посредством каждого из множества других сетевых узлов, отличных от сетевого узла, запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

16. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, дополнительно сконфигурированный с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- верифицировать, посредством сетевого узла, то, является или нет каждое из эхо-сообщений достоверным, при этом верификация того, является или нет каждое из эхо-сообщений достоверным, содержит верификацию того, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

17. Энергонезависимый машиночитаемый носитель хранения данных по п. 16, в котором верификация того, является или нет каждое эхо-сообщение достоверным, дополнительно содержит верификацию того, является или нет подпись в эхо-сообщении достоверной.

18. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором каждое из эхо-сообщений дополнительно содержит, по меньшей мере, один из множества блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом множество EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

19. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений, содержит восстановление целевой транзакции с использованием поднабора множества EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

20. Энергонезависимый машиночитаемый носитель хранения данных по п. 11, в котором сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен, содержит набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

21. Система для выполнения процесса восстановления сетевого узла сети цепочек блоков, содержащая:

- один или более компьютеров; и

- одно или более машиночитаемых запоминающих устройств, соединенных с одним или более компьютеров и сконфигурированных с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- широковещательно передавать, посредством сетевого узла сети цепочек блоков, сообщение с запросом состояния во множество других сетевых узлов сети цепочек блоков, при этом сетевой узел должен восстанавливать целевую транзакцию целевого порядкового номера;

- принимать, посредством сетевого узла, множество сообщений с ответом по состоянию из множества других сетевых узлов, при этом каждое из множества сообщений с ответом по состоянию содержит порядковый номер;

- в ответ на определение того, что ряд сообщений с ответом по состоянию превышает предварительно определенное пороговое значение, при этом каждое из ряда сообщений по состоянию содержит идентичный порядковый номер, идентифицировать, посредством сетевого узла, целевой порядковый номер на основе идентичного порядкового номера;

- отправлять, посредством сетевого узла, запрашивающее сообщение во множество других сетевых узлов, при этом запрашивающее сообщение запрашивает эхо-сообщение из каждого из множества других сетевых узлов, при этом эхо-сообщение представляет собой сообщение, передаваемое посредством каждого из множества других сетевых узлов для достижения консенсуса между множеством других сетевых узлов по целевой транзакции, имеющей целевой порядковый номер, и эхо-сообщение содержит часть целевой транзакции и подпись каждого из множества других сетевых узлов;

- принимать, посредством сетевого узла, множество эхо-сообщений из множества других сетевых узлов;

- определять, посредством сетевого узла, ряд допустимых эхо-сообщений из множества эхо-сообщений, при этом каждое из ряда допустимых эхо-сообщений содержит целевой порядковый номер;

- в ответ на определение того, что ряд допустимых эхо-сообщений превышает предварительно определенное пороговое значение, восстанавливать, посредством сетевого узла, целевую транзакцию, имеющую идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений; и

- отправлять, посредством сетевого узла, сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен.

22. Система по п. 21, в которой множество сетевых узлов содержит первичный узел и один или более резервных узлов.

23. Система по п. 21, в которой сетевой узел представляет собой первичный узел или резервный узел.

24. Система по п. 21, в которой запрашивающее сообщение содержит целевой порядковый номер.

25. Система по п. 24, в которой компьютерные запоминающие устройства дополнительно сконфигурированы с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- верифицировать, посредством каждого из множества других сетевых узлов, отличных от сетевого узла, запрашивающее сообщение до отправки эхо-сообщений в сетевой узел.

26. Система по п. 21, в которой компьютерные запоминающие устройства дополнительно сконфигурированы с инструкциями, выполняемыми посредством одного или более компьютеров, с возможностью:

- верифицировать, посредством сетевого узла, то, является или нет каждое из эхо-сообщений достоверным, при этом верификация того, является или нет каждое из эхо-сообщений достоверным, содержит верификацию того, является или нет каждое из эхо-сообщений достоверным, с использованием дерева Меркла.

27. Система по п. 26, в которой верификация того, является или нет каждое эхо-сообщение достоверным, дополнительно содержит верификацию того, является или нет подпись в эхо-сообщении достоверной.

28. Система по п. 21, в которой каждое из эхо-сообщений дополнительно содержит, по меньшей мере, один из множества блоков кодов стирания ошибок (EC), ассоциированных с целевой транзакцией, при этом множество EC-блоков формируется согласно EC-коду с использованием целевой транзакции.

29. Система по п. 21, в которой восстановление целевой транзакции, имеющей идентичный порядковый номер в сетевом узле, на основе ряда допустимых эхо-сообщений, содержит восстановление целевой транзакции с использованием поднабора множества EC-блоков, которые находятся в ряде допустимых эхо-сообщений.

30. Система по п. 21, в которой сообщение во множество других сетевых узлов, указывающее то, что сетевой узел восстановлен, содержит набор подписей в ряде допустимых эхо-сообщений и целевой порядковый номер.

Документы, цитированные в отчете о поиске Патент 2020 года RU2718411C1

CN 107423152 A, 01.12.17
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами 1924
  • Ф.А. Клейн
SU2017A1
CN 108768749 A, 06.11.2018
СПОСОБ КОНТРОЛЯ ПОДЛИННОСТИ И КАЧЕСТВА ПРОДУКЦИИ В ПРОЦЕССЕ ПРОИЗВОДСТВА И РЕАЛИЗАЦИИ 2017
  • Дю Игорь Сан-Сенович
RU2639015C1

RU 2 718 411 C1

Авторы

Линь, Пэн

Даты

2020-04-02Публикация

2018-12-13Подача