Новости

Сравнение алгоритмов консенсуса Casper против Tendermint (часть 1)

Долгая дорога к Proof-of-Stake

Задача византийских генералов впервые была сформулирована Лэмпортом, Шостаком и Пизом в 1982 году. В ней описывается проблема достижения распределённого соглашения в скомпрометированной коммуникационной сети – создания «надёжной системы из ненадёжных элементов», по формулировке Итана Бахмана (Ethan Buchman) из Cosmos. С 1982 по 1999 год никто не смог предложить систему, которая разрешила бы задачу византийских генералов. Эта проблема долгое время была неактуальна, потому что интернет развился из централизованных облачных вычислений всё, что было нужно, это отказоустойчивость.

Итак, широкое распространение получили такие отказоустойчивые алгоритмы, как Paxos, появившийся в 1998 году, и Raft, изобретённый в 2013 году. Practical Byzantine Fault Tolerance (PBFT), алгоритм, устойчивый к византийской ошибке, был создан в 1999 году, но вне академических кругов распространения не получил. Прорыв, совершённый Сатоши Накамото в 2008 году, заключается в привнесении распределённого в интернете устойчивого к византийской ошибке (BFT) консенсуса в конфигурацию блокчейна. Сразу после этой демонстрации множество исследователей вычислительных систем начали формулировать идеи практического применения того, что являлось в значительной мере объектом исключительно научного интереса.

В 2011 году в ветке форума BitcoinTalk оформилась дискуссия вокруг идеи некоего Proof-of-Stake (PoS). Первоначальные PoS-протоколы, такие как Peercoin, приводили к вырожденным реализациям. Первым, кто всерьёз заговорил о применении исследования проблемы устойчивости к византийской ошибке (BFT) в контексте публичного PoS-блокчейна, был Чжэ Квон (Jae Kwon), который в 2014 году изобрёл алгоритм консенсуса Tendermint.

В то время исследования PoS проводились исходя из большого допущения о том, что множество одноранговых узлов в системе является статическим и будет оставаться стабильным в течение длительного периода времени. Однако это было совершенно нереалистичным условием для среды блокчейна. Главный прорыв Чжэ Квона заключался в адаптации исследования BFT к домену реплицированных машин состояний (блокчейнов) при помощи блоков, связи между хэшами, динамических наборов валидаторов и ротационного выбора лидера.

После Tendermint появилось огромное количество различных алгоритмов достижения консенсуса (Honeybadger, Ouroboros, Tezos, Casper), включающих в себя элементы исследования BFT и других модульных наблюдений блокчейнов.

Принципиальная проблема заключается в том, что все эти исследования, проведённые с Proof-of-Stake, строятся вокруг одного вопроса сможем ли мы достигнуть того же уровня безопасности, как в Proof-of-Work (PoW) системе, подобной Биткойну, но не исчерпывая ограниченные физические ресурсы? Исследования алгоритмов Proof-of-Stake (PoS) – т. е. когда вес голоса выражен в количестве валюты, а не в хэширующей мощности – были лидирующим классом исследований, пытающихся найти ответ на этот вопрос. Широко обсуждаемые проблемы блокчейнов – масштабируемость, высокие затраты на PoW-майнинг и воздействие на окружающую среду – стимулируют вложение значительных ресурсов в исследования в области безопасности PoS-алгоритмов.

В этой статье рассматриваются уникальные подходы к Proof-of-Stake на примере трёх основных PoS-протоколов в области криптовалют «Casper the Friendly Ghost» («Каспер, доброе привидение»), исследование под руководством Влада Замфира (Vlad Zamfir), «Casper the Friendly Finality Gadget» («Каспер, дружелюбный алгоритм завершения транзакций»), исследование под руководством Виталика Бутерина (Vitalik Buterin), и Tendermint под руководством Чжэ Квона (Jae Kwon).

Подводные камни Proof-of-Stake

Проблема отсутствия долей (nothing-at-stake)

Начнём с того, что разные авторы, говоря об основных подводных камнях Proof-of-Stake, называли эту проблему по-разному. Чжэ Квон первым упомянул о ней в мае 2014 года под неудачно сформулированным названием «ошибка ложного выбора» («the fallacy of false choices»). Виталик в июле 2014 года популяризовал теперь уже чётко сформулированную проблему, описанную разработчиками Биткойна как «отсутствие долей». Проблема представляет собой следующий сценарий валидаторы имеют возможность эффективно нарушать безопасность сети путём голосования за несколько конфликтующих блоков на определённой высоте, не неся на это никаких затрат.

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

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

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

Этот вектор атаки сглаживается широко понимаемой идеей «слэшера» (slasher) – или предусмотренных на уровне протокола штрафов – представленной Виталиком Бутериным в январе 2014 года. В том же году Чжэ Квон распространил этот подход дальше – развитие нашло своё выражение в первой итерации протокола консенсуса Tendermint. Слэшинг и условия гарантированного наступления такого наказания играют важную роль во всех невырожденных BFT-протоколах – настолько, что они используются во всех трёх протоколах консенсуса, представленных в этой статье.

Атаки дальнего действия (long range attacks)

Атака дальнего действия основывается на праве пользователей выводить свои залоговые депозиты. Фундаментальная проблема возникает из-за того, что это даёт злоумышленнику возможность построить форк от произвольно выбранного в длительном временном диапазоне блока, не опасаясь штрафа в виде сокращения залогового депозита. При запрете залоговых депозитов, стимул не голосовать за форк от одного из давно сформированных блоков устраняется. Другими словами, когда более ⅔ валидаторов не связаны, они могут злонамеренно создать вторую цепочку, включающую в себя прошлый набор валидаторов, что может привести к появлению произвольных альтернативных транзакций.

Это может быть фатальным для протоколов Proof-of-Stake, потому что модель безопасности неизбежно «субъективна». Модель безопасности считается «субъективной», если участие в сети требует больших объёмов социальной информации, когда новые ноды (узлы) сети могут приходить к различным заключениям о текущем состоянии сети, поскольку их решение основано на субъективной информации, т. е. социальной репутации. Напротив, модель безопасности протоколов Proof-of-Work неизбежно «объективна», так как текущее состояние сети всегда будет состоянием с наибольшим количеством доказательств работы, и новые ноды придут к тому же заключению, поскольку их решение основано на объективной информации.

Атаки дальнего действия в PoS устраняются в рамках модели слабой субъективности, которая требует от новых нод сети соответствия следующим требованиям

  • Ноды должны быть бондированы и доверять только нодам-валидаторам, имеющим залоговые депозиты.
  • Небондированные депозиты должны проходить через период «размораживания». После разбондирования токенам нужно время на «размораживание» – от нескольких недель до нескольких месяцев на аккаунт – чтобы синхронизировать допущения (т. е. отложенные сообщения).
  • Запрет возврата более чем на N блоков, где N соответствует длине залогового депозита. Это правило делает несостоятельными любые попытки форка дальнего действия (от блока, сформированного длительное время назад).
  • Опционально можно хранить набор валидаторов на цепочке с PoW.

Иллюстрация Атака дальнего действия (long range attack).  Casper the Friendly Finality Gadget

В Casper и Tendermint применяется простой механизм блокировки (в Tendermint его ещё называют «замораживанием»), который «блокирует» долю на определённый период времени (от нескольких недель до нескольких месяцев), чтобы предотвратить создание любой злонамеренной коалиции валидаторов, угрожающей безопасности сети. В Casper the Friendly Finality Gadget (CFFG) для предотвращения атак дальнего действия при выборе форка применяется правило никогда не возвращаться к финализированному ранее блоку. За счёт использования меток времени, форки дальнего действия, пытающиеся изменить любые финализированные блоки, в CFFG игнорируются протоколом.

Формирование картелей

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

«Криптовалютам свойственна невероятно сильная тенденция концентрироваться в руках очень узкого круга лиц. Это же можно сказать и о майнинговых мощностях. Олигополистическая конкуренция является нормой для многих «реальных» рынков. Координация действий между небольшим количеством относительно богатых валидаторов намного проще координации действий между большим количеством относительно небогатых валидаторов. Формирование картеля в нашем контексте можно считать вполне ожидаемым явлением.» — Влад Замфир, История Casper, Глава 4

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

Пока что созданная Владом конструкция протокола Casper – единственная модель, явным образом противодействующая формированию картелей посредством стимулов, предусмотренных на уровне цензуроустойчивого протокола.

(Продолжение следует.)

С определениями некоторых терминов вы можете ознакомиться в этой статье.

Будь в курсе! Подписывайся на Криптовалюта.Tech в Telegram!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *