POS (proof-of-stake), или ошибка в ДНК.

TL;DR пруф-оф-стейк отстой, скам и развод для гуманитариев.

Основные определения

В последнее время всё больше нокойнеров, топят за т.н. пруф оф стейк. Остановимся подробнее на этом феномене Для чего понадобиться определить основные понятия.

Нокойнер (англ nocoiner) — это человек, который:

  • полагает что блокчейн >> биткоин
  • постоянно говорит о том, что биткоин — это первое поколение криптовалют, и будет лучший биткоин
  • верит в регулирование и фиатные валюты
  • постоянно вспоминает про тюлпаноманию, компанию южных морей, пузыри, пирамиды и медофа с понзи.
  • не то чтобы не написал ни одной строки кода, но даже не потрудился ознакомится с репозиторием хотя-бы биткоина. Это из серии «гуманитарию скажу в ответ: пакет не надо, карты-нет».

Пруф оф стейк (англ — proof of stake) — это криптографическое доказательство владения определенной сущностью, при том что эта сущность обладает ещё каким-либо дополнительным свойством, например то что эта сущность не может быть передана кому-либо до выполнения специфических условий.  Т.е. в отличие от доказательства работы, которое отражает затраченную энергию, причем в совершенно термодинамическом смысле, доказательство владения отражает затраченный интерес, что как очевидно вещь совершенно изменчивая.

Критические системы и цена ошибки.

Теперь же определившись с понятиями рассмотрим корневую ошибку в ДНК у разработчиков Etherium Casper, Cardano Ouroboros и прочих и прочих. Возможный интерес разработчиков в PoSу вероятно продиктован желанием неограниченно скалировать(т.е. увеличивать) блокчейн и ложным представлением о том что PoW Биткоина «расточителен».

За всей этой шумихой вокруг PoS остаётся незамеченным важный, критический важный аспект — а именно то, как PoS, поведёт в случае наихудшего возможного сценария. Например: значительная часть сети уходит в оффлайн, т.е. теряет связь с остальной сетью, или значительная часть приватных ключей украдена/куплена/потеряно.

Кто-то может подумать что такие события маловероятны и вряд-ли когда-либо произойдут, однако 1) они могут быть  не так редки как оцениваются 2) даже если вероятность события крайне мала, например 0.1%, это лишь означает, что оно всё равно произойдёт, просто чуть позже. Т.н. «Черные лебеди»

Проще говоря, Черные лебеди  — это маловероятные и трудно прогнозируемые события, которые имеют масштабные последствия. Иллюзия безопасности, основанная на том, что предыдущие 10-100-1000 лет было безопасно.

Когда мы имеем дело с системами, претендующими на глобальное влияние, такими как Биткоин, или иная крипто-монета, которая может в определенный момент стать основным носителем ценности, с миллионами предпринимателей и потребителей её использующими, мы просто не можем полагаться на малую вероятность, а создавать системы с учетом возможных Черных Лебедей. Когда мы говорим о таких системах, мы говорим о критический важных системах. Различают четыре основных типа таких систем:

  • для сохранности, нарушения в таких системах могут привести к потере жизни, тяжелому увечью, обширному повреждению окружающей среды. Примеры таких систем — управляющие системы на хим. производствах, атомных реакторах, автопилоты, и т.п.
  • для предназначения, нарушения в таких системах могут привести к потерям несопоставимо большим самой системы: система подачи топлива в ракетоносителе, система управления багажом в крупных аэропортах, и т.п.
  • для бизнеса, нарушения в таких системах ведут к прямому материальному и репутационному урону, часто выражаются в том что система уходит в состояние «перестала отвечать на запросы».  К таким системам относятся банковские продукты, крупная интернет торговля, биржи, ERP-системы предприятий и т.п.
  • для информационной безопасности, в таких системах при нарушениях может быть утечка чувствительных данных. Тут всё ясно, такие системы вокруг сплошным плотным забором.

Биткоин удовлетворяет требованиям, предъявляемым ко всем типам критических систем. Права на ошибку просто нет. Хороший опытный разработчик всегда знает что мы лишь в шаге от катастрофы, неважно как прекрасно всё выглядит на бумаге и как гладко всё шло до сих пор.

Приведу несколько примеров того, где инженерные просчеты на высочайшем уровне привели к катарстрофам

Катастрофа Конкорда в 2000 году

Конкорд, считавшийся одним из самых безопасных самолетов в мире, и один из двух пассажирских сверхзвуковых самолетов, находился в эксплуатации с 1976 года, взлетая с ВПП через 4 минуту после предыдущего самолёта порвал одну из покрышек шасси об отвалившеюся от того титановую створку  реверса двигателя (что не представляло для того опасности), и обрывок лопнувшей покрышки попал в топливный бак на крыле, вызвал в нём утечку, а другим обрывком покрышки повредило проводку топливных насосов, вызвав искрение. Вытекающий керосин воспламенился и включил систему пожаротушения двигателя, который тут-же был отключен экипажем, при этом второй двигатель на том же крыле уже не мог обеспечить тягу из-за окружавших его раскаленных продуктов горения и тоже отключился. И тут читатель должен себе представить Конкорд, огромный самолет у которого уже 75% ВПП позади и тяга есть только на одном крыле, т.к. второе крыло охвачено огнём, и двигатели там не тянут совсем, таки отрывается от полосы и взлетает. Шансы на выживание? 0.

Катастрофа Челленжера в 1986

NASA оценивало вероятность катастрофы в 1:100000,  однако позже всё оказалось совсем иначе и уже оценивалась как 1:100. Катастрофа развивалась подобно вышеописанной, только с тем отличием, что началась из-за недостаточной термической эластичности уплотнительного кольца, повлекшее за собой его повреждение в следствие необычайно низкой температуры (аж -1 по Цельсию!) , и дальше уже пошла цепь непредвиденных катастрофических последствий.

Чернобыль 1986

Истинной картины данной катастрофы, по всей видимости мы уже не узнаем никогда. Однако можно немного поразмыслить. Катастрофа началась за день до взрыва. Энергоблок планировали заглушить для планово-предупредительного ремонта. В штатном режиме в реакторе идёт контролируемая реакция распада, энергия которой нагревает прокачиваемую воду в перегретый пар, который вращает ротор электрогенератора. В ходе эксперимента планировалось использовать кинетическую энергию ротора для питания циркуляционных насосов.  Но как оказалось считать энергию вращения ещё не умели, и её не хватило. Реактор сначала заглушили, введя в него поглощающие стержни, и заглушив реактор примерно до 1% от номинальной мощности, чего было недостаточно для прокачки теплоносителя через него, и тогда его стали в ручном режиме разгонять, выводя поглощающие стержни, что при этом происходило в рабочем теле делящегося вещества — одной В. известно, но когда началось лавинообразное нарастание мощности реактора, его уже было не остановить и весь этот радиоактивный адок вырвался наружу.

Фукусима 2011

Спустя 25 лет после Чернобыля, в Японии, в которой землетрясения происходят регулярно, и которая к ним привычно случилось самое мощное из известных землетрясений в Японии, в 9 магнитуд. За ним последовало цунами, что и вызвало остановку реакторов и их перегрев и расплавление.

Как итог: когда речь идёт о критических системах глобального масштаба, даже самые невероятно-плохие сценарии надо держать в голове. Один из основных законов В. «если какая-то хрень может случиться, она обязательно случиться, когда её меньше всего ожидаешь».

Критические события: PoW vs PoS.

А сейчас рассмотрим как POS и POW поведут себя в сценариях, вполне возможных и уже даже осуществляемых: фрагментация сети и неожиданный простой в течение отрезка времени.

Собственно, почему я сказал уже осуществляемых, чтобы вы не думали о малых, чисто умозрительных, вероятностях. В течение т.н. Арабской весны, турецкое правительство использовало BGP-перехват, для блокировки всего трафика  Twitter исходящего от своих же граждан. Китай имеет в своём распоряжении куда более сложные инструменты, такие как DPI, чтобы блокировать вообще весь специфический трафик в рамках Великого Китайского Брандмауэра (слово которое нам любезно предоставили мелкомягкие для подмены английского firewall).

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

Итак обратимся непосредственно к тому, как поведут себя оба протокола и PoW и PoS в таких сценариях:

Сценарий 1: Вся сеть вынужденно прекращает функционирование на некоторый отрезок времени. Потом перезагружается.

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

С течением времени коммуникация между регионами восстановиться и узлы этих независимых сетей начнут обмениваться между собой.

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

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

Разработчики PoS-а вообще часто доходят до того, что надо «наказывать» узлы которые ведут себя не по правилам. Что они при этом забывают упомянуть, так это то что при разделении цепи, все узлы вели себя по правилам, но разделение цепи произошло.

Сценарий 2: Некоторые части сети фрагментируются от остальной сети.

Несложно догадаться что всё сведется к той же ситуации, что и в первом сценарии. Фрагменты будут продолжать функционировать как обычно, кроме того, что количество узлов с которыми они будут обмениваться, станет сильно меньше. Когда же полная сеть восстановиться появится путаница в том, какая же версия цепи настоящая.

Основное отличие от сценария 1 в том, что сценарий 2 куда более вероятен. Перенаправление трафика куда проще чем вывод всего фрагмента сети в отключенное состояние. Мы уже видели как это делается на примере Турции. Фрагменты сети могут быть произвольно малых размеров — хоть город, хоть район, не важно. Можно предположить, что с нашим бешеным принтером, и мировой банковской олигархией такое будет происходить сплошь и рядом.

Сценарий 3: Утраченные приватные ключи.

Распределение всего, в том числе и криптоактивов подчиняется универсальным закономерностям, и вполне резонно предположить, что 1% держателей PoS будет контролировать 50%+ всего оборота сети. Приватные ключи таких держателей могут быть похищены в результате глубоко эшелонированых атак, включающих похищения, пытки, вымогательство, шантаж и прочие радости.

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

(как вариант, возможна покупка старых ключей у держателей потерявших интерес к данной PoS монете)

В случае PoW это эквивалентно получения контроля над 50%+ хеш-мощности сети.

Допустим, что кому-то удалось получить большую часть хеш-мощности сети, для Биткоина это не реально практический, но для других PoW-монет, может быть осуществимо. И что можно сделать с этой мощностью? Можно попробовать осуществлять двойные траты или переписать всю цепь. Но чтобы осуществить двойную трату, нужно потратить кучу средств, получение большой части мощности в данном случае — это только первый шаг. Даже несмотря на то как ужасно это звучит, получение кем-то 50%+ процентов хэш-мощности сети, сам протокол PoW продолжает работать как обычно, и только одна цепь может быть истинной (однако SPV, simplified payment verification, ноды можно обмануть, т.к. они не загружают блоки полностью и не хранят весь блокчейн, из-за этого крайне рекомендуется иметь хотя-бы одну полную ноду). Для того чтобы переписать весь блокчейн ещё требуется куда большая мощность чем мощность половины сети. В данном случае сами пользователи сети могут предпринять смену алгоритма и свести смысл этих усилий к эффективному нулю.

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

В тоже время PoS являет собой полную противоположность. Получение 50%+ ставки дает неограниченные возможности. Двойная трата становиться возможной без каких-либо дополнительных затрат. Также можно либо а) переписать историю если в протоколе нет чекпоинтов б)если они есть (привет Каспер, ссылка есть выше), то можно сделать несовместимые ответвления сети. Изменения алгоритма в PoS  не даёт в данном случае ничего, т.к. нет цены переключения, в виде например инвестиций в железо.

Вместо завершения, или почему PoS — ошибка ДНК разработчиков.

Подводя итог, PoW предоставляет два преимущества, когда речь идёт о безопасности сети:

  1. PoW защищает будущее: когда происходит разветвление сети, есть объективный механизм, автоматический разрезающий конфликты между воссоединившимися узлами, без человеческого вмешательства и без необходимости доверия третьей стороне-арбитру.
  2. PoW защищает прошлое: для того чтобы изменить ваш баланс, надо не только получить 50%+ мощности, но и затратить всю ту мощность что уже была затрачена на создание блокчейна.

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

(в теории можно реализовать чекпоинты децентрализовано, но это лишь приведет к проблемам которые потребуют централизованных решений, об этом в другой раз, что делает чекпоинты эффективно централизованным решением)


В заключении, критический важно понимать как важен правильный склад ума, умение предсказывать не только известные известные, известные неизвестные и наконец неизвестные неизвестные угрозы (так их классифицировал один мин.обороны атомной державы, неизвестные неизвестные угрозы — это неизвестные нам по природе своей угрозы, про которые мы не знаем даже что они есть), при разработке глобальных протоколов на подобие Биткоина или вообще блокчейна. Это критические системы, заслуживающие самого тщательного анализа и всеобъемлющей инженерии.

Протоколы PoS построены на неверных и наивных представлениях, которые не принимают во внимание худшие возможные сценарии. PoS — это шаг в неправильном направлении: вместо поднятия планки качества, её снижение ради фальшивых бенефиций. Я называю это ошибкой в ДНК, т.е. в самом основании любого начинания.