Byzantine Fault Tolerance: малоизвестная особенность блокчейна

Фото - Byzantine Fault Tolerance: малоизвестная особенность блокчейна
Византийская отказоустойчивость — способность блокчейна работать при условиях, когда некоторые компьютерные узлы исчезают из сети или пытаются навредить всей системе.
Цель BFT — предотвратить сбои в цепочке блоков с помощью решения, принятого исправными и надежными нодами, несмотря на наличие вредоносных узлов. Если византийская отказоустойчивость отсутствует, в блокчейн могут записываться неверные и опасные транзакции, которые нарушают безопасность данных.

Byzantine Fault Tolerance, помимо распределенных реестров, используется в устройствах двигателей самолетов, атомных электростанций и других механизмах, работоспособность которых связана с большим количеством приборов.

Проблема Византийских генералов

Происхождение термина вытекает из логической задачи, которая называется “Проблема византийских генералов”. Она описана в статье Microsoft Research в 1982 году. Гипотетическую головоломку придумали, чтобы описать сложность ситуации, при которой компьютерные узлы должны достигнуть общего согласия. 

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

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

Решение этой проблемы — разработка механизма, который бы приводил к возможности автоматически договориться, невзирая на проблему с некоторыми ненадежными узлами. Он получил название “византийская отказоустойчивость” и может работать до тех пор, пока количество обманщиков не выходит за рамки одной трети участников, которые влияют на ход событий.

Как алгоритмы консенсуса связаны с BFT?

BFT достигается с помощью алгоритмов консенсуса (и не только*), которые представляют собой некоторую совокупность правил и условий, которые необходимо выполнить, чтобы транзакции записались в блокчейн. Это обеспечивает безопасность и решает “Проблему византийских генералов”.

Например, в самом первом алгоритме консенсуса Proof-of-Work (доказательство работы) согласие узлов происходит после того, как один из майнеров первым решит сложное зашифрованное уравнение. Тогда его узел становится валидатором, проверяет транзакции и добавляет их в блокчейн, а пользователь получает за это вознаграждение. 

В наиболее популярном механизме Proof-of-Stake другие условия для достижения консенсуса. Участники такой сети должны перевести токены на стейкинг, чтобы получить право на подтверждение транзакций. Чем больше средств заблокировано, тем больше шансов добавить блок в цепочку и получить дополнительные токены за поддержку блокчейна. 

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

*Цифровые подписи, ограничение взаимодействий между распределенными узлами — тоже позволяют достичь византийской отказоустойчивости.

Что такое практическая византийская отказоустойчивость?

Practical Byzantine Fault Tolerance (pBFT) — алгоритм консенсуса, созданный в конце 90-х, который часто используют в блокчейнах нового поколения в качестве дополнительного. Его разработали для систем, которые не имеют ограничений по времени для ответа на запрос. Механизм обладает быстрой скоростью достижения консенсуса и связан с предыдущими наработками византийской отказоустойчивости. pBFT имеет главный узел и второстепенные, которые работают на общий результат.

Byzantine Fault Tolerance в качестве практического алгоритма работает следующим образом:

?️ Транзакция отправляется к главному узлу.
?️ Он передает ее вторичным узлам.
?️ Все вместе они обрабатывают запрос и отправляют ответ системе.
?️ Транзакция подтверждается, когда сеть получает более одной трети одинаковых решений от разных узлов.

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

Практическую византийскую отказоустойчивость используют в своей архитектуре такие блокчейны, как Hyperledger, Cosmos, Minter, Zilliqa.