Бесконечные дискуссии на тему «PoW vs PoS» приводят к тому, что поляризация мнений в криптовалютном сообществе часто носит чуть ли не религиозный характер. В этой статье сооснователь проекта Zano Андрей Сабельников (Andrey Sabelnikov) он же crypto_zoidberg делает попытку сравнить два основных метода консенсуса и перспективы их использования в современных и будущих блокчейнах. Дальнейшее содержание статьи сохраняет стиль и точку зрения автора.
Появление PoS
История возникновения PoS уходит в 2011-й год, когда на старом добром Bitcointalk стали высказываться идеи консенсуса на основе голосования держателей монет («холдеров») ,а не майнеров, и подогревало интерес к ним "бесполезное" сжигание электричества при майнинге PoW.
Первой реализацией стала криптовалюта PeerCoin (PPC), которая, как позже выяснилось, обладала и рядом характерных для PoS недостатков. Но рубикон был пройден, и началось постепенное осмысление новой парадигмы.
Сегодня есть огромное количество проектов, которые так или иначе используют одну из разновидностей PoS моделей второго поколения (DPoS, LPOS, POI, PoA). Несмотря на то, что у всех этих алгоритмов свои названия, с точки зрения автора, в основном это вариации на тему PoS. Мы в конце статьи очень коротко рассмотрим несколько примеров, которые интересны именно в контексте поднятой проблемы.
Проблема «Nothing at stake» в PoS системах
Почти каждая модель PoS подвергается критике за то, что она уязвима к так называемой проблеме «Nothing at stake». Идея этой атаки связана с явлением, известным как «Трагедия общих ресурсов» (Tragedy of the commons). В общем виде «трагедии общих ресурсов» описываются как ряд явлений, в которых интересы индивидов могут противоречить благам общего пользования, и как наиболее простой пример приводят общее пастбище, нерациональное пользование которым со стороны большинства приводит к истощению этого ресурса целиком. Таким же образом может рассматриваться произвольный блокчейн-проект, в котором как благо общего пользования подразумевается возможность майнинга и получения вознаграждения.
В отличие от PoW, где майнинг является вычислительно дорогим процессом и может одновременно осуществляться в отношении какой-то одной цепочки, в PoS майнинге не делается никаких значимых дополнительных затрат/усилий для голосования в альтернативной цепочке, другими словами, майня так же вторую цепочку, PoS-майнер ничего не теряет (Nothing at stake). Очевидно, что программное обеспечение проекта по умолчанию не будет способствовать проведению атаки 51% путем майнинга любых доступных цепочек, но теория игр говорит о том, что, если индивидуальные интересы будут диктовать иную стратегию, теоретический PoS майнер модифицирует код соответствующим образом, следуя этой стратегии.
Для примера рассмотрим условный блокчейн c PoS и с уже эмитированными 18 млн монет, где все монеты распределены между 1 800 000 держателями равными частями (10 монет для каждого держателя). Какая-то часть держателей (возможно, и все) участвуют в майнинге PoS, поэтому каждый раз, когда создается блок, это делает один из 1 800 000 владельцев.
Предположим что кто-то решает инициировать атаку 51% и решает подкупить майнеров на то, чтобы принять участие в майнинге вредоносной цепочки (например, цепочки, которая осуществляет двойную трату в интересах атакующего), мотивируя их тем, что тот, кто находит блок, получает повышенное вознаграждение (взятку).
Уточнение*: Тут важно подчеркнуть, что для атакующего экономически наиболее выгодной стратегией подкупа будет взятка в форме назначения дополнительной награды за блок в его альтернативной цепи, таким образом ему не надо подкупать каждого майнера индивидуально, и стоимость атаки сводится к сумме вознаграждений за блоки в его цепи (6 блоков, к примеру).
Считается, что атака будет успешной, если майнеру удалось мотивировать 51% PoS майнеров на участие в атаке, и поскольку майнерам вычислительно ничего не стоит майнить любое количество цепочек, их легко (дешево) мотивировать на участие в атаке.
Анализ практических аспектов
Нельзя рассматривать теорию игр Nothing at stake, не учитывая, что PoS майнер является держателем монет, и лично заинтересован в сохранении/увеличении цены монеты. Стоимость монеты складывается из огромного количества факторов, но непосредственным условием существования ликвидности является фактическая способность сети выполнять свою непосредственную функцию — надежно проводить платежи, и если сеть будет скомпрометирована двойной тратой через атаку 51%, последствия могут быть самые фатальные — начиная с серьезных обвалов курса и заканчивая делистингом с бирж, которые в первую очередь страдают от таких атак.
Таким образом, в случае, если сеть переключится на вредоносную цепочку, подкупленный PoS майнер рискует только эквивалентом ценности своих монет. Аналогично с “Трагедией общих ресурсов”, средний PoS-майнер мотивируется личной выгодой больше, чем заботой о безопасности сети. Если его собственная прибыль (в случае, когда он выигрывает блок во вредоносной альтернативной цепочке) будет больше, чем его потенциальная потеря (т.е. более 10 монет), тогда у майнера все еще будет мотивация присоединиться к атаке.
Теперь давайте рассмотрим практические обстоятельства и, самое главное, сравним их с классическими PoW-системами. Напомню, что приведенный выше пример описывает нереалистичную валюту с совершенно равномерным распределением, чего не встречается в реальной жизни.
Несколько раз я слышал интересное мнение, что любая криптовалюта, будучи типичной финансовой системой, имеет ту же модель, что и глобальное распределение богатства, и якобы поведение криптовалютных рынков подтверждает это.
Для того чтобы приблизительно оценить характер распределения монет, как пример возьмем самый масштабный проект с самой развитой экосистемой и самым большим количеством держателей — Bitcoin. К счастью, модель приватности позволяет это сделать без особых трудностей. Таблица ниже отражает текущее распределение монет по адресам, присутствующим в блокчейне.
Пояснение*: Количество адресов Bitcoin и количество держателей не равны, фактически средний держатель Bitcoin имеет несколько адресов, в основном из-за широко используемых иерархически детерминированных кошельков, не говоря уже о том, что держатель может контролировать несколько кошельков и множество адресов. Таким образом, реальное распределение гораздо более централизовано, но, чтобы быть точными и избежать подозрений в спекуляциях, будем придерживаться однозначно установленных фактов и базироваться на «оценке сверху».
Пояснение**: некоторые адреса принадлежат биржам и могут представлять разных держателей за инфраструктурой биржи, но, с точки зрения модели PoS, это не имеет никакого значения, поскольку этот аккаунт имеет право подтверждать историю транзакций, создавая блоки в соответствии с его балансом.
Здесь мы не будем оперировать словом Bitcoin в анализе атак 51%, который пойдет ниже. Это было бы неправильно по ряду объективных причин: Bitcoin — уникальный проект, и он существует в немного другой технологической реальности (практически невозможно найти дополнительный хэшрейт для такого крупного игрока, трудно подкупить ASIC-майнеров в силу специфичности их оборудования и т.п). Мы будем анализировать далее обезличенный проект.
Теперь вернемся к таблице выше и будем считать, что у нас есть два отдельных, но одинаковых проекта с аналогичным распределением монет — PoS проект и PoW проект, которые мы попытаемся атаковать.
PoS
Как мы выяснили выше, для того чтобы мотивировать PoS майнеров взяткой, она должна быть не менее эквивалента ценности имеющихся у майнера монет. Если мы устанавливаем размер взятки, например, в 0.01 монеты, мы охватываем только владельцев кошельков для первой и второй строчки (0.15% всех монет), для остальных мотивация будет недостаточна. Если увеличить до 1 монеты, то мы уже охватываем 4 строчки, и это уже 4.57% — все еще безнадежно мало. Для того чтобы достичь 51%, нам придется дойти до строчки с балансами в 100-1000 монет. Взятка в 100 монет охватит только 38.44% монет, а в 1000 монет охватит уже 58.29%, поэтому считаем на глаз — взятка в 750 монет может убедить 51% майнеров принять участие в атаке.
PoW
Допустим, вознаграждение за блок на данный момент составляет 12.5 монет, и, грубо говоря, добыча 6 блоков (количество подтверждений по умолчанию) должна стоить не более 75 монет (эквивалент стоимости этих монет, с точки зрения стоимости хэшрейта). Это очень важно — фактически стоимость атаки 51% равна 75 монет (76, если кому-то важно). Это не было проблемой раньше, в те времена, когда майнеры сами настраивали свои фермы на майнинг конкретного проекта, потому что он им нравился или потому что их оборудование эффективнее всего работало с этим алгоритмом. Свободных мощностей, способных обогнать главную цепочку, было негде взять. А теперь оборудование свободно сдается в аренду на открытых площадках (сервисы наподобие Nicehash), и это делает атаку 51% на PoW проект как минимум в 10 раз дешевле, чем атака на аналогичный проект с PoS.
Но есть еще пара тем для размышления:
1. В реальных PoS проектах, как правило, только часть эмитированных монет участвует в майнинге, и характерным является то, что для миноритарных держателей майнинг PoS невыгоден из-за низкой вероятности найти блок против затрат на электроэнергию, поэтому в действительности большая часть мощности PoS создается средними и относительно крупными держателями, что делает атаку еще сложнее, согласно изложенному выше. Кроме того, мы взяли распределение монет для самого крупного и массового проекта, а для типичного проекта в первой сотне Coinmarketcap распределение еще больше усложнит атаку с подкупом, не говоря уже о стартапе, который вы возможно собираетесь делать на этих выходных.
2. ASIC. В PoW лагере мнения раскололись: одни считают это злом и изобретают алгоритмы хэширования, которые должны максимально эффективно работать на массовом оборудовании (ProgPoW, RandomX). Их оппоненты не напрягаются и используют быстрые криптостойкие алгоритмы (SHA-256, SHA-3, Blake), утверждая, что ASIC — это на самом деле — защита от 51%. И на фоне изложенных выше соображений последние выглядят даже более жизнеспособными, но только до той минуты, пока ASIC-устройства внезапно не обретут способность майнить не один, а несколько родственных алгоритмов (эта способность имеется у некоторых ASIC, например, Giant+A2000), хотя такие устройства и проигрывают более специализированным. И нужно еще учитывать один важный нюанс — с момента запуска проекта до появления в свободной продаже первого ASIC на него может пройти довольно много времени, и все это время проект будет сильно уязвим.
3. Атака на основе Nothing At Stake — это чисто теоретическая атака с множеством допущений. Например, необходимым условием является допущение, что у атакующего есть непосредственный канал связи со всеми холдерами, которых он намеревается подкупить, для того чтобы организовать эту атаку. Это мало реалистично, во-первых. Во-вторых, это едва ли можно будет удержать в тайне от бирж, которые будут в состоянии принять меры, чтобы защитится от этого (например, временно приостановить депозиты или увеличить количество подтверждений до неадекватного количества). Когда мы говорим об атаке против 51% против PoW, это очень линейный практический сценарий, который совершался не раз,например, на Ethereum Classic.
Как «усилить» консенсус
Как было сказано выше, проблема Nothing at stake является чисто теоретической, и нет ни одного подтверждения реально осуществленным атакам на базе этой уязвимости, однако, если после прочтения вышеизложенного сложилось впечатление, что проблема неактуальна совсем, то это не так. Проблема существует, хоть и на другом уровне относительно PoW, и для ее решения прилагаются немалые усилия. Среди существующих решений я выделил два основных направления, о которых расскажу очень коротко.
Решения на основе Byzantine Fault Tolerance
Алгоритмы BFT изучаются уже около 30 лет, и существует хорошая научная база, доказывающая надежность алгоритмов этого семейства, в том числе и pBFT (надежность обеспечивается в случае, если количество нечестных участников консенсуса в системе не превышает одной трети). Существует несколько проектов, которые используют этот подход для осуществления или усиления консенсуса, и большинство из них утверждают, что в связи с этим они получают свойство, которое называется «finality», что можно перевести как «окончательность». Под ним понимается невозможность перестроить цепочку (а, следовательно, отменить транзакцию) после какого-то количества подтверждений. Напомню, что в классическом консенсусе Накамото переключение на другую подцепочку может произойти на любую глубину, и, следовательно, даже после множественных подтверждений нет 100% гарантии, что транзакция не будет отменена.
Рассмотрим суть такого подхода на примере технологии Casper, которая разрабатывается командой Ethereum.
Уточнение***: На самом деле в Ethereum рассматриваются две модели PoS — одна под авторством Влада Замфира «A Template for Correct-by-construction consensus protocols» (Casper CBC) и вторая под авторством Виталика Бутерина и Вирджила Гриффита «Casper the Friendly Finality Gadget» (Casper FFG). В данной статье мы рассмотрим последний вариант, т. к. он скорее всего будет использован в Ethereum. Подробнее о различиях этих подходов читайте в этой статье.
Casper FFG позиционируется как улучшение модели консенсуса, потенциально применимое к любой PoW системе, и архитектурно представляет собой надстройку над PoW. Основная идея заключается в том, что раз в 100 блоков группа PoS валидаторов динамически формирует чекпойнты. Для того чтобы стать валидатором, нужно сформировать специальный депозит, ассоциированный с адресом валидатора, и в дальнейшем этот депозит может быть использован для стимулирования честного поведения валидатора (об этом ниже). Алгоритм безопасен, пока ⅔ из валидаторов ведут себя честно, при том, что ⅔ определяются именно по количеству монет в кошельке.
Для того чтобы стимулировать валидаторов на честное поведение, используется механизм, который называется «Slasher» — в случае, если было замечено, что валидатор голосовал в альтернативной цепочке (альтернативной относительно рассматриваемой на той же высоте), то заметивший это может приложить доказательство такого голосования в его цепочке, и тогда депозит нечестного валидатора будет уничтожен, нашедшему «нарушение» будет выплачена соответствующая мотивирующая комиссия. Кроме того, предполагается, что если пользователь зарегистрировался как PoS валидатор, внеся соответствующий депозит, но при этом фактически не участвует в валидации, то его депозит постепенно уменьшается.
Таким образом, с точки зрения протокола Casper FFG, после двух чекпойнтов блоки обладают свойством «finality», т.е. если ⅔ валидаторов два раза подтвердили чекпойнты в цепочке, то блок, находящийся под чекпойнтами, не может быть отменен.
Сомнительной частью в такой модели, с точки зрения автора, является то, что набор PoS валидаторов ограничен конечным числом. Очевидно, что такое число будет неким компромиссом между размером доказательства (т.е. количества подписей, численно больше валидаторов — больше размер суммарного доказательства голосования) и степенью децентрализации — чем меньше валидаторов, тем больше централизация. Все сильно зависит от того, какие параметры в конце концов будут выбраны в конкретной реализации, но в целом модель может получиться гораздо более централизованной, чем рассмотренная в первой части общая тенденция.
Гибридные решения
Также есть ряд проектов, в которых устойчивость консенсуса достигается за счет гибридизации PoW и PoS. Чаще всего с гибридом PoW/PoS ассоциируют проект Decred. Они использует систему тикетов, которые покупаются за определенное количество монет, и эти тикеты получают право голосовать за блок спустя какое-то время, и далее вероятность подтвердить блок для тикета растет со временем — чем больше возраст, тем больше шансов (в каком-то смысле это тоже является системой депозитов). В этой статье приводится доказательство Jake Yocom-Piatt, в котором утверждается, что в сети Decred стоимость атаки 51% для атакующего, имеющего незначительное количество PoS, будет в 20 раз больше, чем для Bitcoin. Однако при расчетах по какой-то причине указывается стоимость покупки оборудования, несмотря на то, что в таких моделях принято подсчитывать стоимость аренды хэшрейта на время проведения атаки.
Другим интересным примером гибридного PoW/PoS является Zano, проект, основанный на технологии конфиденциальности. Прежде всего, согласно теории Nothing at stake, атакующий должен иметь возможность коммуникации с холдерами, чтобы убедить их принять участие в атаке. В случае анонимной криптовалюты, в блокчейне которой нет информации ни об адресах, ни о балансах кошельков, это сделать будет еще сложнее.
Для того чтобы защититься от Long Range атаки, а также от проблемы Nothing at stake, в Zano используется специальное правило выбора цепочки (fork choice rule), которое анализирует не суммарную сложность всей цепочки (от генезиса), а всегда сравнивает только две подцепочки относительно точки разветвления и предпочитает такую ветку, которая минимально изменяет соотношение PoW сложности к PoS сложности, при этом сохранив или увеличив кумулятивную сложность. Таким образом, для того чтобы реализовать атаку 51%, даже если атакующему удалось подкупить какое-то количество PoS майнеров, ему также придется инвестировать существенное количество денег для обеспечения PoW-части атаки, что в конечном итоге гораздо дороже, чем атака на классический PoW или PoS по от отдельности.
Резюме
Несмотря на потенциальное противоречие идеям децентрализации, текущие решения, обеспечивающие «окончательность» («finality») на основе pBFT, выглядят более защищенными от целого спектра атак, включая Long Range атаки и Nothing at stake, а также открывают возможность для реализации надежных чистых PoS систем в будущем. Но вопрос о том, где находится правильный баланс между централизацией и надежностью, остается открытым, что дает неплохие шансы гибридным решениям.
Можно уточнять обстоятельства приведенных примеров и погружаться в тонкости вроде «насколько сильно упадет цена при атаке, как сильно повлияет на ликвидность намерение продавать сразу у большого количества осведомленных об атаке холдеров, возникнет ли такое желание у всех холдеров» и т.д., но главная концепция этой статьи заключается в том, что у PoS майнеров в силу того, что «майнящий ресурс» не отчуждаем от сети, степень естественной лояльности в отношении сети выше по сравнению с PoW майнерами, и я глубоко убежден, что это обстоятельство определит горизонт развития индустрии.
*Мнение автора статьи не совпадает с мнением редакции. В частности, в ней возможно преувеличены недостатки PoW и не описаны ключевые нерешенные проблемы PoS, такие как централизованная начальная эмиссия и распределение, непрозрачность владения, необратимость доминирования крупных держателей и пр. Если вы желаете принять участие в дискуссии по теме консенсуса в блокчейнах, вы можете высказать свое мнение на форуме или в комментариях к этой статье.