СПОСОБ И УСТРОЙСТВО КОНСЕНСУСА
CONSENSUS METHOD AND DEVICE

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001]
Настоящая заявка имеет отношение к области компьютерных технологий, и, в частности, к способу и устройству консенсуса.
УРОВЕНЬ ТЕХНИКИ
[0002]
В настоящее время широко используется технология блокчейн (blockchain, цепочка блоков), а децентрализованный принцип работы в технологии блокчейн гарантирует, что данные нелегко фальсифицировать, благодаря чему повышается безопасность.
[0003]
На практике сеть блокчейн, которая включает в себя множественные узлы (узлы можно рассматривать как устройства в сети блокчейн, которые участвуют в услугах обработки), может предоставлять соответствующие услуги для клиентских устройств. Узлы в сети блокчейн выполняют обработку запросов на обслуживание клиентских устройств и возвращают результаты обработки на клиентские устройства. В этом процессе результаты обработки, генерируемые независимо работающими узлами, могут быть несовместимыми. Чтобы гарантировать, что клиентское устройство может принять правильный результат обработки, реализуется консенсус между узлами с использованием алгоритма PBFT (Practical Byzantine Fault Tolerance, практическая задача византийских генералов) (то есть правильный результат обработки может совместно подтверждаться или одобряться узлами).
[0004]
В ходе процесса использования алгоритма PBFT консенсус обычно выполняется в представлении. В представлении один узел в сети блокчейн используется в качестве основного узла (основной), а другие узлы используются в качестве резервных узлов (резервный). В этом случае основной узел принимает запрос на обслуживание клиентского устройства и широковещательно рассылает (транслирует) этот запрос на обслуживание на все резервные узлы, и основной узел инициирует консенсус. Узлы, которые достигают консенсуса, выполняют обработку запроса на обслуживание и возвращают результат обработки на клиентское устройство.
[0005]
В существующей технологии резервный узел инициирует переключение представления, и переключение представления, инициированное резервным узлом, обычно должно подтверждаться или одобряться другими узлами в представлении. Резервный узел инициирует запрос переключения представления к другим узлам (в том числе основному узлу) в представлении, то есть инициирует консенсус по запросу переключения представления к другим узлам (этот консенсус все равно использует PBFT. В отличие от процесса консенсуса по запросу на обслуживание, в ходе процесса консенсуса на основании запроса переключения представления, каждый узел приостанавливает консенсус по запросу на обслуживание. Следовательно, консенсус по запросу переключения представления является, по существу, процессом дополнительного консенсуса). После того, как предварительно заданное количество узлов достигнет консенсуса, определяется, что резервный узел становится новым основным узлом. Новый основной узел транслирует новое сообщение представления, чтобы завершить переключение представления.
[0006]
Однако, в этом предшествующем механизме, для переключения представления, инициированного резервным узлом, должен выполняться процесс дополнительного консенсуса, и этот процесс дополнительного консенсуса увеличивает объем вычислений системы. Кроме того, в ходе процесса консенсуса для переключения представления, консенсус может быть достигнут после удостоверения предварительно заданным количеством узлов. Наконец, новый основной узел транслирует новое сообщение представления, и весь процесс занимает некоторое время. Очевидно, существующий подход к переключению представления не только увеличивает объем вычислений системы, но также и увеличивает время, затрачиваемое на обработку запроса на обслуживание. Таким образом, это влечет за собой относительно низкую эффективность обработки.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0007]
Реализации настоящей заявки предоставляют способ и устройство консенсуса, для устранения проблемы, заключающейся в том, что существующий подход к переключению представления увеличивает объем вычислений сети блокчейн и увеличивает затраты времени на обработку.
[0008]
Одна из реализаций настоящей заявки предоставляет способ консенсуса, причем способ включает в себя следующие этапы, на которых: отслеживают, посредством основного узла блокчейна, срабатывание условия переключения представления; выбирают, посредством основного узла блокчейна, узел-преемник, когда зафиксировано срабатывание условия переключения представления; и переключают, посредством основного узла блокчейна, с учетом узла-преемника, текущее представление на следующее представление, которое использует узел-преемник в качестве последующего основного узла блокчейна, так что последующий основной узел блокчейна инициирует консенсус в следующем представлении.
[0009]
Одна из реализаций настоящей заявки предоставляет устройство консенсуса, причем устройство включает в себя следующее: контролирующий модуль, выполненный с возможностью отслеживания срабатывания условия переключения представления; модуль определения узла, выполненный с возможностью выбора узла-преемника, когда контролирующий модуль фиксирует срабатывание условия переключения представления; и модуль переключения представления, выполненный с возможностью переключения, с учетом узла-преемника, текущего представления на следующее представление, которое использует узел-преемник в качестве последующего основного узла блокчейна, так что последующий основной узел блокчейна инициирует консенсус в следующем представлении.
[0010]
Реализации настоящей заявки предоставляют способ и устройство консенсуса. В любом представлении основной узел блокчейна активно отслеживает срабатывание условия переключения представления. Если условие переключения представления сработало, основной узел блокчейна должен выполнить переключение представления. Кроме того, основной узел блокчейна выбирает узел-преемник из других узлов блокчейна, в качестве основного узла блокчейна в следующем представлении. Соответственно, основной узел блокчейна выполняет переключение представления. В переключенном представлении узел-преемник используется в качестве нового основного узла блокчейна для обработки услуги. Помимо этого, переключение представления все равно выполняется на основе предшествующего процесса. Очевидно, что переключение предшествующего представления инициируется основным узлом блокчейна. Такой подход не позволяет резервному узлу блокчейна инициировать консенсус по переключению представления. Другими словами, дополнительный консенсус может быть предотвращен. Таким образом, могут быть снижены дополнительный объем вычислений и затраты времени на обработку в сети блокчейн.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011]
Прилагаемые чертежи, описанные в данном документе, предназначены для обеспечения дополнительного понимания настоящей заявки и составляют часть настоящей заявки. Иллюстративные реализации настоящей заявки и их описания предназначены для описания настоящей заявки и не устанавливают ограничений для настоящей заявки. На прилагаемых чертежах:
[0012]
Фиг. 1A иллюстрирует архитектуру, на которой основан процесс консенсуса, согласно реализации настоящей заявки;
[0013]
Фиг. 1B иллюстрирует процесс консенсуса, согласно реализации настоящей заявки;
[0014]
Фиг. 2 является схематическим изображением, иллюстрирующим процесс консенсуса, который основывается на трехфазном протоколе, в любом представлении, согласно реализации настоящей заявки;
[0015]
Фиг. 3 является схематическим изображением, иллюстрирующим процесс исполнения экземпляра приложения переключения представления, согласно реализации настоящей заявки; и
[0016]
Фиг. 4 является схематическим структурным изображением, иллюстрирующим устройство консенсуса, согласно реализации настоящей заявки.
ОПИСАНИЕ РЕАЛИЗАЦИЙ ИЗОБРЕТЕНИЯ
[0017]
Чтобы более ясно обозначить цели, технические решения и преимущества настоящей заявки, далее наглядно и всесторонне описываются технические решения настоящей заявки со ссылкой на конкретные реализации и прилагаемые чертежи в составе настоящей заявки. Очевидно, что описанные реализации являются просто некоторыми, а не всеми реализациями настоящей заявки. Все другие реализации, полученные специалистом в данной области техники на основании реализаций настоящей заявки без творческих усилий, должны попадать в пределы объема правовой охраны настоящей заявки.
[0018]
Как описано выше, в процессе, при котором узлы в сети блокчейн выполняют консенсус с использованием алгоритма PBFT, когда основной узел блокчейна становится неисправным, резервный узел блокчейна инициирует переключение представления. Дополнительный консенсус необходим для переключения представления, инициированного резервным узлом блокчейна. Таким образом, переключение представления может быть завершено только после подтверждения или одобрения другими узлами блокчейна. Очевидно, что процесс дополнительного консенсуса увеличивает объем вычислений в сети блокчейн, а также увеличивает затраты времени на обработку.
[0019]
Соответственно, одна из реализаций настоящей заявки предоставляет способ консенсуса. Что касается основного узла блокчейна в любом представлении, после окончания консенсуса, основной узел блокчейна инициирует переключение представления, чтобы изменить основной узел блокчейна, и процесс дополнительного консенсуса не требуется. Для простоты описания основной узел блокчейна упоминается просто как основной узел, а резервный узел блокчейна упоминается просто как резервный узел. Помимо этого, "узлы", описанные ниже, следует понимать как узлы в сети блокчейн, которые участвуют в консенсусе.
[0020]
Стоит отметить, что в реализации настоящей заявки архитектура, используемая в способе консенсуса, продемонстрирована на Фиг. 1A. Как можно увидеть на Фиг. 1A, сеть блокчейн включает в себя множественные узлы, и множественные клиентские устройства могут выполнять рабочее взаимодействие с сетью блокчейн. Прикладной тип сети блокчейн может быть сетью блокчейн-консорциума или частной сетью блокчейн, и сеть блокчейн может предоставлять услугу для пользователя. Узел включает в себя, но не ограничивается этим, обслуживающий узел, компьютер, мобильное устройство, а также другие устройства, которые имеют функцию вычислительной обработки. Клиентское устройство может быть выполнено с возможностью запуска браузера, приложения и т.д., и клиентское устройство может быть оконечным пользовательским устройством, обслуживающим узлом или базой данных. Реализации не ограничиваются в данном документе.
[0021]
На основании архитектуры взаимосвязей, продемонстрированной на Фиг. 1A, процесс консенсуса, предоставляемый в реализации настоящей заявки, демонстрируется на Фиг. 1B. Процесс включает в себя следующие этапы.
[0022]
S101: основной узел отслеживает срабатывание условия переключения представления.
[0023]
В этой реализации настоящей заявки условие переключения представления может рассматриваться как условие, которое должно быть удовлетворено для выполнения переключения представления. Например, основной узел не транслирует запрос на обслуживание или не завершает консенсус в течение предварительно заданного периода времени.
[0024]
При возможном подходе в этой реализации настоящей заявки в основном узле может быть установлен счетчик времени для отслеживания срабатывания условия переключения представления. Например, счетчик времени может использоваться для установления времени действия трансляции запроса на обслуживание основным узлом, чтобы обнаружить, истек ли срок действия трансляции запроса на обслуживание основным узлом. Счетчик времени можно рассматривать как функцию согласования по времени или службу, которая запущена на основном узле, и конечно не создает ограничений для настоящей заявки.
[0025]
S102: основной узел выбирает узел-преемник, когда зафиксировано срабатывание условия переключения представления.
[0026]
Если срабатывает условие переключения представления, основной узел должен выполнить переключение представления. Стоит отметить, что в любом представлении есть только один основной узел, а другие узлы являются резервными узлами. Следовательно, переключение представления свидетельствует о переключении основного узла. Следовательно, на данном этапе основной узел выбирает узел-преемник в качестве следующего основного узла (узел-преемник в этой реализации настоящей заявки не является тем же узлом, что и основной узел в текущем представлении, то есть основной узел в текущем представлении не может использоваться в качестве узла-преемника).
[0027]
S103: основной узел переключает, с учетом узла-преемника, текущее представление на следующее представление, которое использует узел-преемник в качестве последующего основного узла, так что последующий основной узел инициирует консенсус в следующем представлении.
[0028]
После того, как узел-преемник определен, основной узел выполняет переключение представления. При существующем подходе, когда резервный узел инициирует консенсус по переключению представления, процесс, при котором резервный узел инициирует консенсус по переключению представления, можно рассматривать как процесс "импичмента" основного узла в представлении. В отличие от существующего подхода, в этой реализации настоящей заявки процесс, при котором основной узел независимо выполняет переключение представления, можно рассматривать как процесс "активного сложения полномочий", и основной узел выполняет переключение представления без инициирования консенсуса. Очевидно, что процесс дополнительного консенсуса также предотвращается. После того, как переключение представления выполнено, вновь назначенный основной узел отвечает за инициирование консенсуса в переключенном представлении, и можно понять, что вновь назначенный основной узел также выполняет процесс переключения предшествующего представления. Подробности опущены в данном документе для простоты.
[0029]
Согласно предшествующим этапам, в любом представлении основной узел активно отслеживает срабатывание условия переключения представления. Если условие переключения представления сработало, основной узел должен выполнить переключение представления. Кроме того, основной узел выбирает узел-преемник из других узлов в качестве основного узла в следующем представлении. Соответственно, основной узел выполняет переключение представления. В переключенном представлении узел-преемник используется в качестве нового основного узла для обработки услуги. Помимо этого, переключение представления все равно выполняется на основании предшествующего процесса. Очевидно, что переключение предшествующего представления инициируется основным узлом. Такой подход не позволяет резервному узлу инициировать консенсус по переключению представления. Другими словами, дополнительный консенсус может быть предотвращен. Таким образом, могут быть снижены дополнительный объем вычислений и затраты времени на обработку в сети блокчейн.
[0030]
На практике существуют разные условия переключения представления. Далее подробно описывается срабатывание условия переключения представления.
[0031]
Первый сценарий:
[0032]
На практике клиентское устройство отправляет запрос на обслуживание в основной узел. В нормальном состоянии, после приема запроса на обслуживание, основной узел транслирует запрос на обслуживание на резервные узлы в представлении, чтобы выполнить консенсус по запросу на обслуживание. Однако основной узел может быть неработоспособным узлом, и не транслирует запрос на обслуживание в течение длительного времени после приема запроса на обслуживание. Вследствие чего резервный узел инициирует консенсус по переключению представления. Следовательно, чтобы предотвратить консенсус по переключению представления, инициируемый резервным узлом из-за того, что основной узел не транслирует запрос на обслуживание в течение предварительно заданного периода времени, основной узел независимо выполняет согласование по времени, и активно отслеживает явление истечения срока действия основного узла.
[0033]
Другими словами, в этом сценарии, если условие переключения представления состоит в том, что основной узел не транслирует запрос на обслуживание в течение предварительно заданного периода времени, срабатывание условия переключения представления включает в себя следующее: прием основным узлом запроса на обслуживание, и неспособность инициирования консенсуса по запросу на обслуживание в течение предварительно заданного времени.
[0034]
В реальной работе согласование по времени может быть реализовано программой или службой, которая имеет функцию согласования по времени, в основном узле, например, ранее упомянутым счетчиком времени. Согласование по времени может начинаться с момента, когда основной узел принимает запрос на обслуживание. Предварительно заданное время может быть установлено равным 5 с, 10 с, и т.д., может определяться на основании практической потребности, и не создает ограничений для настоящей заявки.
[0035]
Второй сценарий:
[0036]
В отличие от предшествующего сценария, в этом сценарии после приема запроса на обслуживание основной узел транслирует запрос на обслуживание на резервные узлы в текущем представлении. Другими словами, основной узел инициировал консенсус по запросу на обслуживание до истечения предварительно заданного времени. Соответственно, узлы в представлении выполняют консенсус по запросу на обслуживание и генерируют результат консенсуса.
[0037]
Стоит отметить, что на этом этапе, на основе существующего механизма переключения представления, если результат консенсуса состоит в том, что консенсус терпит неудачу, резервный узел инициирует консенсус по переключению представления. Очевидно, то, что консенсус терпит неудачу, можно рассматривать как условие переключения представления. Другими словами, в этом сценарии, когда консенсус терпит неудачу, основной узел активно выполняет переключение представления, чтобы не позволить резервному узлу инициировать дополнительный консенсус по переключению представления.
[0038]
Помимо этого, на основе существующего механизма переключения представления, если результат консенсуса состоит в том, что консенсус достигнут, основной узел продолжает инициировать консенсус по другому запросу на обслуживание. Однако основной узел может быть неисправным в последующем запущенном процессе. После того, как основной узел становится неисправным, резервный узел все равно инициирует консенсус по переключению представления. Следовательно, чтобы предотвратить этот случай, в этой реализации настоящей заявки после достижения консенсуса основной узел все равно выполняет переключение представления.
[0039]
Можно заметить, что в этом сценарии, независимо от того, состоит ли результат консенсуса в том, что консенсус достигнут или что консенсус терпит неудачу, основной узел выполняет переключение представления после определения результата консенсуса. Другими словами, срабатывание условия переключения представления включает в себя следующее: прием основным узлом запроса на обслуживание, инициирование консенсуса по запросу на обслуживание, и определение результата консенсуса.
[0040]
Таким образом, в этом сценарии основной узел должен определить, что консенсус достигнут или что консенсус терпит неудачу. Далее подробно описывается, как основной узел определяет, что консенсус достигнут или что консенсус терпит неудачу.
[0041]
Во-первых, стоит отметить, что процесс консенсуса на основании запроса на обслуживание, по существу, является процессом консенсуса, основанным на трехфазном протоколе. Эти три фазы включают в себя фазу предварительной подготовки, фазу подготовки и фазу осуществления и образуют полный процесс консенсуса. В каждой фазе узлы (включающие в себя как основной узел, так и резервные узлы) отправляют друг другу сообщения консенсуса. Таким образом, для каждого узла в представлении вхождение в другие фазы должно быть подтверждено или одобрено другими узлами. Следовательно, каждую из этих трех фаз можно рассматривать как процесс консенсуса. Обычно, когда все узлы входят в фазу осуществления, можно считать, что процесс консенсуса завершен.
[0042]
Фиг. 2 представляет собой процесс консенсуса узлов на основе трехфазного протокола в представлении. На Фиг. 2 клиентское устройство инициирует запрос на обслуживание для узла с номером 0 (тиражируемая копия 0, то есть основной узел), и основной узел транслирует запрос на обслуживание на резервные узлы (тиражируемая копия 1, тиражируемая копия 2 и тиражируемая копия 3) и начинает выполнять три фазы консенсуса. Узлы, которые достигают консенсуса, обрабатывают запрос на обслуживание и возвращают результат обработки на клиентское устройство.
[0043]
Соответственно, выполняются следующие операции.
[0044]
1. Основной узел определяет, что консенсус терпит неудачу.
[0045]
В этой реализации настоящей заявки то, что консенсус терпит неудачу, представляется как истечение срока процесса консенсуса (упоминается ниже просто как истечение срока консенсуса, при этом истечение срока консенсуса означает, что время, затраченное на процесс консенсуса, превышает предварительно заданную продолжительность консенсуса, и время, затраченное на процесс консенсуса, может отсчитываться с момента, когда основной узел инициирует консенсус). Причины следующие.
[0046]
В одном случае основной узел является неисправным узлом (если узел неисправен, можно считать, что данные, используемые для выполнения консенсуса в узле, повреждены, или что логика консенсуса в узле нарушена). То есть запросы на обслуживание, отправленные основным узлом на резервные узлы, могут включать в себя неправильные данные (например, неправильный порядковый номер запроса на обслуживание). Обеспеченные механизмом BPFT, резервные узлы проверяют запросы на обслуживание, транслируемые основным узлом. Если неправильные данные включены в состав запроса на обслуживание, нормальный резервный узел не подтверждает или не одобряет запрос на обслуживание. В этом случае основной узел может повторить процесс отправки запросов на обслуживание, и, как следствие, срок консенсуса истекает.
[0047]
В качестве альтернативы, в другом случае основной узел также является неисправным узлом. В этом случае основной узел может отправить неправильное сообщение уведомления, указывающее фазу консенсуса, на другие резервные узлы, то есть основной узел "неправильно" считает, что было вхождение в некоторую фазу. В этом случае резервные узлы выполняют консенсус по сообщению уведомления основного узла, чтобы удостоверить подлинность сообщения уведомления основного узла. Аналогично, нормальный резервный узел все равно не подтверждает или не одобряет сообщение уведомления, отправленное основным узлом. В этом случае основной узел может повторить процесс отправки неправильного сообщения уведомления, и, как следствие, срок консенсуса истекает.
[0048]
Конечно, предшествующий информационный материал представляет собой только два возможных случая, которые могут на практике привести к истечению срока консенсуса, и не должен рассматриваться как ограничения для настоящей заявки. Очевидно, из предшествующего информационного материала можно заметить, что, как только срок консенсуса истекает, консенсус терпит неудачу.
[0049]
Следовательно, в этой реализации настоящей заявки, основной узел может обнаруживать, терпит ли консенсус неудачу, отслеживая общее время, затрачиваемое в ходе процесса консенсуса. Как только срок процесса консенсуса истекает, основной узел немедленно инициирует операцию переключения представления, и процесс дополнительного консенсуса по переключению представления, инициируемого резервным узлом, может быть предотвращен. Таким образом, в этой реализации настоящей заявки, процесс, при котором основной узел определяет, что консенсус терпит неудачу, может быть следующим: Основной узел отслеживает время, затрачиваемое на процесс консенсуса, с момента, когда инициирован консенсус по запросу на обслуживание среди резервных узлов в представлении, и определяет, что консенсус терпит неудачу, если обнаруживается, что время, затрачиваемое консенсусом, превышает предварительно заданное время.
[0050]
2. Основной узел определяет, что консенсус достигнут.
[0051]
Из предшествующего трехфазного протокола можно заметить, что, если узел входит в фазу осуществления, узел может обработать запрос на обслуживание и возвратить сгенерированный результат обработки на клиентское устройство. Помимо этого, чтобы войти в фазу, каждый узел должен быть подтвержден или одобрен другими узлами в представлении. Следовательно, если узел входит в фазу осуществления, это свидетельствует о том, что узел подтвержден или одобрен другими узлами. Можно заметить, что, если основной узел входит в фазу осуществления, это свидетельствует о том, что консенсус был достигнут. Это связано с тем, что в механизме PBFT, если узел входит в фазу, это свидетельствует о том, что статус узла подтвержден или одобрен большинством узлов в представлении. Соответственно, это свидетельствует о том, что большинство узлов являются правильными узлами.
[0052]
Следовательно, при таком подходе процесс, при котором основной узел определяет, что консенсус достигнут, может быть следующим: основной узел отслеживает соответствующую фазу основного узла, и если основной узел обнаруживает, что основной узел входит в фазу осуществления, а предварительно заданная продолжительность консенсуса не истекает, определяет, что консенсус завершен. То есть когда удостоверяется, что основной узел входит в фазу осуществления, основной узел должен дополнительно убедиться, что время, затраченное основным узлом на вхождение в фазу осуществления, не превысило предварительно заданное время.
[0053]
При другом подходе в этой реализации настоящей заявки, основной узел может не отправлять сообщение уведомления на другие узлы (то есть основной узел может быть неисправным узлом). Тем не менее, основной узел все равно может получать сообщение уведомления, отправленное резервным узлом. В этом случае, если предварительно заданное количество узлов входит в фазу осуществления, можно считать, что консенсус завершен.
[0054]
На практике после того, как узел входит в фазу осуществления, узел обычно отправляет сообщения уведомления на другие узлы в представлении, при этом сообщение уведомления может представлять собой, например, <commit, v, n, D(m)>, где "commit" указывает, что узел вошел в фазу осуществления, "v" указывает номер представления, "n" указывает порядковый номер запроса на обслуживание, и "D(m)" указывает подпись, выполненную в запросе на обслуживание узлом, который отправляет сообщение уведомления.
[0055]
Основной узел может собирать статистические данные о сообщениях уведомления, которые принимаются основным узлом и которые указывают, что совершен вход в фазу осуществления. Если количество принятых сообщений уведомления больше, чем 2f+1, это свидетельствует о том, что достаточное количество узлов достигает консенсуса. А значит, это свидетельствует о том, что консенсус завершен. f является максимальным количеством допустимых неправильных узлов в механизме PBFT. В этом случае основной узел может определить, что консенсус завершен.
[0056]
Следовательно, процесс, при котором основной узел определяет, что консенсус достигнут, также может быть следующим: основной узел отслеживает сообщение уведомления, которое принимается основным узлом и которое указывает, что резервный узел входит в фазу осуществления, и если основной узел обнаруживает, что количество принятых сообщений уведомления превышает предварительно заданное количество, а предварительно заданная продолжительность консенсуса не истекает, определяет, что консенсус завершен.
[0057]
После того, как консенсус завершен, основной узел инициирует переключение представления, чтобы изменить основной узел и войти в новое представление.
[0058]
Далее описывается процесс переключения представления в этой реализации настоящей заявки.
[0059]
В механизме PBFT каждое представление имеет соответствующий номер. Например, v в предыдущем примере представляет номер текущего представления. Соответственно, каждый узел в сети блокчейн имеет соответствующий номер. Если в общей сложности в сети блокчейн имеется R узлов, номера узлов составляют от 0 до R-1, например, тиражируемая копия (реплика) 0, тиражируемая копия 1, ..., и тиражируемая копия R-1. Существует взаимосвязь между номером узла и номером представления. Если тиражируемая копия p используется для представления узла с номером p, номер узла и номер представления удовлетворяют следующему уравнению: p=v mod R, где v является целым числом от 0 до положительной бесконечности.
[0060]
Эта взаимосвязь указывает, что номер p узла получается по результатам взятия остатка от деления номера v представления на количество R узлов, входящих в состав сети блокчейн.
[0061]
Другими словами, поскольку v находится в диапазоне от 0 до R-1, гарантируется, что идентичность основного узла последовательно передается разным узлам. Например, если основным узлом текущего представления является тиражируемая копия 0 (что соответствует номеру 0 представления), основным узлом в следующем представлении (с номером 1) является тиражируемая копия 1. Таким образом, проходятся все узлы.
[0062]
Следовательно можно заметить, что в этой реализации настоящей заявки процесс переключения представления включает в себя следующее: определение, основным узлом, номера основного узла; определение, на основании номера основного узла, того узла, номер которого расположен после номера основного узла; генерирование сообщения уведомления о переключении представления, на основе определенного узла; и отправка сообщения о переключении представления на каждый резервный узел для выполнения переключения представления, так что определенный узел становится основным узлом в следующем представлении.
[0063]
Далее для описания используется конкретный экземпляр приложения. Как показано на Фиг. 3, этот экземпляр включает в себя следующие этапы:
[0064]
S301: Основной узел p в представлении с номером v принимает запрос на обслуживание, отправленный клиентским устройством, и выполняет согласование по времени.
[0065]
S302: Когда истекает предварительно заданное время, определяется, инициировать ли консенсус по запросу на обслуживание для каждого резервного узла в представлении; если да, то выполняется этап S303; а в противном случае выполняется этап S305.
[0066]
S303: Получается результат консенсуса.
[0067]
S304: Определяется, достигнут ли консенсус, и выполняется этап S305.
[0068]
S305: Переключается представление v на представление v+1, и определяется узел с номером p+1 в качестве основного узла в представлении v+1.
[0069]
Переключение предшествующего представления инициируется основным узлом. Такой подход не позволяет резервному узлу инициировать консенсус по переключению представления.
[0070]
Вышеописанное представляет собой способ консенсуса, предоставляемый в реализации настоящей заявки. Основываясь на той же идее, реализации настоящей заявки дополнительно предоставляют устройство консенсуса. Как показано на Фиг. 4, для любого представления, устройство консенсуса включает в себя следующее: контролирующий модуль 401, выполненный с возможностью отслеживания срабатывания условия переключения представления; модуль 402 определения узла, выполненный с возможностью выбора узла-преемника, когда контролирующий модуль фиксирует срабатывание условия переключения представления; и модуль 403 переключения представления, выполненный с возможностью переключения, с учетом узла-преемника, текущего представления на следующее представление, которое использует узел-преемник в качестве последующего основного узла блокчейна, так что последующий основной узел блокчейна инициирует консенсус в следующем представлении.
[0071]
В ответ на определение того, что запрос на обслуживание принят, а консенсус по запросу на обслуживание не инициирован в течение предварительно заданного времени, контролирующий модуль 401 определяет, что зафиксировано срабатывание условия переключения представления.
[0072]
В ответ на определение того, что запрос на обслуживание принят, консенсус по запросу на обслуживание инициирован, и результат консенсуса определен, контролирующий модуль 401 определяет, что зафиксировано срабатывание условия переключения представления.
[0073]
Модуль 402 определения узла определяет следующее представление по текущему представлению и определяет узел-преемник, который соответствует следующему представлению.
[0074]
Модуль 403 переключения представления переключает текущее представление на определенное следующее представление, причем узел-преемник используется в качестве основного узла в следующем представлении.
[0075]
Узел в любом представлении включает в себя узел в сети блокчейн-консорциума или частной сети блокчейн.
[0076]
В 1990-х годах можно было четко различить, является ли техническое усовершенствование усовершенствованием аппаратного обеспечения (например, усовершенствование в отношении схемной структуры, такое как диод, транзистор или коммутатор) или усовершенствованием программного обеспечения (усовершенствование процедуры способа). Однако, по мере развития технологий, современные усовершенствования в отношении многих процедур способов могут рассматриваться как непосредственные усовершенствования схемных структур аппаратного обеспечения. Проектировщик обычно программирует усовершенствованную процедуру способа в аппаратную схему, чтобы получить соответствующую схемную структуру аппаратного обеспечения. Следовательно, процедура способа может быть усовершенствована путем использования самостоятельного модуля аппаратного обеспечения. Например, программируемое логическое устройство (ПЛУ) (например, программируемая пользователем вентильная матрица (ППВМ)) является такой интегральной схемой, и логическая функция ПЛУ определяется пользователем посредством программирования устройства. Проектировщик выполняет программирование, чтобы "интегрировать" цифровую систему в ПЛУ, не обращаясь к производителю кристаллов по поводу проектирования и изготовления кристалла интегральной схемы для конкретного приложения. Помимо этого в настоящее время, вместо ручного производства кристалла интегральной схемы, такое программирование в основном реализуется с использованием программного обеспечения "логический компилятор". Программное обеспечение логический компилятор подобно программному компилятору, используемому для разработки и написания программы. Исходный код должен быть написан на конкретном языке программирования для компиляции. Этот язык называется языком описания аппаратных средств (HDL - hardware description language). Существует много HDL, таких как Усовершенствованный язык булевых выражений (ABEL - Advanced Boolean Expression Language), Язык описания аппаратных средств фирмы Altera (AHDL - Altera Hardware Description Language), Confluence, Язык программирования Корнельского университета (CUPL - Cornell University Programming Language), HDCal, Язык описания аппаратных средств Java (JHDL - Java Hardware Description Language), Lava, Lola, MyHDL, PALASM и Язык описания аппаратных средств (RHDL - Ruby Hardware Description Language). Наиболее часто используются Язык описания аппаратных средств для сверхбыстродействующих интегральных схем (VHDL - very-high-speed integrated circuit hardware description language) и Verilog. Специалист в данной области техники также должен понимать, что аппаратная схема, которая реализует логическую процедуру способа, может быть легко получена, если процедуру способа логически запрограммировать с использованием некоторых описанных языков описания аппаратных средств, и запрограммировать в интегральную схему.
[0077]
Управляющее устройство может быть реализовано с использованием любого подходящего способа. Например, управляющим устройством может быть микропроцессор или обрабатывающее устройство, либо машиночитаемый носитель, на котором хранится машиночитаемый программный код (например, программное обеспечение или встроенное программное обеспечение), который может быть исполнен микропроцессором или обрабатывающим устройством, логическим вентилем, коммутатором, специализированной интегральной схемой (СИС), программируемым логическим управляющим устройством или встроенным микропроцессором. Примеры управляющего устройства включают в себя, но не ограничиваются этим, следующие микропроцессоры: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20 и Silicon Labs C8051F320. Устройство управления памятью также может быть реализовано как часть логики управления памятью. Специалисту в данной области техники также известно, что в дополнение к реализации управляющего устройства с использованием машиночитаемого программного кода на этапах способа может быть выполнено логическое программирование, чтобы позволить управляющему устройству реализовать ту же функцию в формах логического вентиля, коммутатора, специализированной интегральной схемы, программируемого логического управляющего устройства и встроенного микропроцессорного управляющего устройства. Следовательно, управляющее устройство может рассматриваться как аппаратный компонент, а устройство, выполненное с возможностью реализации различных функций в управляющем устройстве, также может рассматриваться как структура в аппаратном компоненте. Либо устройство, выполненное с возможностью реализации различных функций, может даже рассматриваться и как реализующий способ программный модуль, и как структура в аппаратном компоненте.
[0078]
Система, устройство, модуль или сегмент, проиллюстрированные в предшествующих реализациях, могут быть реализованы с использованием компьютерного кристалла или объекта, или могут быть реализованы с использованием продукта, имеющего некоторую функцию. Типичным устройством реализации является компьютер. Компьютер может быть, например, персональным компьютером, дорожным компьютером, сотовым телефоном, телефоном с камерой, интеллектуальным телефоном, карманным персональным компьютером, мультимедийным проигрывателем, навигационным устройством, устройством для работы с электронной почтой, игровой приставкой, планшетным компьютером или носимым устройством, либо комбинацией любых из этих устройств.
[0079]
Для простоты описания вышеупомянутое устройство описывается с разделением функций на различные сегменты. Конечно, при реализации настоящей заявки функция каждого сегмента может быть реализована в одной или более частях программного и/или аппаратного обеспечения.
[0080]
Специалист в данной области техники должен понимать, что реализация настоящего раскрытия изобретения может быть предоставлена в виде способа, системы или компьютерного программного продукта. Следовательно, настоящее раскрытие изобретения может использовать форму исключительно аппаратных реализаций, исключительно программных реализаций или реализаций с комбинацией программного и аппаратного обеспечения. Более того, настоящее раскрытие изобретения может использовать форму компьютерного программного продукта, который реализован на одном или нескольких пригодных для использования с компьютером носителях данных (в том числе, но не ограничиваясь этим, дисковом запоминающем устройстве, постоянном запоминающем устройстве на компакт-дисках, оптическом запоминающем устройстве, и т.д.), которые включают в себя пригодный для использования с компьютером программный код.
[0081]
Настоящее раскрытие изобретения описывается со ссылкой на блок-схемы последовательностей операций и/или функциональные схемы способа, устройства (системы) и компьютерного программного продукта, на основании реализаций настоящего раскрытия изобретения. Стоит отметить, что компьютерные программные инструкции могут использоваться для реализации каждого процесса и/или каждого блока в блок-схемах последовательностей операций и/или функциональных схемах, а также комбинации процесса и/или блока в блок-схемах последовательностей операций и/или функциональных схемах. Эти компьютерные программные инструкции могут быть предусмотрены для компьютера общего назначения, специализированного компьютера, встроенного обрабатывающего устройства или обрабатывающего устройства другого программируемого устройства обработки данных, чтобы генерировать машину, так что инструкции, исполняемые компьютером или обрабатывающим устройством другого программируемого устройства обработки данных, генерируют устройство для реализации конкретной функции в одном или нескольких процессах в блок-схемах последовательностей операций и/или в одном или нескольких блоках в функциональных схемах.
[0082]
Эти компьютерные программные инструкции могут храниться в машиночитаемом запоминающем устройстве, которое может предписывать компьютеру или другому программируемому устройству обработки данных работать определенным образом, так что инструкции, хранящиеся в машиночитаемом запоминающем устройстве, генерируют рабочий продукт, который включает в себя содержащее инструкции устройство. Это содержащее инструкции устройство реализует конкретную функцию в одном или нескольких процессах в блок-схемах последовательностей операций и/или в одном или нескольких блоках в функциональных схемах.
[0083]
Эти компьютерные программные инструкции могут быть загружены на компьютер или другое программируемое устройство обработки данных, так что на компьютере или другом программируемом устройстве выполняется ряд операций и этапов, тем самым генерируя реализуемую с помощью компьютера обработку. Следовательно, инструкции, исполняемые на компьютере или другом программируемом устройстве, обеспечивают этапы для реализации конкретной функции в одном или нескольких процессах в блок-схемах последовательностей операций и/или в одном или нескольких блоках в функциональных схемах.
[0084]
В типичной конфигурации вычислительное устройство включает в себя одно или несколько обрабатывающих устройств (ЦП), один или несколько интерфейсов ввода/вывода, один или несколько сетевых интерфейсов и одно или несколько запоминающих устройств.
[0085]
Запоминающее устройство может включать в себя непостоянное запоминающее устройство, оперативное запоминающее устройство (ОЗУ), энергонезависимое запоминающее устройство и/или другую форму, которая характерна для машиночитаемого носителя, например, постоянное запоминающее устройство (ПЗУ) или электрически перепрограммируемое постоянное запоминающее устройство (ЭППЗУ). Запоминающее устройство является примером машиночитаемого носителя.
[0086]
Машиночитаемый носитель включает в себя постоянные, непостоянные, съемные и несъемные носители, которые могут хранить информацию с использованием любого способа или технологии. Информация может представлять собой машиночитаемую инструкцию, структуру данных, программный модуль или другие данные. Примеры компьютерного носителя данных включают в себя, но не ограничиваются этим, параметрическое оперативное запоминающее устройство (параметрическое ОЗУ), статическое оперативное запоминающее устройство (статическое ОЗУ), динамическое оперативное запоминающее устройство (динамическое ОЗУ), другой тип оперативного запоминающего устройства (ОЗУ), постоянное запоминающее устройство (ПЗУ), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ), электрически перепрограммируемое постоянное запоминающее устройство или иную технологию запоминающего устройства, постоянное запоминающее устройство на компакт-дисках (CD-ROM), цифровой универсальный диск (DVD) или другое оптическое хранилище, кассетную магнитную ленту, хранилище на магнитной ленте/ магнитных дисках или другое магнитное устройство хранения данных. Компьютерный носитель данных может использоваться для хранения информации, доступной для вычислительного устройства. Исходя из определения в настоящем описании изобретения, машиночитаемый носитель не включает в себя промежуточные машиночитаемые носители (промежуточные носители), такие как модулированный сигнал данных и несущая.
[0087]
Стоит дополнительно отметить, что термины "включать в себя", "содержать" или любые другие их варианты предназначены для охвата неисключительного включения в состав, поэтому процесс, способ, продукт или устройство, которое включает в себя перечень элементов, включает в себя не только эти элементы, но также включает в себя и другие элементы, которые явно не перечислены, или дополнительно включает в себя элементы, неотъемлемые для такого процесса, способа, продукта или устройства. Без иных ограничивающих условий элемент, которому предшествует "включает в себя...", не исключает наличия дополнительных идентичных элементов в процессе, способе, продукте или устройстве, которое включает в себя этот элемент.
[0088]
Специалист в данной области техники должен понимать, что реализация настоящей заявки может быть предоставлена в виде способа, системы или компьютерного программного продукта. Следовательно, настоящая заявка может использовать форму исключительно аппаратных реализаций, исключительно программных реализаций или реализаций с комбинацией программного и аппаратного обеспечения. Более того, настоящая заявка может использовать форму компьютерного программного продукта, который реализован на одном или нескольких пригодных для использования с компьютером носителях данных (в том числе, но не ограничиваясь этим, дисковом запоминающем устройстве, постоянном запоминающем устройстве на компакт-дисках, оптическом запоминающем устройстве, и т.д.), которые включают в себя пригодный для использования с компьютером программный код.
[0089]
Настоящая заявка может быть описана в общем контексте исполняемых компьютером инструкций, исполняемых компьютером, например, программного модуля. Как правило, программный модуль включает в себя подпрограмму, программу, объект, компонент, структуру данных и т.д., исполняющую конкретную задачу или реализующую конкретный абстрактный тип данных. Настоящая заявка также может быть воплощена на практике в распределенных вычислительных средах. В распределенных вычислительных средах задачи выполняются удаленными устройствами обработки, соединенными через сеть связи. В распределенной вычислительной среде программный модуль может быть расположен как на локальных, так и на удаленных компьютерных носителях данных, в том числе устройствах хранения данных.
[0090]
Реализации в настоящем описании изобретения описываются постепенно. Для одинаковых или подобных частей реализаций могут быть даны ссылки на эти реализации. Каждая реализация уделяет внимание отличию от других реализаций. В частности, реализация системы в основном аналогична реализации способа, и поэтому описана кратко. Для связанных частей могут быть даны ссылки на связанные описания в реализации способа.
[0091]
Предшествующие реализации являются реализациями настоящей заявки и не предназначены для ограничения настоящей заявки. Специалист в данной области техники может внести различные модификации и изменения в настоящую заявку. Любая модификация, эквивалентная замена или усовершенствование, сделанные без отклонения от сущности и принципа настоящей заявки, должны попадать в объем формулы изобретения в настоящей заявке.