Очень коротко о себе.
Как-то давно на Хабре обо мне писали в этой статье, однако часть аудитории, интересующаяся блокчейн технологиями, почти наверняка знакома с моей работой через проект Monero, у которого оригинальная кодовая база(CryptoNote) была разработана в основном моими усилиями(подтверждается это в частности моей фамилией в исходниках). Последние 7 лет для меня были связаны исключительно с разработкой в этой сфере, и есть мысли которыми хотелось бы поделиться.
Хотите узнать, почему PoW проекты вымрут?
Наверное, сейчас будет скептический вздох, а кто-то и вовсе закатит глаза. Ничего не поделать, везде пишут, что заголовок «с вызовом» заставит прочитать как минимум начало статьи (интересно, сработало?).
В недавней беседе с редактором одного крупного российского крипто-медиа, я выяснил, что критика PoW уже на уровне подсознания многими воспринимается как ересь. А когда речь зашла о практических трудностях, например, что для небольшого начинающего блокчейн проекта с чистым PoW шансы устоять к атаке 51% довольно слабые, я услышал, что PoW — он (внимание) только для больших проектов!
Бесконечные дискуссии (а, как известно, интернет — это место для рациональных и обдуманных комментариев) на тему «PoW vs PoS» приводят к тому, что поляризация криптовалютного сообщества носит чуть ли не религиозный характер.
В этой статье я расскажу, почему Nothing at Stake принято считать ахиллесовой пятой PoS, а затем покажу, почему это не так.
Появление PoS
История возникновения PoS уходит в 2011-й год, когда на старом добром bitcointalk стали высказываться идеи консенсуса на основе голосования «холдеров» (а не майнеров), и подогревало интерес к ним в то время бесполезное сжигание электричества при майнинге PoW.
Первой реализацией стала PeerCoin[9], которая, как позже выяснилось, обладала и рядом характерных для PoS недостатков. Но рубикон был пройден, и началось постепенное осмысление новой парадигмы.
Сегодня есть огромное количество проектов, которые так или иначе используют одну из разновидностей PoS моделей (DPoS, LPOS, POI, PoA и т.п.). Несмотря на то, что у всех этих алгоритмов свои названия, с точки зрения автора, в основном это вариации на тему PoS. Мы в конце статьи очень коротко рассмотрим несколько примеров, которые интересны именно в контексте поднятой проблемы.
Проблема «Nothing at stake» в PoS системах
Почти каждая модель PoS подвергается критике за то, что она уязвима к так называемой проблеме «Nothing at stake». Идея этой атаки связана с явлением, известным как «Трагедия общих ресурсов» (Tragedy of the commons)[1]. В общем виде «Трагедии общих ресурсов» описываются как ряд явлений, в которых интересы индивидов могут противоречить благам общего пользования, и как наиболее простой пример приводят общее пастбище, нерациональное пользование которым со стороны большинства приводит к истощению этого ресурса целиком. Таким же образом может рассматриваться произвольный блокчейн проект, в котором как благо общего пользования подразумевается возможность майнинга и получения вознаграждения.
В отличие от PoW, где майнинг является вычислительно дорогим процессом и может одновременно осуществляться в отношении какой-то одной цепочки, в PoS майнинге не делается никаких дополнительных затрат/усилий (значимых) для голосования в альтернативной цепочке, другими словами, майня так же вторую цепочку, PoS-майнер ничего не теряет (Nothing at stake). Очевидно, что программное обеспечение проекта по умолчанию не будет способствовать проведению атаки 51% путем майнига любых доступных цепочек, но теория игр (и это не про Доту, а про то, о чем Джон Нэш писал) говорит о том, что, если индивидуальные интересы будут диктовать иную стратегию, теоретический PoS майнер модифицирует код соответствующим образом, следуя этой стратегии.
Для примера рассмотрим условный блокчейн проект c POS и с уже эмитированными 18 млн монет, где все монеты распределены между 1800000 держателями равными частями (10 монет для каждого держателя). Какая-то часть держателей (может, и все) участвуют в майнинге PoS, поэтому каждый раз, когда создается блок, это делает один из 1800000 владельцев.
Предположим что кто-то решает инициировать атаку 51% и решает подкупить майнеров на то, чтобы принять участие в майнинге вредоносной цепочки (например, цепочки, которая осуществляет двойную трату в интересах атакующего), мотивируя их тем, что тот, кто находит блок, получает повышенное вознаграждение (взятку).
Уточнение*: Тут важно подчеркнуть, что для атакующего экономически наиболее выгодной стратегией подкупа будет взятка в форме назначения дополнительной награды за блок в его альт-цепи, таким образом ему не надо подкупать каждого майнера индивидуально, и стоимость атаки сводится к сумме вознаграждений за блоки в его альт-цепи (6 блоков, к примеру).
Считается, что атака будет успешной, если майнеру удалось замотивировать 51% PoS майнеров на участие в атаке, и поскольку майнерам вычислительно ничего не стоит майнить любое количество цепочек, считается что их легко (дешево) мотивировать на участие в атаке.
Анализ практических аспектов
Нельзя рассматривать теорию игр nothing at stake, не учитывая, что PoS майнер является холдером, и, с точки зрения личных интересов, заинтересован также в сохранении/увеличении цены монеты. Стоимость монеты складывается из огромного количества факторов, но непосредственным условием существования ликвидности является фактическая способность сети выполнять свою непосредственную функцию — надежно проводить платежи (тут мы говорим о фактических блокчейн проектах, а не о токенах), и если сеть будет скомпрометирована двойной тратой через атаку 51%, последствия могут быть самые фатальные — начиная серьезными обвалами курса и заканчивая делистингом с бирж, которые в первую очередь страдают от таких атак.
Таким образом, в случае, если сеть переключится на вредоносную цепочку, подкупленный PoS майнер рискует только эквивалентом ценности своих монет. Аналогично с “Трагедией общих ресурсов”, средний PoS-майнер мотивируется личной выгодой больше, чем заботой о безопасности сети. Если его собственная прибыль (в случае, когда он выигрывает блок во вредоносной альтернативной цепочке) будет больше, чем его потенциальная потеря (т.е. более 10 монет), тогда у майнера все еще будет мотивация присоединиться к атаке.
Теперь давайте рассмотрим практические обстоятельства и, самое главное, сравним их с классическими PoW-системами. Напомню, что приведенный выше пример описывает нереалистичную валюту с совершенно равномерным распределением, чего не встречается в реальной жизни.
Несколько раз я слышал интересное мнение, что любая криптовалюта, будучи типичной финансовой системой, имеет ту же модель, что и глобальное распределение богатства [2] (Рис. ниже), и якобы поведение криптовалютных рынков подтверждает это.
Для того чтобы приблизительно оценить характер распределения монет, как пример возьмем самый масштабный проект с самой развитой экосистемой и самым большим количеством держателей — Bitcoin. К счастью, модель приватности позволяет это сделать без особых трудностей. Таблица ниже взята из [3] и отражает текущее распределение монет по адресам, присутствующим в блокчейне.
Пояснение*: Количество адресов Bitcoin и количество держателей не равны, фактически средний держатель Bitcoin имеет несколько адресов, в основном из-за широко используемых иерархических детерминированных кошельков [4], не говоря уже о том, что держатель может контролировать несколько кошельков. Таким образом, реальная картина гораздо более централизованна, но, чтобы быть точными и избежать подозрений в спекуляциях, будем придерживаться однозначно установленных фактов и базироваться на «оценке сверху».
Пояснение**: некоторые адреса принадлежат биржам и могут представлять разных держателей за инфраструктурой биржи, но, с точки зрения модели PoS, это не имеет никакого значения, поскольку этот аккаунт имеет право подтверждать историю транзакций, создавая блоки в соответствии с его балансом.
Для того чтобы сохранить непредвзятость, мы не будем оперировать словом Bitcoin в анализе атак 51%, который пойдет ниже. Это было бы неправильно по ряду объективных причин: Bitcoin — уникальный проект, и он существует в немного другой технологической реальности (практически невозможно найти дополнительный хэшрейт для такого крупного игрока, трудно подкупить ASIC-майнеров в силу специфичности их оборудования и т.п). Мы будем анализировать далее обезличенный технологический аспект.
Теперь вернемся к таблице 1 и будем считать, что у нас есть два отдельных, но одинаковых проекта с точно таким же широким распределением монет — 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, если кому-то важно). Это не было проблемой раньше, в те времена, когда майнеры сами настраивали свои риги на майнинг конкретного проекта, потому что он им нравился или потому что их оборудование эффективнее всего работало с этим хешем. Свободных мощностей, способных обогнать главную цепочку, было негде взять. А теперь оборудование свободно сдается в аренду на открытых площадках (сервисы наподобие www.nicehash.com, что-то типа uber в мире майнинга), и это делает атаку 51% на PoW проект как минимум в 10, в целых 10 раз дешевле, чем атака на аналогичный проект с PoS. C ума сойти можно!
Но мы еще не закончили, есть еще несколько моментов:
1. В реальных PoS проектах, как правило, только часть эмитированных монет участвует в майнинге, и характерным является то, что для миноритарных держателей майнинг PoS невыгоден из-за низкой вероятности найти блок против затрат на электроэнергию, поэтому в действительности большая часть мощности PoS создается средними и относительно крупными держателями, что делает атаку еще сложнее, согласно изложенному выше. Кроме того, мы взяли распределение монет для самого крупного и массового проекта, а для типичного проекта в первой сотне coinmarket cap распределение еще больше усложнит атаку с подкупом, не говоря уже о начинающем блокчейн стартапе, который вы возможно собираетесь делать на этих выходных.
2. ASIC. В PoW лагере мнения раскололись: большинство считают это злом и изобретают хеши, которые должны максимально эффективно работать на массовом оборудовании (ProgPoW, RandomX). Их оппоненты не напрягаются и используют быстрые криптостойкие хеши (sha256, sha3, blake), утверждая, что ASIC — это хоть и централизация, но на самом деле — защита от 51%. И на фоне изложенных выше соображений последние выглядят даже более жизнеспособными, но только до той минуты, пока ASIC-устройства внезапно не обретут способность майнить не один, а несколько родственных хешей. Хотя постойте, они уже эту способность обрели (например, Giant+A2000). И нужно еще учитывать один важный нюанс — с момента запуска проекта до появления в свободной продаже первого ASIC на него может пройти довольно много времени, и все это время проект будет сильно уязвим.
3. Атака на основе Nothing At Stake — это чисто теоретическая атака с множеством допущений. Например, необходимым условием является допущение, что у атакующего есть непосредственный канал связи со всеми холдерами, которых он намеревается подкупить, для того чтобы организовать эту атаку. Это мало реалистично, во-первых. Во-вторых, это едва ли можно будет удержать в тайне от самих бирж, которые будут в состоянии принять меры, чтобы защитится от этого (например, временно приостановить депозиты или увеличить количество подтверждений до неадекватного количества). Когда мы говорим об атаке 51% против PoW, это очень линейный практический сценарий, который, кстати говоря, совершался не раз, недавно вот, например, на Ethereum Classic [11][12].
Как «усилить» консенсус
Как было сказано выше, проблема Nothing at stake является чисто теоретической, и не нашел ни одного подтверждения реально осуществленным атакам на базе этой уязвимости, однако, если после прочтения вышеизложенного сложилось впечатление, что проблема неактуальна совсем, то это не так. Проблема существует, хоть и на другом уровне относительно PoW, и для ее решения прилагаются немалые усилия. Среди существующих решений я выделил два основных направления, о которых расскажу очень коротко.
Решения на основе Byzantine Fault Tolerance
Алгоритмы BFT изучаются уже около 30 лет, и существует хорошая научная база, доказывающая надежность алгоритмов этого семейства, в том числе и pBFT (надежность обеспечивается в случае, если количество нечестных участников консенсуса в системе не превышает одной трети). Существует несколько проектов, которые используют этот подход для осуществления или усиления консенсуса, и большинство из них утверждают, что в связи с этим они получают свойство, которое называется «finality», что можно перевести как «окончательность». Под ним понимается невозможность перестроить цепочку (а, следовательно, отменить транзакцию) после какого-то количества подтверждений. Напомню, что в классическом консенсусе Накамото переключение на другую подцепочку может произойти на любую глубину (но не глубже чек поинтов очевидно), и, следовательно, даже после множественных подтверждений нет 100%-й гарантии, что транзакция не будет отменена.
Рассмотрим суть такого подхода на примере технологии Casper, которая разрабатывается командой Ethereum[5].
Уточнение***: На самом деле в ethereum рассматриваются две модели PoS — одна под авторством Vlad Zamfir «A Template for Correct-by-construction consensus protocols» и вторая под авторством Vitalik Buterin и Virgil Griffith «Casper the Friendly Finality Gadget». В данной статье мы рассмотрим последний вариант, т.к. он скорее всего будет использован в Ethereum.
Casper позиционируется как улучшение модели консенсуса, потенциально применимое к любой PoW системе, и архитектурно представляет собой надстройку над PoW. Основная идея заключается в том, что раз в 100 блоков группа PoS валидаторов динамически формирует чекпоинты. Для того чтобы стать валидатором, нужно сформировать специальный депозит, ассоциированный с адресом валидатора, и в дальнейшем этот депозит может быть использован для стимулирования честного поведения валидатора (об этом ниже). Алгоритм безопасен, пока ⅔ из валидаторов ведут себя честно, при том, что ⅔ определяются именно по количеству денег на депозите.
Для того чтобы стимулировать валидаторов на честное поведение, используется механизм, который называется «Slasher» — в случае, если было замечено, что валидатор голосовал в альтернативной цепочке (альтернативной относительно рассматриваемой на той же высоте), то заметивший это может приложить доказательство такого голосования в его цепочке, и тогда депозит нечестного валидатора будет уничтожен, нашедшему «нарушение» будет выплачена соответствующая мотивирующая комиссия. Кроме того, предполагается, что если пользователь зарегистрировался как PoS валидатор, внеся соответствующий депозит, но при этом фактически не участвует в валидации, то его депозит постепенно уменьшается.
Таким образом, с точки зрения протокола Casper, после двух чекпоинтов блоки обладают свойством «finality», т.е. если ⅔ валидаторов два раза подтвердили чекпоинты в цепочке, то блок, находящийся под чекпоинтами, не может быть отменен.
Сомнительной частью в такой модели, с точки зрения автора, является то, что набор PoS валидаторов ограничен конечным числом. Очевидно, что такое число будет неким компромиссом между размером доказательства (т.е. количества подписей, численно больше валидаторов — больше размер суммарного доказательства голосования) и степенью децентрализации — чем меньше валидаторов, тем больше централизация. Все сильно зависит от того, какие параметры в конце концов будут выбраны в конкретной реализации, но в целом модель может получиться гораздо более централизованной, чем рассмотренная в первой части общая тенденция.
Гибридные решения
Также есть ряд проектов, в которых устойчивость консенсуса достигается за счет гибридизации PoW и PoS. Чаще всего с гибридом PoW/PoS ассоциируют проект Decred [6]. Они использует систему тикетов, которые покупаются за определенное количество монет, и эти тикеты получают право голосовать за блок спустя какое-то время, и далее вероятность подтвердить блок для тикета растет со временем — чем больше возраст, тем больше шансов (в каком-то смысле это тоже является системой депозитов). В [7] приводится доказательство Jake Yocom-Piatt, в котором утверждается, что в сети Decred стоимость атаки 51% для атакующего, имеющего незначительное количество PoS, будет в 20 раз больше, чем для Bitcoin. Однако при расчетах по какой-то причине указывается стоимость покупки оборудования, несмотря на то, что в таких моделях принято подсчитывать стоимость аренды хешрейта на время проведения атаки.
Другим интересным примером гибридного PoW/PoS является Zano[8], проект, основанный на прайваси технологии (сейчас по большому секрету скажу, что это наш проект — знаю, неожиданно). Прежде всего, согласно теории 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 майнерами, и я глубоко убежден, что это обстоятельство определит горизонт развития индустрии.
Не согласны? Напишите в комментарии свою точку зрения!
Источники:
- en.wikipedia.org/wiki/Tragedy_of_the_commons
- en.wikipedia.org/wiki/Distribution_of_wealth
- bitinfocharts.com/top-100-richest-bitcoin-addresses.html
- en.bitcoin.it/wiki/Deterministic_wallet
- arxiv.org/pdf/1710.09437.pdf
- docs.decred.org
- medium.com/decred/decreds-hybrid-protocol-a-superior-deterrent-to-majority-attacks-9421bf486292
- zano.org/downloads/zano_wp.pdf
- www.peercoin.net
- medium.com/@slowmist/the-analysis-of-etc-51-attack-from-slowmist-team-728596d76ead
- bravenewcoin.com/insights/more-51-blockchain-attacks-expected