Византийская отказоустойчивость


«Византийская отказоустойчивость» (англ. Byzantine fault tolerance) — свойство системы, способной противостоять классу отказов, возникающих из-за «проблем византийских генералов». Обладая «византийской отказоустойчивостью», система может продолжать работать, даже если некоторые из узлов не функционируют или действуют злонамеренно.

Участникам криптовалютной сети необходимо регулярно согласовывать текущее состояние блокчейна: это то, что мы называем достижением консенсуса. Но что если некоторые из узлов будут действовать нечестно? Это фундаментальный вопрос о так называемой «проблеме византийских генералов», которая породила концепцию «византийской толерантности» (BFT).

История

 
«Проблема византийских генералов»: варианты частных случаев

«Проблема византийских генералов» была придумана в 1982 году как логическая дилемма, которая иллюстрирует, как у группы из более чем двух человек, находящихся на большом расстоянии друг от друга, могут возникать проблемы с коммуникацией при попытке согласиться на следующий шаг.

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

«Задача византийских генералов» (исходная формулировка)

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

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

Ночью каждый из генералов получает от главнокомандующего приказ, как стоит поступить в 10 часов утра (время одинаковое для всех и известно заранее). Варианты приказа — «атаковать противника» или «отступать».

Возможные исходы сражения:

  1. Если все верные генералы атакуют, Византия уничтожит противника (благоприятный исход).
  2. Если все верные генералы отступят, Византия сохранит свою армию (промежуточный исход).
  3. Если некоторые верные генералы атакуют, а некоторые — отступят, противник со временем по частям уничтожит всю армию Византии (неблагоприятный исход).

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

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

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

Применение в блокчейне

В контексте блокчейна «генералы» представляют собой сетевые узлы, которым необходимо достичь консенсуса относительно текущего состояния системы. Другими словами — большинство участников в распределённой сети должны согласиться и выполнить одно и то же действие, чтобы избежать полного отказа. Поэтому единственным способом достижения консенсуса в этих типах распределённой системы является наличие (по крайней мере, ⅔ или более) надёжных и честных сетевых узлов. Это означает, что если бо́льшая часть сети решает действовать злонамеренно, то система подвержена ошибке (например, атака 51 %).

Выводы

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

«Проблема византийских генералов» — это дилемма, которая породила системы BPT, и теперь они широко применяются в различных системах. Помимо индустрии блокчейн, это авиационная и космическая сферы, а также ядерная энергетика.

«Византийскую отказоустойчивость» изучают многие криптовалютные стартапы — алгоритмы модернизируют и успешно интегрируют в собственные распределенные системы.

Decimal, Hyperledger, Cosmos Network, Minter, Zilliqa — все эти и не только проекты используют «византийскую отказоустойчивость» в качестве основного компонента своей инфраструктуры.

Заключение

Эффективная коммуникация узлов сети и хороший механизм консенсуса имеют жизненно важное значение для любой блокчейн-экосистемы. Существующим алгоритмам консенсуса ещё предстоит преодолеть несколько барьеров (например, масштабируемость). Тем не менее PoW и PoS — очень интересные и рабочие подходы к BFT.