Особая благодарность Майку Нойдеру, Джастину Дрейку и другим за отзывы и рецензии. См. также: предыдущие сообщения на похожие темы <a href="https://notes.ethereum.org/@mikeneuder/goldilocks"> Mike Neuder, Dankrad Feist и arixon.eth.
Статус-кво Ethereum можно охарактеризовать как включающий большую долю возникающего двухуровневого стейблинга. Под двухуровневой ставкой я подразумеваю модель ставки, в которой есть два класса участников:
Такой двухуровневый стейкинг возникает благодаря действиям значительной части стейкеров, которые участвуют в пулах, предлагающих ликвидные токены для стейкинга (LST), например. Бассейн Ракета и Лидо.
У статус-кво есть два основных недостатка:
В этом посте мы опишем возможные решения обеих этих проблем. В частности, это будет выглядеть следующим образом: предположим, что мы считаем само собой разумеющимся, что большая часть капитала находится у людей, которые не хотят лично управлять ставочными узлами в их нынешнем виде, подписывая сообщения в каждом слоте, блокируя свои депозиты и подвергая их сокращению. Какую еще роль они могут играть, чтобы внести значительный вклад в децентрализацию и безопасность сети?
Два самых популярных на сегодняшний день децентрализованных пула для ставок, Lido и RocketPool, создают развивающиеся двухуровневые экосистемы ставок. В случае с Lido уровни следующие:
В случае с 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 всей доли, им нужно будет вложить 2,08 млн. ETH (что, честно говоря, все еще довольно много! например. см. <a href="https://notes.ethereum.org/@vbuterin/single_slot_finality#Idea-1-super-committees"> this Обсуждение суперкомитетов, предложение о масштабировании ставок, которое также уменьшило бы стоимость атаки до аналогичного значения). Во втором случае злоумышленники будут просто делать ставки, и чтобы получить 1/3 всех ставок, им нужно будет вложить... 2,08M ETH.
Как с точки зрения экономики ставок, так и с точки зрения стоимости атаки, конечный результат в обоих случаях абсолютно одинаков. Доля общего предложения ETH, находящаяся в распоряжении оператора узла, увеличивается на 0,00256% в день, а доля общего предложения ETH, находящаяся в распоряжении оператора, не являющегося узлом, уменьшается на 0,00017% в день. Стоимость атаки составляет 2,08 миллиона ETH. Поэтому кажется, что в этой модели делегирование превращается в бессмысленную машину Руба Голдберга: мы можем с тем же успехом вырезать посредника, резко сократить вознаграждения за ставки и ограничить общее количество ETH, поставленных на кон, до 6,25M.
Цель этого аргумента не в том, чтобы выступить за снижение вознаграждения за ставки в 4 раза и ограничение общей суммы ставок ETH до 6,25 млн. Скорее, это для того, чтобы указать на ключевое свойство, которым должна обладать хорошо функционирующая система ставок: а именно, делегаты должны делать что-то, что действительно имеет значение. Более того, ничего страшного, если делегаты будут мотивированы действовать правильно в значительной степени давлением сообщества и альтруизмом; в конце концов, это главная сила, которая сегодня побуждает людей делать ставки децентрализованными способами, повышающими безопасность (но требующими больших затрат), а не централизованными способами, угрожающими безопасности (но требующими меньших затрат).
Я вижу два класса ответов:
Есть три способа расширить полномочия по выбору делегатов:
Голосование внутри пулов на самом деле не существует сегодня: в Rocket Pool любой может стать оператором узла, а в Lido голосуют владельцы LDO, а не ETH. У Лидо есть предложение по двойному управлению 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 станет сетью глобального масштаба, то даже использования полного данкшардинга для хранения битовых полей будет недостаточно: 16 МБ на слот будут поддерживать только ~64 миллиона стейблкоинов.
Здесь, с этой точки зрения, также есть смысл разделить ставки на более сложный слэшбэк-уровень, который действует каждый слот, но, возможно, имеет только 10 000 участников, и более низкий уровень, который вызывается для участия лишь изредка. Уровень с более низкой сложностью может быть полностью освобожден от сокращения, или же он может случайным образом давать своим участникам временные возможности (т.е. для нескольких слотов) пополняют счет и становятся предметом сокращения.
На практике это может быть реализовано с помощью <a href="https://notes.ethereum.org/@mikeneuder/eip-7251-faq"> поднятия крышка баланса валидатора, а впоследствии - порог баланса (например. 2048 ETH), чтобы определить, какие существующие валидаторы относятся к более высокому и более низкому уровню сложности.
Вот несколько идей того, как могут работать эти небольшие роли:
Все эти небольшие роли объединяет то, что они не предполагают активного участия в каждом слоте, не являются слэш-памятью (и поэтому имеют очень низкий риск управления ключами) и очень "легкие" в том смысле, что для их выполнения даже не требуется полный узел. Достаточно будет проверить только уровень консенсуса. Следовательно, их можно реализовать с помощью приложений или плагинов для браузера, которые в основном пассивны и имеют очень низкие вычислительные накладные расходы, требования к аппаратному обеспечению или техническому ноу-хау, и все это даже не предполагая таких технических достижений, как ZK-EVMs.
Все эти небольшие роли также имеют общую цель: они препятствуют тому, чтобы 51% операторов узлов осуществляли цензуру транзакций. Первое и второе также не позволяют большинству участвовать в возвращении окончательности. Третий вариант более непосредственно направлен на цензуру, хотя он более уязвим для возможности того, что большинство операторов узла также решит подвергнуть цензуре сообщения подтверждения провайдера списка включения.
Эти идеи были написаны с точки зрения закрепленного двухуровневого решения по ставкам, реализованного в протоколе, но они также могут быть реализованы как функции ставочного пула. Вот несколько конкретных идей по реализации:
Если все сделать правильно, то изменения в дизайне ставок могут решить проблему двух зайцев одним выстрелом:
Для многих из этих решений существуют различные уровни абстракции, на которых может находиться решение проблемы: полномочия, предоставляемые пользователям в рамках протокола ставочного пула, выбор пользователя между протоколами ставочного пула и закрепление внутри протокола. Этот выбор следует тщательно обдумать, и, как правило, лучше всего подходит минимальное закрепление жизнеспособности, минимизирующее как сложность протокола, так и уровень изменений в экономике протокола, но при этом достигающее желаемой цели.
Особая благодарность Майку Нойдеру, Джастину Дрейку и другим за отзывы и рецензии. См. также: предыдущие сообщения на похожие темы <a href="https://notes.ethereum.org/@mikeneuder/goldilocks"> Mike Neuder, Dankrad Feist и arixon.eth.
Статус-кво Ethereum можно охарактеризовать как включающий большую долю возникающего двухуровневого стейблинга. Под двухуровневой ставкой я подразумеваю модель ставки, в которой есть два класса участников:
Такой двухуровневый стейкинг возникает благодаря действиям значительной части стейкеров, которые участвуют в пулах, предлагающих ликвидные токены для стейкинга (LST), например. Бассейн Ракета и Лидо.
У статус-кво есть два основных недостатка:
В этом посте мы опишем возможные решения обеих этих проблем. В частности, это будет выглядеть следующим образом: предположим, что мы считаем само собой разумеющимся, что большая часть капитала находится у людей, которые не хотят лично управлять ставочными узлами в их нынешнем виде, подписывая сообщения в каждом слоте, блокируя свои депозиты и подвергая их сокращению. Какую еще роль они могут играть, чтобы внести значительный вклад в децентрализацию и безопасность сети?
Два самых популярных на сегодняшний день децентрализованных пула для ставок, Lido и RocketPool, создают развивающиеся двухуровневые экосистемы ставок. В случае с Lido уровни следующие:
В случае с 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 всей доли, им нужно будет вложить 2,08 млн. ETH (что, честно говоря, все еще довольно много! например. см. <a href="https://notes.ethereum.org/@vbuterin/single_slot_finality#Idea-1-super-committees"> this Обсуждение суперкомитетов, предложение о масштабировании ставок, которое также уменьшило бы стоимость атаки до аналогичного значения). Во втором случае злоумышленники будут просто делать ставки, и чтобы получить 1/3 всех ставок, им нужно будет вложить... 2,08M ETH.
Как с точки зрения экономики ставок, так и с точки зрения стоимости атаки, конечный результат в обоих случаях абсолютно одинаков. Доля общего предложения ETH, находящаяся в распоряжении оператора узла, увеличивается на 0,00256% в день, а доля общего предложения ETH, находящаяся в распоряжении оператора, не являющегося узлом, уменьшается на 0,00017% в день. Стоимость атаки составляет 2,08 миллиона ETH. Поэтому кажется, что в этой модели делегирование превращается в бессмысленную машину Руба Голдберга: мы можем с тем же успехом вырезать посредника, резко сократить вознаграждения за ставки и ограничить общее количество ETH, поставленных на кон, до 6,25M.
Цель этого аргумента не в том, чтобы выступить за снижение вознаграждения за ставки в 4 раза и ограничение общей суммы ставок ETH до 6,25 млн. Скорее, это для того, чтобы указать на ключевое свойство, которым должна обладать хорошо функционирующая система ставок: а именно, делегаты должны делать что-то, что действительно имеет значение. Более того, ничего страшного, если делегаты будут мотивированы действовать правильно в значительной степени давлением сообщества и альтруизмом; в конце концов, это главная сила, которая сегодня побуждает людей делать ставки децентрализованными способами, повышающими безопасность (но требующими больших затрат), а не централизованными способами, угрожающими безопасности (но требующими меньших затрат).
Я вижу два класса ответов:
Есть три способа расширить полномочия по выбору делегатов:
Голосование внутри пулов на самом деле не существует сегодня: в Rocket Pool любой может стать оператором узла, а в Lido голосуют владельцы LDO, а не ETH. У Лидо есть предложение по двойному управлению 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 станет сетью глобального масштаба, то даже использования полного данкшардинга для хранения битовых полей будет недостаточно: 16 МБ на слот будут поддерживать только ~64 миллиона стейблкоинов.
Здесь, с этой точки зрения, также есть смысл разделить ставки на более сложный слэшбэк-уровень, который действует каждый слот, но, возможно, имеет только 10 000 участников, и более низкий уровень, который вызывается для участия лишь изредка. Уровень с более низкой сложностью может быть полностью освобожден от сокращения, или же он может случайным образом давать своим участникам временные возможности (т.е. для нескольких слотов) пополняют счет и становятся предметом сокращения.
На практике это может быть реализовано с помощью <a href="https://notes.ethereum.org/@mikeneuder/eip-7251-faq"> поднятия крышка баланса валидатора, а впоследствии - порог баланса (например. 2048 ETH), чтобы определить, какие существующие валидаторы относятся к более высокому и более низкому уровню сложности.
Вот несколько идей того, как могут работать эти небольшие роли:
Все эти небольшие роли объединяет то, что они не предполагают активного участия в каждом слоте, не являются слэш-памятью (и поэтому имеют очень низкий риск управления ключами) и очень "легкие" в том смысле, что для их выполнения даже не требуется полный узел. Достаточно будет проверить только уровень консенсуса. Следовательно, их можно реализовать с помощью приложений или плагинов для браузера, которые в основном пассивны и имеют очень низкие вычислительные накладные расходы, требования к аппаратному обеспечению или техническому ноу-хау, и все это даже не предполагая таких технических достижений, как ZK-EVMs.
Все эти небольшие роли также имеют общую цель: они препятствуют тому, чтобы 51% операторов узлов осуществляли цензуру транзакций. Первое и второе также не позволяют большинству участвовать в возвращении окончательности. Третий вариант более непосредственно направлен на цензуру, хотя он более уязвим для возможности того, что большинство операторов узла также решит подвергнуть цензуре сообщения подтверждения провайдера списка включения.
Эти идеи были написаны с точки зрения закрепленного двухуровневого решения по ставкам, реализованного в протоколе, но они также могут быть реализованы как функции ставочного пула. Вот несколько конкретных идей по реализации:
Если все сделать правильно, то изменения в дизайне ставок могут решить проблему двух зайцев одним выстрелом:
Для многих из этих решений существуют различные уровни абстракции, на которых может находиться решение проблемы: полномочия, предоставляемые пользователям в рамках протокола ставочного пула, выбор пользователя между протоколами ставочного пула и закрепление внутри протокола. Этот выбор следует тщательно обдумать, и, как правило, лучше всего подходит минимальное закрепление жизнеспособности, минимизирующее как сложность протокола, так и уровень изменений в экономике протокола, но при этом достигающее желаемой цели.