0Pricing
Cryptology Academy · Урок

Протоколы BFT: PBFT и Tendermint

Изучите консенсус с устойчивостью к византийским отказам и узнайте, как криптографическое голосование Tendermint обеспечивает финальность.

«Протоколы BFT: PBFT и Tendermint» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Истоки отказоустойчивости к византийским сбоям

Проблема византийских генералов, сформулированная Лэмпортом, Шостаком и Пизом в 1982 году, ставит вопрос: может ли распределённая система достичь консенсуса, если некоторые участники отправляют противоречивые сообщения? Название связано с византийскими генералами, которые должны согласовать атаку, но среди которых могут быть предатели, отдающие противоречивые приказы. Система является отказоустойчивой к византийским сбоям (BFT), если достигает корректного консенсуса, несмотря на наличие до f вредоносных узлов среди 3f+1 узлов. BFT считается эталоном для консенсуса в блокчейнах, которым требуется безопасность в условиях действий злоумышленников.

PBFT: практическая отказоустойчивость к византийским сбоям

PBFT, разработанный Кастро и Лисковым в 1999 году, стал первым практическим протоколом BFT и показал, что BFT может эффективно работать в реальных системах. PBFT работает в представлениях, или раундах, каждое из которых имеет назначенного первичного узла, то есть лидера. В обычном режиме используются три фазы: предварительная подготовка — первичный узел рассылает запрос клиента и порядковый номер; подготовка — реплики рассылают согласие с этим порядковым номером; фиксация — реплики рассылают подтверждение фиксации. Запрос выполняется после того, как реплика собирает 2f+1 совпадающих сообщений о фиксации. PBFT обеспечивает безопасность и живучесть, если менее 1/3 реплик являются византийскими.

Сложность обмена сообщениями в PBFT

Главное ограничение PBFT — сложность обмена сообщениями O(n^2) для каждого запроса: каждая из n реплик отправляет сообщения всем остальным на фазах подготовки и фиксации. Для n=100 реплик каждый запрос порождает примерно 10 000 сообщений. Поэтому PBFT непрактичен для больших наборов валидаторов. Сообщество исследователей BFT два десятилетия работало над улучшением этого показателя: BFT-SMART уменьшил константные множители, HotStuff достиг линейной сложности обмена сообщениями благодаря модели ретрансляции лидером, а Tendermint адаптировал идеи PBFT для использования в публичных блокчейнах.

Смена представления в PBFT

Когда первичный узел PBFT считается неисправным из-за тайм-аута, реплики запускают смену представления. Каждая реплика рассылает сообщение о смене представления, содержащее её состояние — подготовленные значения из старого представления. Новый первичный узел собирает 2f+1 таких сообщений, формирует сообщение о новом представлении, подтверждающее согласованность перехода состояния с ранее зафиксированными значениями, и рассылает его. Смена представления требует большого числа сообщений — O(n^3) — и была практическим узким местом. Такие оптимизации, как сертификат смены представления в PBFT и конвейерная архитектура HotStuff, решают эту проблему.

Tendermint: PBFT для блокчейнов

Tendermint, созданный в 2014 году Квоном и запущенный в промышленной эксплуатации в Cosmos в 2019 году, адаптирует PBFT для публичных блокчейнов. В Tendermint для каждого блока предусмотрены три фазы: предложение — лидер рассылает предложенный блок; предварительное голосование — валидаторы голосуют за предложение; предварительная фиксация — валидаторы голосуют за фиксацию после получения двух третей предварительных голосов. Блок считается зафиксированным, когда валидатор собирает две трети голосов за предварительную фиксацию, то есть сертификат кворума. Валидаторы по очереди предлагают блоки в циклическом порядке с учётом доли. Если раунд завершается по тайм-ауту без фиксации, валидаторы переходят к следующему раунду с пустым голосом.

Безопасность и живучесть Tendermint

Tendermint обеспечивает строгую безопасность: зафиксированный блок является окончательным и не может быть отменён, пока менее трети доли не контролируется византийскими участниками. Это синхронная финализация — после фиксации разветвлений нет. Для живучести требуется частично синхронная сеть: протокол продолжает работу, как только задержки сообщений становятся ограниченными, но постоянная синхронность не нужна. Компромисс между живучестью и безопасностью фундаментален: Tendermint жертвует живучестью и может остановиться при разделении сети, чтобы гарантировать безопасность, тогда как такие цепочки, как Bitcoin, жертвуют безопасностью, допуская временные разветвления ради живучести.

Блокировка голосов в Tendermint

Критически важный механизм Tendermint — блокировка голосов. Когда валидатор отправляет голос за предварительную фиксацию блока в раунде r, он блокирует свой голос на этом блоке. В последующих раундах заблокированный валидатор может проголосовать на этапе предварительного голосования только за заблокированный блок либо отправить пустой голос, если получает доказательство того, что блок не был зафиксирован. Это предотвращает противоречивые фиксации в разных раундах. Валидатор может снять блокировку только после получения в более позднем раунде кворума из двух третей предварительных голосов за другой блок, что доказывает: исходный блок не был зафиксирован.

IBC Cosmos и лёгкие клиенты Tendermint

Протокол межблочного взаимодействия Cosmos (IBC) опирается на мгновенную финализацию Tendermint при переводах между цепочками. Лёгкий клиент Tendermint отслеживает набор валидаторов и последнюю фиксацию — заголовок блока вместе с двумя третями подписей за предварительную фиксацию. Чтобы проверить пакет из цепочки A, модуль IBC цепочки B проверяет сертификат кворума: две трети валидаторов цепочки A должны подписать соответствующий заголовок блока. Поэтому безопасность IBC зависит от гарантии BFT Tendermint: перевод между цепочками становится окончательным сразу после фиксации исходного блока.

HotStuff: линейный BFT

HotStuff, предложенный Yin и другими в 2018 году и ставший основой для LibraBFT и DiemBFT компании Facebook, а теперь используемый в Aptos и Sui, достигает сложности обмена сообщениями O(n) за раунд консенсуса благодаря звездообразной топологии: все валидаторы отправляют голоса лидеру, лидер объединяет их в пороговую подпись — QC, сертификат кворума — и рассылает QC. HotStuff использует трёхфазную цепочную архитектуру, в которой доказательства безопасности охватывают три последовательных QC, что позволяет применять конвейерную обработку. Линейная сложность делает HotStuff практичным для 100–300 валидаторов, как в сетях Aptos и Sui.

BFT в корпоративных блокчейнах

Корпоративные блокчейны, включая Hyperledger Fabric, Besu и Quorum, используют консенсус BFT в сетях с разрешённым доступом, где личности валидаторов известны. Служба упорядочивания Hyperledger Fabric на основе Raft обеспечивает отказоустойчивость к сбоям, но не к византийским действиям, в доверенных консорциумах. Запланированный этап развития Fabric предусматривает SmartBFT — реализацию в виде библиотеки. R3 Corda использует кластер нотариусов с BFT-SMART для предотвращения двойной траты. Выбор между CFT и BFT отражает предположения о доверии: BFT необходим, когда валидаторы могут действовать враждебно, а CFT достаточно, когда они лишь ненадёжны.

Сценарии атак на BFT

Чтобы понять BFT, необходимо знать, от каких атак он защищает систему, а от каких — нет. BFT обрабатывает случаи, когда валидаторы отправляют разным узлам противоречивые сообщения, а также случаи, когда валидаторы выходят из строя или замолкают. Он не защищает от атак Sybil: злоумышленник, который получает контроль над третью валидаторов, создавая поддельные личности, может нарушить безопасность. Поэтому публичные цепочки BFT используют взвешивание по доле в стейкинге: приобретение трети доли требует реальных денег и обеспечивает защиту от Sybil-атак. BFT также предполагает, что сообщения в конечном счёте будут доставлены, то есть работает в условиях частичной синхронности: разделение сети, длящееся дольше тайм-аута живучести, может остановить цепочку.

Викторина о пороге отказоустойчивости BFT

Какова максимальная доля византийских валидаторов в стандартном протоколе BFT, при которой сохраняется безопасность?

Повторение материала о протоколах BFT

Протоколы BFT обеспечивают консенсус при наличии до трети вредоносных валидаторов. PBFT, созданный в 1999 году, доказал практичность BFT, но имеет сложность обмена сообщениями O(n^2). Tendermint адаптирует PBFT для блокчейнов, обеспечивая мгновенную финализацию и блокировку голосов. HotStuff достигает сложности O(n) с помощью сертификатов кворума QC на основе пороговых подписей и используется в Aptos и Sui. Cosmos IBC использует мгновенную финализацию Tendermint для проверенных переводов между цепочками. Корпоративные блокчейны используют BFT-SMART или Raft в зависимости от того, ожидаются ли византийские действия или только сбои.

Часто задаваемые вопросы

Урок «Протоколы BFT: PBFT и Tendermint» бесплатный?

Да — полный текст урока «Протоколы BFT: PBFT и Tendermint» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «Протоколы BFT: PBFT и Tendermint»?

Изучите консенсус с устойчивостью к византийским отказам и узнайте, как криптографическое голосование Tendermint обеспечивает финальность. Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Протоколы BFT: PBFT и Tendermint»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Криптографические механизмы Proof-of-Stake
  2. Протоколы BFT: PBFT и Tendermint
  3. Проверяемые случайные функции в консенсусе
  4. Подписи BLS и схемы агрегирования подписей
← Назад к Cryptology Academy