Изменения в протоколах и работе стейкинг-пулов, которые могут снизить централизацию и издержки консенсуса
Поблагодарить за перевод, можно подписавшись на канал Crypto_Track
Особая благодарность Майку Нойдеру, Джастину Дрейку и другим за отзывы и рецензию. Смотрите также: более ранние посты на аналогичные темы Майка Нойдера, Данкрада Файста и arixon.eth.
В настоящее время в сети Ethereum наблюдается значительное распространение двухуровневого стейкинга, который постепенно развивается. Под двухуровневым стейкингом понимается модель, в которой выделяют два класса участников:
- операторы нод управляют нодами и используют свою репутацию, либо предоставляют определенную фиксированную сумму своего капитала в качестве залога;
- делегаторы вносят определенное количество ETH, без каких-либо минимальных обязательств и строгих требований участвовать каким-либо другим способом, помимо внесения своего залога.
Этот новый двухуровневый подход к стейкингу формируется за счет участия значительной части стейкеров в специальных стейкинг-пулах, которые предоставляют токены ликвидного стейкинга (LST), такие как Rocket Pool и Lido.
При нынешнем положении выделяют два основных недостатка:
- Риск централизации среди операторов нод. Механизмы выбора операторов нод в существующих стейкинг-пулах либо недостаточно децентрализованы, либо имеют другие недостатки.
- Избыточная необоснованная нагрузка на уровне консенсуса. Сейчас Ethereum L1 проверяет ~800 000 подписанных транзакций за эпоху (32 слота), а в будущем это число может увеличиться до 800 000 за слот. Большая нагрузка. К тому же, из-за обширного использования ликвидного стейкинга сеть не дополучает выгоду от этой нагрузки. Если сеть может достаточно эффективно обеспечивать децентрализацию и безопасность, не требуя от каждого участника стейкинга подтверждения в каждом временном слоте, то мы можем более активно использовать этот метод и уменьшить количество подписей, например, до 10 000 на каждый слот.
В этом посте будут описаны возможные решения обеих проблем. Этот вопрос будет рассмотрен с такой точки зрения: предположим, что мы принимаем как данность, что большая часть капитала принадлежит людям, которые не желают лично управлять нодами стейкинга в их текущей форме, подписывать сообщения каждый временной слот, блокировать свои депозиты и подвергать их риску наложения штрафов. Какую еще роль они могут играть, чтобы внести существенный вклад в децентрализацию и безопасность сети?
Как сегодня работает двухуровневый стейкинг?
Два самых популярных децентрализованных стейкинг-пула сегодня, Lido и RocketPool, формируют развивающиеся двухуровневые стейкинг-экосистемы. В случае с Lido уровни следующие:
- операторы нод: они выбираются путем голосования в Lido DAO, то есть фактически держателями LDO
- делегаторы: люди, владеющие stETH. stETH создается, когда кто-то вносит ETH в смарт-контракт системы Lido, что позволяет операторам нод стейкать его (однако, поскольку учетные данные для вывода привязаны к адресу смарт-контракта ETH, операторы не могут забрать его себе).
В случае Rocket Pool уровни следующие:
- операторы нод: любой желающий может стать оператором ноды, внеся депозит в размере 8 ETH плюс некоторое количество токенов RPL;
- делегаторы: люди, владеющие RET. rETH создается, когда кто-то вносит ETH в систему смарт-контрактов Rocket Pool, которая позволяет операторам нод застейкать его (но не забирать себе).
В этих системах (или в новых системах, возможных благодаря потенциальным изменениям в протоколе), один из ключевых вопросов следующий: с точки зрения протокола, каков смысл наличия делегаторов вообще?
Чтобы понять, почему вопрос имеет смысл, рассмотрим следующую ситуацию. Изменение протокола, предложенное в недавнем посте, заключающееся в ограничении штрафных санкций до 2 ETH, реализовано. В ответ Rocket Pool уменьшает депозит оператора ноды до 2 ETH. Рыночная доля Rocket Pool увеличивается до 100% (не только среди стейкеров, но и среди держателей ETH: поскольку rETH становится безрисковым, почти все держатели ETH становятся держателями rETH или операторами нод).
Давайте предположим, что владельцы rETH получают доход в размере 3% (включая как вознаграждения внутри протокола, так и сборы за приоритет + MEV), а операторы нод получают доход в размере 4%. Давайте также предположим, что общий объем поставок ETH составляет 100 миллионов.
Вот как это выглядит в числах. Чтобы избежать работы со сложными процентами, мы рассмотрим ежедневные доходы вместо ежегодных, так второстепенными членами можно пренебречь:
А теперь давайте рассмотрим другую ситуацию. Rocket Pool не существует. Минимальный депозит каждого участника снижен до 2 ETH, а общее количество размещенных ETH ограничено 6,25 млн. Кроме того, доходность оператора ноды снижается до 1%. Давайте подсчитаем:
Теперь давайте рассмотрим обе ситуации с точки зрения затрат на атаку. В первом случае злоумышленники не стали бы регистрироваться в качестве делегаторов: делегаторы не имеют полномочий, поэтому в этом нет смысла. Следовательно, они потратили бы все свои ETH на регистрацию в качестве операторов нод. Чтобы получить 1/3 всего ETH,вложенного в стейкинг, им нужно было бы внести 2,08 миллиона ETH (что, справедливости ради, все равно довольно много! См., например, обсуждение супер-комитетов– предложение по масштабированию стейкинга, которое также снизило бы стоимость атаки до схожего значения). Во втором случае злоумышленники просто бы стейкались, и чтобы достичь 1/3 от общего объема стейкинга, им потребовалось бы внести... 2,08 миллиона ETH.
С точки зрения экономики стейкинга и затрат на атаку, конечный результат в обоих случаях точно такой же. Доля общего запаса ETH, находящегося у оператора ноды, увеличивается на 0,00256% в день, а доля общего запаса ETH, находящегося у оператора, не являющегося нодой, уменьшается на 0,00017% в день. Стоимость атаки составляет 2,08 миллиона ETH. Таким образом, в этой модели делегация кажется бессмысленным механизмом Руба Голдберга: мы могли бы также исключить посредника и радикально снизить вознаграждения за стейкинг, ограничив общее количество замороженного ETH до 6,25 миллиона.
Цель этого аргумента не в том, чтобы пропагандировать сокращение вознаграждений за стейкинг в 4 раза и ограничение общего объема замороженного ETH до 6,25 миллиона. Скорее, это делается для того, чтобы указать на ключевое свойство, которым должна обладать хорошо функционирующая система стейкинга: а именно, делегаторы должны делать что-то, что действительно имеет значение. Более того, это вполне допустимо, если делегаторы в значительной степени мотивированы действовать правильно под воздействием давления со стороны сообщества и альтруизма; в конце концов, именно это является основной силой, мотивирующей людей ставить в децентрализованных способах, повышающих безопасность (но требующих больше усилий), вместо централизованных способов, угрожающих безопасности (но требующих меньше усилий) в настоящее время.
Если делегаторы могут играть значимую роль, то в чем же она?
- выбор делегатора: делегаторы могут выбирать, каким операторам нод они делегируют свою долю. Операторы нод будут иметь “вес” в консенсусе, который пропорционален общей доле, делегированной им. В настоящее время уже есть некоторая возможность выбора делегатора, например, владельцы rETH или stETH могут изъять свои ETH и перейти на другой пул, однако сам процесс выбора делегатора может быть существенно улучшен.
- участие в консенсусе: делегаторам может быть предоставлена опция принять на себя роль в консенсусе, которая будет более "легкой" по сравнению с полным стейкингом и не подвержена длительным периодам вывода средств и риску штрафов, однако она все еще будет функционировать как контроль за операторами нод. Многие делегаторы не захотели бы это делать и предпочли бы простейший интерфейс –просто держать ERC20 и ничего больше не делать, но некоторые воспользовались бы этой опцией.
Расширение полномочий по отбору делегаторов
Выделяют три способа расширить полномочия делегаторов:
- усовершенствованные инструменты голосования внутри пулов;
- больше конкуренции между пулами;
- делегирование с фиксированными правами.
Голосования в рамках пулов фактически отсутствует сегодня: в Rocket Pool любой может стать оператором ноды, а в Lido голосуют владельцы LDO, а не ETH. У Lido есть предложение о двойном управлении с помощью LDO + stETH, которое предоставит владельцам stETH возможность влиять, активируя механизм, блокирующий новые голоса и, следовательно, предотвращающий добавление или удаление операторов нод. Несмотря на это, система имеет свои ограничения и потенциал для усиления.
Конкуренция между пулами существует и сегодня, но она слаба. Основная проблема заключается в том, что токены стейкинга небольших пулов (i) менее ликвидны, (ii) им труднее доверять и (iii) они в меньшей степени поддерживаются приложениями.
Мы можем улучшить ситуацию с двумя первыми проблемами, ограничив размер штрафов до меньших сумм, например, 2 или 4 ETH. Оставшиеся (неподлежащие штрафу) ETH могут быть безопасно помещены и мгновенно извлечены, что позволит LST, созданным на этих ETH, быть двунаправленно обмениваемыми на ETH даже в случае самых маленьких пулов. Мы можем улучшить ситуацию с третьей проблемой, создав контракт для централизованной эмиссии для LST, в чем-то похожий на ERC-4337 и ERC-6900 для кошельков, что позволит нам гарантировать безопасность любого токена стейкинга, выпущенного через этот контракт. Приложения (например, модификация RAI, поддерживающая застейканный ETH) могут быть активно стимулированы для поддержки всех токенов стейкинга, выпущенных через этот реестр.
Делегирование с фиксированными правами в настоящее время отсутствует в протоколе, но потенциально может быть внедрено. Это предполагает использование подобной логики, описанной выше, но на уровне протокола. Ознакомьтесь с этим постом для изучения плюсов и минусов закрепления определенных моментов.
Все эти идеи улучшают текущую ситуацию, но есть предел их эффективности. Голосование с помощью токенов имеет свои недостатки, и в конечном итоге любая форма выбора делегатора без финансового стимула подобна голосованию с использованием токенов, в связи с чем у меня возникают опасения по поводу делегированного доказательства доли с самого начала. Следовательно, кажется целесообразным также обдумать возможность усиления участия в консенсусе.
Существуют ограничения в данном подходе к индивидуальному стейкингу, даже без учёта текущих проблем вокруг ликвидного стейкинга. При условии окончательности в одном слоте, наши лучшие прогнозы показывают, что можно обработать примерно от 100 тыс. до 1 млн. подписей BLS за один слот, при существенном увеличении времени слота. Даже если мы используем рекурсивные SNARK-доказательства для объединения подписей, для возможности наказания (штрафа) необходимо, чтобы для каждой подписи было доступно битовое поле участников. Если Ethereum станет глобальной сетью, то даже использование полного danksharding для хранения битовых полей не будет достаточным: 16 МБ на слот поддержит всего лишь около 64 миллионов стейкеров.
С точки зрения эффективности, имеет смысл разделить процесс стейкинга на более сложный уровень с возможностью наложения штрафа, который активен каждый слот, но с участием, возможно, только 10 000 участников, и на менее сложный уровень, который требуется для участия только время от времени. Более простой уровень может быть полностью освобожден от возможности наложения штрафа, или же предоставлять участникам случайные возможности временно (например, на несколько слотов) вносить депозит и подвергаться наложению штрафа.
На практике это можно сделать, увеличив максимальный баланс валидатора, и затем установив порог баланса (например, 2048 ETH), чтобы определить, в какой из двух уровней войдут уже существующие валидаторы.
Вот несколько идей о том, как могут функционировать малые роли в стейкинге:
- В каждый слот случайным образом выбираются 10 000 малых стейкеров, и они могут подтвердить, кто, по их мнению, является лидером этого слота. Выполняется правило выбора вилки LMD GHOST, используя малых стейкеров в качестве входных данных. Если правила выбора вилки, управляемые малыми стейкерами, и правила выбора вилки, управляемые операторами нод, когда-либо разошлись, клиент пользователя не принимает ни один блок как окончательный и показывает ошибку. Такая ситуация вынуждает сообщество выступать посредником в сложившейся ситуации.
- Делегатор может отправить транзакцию в сеть, в которой заявляется, что он находится в сети и готов быть малым стейкером в течение следующего часа. Для учета сообщения (блока или подтверждения) от ноды необходимы подписи как самой ноды, так и случайно выбранного делегатора.
- Делегатор может отправить транзакцию в сеть, в которой заявляется, что он находится в сети и готов быть малым стейкером в течение следующего часа. Каждую эпоху выбирают 10 случайных делегаторов в качестве провайдеров списка включения, и еще 10000 делегаторов в качестве голосующих. Эти делегаторы выбираются за k слотов заранее и имеют окно в k слотов для публикации сообщения в блокчейне, подтверждающего их онлайн-статус. Каждый подтвержденный провайдер списка включения может опубликовать список включения, и блок считается недействительным, если он либо (i) содержит транзакции из этого списка включения, либо (ii) содержит голоса от половины выбранных голосующих, указывающих, что этот список включения недоступен.
Все эти роли с небольшим стейкингом имеют общее: они не требуют активного участия в каждом слоте, не подвержены штрафу (и поэтому риск управления ключами минимален) и являются очень "легкими", так как для их работы не требуется запуск полной ноды. Для подтверждения нужно проверить только слой консенсуса. Таким образом, их можно реализовать через приложения или плагины для браузера, которые в основном пассивны, имеют очень низкую вычислительную нагрузку, минимальные аппаратные требования и требования к техническому уровню, даже без предположения о технических нововведениях, таких как ZK-EVM.
Эти роли с небольшим стейкингом также имеют общую цель: не позволяют большинству (51% ) операторов нод участвовать в цензуре транзакций. Первая и вторая роли также предотвращают возможность большинства изменить окончательность. Третья роль напрямую связана с цензурой, но более уязвима для возможности того, что большинство операторов нод также решат цензурировать сообщения о подтверждении провайдера списка включения.
Эти идеи были разработаны с точки зрения утвержденного двухуровневого решения стейкинга, реализованного в протоколе, но их также можно реализовать в качестве функций стейкинг-пула. Вот несколько конкретных идей по реализации:
- На уровне протокола каждому валидатору разрешено указывать два ключа размещения: постоянный ключ размещения P и адрес Ethereum, который при вызове выдает ключ быстрого размещения Q. Ноды отслеживают выбор форка из сообщений, подписанных P-ключами, и сообщений, подписанных Q-ключами; если они не совпадают, они не принимают какой-либо блок как завершенный. Стейкинг-пулы отвечают за случайный выбор делегаторов в качестве держателей Q-ключей для текущего слота.
- В качестве альтернативы, протокол мог бы остаться в основном прежним, но открытый ключ размещения для этого валидатора для этого слота был бы установлен на P+Q+. Обратите внимание, что когда дело касается штрафов, то два подлежащих штрафу сообщения могут иметь разные ключи Q, но у них будет один и тот же ключ P; система штрафов должна это учитывать.
- В качестве альтернативы, Q-ключи могли использоваться только в протоколе для подписи и проверки списка включения в блок. В таком случае Q мог бы быть смарт-контрактом, а не отдельным ключом, и поэтому пулы могли бы использовать его для реализации более сложной логики голосования, которая принимает либо список включений от случайно выбранного поставщика, либо достаточно большое количество голосов, говорящих о том, что список включений недоступен.
При правильной реализации, коррекции в дизайне стейкинга могут решить сразу две проблемы:
- дайте возможность людям, у которых сегодня нет ресурсов или возможностей для соло-стейкинга, участвовать в стейкинге, который сохраняет больше власти в их руках: и (i) возможность выбирать ноды, которые они поддерживают, и (ii) возможность активно участвовать в консенсусе способом, который легче, чем полноценная работа ноды для стейкинга, но всё ещё имеет значение. Не все участники обязательно выберут один или оба варианта, но те, кто это сделает, смогут значительно улучшить ситуацию по сравнению с тем, как она есть сейчас.
- уменьшите количество подписей, которые должен обработать консенсусный уровень Ethereum в каждом слоте, даже в режиме однослотовой финальности, до меньшего числа, например, около 10 000. Это также поможет в децентрализации, сделав процесс запуска ноды валидации доступным для всех в более простой форме.
Для многих из этих решений существуют различные уровни абстракции, на которых может находиться решение проблемы: полномочия, предоставленные пользователям в протоколе стейкинга, выбор пользователей между протоколами стейкинг-пулов и закрепление в протоколе. Этот выбор следует тщательно обдумать, и обычно лучше всего стремиться к минимальному уровню закрепления, минимизируя как сложность протокола, так и изменение экономики протокола, сохраняя при этом достижение желаемой цели.
Перевод подготовлен каналом Crypto_Track
Ссылка на статью: Изменения в протоколах и работе стейкинг-пулов, которые могут снизить централизацию и издержки консенсуса - HackMD (ethereum.org )