Дополнительные сведения: (Изменения в протоколе и пуле ставок, которые могут улучшить децентрализацию и сократить накладные расходы на консенсус)
Автор: Виталик Бутерин
Составил: bayemon.eth, ChainCatcher
Особая благодарность Майку Нойдеру, Джастину Дрейку и другим за их отзывы и рецензии. См. также: более ранние публикации на схожие темы от Майка Нойдера, Данкрада Фейста и arixon.eth.
Можно сказать, что текущее состояние разработки Ethereum включает в себя множество двухуровневых ставок, где двойная ставка относится к модели ставок с двумя типами участников.
Оператор узла: управляйте узлом и внесите в качестве залога свою репутацию или определенную сумму собственного капитала.
Делегат: Делегаты вносят определенное количество Ethereum, без минимальной суммы и дополнительных ограничений на другие способы участия, помимо залога.
Этот новый двойной стекинг формируется за счет широкого участия пулов стекинга, которые предоставляют токены ликвидного стекинга (LST). (Эту модель используют Rocket Pool и Lido).
Однако у нынешней системы двойных ставок есть два недостатка:
Риск централизации операторов узлов: механизм выбора операторов узлов во всех текущих пулах ставок по-прежнему чрезмерно централизован
Ненужная нагрузка на консенсус: Ethereum L1 необходимо проверить около 800 000 подписей за эпоху, что является огромной нагрузкой для одного слота. Кроме того, поскольку пулы ликвидности для ставок требуют больше капитала, сама сеть не в полной мере получает выгоду от этой нагрузки. Таким образом, если сеть Ethereum сможет достичь разумной децентрализации и безопасности, не требуя от каждого участника подписываться в соответствии с временным периодом, сообщество может принять такое решение, чтобы эффективно сократить количество подписей за временной период.
В этой статье будут описаны решения двух вышеупомянутых проблем. Во-первых, если предположить, что большая часть капитала принадлежит тем, кто не желает лично управлять узлами стейкинга в текущей форме, подписывать информацию на каждом слоте, блокировать депозиты и перераспределять их тем, чьи средства были урезаны, то в этом случае, какую роль могут играть эти люди, чтобы они все еще могли вносить значимый вклад в децентрализацию и безопасность сети?
Как в настоящее время работает двойное стейкинг?
Два самых популярных пула для ставок — Lido и RocketPool. В случае Lido, вовлечены две стороны:
Оператор узла: Избран Lido DAO, что означает, что он фактически избран держателями LDO. Когда кто-то вносит ETH в систему смарт-контрактов Lido, создается stETH, и оператор узла может поместить его в пул ставок (но поскольку ваучер на снятие привязан к адресу смарт-контракта, оператор не может снять его по своему желанию)
Агент: Когда кто-то вносит ETH в систему смарт-контрактов Lido, генерируется stETH, и оператор узла может использовать его в качестве залога (но поскольку ваучер на снятие привязан к адресу смарт-контракта, оператор не может снять его по своему усмотрению)
Для Rocket Pool это:
Оператор узла: любой желающий может стать оператором узла, внеся 8 ETH и определенное количество токенов RPL.
Агенты: Когда кто-то вносит ETH в систему смарт-контрактов Rocket Pool, генерируется rETH, который оператор узла может использовать в качестве залога (также, поскольку ваучер на снятие привязан к адресу смарт-контракта, оператор не может снять его по своему усмотрению).
Роль агента
В этих системах (или новых системах, которые появятся в результате возможных будущих изменений протокола) ключевым вопросом является: в чем смысл наличия прокси-сервера с точки зрения протокола?
Чтобы понять глубокую значимость этого вопроса, давайте сначала подумаем об изменениях протокола, упомянутых в посте, которые ограничивают штраф за сокращение до 2ETH. Rocket Pool также сократит размер стейка операторов узлов до 2ETH, а доля рынка Rocket Pool увеличится до 100%/(для стейкеров и держателей ETH, поскольку rETH становится безрисковым, почти все держатели ETH станут держателями rETH или операторами узлов).
Если предположить, что держатели rETH получат доход в размере 3% (включая внутрипротокольные вознаграждения и приоритетные сборы + MEV), то доходность для операторов узлов составит 4%. Мы также предполагаем, что общий объем предложения ETH составляет 100 миллионов.
Результаты расчетов следующие. Чтобы избежать сложного процента, мы будем рассчитывать доходность ежедневно:

Теперь, если предположить, что Rocket Pool не существует, минимальная сумма депозита для каждого стейкера снижается до 2 ETH, общий лимит ликвидности составляет 6,25 млн ETH, а норма доходности оператора узла снижается до 1%. Давайте посчитаем еще раз:

Рассмотрим оба сценария с точки зрения стоимости атаки. В первом случае злоумышленник не будет регистрироваться в качестве агента, поскольку у агентов по сути нет никаких прав на вывод средств, поэтому это не имеет смысла. Поэтому они поставят все свои ETH на стейкинг и станут операторами узлов. Чтобы достичь 1/3 от общего объема ставки, им необходимо поставить 2,08 млн ETH (что, честно говоря, все еще довольно много). Во втором случае злоумышленнику нужно поставить только средства, а чтобы достичь 1/3 от общего объема ставки, им все еще необходимо поставить 2,08 млн ETH.
С точки зрения экономики ставок и стоимости атаки конечный результат в обоих случаях абсолютно одинаков. Доля общего предложения ETH, удерживаемая операторами узлов, увеличивается на 0,00256% каждый день, а доля общего предложения ETH, удерживаемая операторами, не являющимися узлами, уменьшается на 0,00017% каждый день. Атака обошлась в 2,08 млн ETH. Таким образом, в этой модели агент, по-видимому, превратился в бессмысленную машину Руба Голдберга, а рациональное сообщество может даже попытаться устранить посредника, значительно сократить вознаграждение за стейкинг и ограничить общую сумму поставленных ETH до 6,25 млн.
Конечно, эта статья не призывает к уменьшению вознаграждения за ставку в 4 раза и ограничению общей суммы ставки 6,25 миллионами. Вместо этого мы утверждаем, что ключевым свойством хорошо функционирующей системы ставок является то, что агенты должны иметь важные обязанности во всей системе. Более того, не имеет значения, мотивированы ли агенты на правильные действия в основном давлением сообщества и альтруизмом; в конце концов, это главная сила, мотивирующая людей сегодня внедрять децентрализованные, высоконадежные решения для ставок.
Обязанности агента
Если бы агенты могли играть значимую роль в системе ставок, какой могла бы быть эта роль?
Я думаю, есть два типа ответов:
Выбор агента: агенты могут выбирать, каким операторам узлов делегировать свою долю. «Вес» оператора узла в механизме консенсуса пропорционален общей доле, делегированной ему. В настоящее время механизм выбора прокси все еще ограничен, то есть держатели rETH или stETH могут вывести свои ETH и переключиться на другой пул, но фактическое удобство использования выбора прокси может быть значительно улучшено.
Участие в механизме консенсуса: Делегаторы могут выбрать определенную роль в механизме консенсуса с «более легкими» обязанностями, чем при полной подписке, и без длительного периода выхода и снижения риска, но при этом могут выполнять функцию сдержек и противовесов для операторов узлов.
Расширенный выбор агентства
Существует три способа повысить эффективность репрезентативного отбора:
Улучшенные инструменты голосования в пулах
Увеличить конкуренцию между пулами
Фиксированное представление
В настоящее время голосование в пулах фактически нецелесообразно: в Rocket Pool любой может стать оператором узла, а в Lido голосование осуществляется держателями LDO, а не держателями ETH. Лидо выдвинул предложение о двойном управлении LDO + stETH, при котором они могут активировать механизм защиты для предотвращения новых голосов, тем самым предотвращая добавление или удаление операторов узлов, что в некотором роде дает держателям stETH право голоса. Тем не менее, эта сила ограничена и ее можно усилить.
Конкуренция между командами уже существует сегодня, но она относительно слаба. Основная проблема заключается в том, что токены, размещенные в небольших пулах, имеют меньшую ликвидность, менее надежны и хуже поддерживаются приложениями.
Мы можем решить первые две проблемы, ограничив размер штрафа меньшей суммой, например, 2 или 4 ETH. Оставшиеся ETH затем можно безопасно внести на депозит и мгновенно вывести, что позволяет по-прежнему осуществлять двусторонний выкуп для небольших пулов ставок. Мы можем решить третью проблему, создав основной контракт на выпуск, который используется для управления LST (аналогично контрактам, которые ERC-4337 и ERC-6900 используют для кошельков), чтобы мы могли гарантировать безопасность любых застейканных токенов, выпущенных через этот контракт.
В настоящее время в соглашении нет четкого положения, но в будущем это вполне вероятно. Он будет использовать логику, аналогичную вышеизложенным идеям, но реализованную на уровне протокола. В этой статье вы найдете информацию о плюсах и минусах затвердевания.
Эти идеи являются улучшениями по сравнению с существующим положением дел, но преимущества, которые они могут предложить, ограничены. Существуют проблемы с управлением голосованием по токенам, и в конечном итоге любая форма немотивированного выбора доверенного лица является просто формой голосования по токенам; это всегда было моей главной претензией к Delegated Proof of Stake. Поэтому также важно рассмотреть способы достижения более прочного консенсусного участия.
Консенсусное участие
Даже если оставить в стороне текущие проблемы со стейкингом ликвидности, существующие методы автономного стейкинга имеют свои ограничения. Если предположить, что финализация осуществляется по одному слоту, то в идеале каждый слот может обрабатывать от 100 000 до 1 000 000 подписей BLS. Даже если мы используем рекурсивные SNARK для агрегации подписей, для прослеживаемости подписей каждой подписи необходимо предоставить битовое поле участника. Если Ethereum станет глобальной сетью, полностью децентрализованного битового поля хранения будет недостаточно: 16 МБ на слот будут поддерживать только около 64 миллионов стейкеров.
С этой точки зрения имеет смысл разделить ставки на уровень с более высокой сложностью, который может быть погашен и который вступает в силу в каждом слоте, но может иметь только 10 000 участников, и уровень с более низкой сложностью, который требуется для участия лишь изредка. Участники с более низким уровнем сложности могли бы быть полностью освобождены от скидок, или же участникам могла бы случайным образом предоставляться возможность вносить депозиты в несколько слотов и становиться объектом скидок.
На практике это можно осуществить путем увеличения лимита баланса валидатора и последующего увеличения порога баланса (например, 2048 ETH), чтобы определить, какие существующие валидаторы перейдут на более высокий или более низкий уровень сложности.
Вот несколько предложений о том, как могут работать эти небольшие роли:
Для каждого слота случайным образом отбираются 10 000 мелких участников, которые могут подписать то, что, по их мнению, является репрезентативным для слота. Запустите правило выбора форка LMD GHOST, используя в качестве входных данных мелких стейкеров. Если между выбором форка, сделанным мелкими стейкерами, и выбором форка, сделанным операторами узлов, есть определенное расхождение, клиент пользователя не примет ни один блок в качестве окончательного подтверждения и отобразит ошибку. Это заставило общественность вмешаться и разрешить ситуацию.
Делегаты могут отправлять транзакции, сообщая сети о том, что они находятся в сети и готовы выступать в качестве мелких стейкеров в течение следующего часа. Вычисление сообщения (блока или доказательства), отправленного узлом, требует, чтобы и узел, и случайно выбранный прокси-сервер подписали подтверждающее сообщение узла.
Делегаты могут отправлять транзакции, сообщая сети о том, что они находятся в сети и готовы выступать в качестве мелких стейкеров в течение следующего часа. В каждом периоде 10 случайных агентов выбираются в качестве поставщиков списков включения, а еще 10 000 агентов выбираются в качестве избирателей. Они выбираются до k-слота и им предоставляется окно k-слота для публикации сообщений в цепочке, подтверждающих, что они находятся в сети. Каждый подтвержденный поставщик выбранного списка включения может опубликовать список включения, и если для каждого списка включения не включены транзакции в этом списке включения или не включен голос выбранных избирателей, указывающий на то, что список включения недоступен, блок будет считаться недействительным.
Общим для этих небольших узлов стейкинга является то, что им не нужно активно участвовать в каждом слоте, и даже для выполнения всей работы требуются только легкие узлы. Таким образом, для развертывания узла требуется только проверка уровня консенсуса, чего операторы узлов могут добиться с помощью приложений или подключаемых модулей браузера, которые в основном пассивны и требуют небольших вычислительных затрат, аппаратных требований или технических знаний и даже не требуют передовых технологий, таких как ZK-EVM.
У всех этих «маленьких ребят» есть общая цель: не допустить цензурирования транзакций операторами узлов большинства в 51%. Первое и второе также не позволяют большинству участвовать в окончательной реставрации. Третий вариант более непосредственно связан с цензурой, но он более подвержен выбору операторов большинства узлов.

Эти идеи написаны с точки зрения решения двойного стекинга, реализованного в протоколе, но их также можно реализовать как функцию пулов стекинга. Вот несколько конкретных идей реализации:
С точки зрения протокола каждый валидатор может установить два ключа стейкинга: непрерывный ключ стейкинга P и привязанный и вызываемый адрес Ethereum, а также вывести быстрый ключ стейкинга Q. Узел отслеживает информацию о подписи выбора форка как P, а подписанная информация представлена как Q. Если результаты хранения PQ противоречивы, финализация любого блока не будет принята, а пул ликвидности будет отвечать за случайный выбор представителей.
Протокол может оставаться в значительной степени неизменным, но открытый ключ валидатора на этот период будет установлен на P+Q. Обратите внимание, что для стекинга два сообщения о стекинге могут иметь разные ключи Q, но у них будет один и тот же ключ P; конструкция стекинга должна обрабатывать этот случай.
Ключи Q могут использоваться в протоколе только для подписи и проверки списков включения в блоки. В этом случае Q может быть смарт-контрактом, а не отдельным ключом, поэтому пулы ставок могут использовать его для реализации более сложной логики голосования, принимая списки включения от случайно выбранных поставщиков или достаточное количество голосов, чтобы указать, что списки включения недоступны.
в заключение
При правильной реализации эта доработка дизайна Proof-of-Stake может решить две проблемы одним махом:
Предоставление тем, у кого сегодня нет ресурсов или возможностей для запуска независимого доказательства доли владения, возможности участвовать в доказательстве доли владения, тем самым сохраняя в своих руках больше власти: включая (i) право выбирать, какие узлы поддерживать, и (ii) возможность активно участвовать в консенсусе таким образом, чтобы это было менее затратно, чем эксплуатация полноценного узла доказательства доли владения, но все равно имело смысл. Не все участники выберут один или оба из этих вариантов, но любой участник, выбравший один или оба, ощутит значительное улучшение по сравнению со статус-кво.
Уменьшение количества подписей, которые необходимо обработать слою консенсуса Ethereum в каждом слоте, даже при однослотовой финализации, до меньшего числа, например, ~10 000. Это также будет способствовать децентрализации, упрощая для всех запуск узла-валидатора.
Для каждого из этих решений можно найти решения проблемы на разных уровнях абстракции: разрешения, предоставляемые пользователям в рамках протокола Proof-of-Stake, выбор пользователем между протоколами Proof-of-Stake и настройка в рамках протокола. Этот выбор следует тщательно обдумать, и зачастую лучше всего выбрать минимально жизнеспособную настройку, которая минимизирует сложность протокола и масштаб изменений в экономике протокола, при этом достигая желаемых целей.
