С момента создания Биткойна в 2008 году как одноранговой электронной денежной системы было создано множество других криптовалют, каждая из которых имеет определенный механизм. Но есть одна общая черта, которая объединяет почти все криптовалюты — это блокчейн как основной элемент их архитектуры.
За некоторыми исключениями, блокчейны намеренно спроектированы так, чтобы быть децентрализованными и работать как цифровой реестр, который поддерживается распределенной сетью компьютерных узлов. По этой причине технология блокчейна позволила создать не требующие доверия экономические системы, в которых прозрачные и надежные финансовые транзакции могут выполняться без необходимости использования посредников. Криптовалюты принимаются в качестве жизнеспособной альтернативы традиционным банковским и платежным системам, которые сильно зависят от доверия.
Как и в большинстве распределенных вычислительных систем, участникам криптовалютной сети необходимо регулярно договариваться о текущем состоянии блокчейна, и это то, что мы называем достижением консенсуса. Однако достижение консенсуса по распределенным сетям безопасным и эффективным способом — далеко не простая задача.
Итак, как распределенная сеть компьютерных узлов может согласовать решение, если некоторые из узлов могут выйти из строя или действовать нечестно? Это фундаментальный вопрос так называемой проблемы византийских генералов, породившей концепцию византийской отказоустойчивости.
В чем проблема византийских генералов?
Короче говоря, «Проблема византийских генералов» была задумана в 1982 году как логическая дилемма, иллюстрирующая, как группа византийских генералов может иметь проблемы со связью при попытке договориться о своем следующем шаге.
Дилемма предполагает, что у каждого генерала есть своя армия и что каждая группа расположена в разных местах города, который они собираются атаковать. Генералам необходимо договориться о наступлении или отступлении. Неважно, нападут они или отступят, лишь бы все генералы достигли консенсуса, т. е. договорились об общем решении, чтобы согласовать его исполнение.
Таким образом, мы можем рассмотреть следующие требования:
Каждому генералу предстоит решить: атаковать или отступить (да или нет);
После того как решение принято, его нельзя изменить;
Все генералы должны прийти к единому мнению и синхронно выполнить его.
Вышеупомянутые проблемы связи связаны с тем, что один генерал может общаться с другим только посредством сообщений, которые пересылает курьер. Следовательно, главная проблема «Проблемы византийских генералов» заключается в том, что сообщения могут быть каким-то образом задержаны, уничтожены или потеряны.
Кроме того, даже если сообщение успешно доставлено, один или несколько генералов могут решить (по какой-либо причине) действовать злонамеренно и отправить мошенническое сообщение, чтобы сбить с толку других генералов, что приведет к полному провалу.
Если мы применим дилемму к контексту блокчейнов, каждый генерал представляет собой узел сети, и узлы должны достичь консенсуса относительно текущего состояния системы. Другими словами, большинство участников распределенной сети должны согласовать и выполнить одно и то же действие, чтобы избежать полного провала.
Следовательно, единственный способ достичь консенсуса в таких типах распределенных систем — это иметь как минимум ⅔ или более надежных и честных сетевых узлов. Это означает, что если большая часть сети решит действовать злонамеренно, система будет подвержена сбоям и атакам (например, атаке 51%).
Византийская отказоустойчивость (BFT)
Короче говоря, византийская отказоустойчивость (BFT) — это свойство системы, способной противостоять классу сбоев, вытекающему из проблемы византийских генералов. Это означает, что система BFT может продолжать работу, даже если некоторые узлы выходят из строя или действуют злонамеренно.
Существует более одного возможного решения проблемы византийских генералов и, следовательно, множество способов построения системы BFT. Аналогично, существуют разные подходы к достижению византийской отказоустойчивости блокчейна, и это приводит нас к так называемым алгоритмам консенсуса.
Алгоритмы консенсуса блокчейна
Мы можем определить алгоритм консенсуса как механизм, с помощью которого сеть блокчейнов достигает консенсуса. Наиболее распространенными реализациями являются Proof of Work (PoW) и Proof of Stake (PoS). Но давайте возьмем в качестве примера случай с Биткойном.
В то время как протокол Биткойн предписывает основные правила системы, алгоритм консенсуса PoW определяет, как эти правила будут соблюдаться для достижения консенсуса (например, во время проверки и подтверждения транзакций).
Хотя концепция Proof of Work старше криптовалют, Сатоши Накамото разработал ее модифицированную версию как алгоритм, который позволил создать Биткойн как систему BFT.
Обратите внимание, что алгоритм PoW не на 100% устойчив к византийским ошибкам, но из-за дорогостоящего процесса майнинга и лежащих в его основе криптографических методов PoW оказался одной из наиболее безопасных и надежных реализаций для сетей блокчейнов. В этом смысле алгоритм консенсуса Proof of Work, разработанный Сатоши Накамото, рассматривается многими как одно из самых гениальных решений византийских ошибок.
Последние мысли
Проблема византийских генералов — это интригующая дилемма, которая в конечном итоге привела к созданию систем BFT, которые широко применяются в различных сценариях. Помимо индустрии блокчейнов, несколько вариантов использования систем BFT включают авиационную, космическую и атомную энергетику.
В контексте криптовалют наличие эффективной сетевой связи наряду с хорошим механизмом консенсуса жизненно важно для любой экосистемы блокчейна. Обеспечение безопасности этих систем требует постоянных усилий, и существующие алгоритмы консенсуса еще не преодолели некоторые ограничения (например, масштабируемость). Тем не менее, PoW и PoS представляют собой очень интересные подходы в качестве систем BFT, и их потенциальные приложения, безусловно, стимулируют широкомасштабные инновации.

