Сравнение консенсусов PoS: Casper против Tendermint

Casper против Tendermint

Сравнение PoS-консенсусов: Casper и Tendermint подробно рассказано в блоге Cosmos Network. Задача алгоритмов византийских генералов (BFT) была впервые поставлена в 1982 году (Lamport, Shostak, Pease) для распределенных коммуникационных сетей и можно ее сформулировать как «создание надежной системы из ненадежных частей». До 1999 года успешной системы, решающей проблему BFT, не было разработано, так как интернет только начинал эволюционировать от централизованных к распределенным вычислениям. Главным требованием была надежность.

В связи с этим, простые алгоритмы отказоустойчивости Paxos (1998) и Raft (2013) получили широкое распространение. В 1999 году созданный алгоритм PBFT (P — практичный) не выходил за рамки академических исследований. Однако настоящим прорывом стала работа Сатоши Накамото, который впервые применил BFT-консенсус в блокчейн-схеме, после чего множество исследователей стали искать способы применения этой технологии в реальном мире.

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

В то время разработчики PoS предполагали, что набор узлов в сети является статическим и остается неизменным на протяжении длительных периодов времени, но это предположение оказалось несостоятельным в реальных условиях блокчейна. Чэ Квон первым адаптировал BFT для блокчейна, используя динамический набор валидаторов и ротацию лидеров в протоколе Tendermint. Его примеру последовали другие PoS-проекты, такие как Tezos, Casper и другие. Все они использовали разные подходы, но стремились ответить на один и тот же вопрос: можно ли достичь такого же уровня безопасности, как у алгоритма Proof-of-Work (PoW) в Bitcoin, не требуя больших материальных ресурсов?

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

Алгоритмы Proof-of-Stake

Casper против Tendermint. Рассмотрим различные варианты PoS, лежащие в основе трех основных криптовалютных протоколов: Casper the Friendly Ghost (или CBC — Correct by Construction), разрабатываемый Владом Замфиром; Casper FFG (Friendly Finality Gadget) Виталика Бутерина; и Tendermint Чэ Квона.

Существуют две основные разновидности алгоритмов PoS: основанные на цепи и BFT-PoS. Tendermint является вариантом BFT, Casper CBC — вариант на основе цепи, а Casper FFG — гибрид двух предыдущих подходов.

Casper против Tendermint

Теорема CAP говорит о невозможности одновременного обеспечения более двух из трех свойств:

  • Доступности.
  • Согласованности.
  • Устойчивости к разделению.

Алгоритмы PoS на основе цепи предпочитают обеспечить доступность согласованности: доступность гарантирует обработку всех транзакций, но наличие согласованного состояния на всей цепи. С другой стороны, алгоритмы BFT-PoS строго придерживаются согласованности, отдавая ей приоритет перед доступностью.

Уязвимости Proof-of-Stake

Существуют некоторые уязвимости в алгоритмах Proof-of-Stake (PoS), которые называются «Нечего терять» (Nothing-at-Stake) и «Атака из глубины» (Long-distance attack). В случае атаки «Нечего терять», валидаторы могут атаковать сеть, голосуя за конфликтующие блоки на одинаковой высоте блокчейна, не рискуя при этом своими средствами. Эта атака является уязвимостью для всех алгоритмов PoS. В ответ на это Виталиком Бутериным введено понятие «бритвы» (Slasher), которое предусматривает потерю депозита для недобросовестных действий. Понятие «бритвы» включено во все три рассматриваемых BFT PoS протокола.

Атака из глубины - Уязвимость POS

«Атака из глубины» заключается в возможности строить форк цепи, не рискуя потерять свой депозит после окончания цикла. Когда больше 2/3 депозитов валидаторов размораживаются, они могут создать альтернативную цепь и проводить альтернативные транзакции. Это становится проблемой для протоколов PoS, потому что их безопасность основана на субъективной информации и социальной репутации. В отличие от этого, модель безопасности PoW всегда основана на объективной информации.

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

Для борьбы с проблемой олигополии и картельных сговоров в валидаторах, Tendermint и Casper CBC используют различные методы. Tendermint полагается на вне-протокольные механизмы сопротивления цензуре. В случае образования картеля, пользователи будут информированы и могут либо покинуть атакуемый блокчейн, либо реорганизовать его. В то же время, Casper CBC Замфира является единственной моделью, которая содержит явные механизмы борьбы с картельными сговорами.

Алгоритм Tendermint

BFT PoS — Tendermint. Основываясь на BFT, протоколы PoS случайным образом назначают валидаторам право предлагать новые блоки во время процесса голосования, который состоит из нескольких раундов. Однако создание и доработка блоков зависят от подавляющего большинства (2/3 кворума) всех валидаторов, подписавших предложенный блок. Это может занять несколько раундов или polkas, пока блоки не будут окончательно сформированы. Системы BFT могут допускать до 1/3 сбоев, где сбои включают произвольное и/или злонамеренное поведение.

Tendermint Core. Tendermint состоит из двух основных компонентов: механизма консенсуса и интерфейса приложения. Механизм консенсуса называется Tendermint Core, и он гарантирует, что идентичные транзакции записываются в одинаковом порядке на каждом компьютере. Интерфейс приложения, или ABCI, позволяет обрабатывать транзакции на любом языке программирования.

Основной механизм голосования Tendermint состоит из нескольких раундов. Каждый раунд включает в себя три этапа: валидаторы предлагают блок, сигнализируют о своем намерении завершить его создание, а затем подписывают завершенные блоки.

Casper против Tendermint Core

Алгоритм консенсуса начинается с набора валидаторов. Валидаторы хранят полную копию блокчейна и идентифицируются по своим открытым ключам. Они по очереди предлагают блоки на каждой новой высоте блока. В качестве претендента на блокировку для каждого раунда выбирается один валидатор. Каждое предложение подписывается соответствующим закрытым ключом валидатора, что позволяет идентифицировать ответственного валидатора в случае каких-либо сбоев. Остальные валидаторы голосуют своими закрытыми ключами по каждому предложению. Однако из-за сетевой асинхронности создание блока может занять несколько раундов.

По разным причинам блок может не материализоваться. Например, валидатор может находиться в автономном режиме или в сети могут возникать задержки. Прежде чем перейти к следующему раунду, валидаторы ожидают определенного интервала времени, чтобы получить заполненное предложение. Эта зависимость от тайм-аута делает Tendermint протоколом со слабой синхронизацией (вместо асинхронного). Однако оставшаяся часть протокола является асинхронной, и валидаторы могут продвигаться только с одобрения подавляющего большинства (2/3). Это означает, что 2/3 валидаторов должны быть подключены к сети, в противном случае сеть может остановиться.

Если набор состоит менее чем на 1/3 из нечестных валидаторов, Tendermint гарантирует безопасность (т.е. валидаторы никогда не будут создавать конфликтующие блоки одинаковой высоты). Таким образом, разветвление в блокчейне на основе Tendermint невозможно.

Ключевые свойства:

  • Доказуемая живучесть;
  • Порог безопасности: 1/3 валидаторов;
  • Мгновенное завершение: 1-3 секунды, в зависимости от количества валидаторов;
  • Приоритет отдается последовательности;
  • Безопасный консенсус в слабо-синхронной сети;
  • PoS на основе цепочки.

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

Основанные на цепочке PoS-алгоритмы имитируют консенсус PoW, при котором протокол случайным образом назначает валидатору право на создание совершенно нового блока, и новый блок связан своим хэшем с родительским блоком самой длинной предыдущей цепочки. POS-система, основанная на цепочке, в первую очередь опирается на синхронные сети, отдавая приоритет доступности в ущерб согласованности. Оба протокола Casper адаптируют основные идеи Tendermint к дизайну, в котором приоритет отдается безопасности конечного продукта.

Алгоритм Casper FFG

Casper против Tendermint. Casper FFG — это гибридная реализация PoW/PoS под руководством Виталика Бутерина. Консенсусный протокол PoW не принимает окончательных решений, и теоретически блоки могут быть переписаны до определенной высоты в цепочке. Блок называется «завершенным», когда он больше не может быть переписан ни при каких обстоятельствах. Поскольку PoW не предоставляет надежных гарантий окончательности, он не считается безопасным на уровне консенсуса. Чем глубже блоки PoW встроены в блокчейн, тем больше вероятность того, что они будут доработаны. Реализация логики FFG в блокчейне Ethereum добавит необратимости и устойчивости к 51%-ной атаке.

Casper FFG будет внедряться поэтапно: группа Бутерина предпочла консервативный подход к переходу от модели PoW к модели PoS. По-видимому, окончательная версия Casper будет включать в себя лучшие функции как FFG, так и CBC. Логика Casper FFG содержится в смарт-контракте. Чтобы стать валидатором Casper, необходимо внести определенную сумму ETH (точная сумма еще не определена) в этот смарт-контракт.

Контрольные точки являются ключевым компонентом консенсуса FFG PoS: протокол оценивает завершенность каждого 50-го блока, который называется контрольной точкой, а сегмент из 50 блоков называется эпохой. Валидаторы, которые являются первыми в Ethereum, голосуют за блоки в каждую эпоху.

Процедура завершения контрольной точки, расположенной в предыдущей эпохе, требует двух раундов голосования (т.е. 2 эпохи). Блок 1 считается завершенным после выполнения двух условий:

  • Подавляющее большинство из 2/3 валидаторов голосуют за блок 1 в эпоху 1: это называется обоснованием блока 1.
  • Подавляющее большинство из 2/3 валидаторов голосуют за блок 2 в epoch 2, где блок 2 является прямым преемником блока 1.

Таким образом, блок 1 завершается в эпоху 2. Эпоха 2 известна как последняя завершенная эпоха (LFE).

Casper против Tendermint: Иллюстрация логики FFG

Валидаторы получают вознаграждение, как только контрольная точка будет завершена. Однако, если обнаружены две завершенные контрольные точки на одинаковой высоте (две развилки), активируется условие «срезания», и по меньшей мере 1/3 отложений уничтожается. Доказательство нарушения передается майнерам PoW в виде транзакции, создающей блок с этим доказательством, и валидатор, сообщающий о нарушении, получает вознаграждение (гонорар искателя).

Более того, допустим, майнер пытается провести атаку методом перебора. Доработанный блокчейн не позволит переписывать блоки, даже если злоумышленник обладает более чем 51% мощности хэширования. Таким образом, Casper FFG обеспечивает безопасность. Однако он не может гарантировать работоспособность, поскольку полагается на механизм блокирования предложений, который остается PoW.

Ключевые свойства:

  • Окончательность: примерно за 20 минут до завершения. Завершенные эпохи делают блокчейн устойчивым к атакам грубой силы со стороны майнеров.
  • Безопасность на основе консенсуса.
  • Доказуемая живучесть.
  • Приоритет доступности.

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

Алгоритм Casper CBC

Протокол PoS, разработанный с нуля Владом Замфиром и оптимизированный для противодействия реальным олигополиям (пулам валидаторов). Он воплощает адаптированную к PoS идею протокола GHOST, первоначально разработанного для PoW. Принципы, лежащие в основе Casper CBC, используют крипто-экономические методы для достижения уровней безопасности, определяемых самими валидаторами.

В отличие от Casper FFG с его гибридом PoW/PoS, рассмотренным в предыдущей главе, Casper CBC представляет собой чистую концепцию PoS. Подобно протоколам PoW, CBC отдает приоритет доступности в ущерб согласованности. Окончательная обработка блоков не производится; вместо этого он увеличивается с глубиной цепочки. Общим свойством FFG и CBC является то, что начало цепочки неизменно растет быстрее, чем завершаются блоки.

Алгоритм Casper CBC

Уникальной особенностью CBC является то, что каждый валидатор независимо выбирает свои целевые уровни безопасности. Этот параметр аналогичен общепринятым 6 подтверждениям биткойн-транзакции для определения ее завершенности. Более того, несмотря на сложность используемых методов, сеть поддерживает относительно низкие накладные расходы по сравнению с PoW.

Ключевые свойства:

  • Сопротивление картелям: CBC построена на принципах, которые препятствуют формированию олигополии, гарантируя, что никакая коалиция валидаторов не сможет получить контроль над протоколом.
  • Приоритет доступности: Узлы Casper допускают разветвление блоков до тех пор, пока не будет достигнут консенсус.
  • Безопасность на основе консенсуса: асинхронна и зависит от пороговых значений безопасности, определяемых самими валидаторами.
  • Живучесть: достигается за счет частичной синхронизации.

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