Блокчейн – децентрализованная распределённая система, в которой каждый участник работает независимо и не доверяет остальным участникам. Однако всем участникам необходимо прийти к консенсусу – единому состоянию блокчейна. Эта фундаментальная проблема из области распределённых вычислений называется Проблемой Византийских Генералов. Впервые была сформулирована в статье Лесли Лэмпорта “The Byzantine Generals Problem “.
Изначальная формулировка:
Несколько дивизий армии Византии осаждают город. Каждая дивизия находится под командованием своего генерала. Генералы могут общаться посредством гонцов и должны принять решение о плане действий. Однако некоторые генералы могут быть предателями, которые стремятся помешать лояльным генералам прийти к соглашению. Существует ли такой алгоритм действий для лояльных генералов, что все лояльные генералы придут к одному и тому же плану действий, вне зависимости от действий предателей?
Определение:
Византийская Отказоустойчивость (BFT) – это способность системы противостоять отказам, возникающим из-за класса Проблем Византийских Генералов. Это означает, что BFT-устойчивая система может продолжать работать, даже если некоторые из узлов действуют злонамеренно.
Существует несколько подходов к решению задачи Проблем Византийских Генералов, что приводит к различным механизмам достижения консенсуса в блокчейне. Большинство из них основаны на принципе лотереи: чтобы получить возможность добавить блок в блокчейн (майнинг), участнику нужно затратить некоторый ресурс. Чем больше ресурса, тем больше “лотерейных билетов” у него есть и, соответственно, больше шансов успешно добавить блок. Остальные участники при этом независимо проверяют соблюдения правил построения блокчейна. Наиболее распространенными механизмами консенсуса являются Proof of Work и Proof of Stake.
Proof of work - Доказательство работы
Для создания блока нужно решить некоторую вычислительную задачу. Задачу достаточно сложно решить, а проверить правильность решения намного проще. Так как вычислительная мощность сети со временем растёт (компьютеры со временем становятся мощнее), сложность задачи периодически регулируется, чтобы оставаться на одном уровне.
Плюсы
Проверен временем
Исторически первый механизм консенсуса, давно используется и проверен.
Использует реальный ресурс
Для майнинга нужен реальный физический ресурс: электричество. Чтобы начать майнинг не нужно быть участником системы, достаточно иметь доступ к электричеству и компьютеру.
Минусы
Большой расход энергии
Тратится очень много электроэнергии. При этом результаты решения задач, как правило, бесполезны - вся энергия идёт только на поддержание работы сети.
Тенденция к централизации
Для эффективного решения задач производятся специальные схемы, называемые ASIC. Майнинг на ASIC намного эффективнее, чем майнинг на обычном компьютере. Это приводит к тому, что обычному пользователю становится невыгодно включаться в майнинг, так как он заведомо проиграет владельцам ASIC. Это делает майнинг “профессиональным”, из-за чего повышается вероятность централизации (а это уже ведёт к атаке 51%).
Одним из направлений борьбы с недостатками Proof of work является выбор специальных трудных для ASIC задач. Например, задачи, для которых требуется большой объём памяти и постоянные обращения к ней. В этом случае основные затраты времени идут на обращения к памяти, что сводит на нет преимущество ASIC в скорости вычислений. Другим направлением является изобретение новых механизмов консенсуса.
Proof of stake - Доказательство владения
Блоки создают специальные участники - валидаторы. Чтобы стать валидатором, участник сети на время блокирует (выводит из оборота) часть своих монет. Из валидаторов выбирается тот, кто создаст блок (механизм может быть различный: случайный розыгрыш, голосование среди валидаторов). Чем больше заблокированных монет - тем больше шанс создать новый блок. Работает принцип “Богатые становятся богаче”.
Плюсы
Меньше затраты энергии
Расход энергии намного меньше, так как не требуется решать сложных вычислительных задач.
Сложнее провести атаку 51%
Атака 51% становится дороже: для проведения нужно покупать монеты, а это повышает спрос на них, а значит и цену.
Нет гонки мощностей
Не зависит от увелечения мощности компьютеров, нет необходимости подстраиваться под уровень развития технологий.
Применение теории игр
Для анализа поведение валидаторов можно применять хорошо развитый аппарат теории игр.
Минусы
Внутренние обеспечение
Обеспечение внутренним ресурсом (монетами той же сети), а не внешним (электричество). Майнинг стоит только монет той же сети, и не стоит никаких физических ресурсов, потому майнер может майнить все цепочки параллельно “на всякий случай”, что затрудняет достижение консенсуса .
Nothing on stake
Если в какой-то момент времени была ситуация, что более 50% монет владел один участник - то он всегда может переписать историю блокчейна, начиная с этого момента. При этом, во-первых, зачастую изобретатели криптовалюты заранее выделяют себе значительную часть монет в качестве награды. Во-вторых, атаку можно провести в любое время. Если какой-то адрес в прошлом владел большинством монет, то можно выкупить ключ к этому адресу (монеты с него давно потрачены, поэтому владелец с удовольствием продаст его) и устроить атаку, переписав весь блокчейн.
Разумеется, в реальных приложениях эти минусы скомпенсированы и переписать историю, купив пару монет у первых майнеров, не получится. Однако, идейно проблема всё равно остаётся.
Proof of activity
Гибридная схема Proof of work и Proof of stake. Часть блоков создаётся за счёт вычислений, а часть за счёт владения. История блокчейна частично защищена от перезаписи блоками, которые были получены вычислениями. Второй вариант: создание блока состоит из двух шагов: и вычислений, и владения. Компромиссный вариант, но пока на практике удачных реализаций этого механизма нет.
Proof of burn
Чтобы стать валидатором нужно сжечь монеты. Монеты сжигаются, конечно, не в прямом смысле, а отправляются на адрес, с которого их невозможно потратить. Чем больше монет сжёг – тем больше шанс создать новый блок. В отличие от Proof of stake монеты сжигаются навсегда, а не блокируются на время.
Proof of Capacity
Для создания блоков используется не вычисления на процессоре, а пространство на жёстком диске. На диске создаются большие куски данных, которые потом используются в розыгрыше на создание нового блока. Чем больше места выделено – тем больше шансов на успех.
Proof of storage
Похоже на Proof of Capacity, только дисковое пространство используется для хранения полезных данных, а система периодически проверяет у случайных участников, что данные действительно хранятся. Чем больше данных хранится и чем дольше – тем больше шансов создать новый блок.
Заключение
Вообще каждый раз, когда кто-то создаёт новую криптовалюту с хоть немного нестандартной реализацией консенсуса – он тут же заявляет о новом proof of – механизме. Из-за этого их развелось очень много, поэтому в рамках статьи описаны наиболее содержательные. Зная их, можно понять принцип работы и остальных.