Проблема двойных расходов

Обычно биткойнеры не слишком заботятся о том, что происходит в shitcoin-land, но теперь, когда Ethereum слился с Proof-of-Stake (PoS), в Twitter Bitcoin было довольно шумно. Конечно, сама сеть Bitcoin останется незатронутой, но я думаю, что на это «обновление» все же стоит обратить некоторое внимание. Теперь, когда Ethereum очистился от «грязных» и «расточительных» внешних эффектов, связанных с Proof-of-Work (PoW), мы можем ожидать, что следы сойдут в повествовательной войне, и я думаю, что биткойнеры должны быть готовы нанести ответный удар.

Изучение того, как работает PoS, является действительно хорошим способом усвоить различия и компромиссы между PoW и PoS. Несмотря на то, что я видел все аргументы высокого уровня против PoS раньше — что PoS является более разрешенным, централизующим и олигархическим — я признаю, что, не вдаваясь в детали, все это казалось своего рода волнистым. Фактически погружаясь в алгоритм PoS, мы можем начать видеть, как все эти свойства естественным образом возникают из первых принципов. Поэтому, если вам интересно, как работает алгоритм PoS и почему он приводит к таким свойствам, то читайте дальше!

Решение проблемы двойных расходов

Давайте начнем с краткого обзора проблемы, которую мы пытаемся решить. Предположим, что у нас есть большая группа участников криптовалютной сети, пытающихся поддерживать децентрализованный реестр. Вот в чем проблема: как можно добавить новые транзакции в реестр каждого, чтобы все согласились с тем, какие новые транзакции являются «правильными»? PoW решает эту проблему довольно элегантно: транзакции группируются вместе в блоки, в результате чего каждый блок требует большого объема вычислительной работы для производства. Объем требуемой работы может перемещаться вверх или вниз, чтобы обеспечить производство блоков в среднем каждые десять минут, давая каждому новому блоку достаточно времени для распространения по всей сети до создания следующего. Любая двусмысленность разрешается путем выбора цепочки с наибольшим количеством работы, а двойные расходы предотвращаются из-за того, что требуется не менее 51% глобальной хэш-мощности для блока двойных расходов, чтобы наверстать упущенное.

Но предположим, что теперь мы хотим отбросить ключевое понимание Сатоши, которое сделало все это возможным в первую очередь. В конце концов, эти надоедливые ASIC громкие и раздражающие, и они потребляют больше энергии, чем все частные самолеты Джорджа Сороса, Билла Гейтса и Хиллари Клинтон вместе взятые. Есть ли какой-то способ, которым мы можем однозначно договориться о том, какие транзакции верны, просто выговорив об этом?

Доказательство доли Ethereum решает эту проблему, используя два ключевых ингредиента. Первый заключается в том, чтобы время от времени делать специальные «блоки контрольных точек», цель которых — дать уверенность всем в сети о «правде» системы в различные моменты времени. Создание контрольно-пропускной точки требует 2/3 большинства голосов по ставкам, поэтому есть некоторая уверенность в том, что большинство валидаторов согласились с тем, что на самом деле было правдой в тот момент времени. Второй ингредиент заключается в том, чтобы наказать пользователей за добавление двусмысленности в сеть, процесс, известный как «сокращение». Например, если бы валидатор создал форк или проголосовал за более старую сайдчейн (аналогично атаке 51%), то его доля была бы сокращена. Валидаторы также могут быть сокращены за неактивность, но не так сильно.

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

Мир — это совсем другое место для валидаторов, живущих в Ethereum-земле. Вместо того, чтобы усердно работать и получать вознаграждение за добавление безопасности в сеть, валидаторы не выполняют никакой реальной работы, но должны быть осторожны, чтобы их узел никогда не вел себя плохо, чтобы не увидеть, как их сбережения горят. Если бы в сеть были внесены какие-либо предлагаемые изменения, первым инстинктом валидатора было бы соблюдать все, что делают все остальные, иначе он рискует быть сокращенным. Быть валидатором – значит жить каждый день, гуляя по яичной скорлупе.

Кстати, жизнь при отрицательной системе стимулирования является одним из, гм, «преимуществ» доказательства доли, согласно FAQ Виталика:

Так как же на самом деле будет работать сокращение на техническом уровне? Разве нам не нужно было бы сначала создать список всех валидаторов, чтобы иметь что-то, что можно сократить в первую очередь? Ответ – да. Чтобы стать валидатором в Ethereum, необходимо сначала переместить ETH в специальный адрес «стейкинга». Этот список нужен не только для урезания, но и для голосования, так как для блокировок контрольных точек необходимо большинство в 2/3 голосов.

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

Первым шагом в становлении валидатора является внесение некоторого ETH в специальный адрес ставки. Сколько стоит ETH? Минимальный требуемый показатель составляет 32 ETH, или около 50 000 долларов США на момент написания этой статьи. Для контекста, приличная установка для майнинга биткойнов обычно работает в однозначных тысячах, а домашний майнер может начать с одного S9 за несколько сотен долларов. Честно говоря, высокая плата за вход ETH имеет техническое обоснование, поскольку более высокая ставка означает меньшее количество валидаторов, что снижает пропускную способность.

Таким образом, комиссия за депозит высока, но, по крайней мере, любой, кто владеет 32 ETH, может присоединиться или уйти в любое время, верно? Не совсем. Существуют риски безопасности, если большие коалиции валидаторов будут входить или выходить одновременно. Например, если большая часть сети ушла сразу, то они могли бы дважды потратить завершенный блок, переиграв форк, в котором они никогда не выходили, не будучи разрезанными ни на одной цепочке. Чтобы снизить этот риск, пандусы имеют встроенный предел пропускной способности. В настоящее время это ограничение установлено для валидаторов для каждой эпохи (каждые 6,4 минуты) и одинаково как для входа, так и для выхода. Это приводит примерно к одному полному набору валидаторов каждые десять месяцев. Кстати, несмотря на то, что в настоящее время валидаторы могут опубликовать транзакцию «выхода» и прекратить проверку, код для фактического вывода средств еще даже не написан. Немного похоже на отель Калифорния…max(4,|V|/65536)

И последнее: о стимулах, лежащих в основе утверждения новых валидаторов. Предположим, вы являетесь акционером крупной и стабильной компании, выплачивающей регулярные дивиденды каждый квартал. Имеет ли смысл раздавать новые акции бесплатно? Конечно, нет, поскольку это разбавит дивиденды всех существующих акционеров. Аналогичная структура стимулирования существует в PoS, поскольку каждый новый валидатор разбавляет доход всех существующих валидаторов. Теоретически валидаторы могут просто подвергать цензуре каждую транзакцию, которая добавляет новый валидатор, однако на практике я думаю, что такой грубый подход был бы маловероятен. Это было бы очень заметно и разрушило бы имидж Ethereum «децентрализации» в одночасье, потенциально обрушив цену. Я думаю, что вместо этого будет использован более тонкий подход. Например, правила могут медленно меняться с течением времени, что затрудняет становление валидатора, при этом предлагаются такие оправдания, как «безопасность» или «эффективность». Любая политика, которая обогащает существующие валидаторы за счет новых валидаторов, будет иметь финансовые попутные ветры, независимо от того, произносятся ли они вслух или нет. Мы можем начать понимать, почему PoS будет стремиться к олигархии.

Обзор алгоритма Каспера

Теперь, когда мы знаем высокоуровневую стратегию, лежащую в основе PoS, как на самом деле работает алгоритм? Основные идеи, лежащие в основе контрольных точек и резки, были выдвинуты в алгоритме под названием Casper, поэтому мы начнем с этого. Сам Casper на самом деле ничего не указывает о том, как производить блоки, а скорее предоставляет основу для того, как наложить стратегию контрольной точки / сокращения поверх какого-то уже существующего дерева блокчейна.

Во-первых, некоторая произвольная константа C выбирается в качестве числа «интервала между контрольными точками», которое определяет, сколько блоков происходит между контрольными точками. Например, если C=100, то контрольные точки будут возникать в блоках 0, 100, 200 и так далее. Затем все узлы голосуют за то, какой блок контрольной точки должен быть следующей «оправданной» контрольной точкой. Вместо того, чтобы голосовать по отдельным блокам изолированно, валидаторы фактически голосуют за пары контрольных точек (s, t), которые связывают некоторые ранее оправданные источник контрольных точек «s» с какой-то новой целевой контрольной точкой «t». Как только контрольно-пропускная точка (s,t) получает 2/3 большинства голосов по доле, то t становится новой оправданной контрольной точкой. На приведенной ниже схеме показан пример дерева контрольных точек.

На этой диаграмме функция h(b) относится к «высоте контрольной точки», например, блоку, кратному 100. Возможно, вы заметили, что не каждый 100-й блок обязательно оправдан, что может произойти, если голосование провалилось на определенной высоте. Например, предположим, что на высоте 200 два отдельных контрольно-пропускных пункта получили по 50% голосов. Поскольку голосование дважды является преступлением, подлежащим сокращению, система «застрянет», если некоторые валидаторы добровольно не сократят свою собственную долю, чтобы получить 2/3 голоса. Решение будет заключаться в том, чтобы все «пропустили» контрольную точку 200 и «попробовали снова» в блоке 300.

То, что контрольно-пропускной пункт оправдан, не означает, что он завершен. Для того чтобы контрольно-пропускной пункт считался завершенным, за ним должен немедленно последовать еще один оправданный контрольно-пропускной пункт на следующей возможной высоте. Например, если контрольно-пропускные пункты 0, 200, 400, 500 и 700 были обоснованы и связаны друг с другом, только контрольно-пропускной пункт 400 будет считаться «завершенным», поскольку он является единственным, за которым сразу следует другой оправданный контрольно-пропускной пункт.

Поскольку терминология очень точна, давайте подведем итоги наших трех категорий. «Контрольная точка» — это любой блок, который находится на высоте C*n, поэтому, если C=100, то каждый блок с высотой 0, 100, 200, 300 и так далее будет контрольными точками. Даже если бы на высоте 200 было создано несколько блоков, они оба были бы «контрольными точками». Контрольная точка затем «оправдана», если это либо корневой блок на высоте 0, либо если 2/3 валидаторов проголосовали за создание связи между некоторой ранее оправданной контрольной точкой и текущей контрольной точкой. Оправданная контрольная точка затем «дорабатывается», если она затем связывается с другой оправданной контрольной точкой на следующей возможной высоте. Не каждый контрольно-пропускной пункт обязательно становится оправданным, и не каждый оправданный контрольно-пропускной пункт обязательно становится завершенным, даже в конечной цепочке.

Правила резки Каспера

Правила резки в Casper спроектированы таким образом, что две завершенные контрольные точки не могут существовать в двух отдельных форках, если только по крайней мере 1/3 валидаторов не нарушили правила резки. Другими словами, только завершенные контрольные точки должны когда-либо считаться однозначными блоками «правды». Возможно даже, что по обе стороны развилки могут возникнуть две оправданные контрольно-пропускные пункты, а не две завершенные контрольно-пропускные пункты. Также нет никакой гарантии относительно того, когда и где произойдет следующая завершенная контрольная точка, просто если произойдет раскол цепи, то вы должны сидеть сложа руки и ждать, пока где-то появится завершенный блок, и как только это произойдет, вы знаете, что это «правильная» цепочка.

В Casper есть два правила резки, которые принудительно применяют это свойство:

Первое правило запрещает кому-либо дважды голосовать на контрольных точках с одинаковой целевой высотой, поэтому, если бы валидатор проголосовал за два разных блока контрольных точек с целевой высотой 200, это было бы резким правонарушением. Цель этого правила состоит в том, чтобы предотвратить разделение цепочки на две разные оправданные контрольные точки с одинаковой высотой, поскольку для этого потребовалось бы 2/3 + 2/3 = 4/3 от общего числа голосов валидатора, подразумевая, что по крайней мере 1/3 валидаторов нарушили правила сокращения. Однако, как мы видели ранее, оправданные контрольные точки могут «пропускать» определенные высоты блоков. Что мешает цепочке раскалываться на разные целевые высоты? Например, разве контрольная точка 200 не может разветвляться на оправданные контрольно-пропускные пункты на 300 и 400 без того, чтобы кто-то был разрезан?

Вот тут-то и вступает в силу второе правило, которое в основном не позволяет валидаторам «зажимать» голоса внутри других голосов. Например, если валидатор проголосовал как за 300→500, так и за 200→700, это было бы преступлением, подлежащим сокращению. В случае разрыва цепи, как только одна ветвь видит завершенную контрольную точку, другая ветвь становится невозможной увидеть оправданную контрольную точку впоследствии, если только по крайней мере 1/3 валидаторов не нарушила правило No 2. Чтобы понять почему, предположим, что блокчейн разветвился на оправданные контрольные точки 500→800 и 500→900, а затем в какой-то момент первая цепочка увидела завершенную контрольную точку со звеном 1700→1800. Поскольку и 1700, и 1800 могут быть оправданы только на развилке No 1 (при условии, что никто не нарушил первое правило резки), единственный способ, которым развилка No 2 может увидеть оправданную контрольную точку после 1800 года, — это если бы была какая-то связь между высотами H<1700 и H>1800. Но поскольку это голосование будет «сэндвич» по ссылке 1700→1800 и потребует 2/3 голоса, а 1700→1800 уже прошли с 2/3 голоса, то по крайней мере 1/3 валидаторов должны будут нарушить правило No 2. В статье Каспера есть хорошая диаграмма, демонстрирующая это свойство:

И все, просто следуйте правилам Каспера, и вы хороши!

Кажется довольно простым, не так ли? Я уверен, что PoS будет использовать сокращение только в качестве абсолютного последнего средства для поддержания консенсуса, а не в качестве вымогательского механизма для оказания давления на валидаторов, чтобы они вели себя определенным образом. Правильно?

Это подводит нас к нашему третьему принципу, лежащему в основе PoS: нет никаких правил. «Правила» — это то, что все остальные говорят, что они есть.

В один прекрасный день ваш узел может технически следовать каждой заповеди Каспера до буквы Т, а на следующий день ваши сбережения могут быть сокращены, потому что вы делаете то, что не нравится всем остальным. Одобрили транзакцию TEAM-RED, что один раз? Завтра большинство TEAM-BLUE может вас порезать. Или, может быть, вы сделали обратное и пропустили слишком много транзакций TEAM-RED? Завтра большинство TEAM-RED может урезать вас за цензуру. Возможность сокращения выходит далеко за рамки ограниченной цензуры OFAC. PoS похож на безостановочное мексиканское противостояние, где скрытая угроза сокращения всегда присутствует.

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

Сколько времени?

Теперь, когда мы знаем основы контрольных точек и резких границ, мы можем перейти к фактическому алгоритму, используемому в Ethereum, называемому Gasper. Это портманто Каспера, о котором мы уже рассказывали, и GHOST, стратегия выбора «лучшей» цепочки блоков между контрольными точками.

Первое, что нужно понять о Гаспере, это то, что время само по себе является основной независимой переменной. Реальное время делится на двенадцатисекундные единицы, называемые «слотами», где каждый слот содержит не более одного блока. Эти слоты затем образуют большие группы, называемые «эпохами», где каждая эпоха относится к одной контрольной точке. Каждая эпоха содержит 32 слота, что делает их длиной 6,4 минуты. Стоит отметить, что эта парадигма переворачивает причинно-следственную связь между временем и производством блоков по сравнению с PoW. В PoW блоки создаются потому, что был найден действительный хэш, а не потому, что прошло достаточно времени. Но в Gasper блоки производятся, потому что прошло достаточно реального времени, чтобы добраться до следующего слота. Я могу только представить себе хитрые ошибки синхронизации, с которыми может столкнуться такая система, особенно когда это не просто одна программа, работающая на одном компьютере, а десятки тысяч компьютеров, пытающихся работать синхронно по всему миру. Надеюсь, разработчики Ethereum знакомы с ложью, в которую программисты верят о времени.

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

Это подводит нас к нашему четвертому принципу, лежащему в основе PoS, который заключается в том, что PoS опирается на субъективную истину. Просто нет объективного способа выбрать между двумя конкурирующими блокчейнами, и любые новые узлы в сети должны в конечном итоге доверять какому-то существующему источнику истины, чтобы разрешить любую двусмысленность. Это значительно контрастирует с Биткойном, где «истинная» цепочка всегда является той, в которой больше всего работы. Не имеет значения, если тысяча узлов сообщает вам цепочку X, если один узел транслирует цепочку Y, и она содержит больше работы, то Y является правильным блокчейном. Заголовок блока может доказать свою ценность, полностью устраняя необходимость в доверии.

Полагаясь на субъективную истину, PoS вновь вводит потребность в доверии. Теперь я признаю, что я, возможно, немного предвзят, поэтому, если вы хотите прочитать другую сторону, Виталик написал эссе, содержащее его взгляды здесь. Я признаю, что на практике раскол цепи не кажется таким уж вероятным, учитывая правила Каспера, но независимо от того, что я получаю некоторое спокойствие в Биткойне, зная, что это даже невозможно.

Производство блоков и голосование

Теперь, когда мы знакомы с слотами и эпохами, как создаются и голосуются отдельные блоки? В начале каждой эпохи полный набор валидаторов «случайным образом» разбивается на 32 группы, по одной для каждого слота. Во время каждого слота один валидатор «случайным образом» выбирается в качестве производителя блока, в то время как другие выбираются в качестве избирателей (или «аттестаторов»). Я ставлю «случайно» в кавычки, потому что процесс должен быть детерминированным, поскольку все должны однозначно договориться об одних и тех же наборах валидаторов. Однако этот процесс также должен быть неиспользуемым, поскольку быть производителем блока является очень привилегированным положением из-за дополнительных вознаграждений, доступных от Miner Extractable Value, или, как его переименовывают, «Максимальная извлекаемая ценность». Отличное чтение об этом — Ethereum — это Темный лес.

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

GHOST расшифровывается как «Greediest Heaviest Observed SubTree» и представляет собой жадный рекурсивный алгоритм для поиска блока с самой «последней активностью». По сути, этот алгоритм смотрит на все последние блоки в виде дерева и идет вниз по дереву, жадно выбирая ветвь с наиболее кумулятивными аттестациями на всю эту подветвь. Только самая последняя аттестация каждого валидатора засчитывается в эту сумму, и в конечном итоге этот процесс приземляется на какой-то листовой блок.

Аттестации — это не только голоса за текущий лучший блок, но и за самую последнюю контрольную точку, которая приводит к этому блоку. Стоит отметить, что в Гаспере контрольные точки основаны на эпохах, а не на высотах блоков. Каждая эпоха относится ровно к одному блоку контрольных точек, который является либо блоком в первом слоте этой эпохи, либо, если этот слот был пропущен, то самым последним блоком перед этим слотом. Один и тот же блок теоретически может быть контрольной точкой в две разные эпохи, если эпоха каким-то образом пропустила каждый отдельный слот, поэтому контрольные точки представлены с помощью пар (эпоха, блок). На приведенной ниже диаграмме EBB расшифровывается как «Epoch Boundary Block» и представляет собой контрольную точку для конкретной эпохи, в то время как «LEBB» расшифровывается как «Last Epoch Boundary Block» и представляет собой самую последнюю контрольную точку в целом.

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

В Gasper есть два условия резки, которые аналогичны правилам резки в Casper:

1) Нет голосования дважды в одну и ту же эпоху.

2) Ни одно голосование не может содержать контрольные точки эпохи, которые «сэндвич» с контрольно-пропускными пунктами эпохи другого голосования.

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

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

Форки

Интересно подумать о том, что произойдет в случае с вилкой. Чтобы быстро резюмировать, форк относится к изменению правил консенсуса, и они бывают двух разновидностей: хардфорки и софтфорки. В хардфорке новые правила не являются обратно совместимыми, что потенциально может привести к двум конкурирующим блокчейнам, если не все переключаются. В софтфорке новые правила более ограничительны, чем старые, сохраняя при этом обратную совместимость. Как только более 50% майнеров или валидаторов начинают применять новые правила, механизм консенсуса переключается без разделения цепочки. Софтфорки, как правило, связаны с обновлениями и новыми типами транзакций, но они также технически включают в себя любой тип цензуры, применяемый большинством в 51%. PoS также имеет третий тип «форка», отсутствующего в PoW: разделение цепочки без каких-либо изменений в правилах. Но поскольку мы уже рассмотрели это, мы сосредоточимся на жестких и мягких форках.

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

Теперь предположим, что валидаторы сидели около одного дня и решили, что им не платят достаточно, и решили, что они должны повысить свои вознаграждения с 5% в год до 10% в год. Это был бы четкий компромисс в пользу валидаторов за счет невалидаторов, которые теперь будут становиться более размытыми. В случае раскола цепи, какая цепочка победит?

Это приводит к нашему пятому принципу PoS, который заключается в том, что деньги — это сила. Из существующих 120 миллионов ETH более 10% в настоящее время ставится на карту, как показано на диаграмме ниже.

Учитывая спорный хардфорк между валидаторами и не-валидаторами, предполагая, что все не-валидаторы продали на рынке новую цепочку, а все валидаторы на рынке продали старую цепочку, то теоретически старая цепочка выиграет, поскольку большая часть ETH по-прежнему будет принадлежать не-валидаторам (90% против 10%). Но есть еще несколько вещей, которые следует учитывать. Во-первых, после любого разделения цепочки валидаторы по-прежнему будут «контролировать» оба блокчейна. Если бы валидаторы могли влиять на другую цепочку, они могли бы быть мотивированы, чтобы заставить ее потерпеть неудачу. Во-вторых, есть также ядерный вариант, обсуждавшийся ранее, в соответствии с которым новая цепочка может сократить любого, кто все еще проверяет старую цепочку, чтобы оказать давление на них, чтобы они присоединились. Наконец, валидаторы, скорее всего, будут оказывать значительное социальное и политическое влияние на всех остальных в сети. Если Виталик, Ethereum Foundation и биржи в унисон решили, что они собираются повысить вознаграждение за ставку, мне трудно поверить, что обычные пользователи Ethereum и валидаторы могут сохранить старую вилку, а также сделать ее более ценной за счет давления покупки.

Переходя к софт-форкам, что произойдет в спорном софтфорке, таком как цензура OFAC? Валидаторы довольно централизованы, как мы можем видеть на диаграмме ниже.

В отличие от PoW, где майнеры могут переключать пулы одним нажатием кнопки, валидаторы в Ethereum привязаны к адресу ставки, пока они не обработают транзакцию выхода. Если бы Лидо и ведущие биржи были вынуждены подвергать цензуре определенные транзакции, они могли бы легко пройти 2/3 большинства, необходимого для принятия решений о контрольных точках. Ранее мы видели, как Виталик и другие валидаторы ETH могли попытаться противостоять цензурному мягкому форку с помощью своего собственного хардфорка контрцензуры, одновременно сокращая цензоров в процессе. Даже если бы им удалось создать вилку, большая ценность была бы уничтожена в процессе, как от сокращения, так и от потери доверия.

Заключительные мысли

В этом эссе мы рассмотрели, как PoS решает проблему двойных расходов с Gasper, комбинацию правил контрольной точки / сокращения под названием Casper и правила голосования «лучший блок» под названием GHOST. Подводя итог, Гаспер делит время на единицы, называемые слотами, где каждый слот может иметь не более одного блока, а слоты сгруппированы в эпохи, где каждая эпоха относится к одной контрольной точке. Если большинство в 2/3 голосов голосует на контрольно-пропускном пункте, это становится оправданным, и если два оправданных контрольно-пропускных пункта возникают подряд, первый из этих двух контрольно-пропускных пунктов становится завершенным. Как только контрольная точка становится завершенной, становится невозможным завершить параллельную цепочку, если только 1/3 валидаторов не может быть сокращена.

В этом процессе мы раскрыли пять принципов PoS:

1) PoS использует отрицательную (основанную на штрафах) структуру стимулирования.

2) PoS является разрешенной системой.

3) PoS не имеет правил.

4) PoS опирается на субъективную истину.

5) В PoS деньги – это власть.

Каждый из этих принципов имеет противоположное поведение в PoW:

1) PoW использует положительную (основанную на вознаграждении) систему стимулирования.

2) PoW — это система без разрешений (любой может начать или остановить майнинг в любое время).

3) В PoW форки, которые изменяют правила, игнорируются.

4) Военнопленный опирается на объективную истину.

5) В PoW майнеры обслуживают пользователей и сами имеют мало энергии.

Источник