MEV, MEV-Boost и награды MEV

В предыдущем разделе вы узнали о том, как node операторы зарабатывают приоритетные комиссии. Приоритетные комиссии - это отличное дополнение к доходу node оператора, но они не единственная форма ликвидного вознаграждения, доступная вам на Execution layer. Существует дополнительная форма вознаграждений, известная как награды MEV.

ПРИМЕЧАНИЕ

В качестве быстрого напоминания, вот разбивка различных типов вознаграждений и на каком слое они предоставляются:

  • Consensus Layer (заблокированы до выводов): аттестации, предложения блоков, sync committees, отчеты о slashing
  • Execution Layer (ликвидные): приоритетные комиссии и MEV от предложений блоков

Что такое MEV

Когда ваш validator создает блок, обычно это происходит с помощью очень простого алгоритма: отслеживать список ожидающих транзакций, упаковать как можно больше из них в блок, который вы строите (приоритизируя те, у которых самые высокие чаевые), и отправить этот блок в цепь.

Однако пользователи сети Ethereum обнаружили интересный побочный эффект возможности видеть публично доступный пул ожидающих транзакций (известный как mempool). Наличие этих знаний позволяет им применять умные и сложные алгоритмы для изменения порядка этих транзакций и в некоторых случаях вводить новые транзакции между ними. Эти две техники в сочетании могут использоваться для извлечения дополнительного ETH из предложения блока.

Этот дополнительный ETH известен как Maximal Extractable Value, или сокращенно MEV.

В целом существует два «вида» MEV:

  • MEV, который исходит из «доброкачественных» источников, таких как возможность первым провести арбитраж между биржами после крупной покупки или продажи
  • MEV, который происходит за счет пользователей Ethereum, путем опережающих транзакций и получения прибыли от результирующего проскальзывания пользователя (см. Sandwich Attacks для получения дополнительной информации об этой технике)

Block Builders и Relays

Поиск возможностей MEV - непростая задача; современные искатели возможностей, известные как searchers, требуют чрезвычайно мощных компьютеров и используют сложные алгоритмы AI для быстрого выявления и извлечения MEV. Затем searchers передают эти возможности block builders - субъектам, которые агрегируют эти пакеты возможностей вместе для формирования полного блока Ethereum (которыми могут быть сами searchers или другие стороны).

Требования к аппаратному и программному обеспечению для запуска прибыльного searcher не позволяют большинству node операторов использовать их (или, по крайней мере, использовать их конкурентоспособно), и, таким образом, не позволяют им находить собственные возможности MEV для капитализации. К счастью, простое нахождение возможностей MEV - это только половина уравнения.

Каждую Epoch (6.4 минуты, или 32 слота) Beacon Chain случайным образом выбирает validator из всего списка активных validators для предложения блока, который поместится в один из слотов этой Epoch. Этот список можно увидеть для следующей предстоящей Epoch, что означает, что все могут видеть, каким validators назначен каждый слот, за несколько минут заранее.

Некоторые умные организации использовали это предварительное знание для создания своего рода «рынка». На этом рынке validators могут зарегистрироваться, когда у них есть предстоящие предложения блоков, а block builders могут подавать ставки на блоки, которые они хотели бы, чтобы validators предложили. Эти ставки всегда отдают приоритетные комиссии от каждой транзакции в блоке proposer, и они также предлагают дополнительные чаевые proposer, которые исходят из MEV, который builder смог извлечь для себя.

Затем validators могут проверить эти ставки, определить, какая из них в конечном итоге обеспечивает наибольшую прибыль, и предложить этот блок вместо создания собственного.

Этот «рынок», где block builders взаимодействуют с validators, известен как relay. Различные relays имеют разные правила (например, какие из упомянутых «видов» MEV они разрешают от block builders и соответствуют ли они определенным правительственным санкционным правилам), но в конечном итоге все они выполняют одну и ту же рыночную функцию.

Rocket Pool в настоящее время предлагает своим node операторам доступ к нескольким различным relays:

НазваниеРегулированиеТипы MEV
FlashbotsСоответствует санкциям OFAC*Все типы
bloXroute Max ProfitСоответствует санкциям OFAC*Все типы
bloXroute RegulatedСоответствует санкциям OFAC*Все типы
Ultra SoundНерегулируемыйВсе типы
Ultra Sound FilteredСоответствует санкциям OFAC*Все типы
AESTUSНерегулируемыйВсе типы
Titan GlobalНерегулируемыйВсе типы
Titan RegionalСоответствует санкциям OFAC*Все типы
BTCS OFAC+Соответствует санкциям OFAC*Все типы
ПРИМЕЧАНИЕ

*Relays, которые соответствуют санкциям OFAC, следуют черному списку адресов, который поддерживает Управление по контролю за иностранными активами США (OFAC). Мы настоятельно рекомендуем вам узнать больше о санкциях OFAC, сетевой цензуре и принять тщательно взвешенное решение о том, считаете ли вы, что должны соблюдать эти санкции и какие relays вам удобно использовать.

Дополнительную информацию можно найти в таких статьях, как эти:

Если вы заинтересованы в изучении относительной доли рынка и средних чаевых за блок от каждого из relays, взгляните на https://www.mevboost.org/. Этот сайт собирает множество метрик о различных MEV relays, чтобы вы могли лучше понять популярность и доходность relays.

MEV-Boost

Существует множество relays, и автоматическая регистрация и поддержание контакта с каждым из них на вашем node может быть обременительной задачей. К счастью, инженеры из Flashbots создали и поддерживают программу, явно разработанную для управления этими relays, известную как MEV-Boost.

MEV-Boost - это простая программа: вы указываете ей, какие relays вы хотите использовать, и указываете своему Consensus client, как до нее добраться, и она позаботится обо всей регистрации, ставках, слепом подписании и управлении предложениями в сочетании с вашим Consensus client. Она позволяет вам пассивно участвовать в этом builder-proposer-marketplace и, таким образом, зарабатывать дополнительные вознаграждения без каких-либо усилий с вашей стороны.

MEV-Boost имеет открытый исходный код и прошел аудит.

Ниже приведено хорошее визуальное представление того, как функционирует вся экосистема MEV и где находится MEV-Boost:

Изображение предоставлено Flashbots

Smartnode Rocket Pool поставляется с MEV-Boost, встроенным непосредственно по умолчанию, что позволяет нашим node операторам в Docker Mode и Hybrid Mode без проблем воспользоваться им. Пользователям Native Mode потребуется настроить его вручную.

Rocket Pool и MEV

Поскольку validators Rocket Pool частично финансируются stakers rETH, протокол требует, чтобы награды MEV (а также приоритетные комиссии) делились со stakers rETH (за вычетом комиссии node оператора, конечно). Node операторам не разрешается полностью присваивать всю награду MEV себе при предложении блока с validator Rocket Pool.

С этой целью MEV-Boost является критически важным компонентом сети Rocket Pool по нескольким причинам:

  • Он обеспечивает легкий доступ к сети MEV relays
  • Он гарантирует, что node оператор не строит собственные блоки; это важно для обеспечения того, чтобы node оператор не запускал собственный searcher и не крал MEV, не деля его со stakers rETH
  • Он увеличивает общую доходность для stakers rETH, что делает протокол конкурентоспособным с другими, более централизованными поставщиками стейкинга

Второй пункт здесь важен: Rocket Pool как протокол в конечном итоге будет полагаться на дизайн Trusted Block Builder (или, точнее, Trusted Relay), чтобы гарантировать, что stakers rETH всегда получают свою справедливую долю наград MEV и приоритетных комиссий.

Каждый из перечисленных выше relays в настоящее время выполняет эту роль.

Мы применяем трехэтапный подход к переходу на дизайн Trusted Block Builder:

Фаза 1: Opt-In!

На этапе 1 MEV-Boost предоставляется всем node операторам в качестве opt-in конфигурации. Node операторам рекомендуется использовать его, потому что он улучшает доходность rETH и, таким образом, делает протокол конкурентоспособным, но не обязаны его использовать. Node операторы могут выбрать использование одного или нескольких trusted relays, перечисленных выше, но не могут использовать пользовательский (untrusted) relay.

Этот этап закончился в ноябре 2022 года.

Фаза 2: Opt-Out

На этапе 2 MEV-Boost включен по умолчанию для всех node операторов. Node операторы могут выбрать использование одного или нескольких trusted relays, перечисленных выше, но не могут использовать пользовательский (untrusted) relay. Node операторы, которые решат отказаться от MEV-boost, должны сделать это явно перед запуском Smartnode.

Это текущий этап.

Фаза 3: Required

На этапе 3 MEV-Boost больше не является необязательным; он будет обязательным для всех node операторов. Node операторы должны выбрать использование одного или нескольких trusted relays, перечисленных выше, но не могут использовать пользовательский (untrusted) relay.

В настоящее время нет запланированной даты для этого этапа.

Настройка MEV-Boost в Smartnode

Чтобы узнать, как настроить MEV-Boost, выберите режим, который вы используете, ниже.

Docker Mode
Hybrid Mode
Native Mode

Настройка MEV-Boost проста с помощью конфигурационного TUI Smartnode. Начните с запуска rocketpool service config и перейдите к опции MEV-Boost:

Установите флажок Enable MEV-Boost, чтобы включить его.

После включения экран будет выглядеть так (начиная с Smartnode v1.17.2):

Ниже приведено описание каждой опции и способы их использования.

  • Поле MEV-Boost Mode позволяет переключаться между экземпляром MEV-Boost, которым управляет Rocket Pool, и внешним, которым вы управляете самостоятельно. Это предназначено для продвинутых пользователей, у которых уже настроен MEV-Boost и которые просто хотят использовать его вместо того, чтобы Rocket Pool запускал вторую копию. Обычные пользователи Docker Mode должны просто оставить это значение Locally Managed.

  • Поле Selection Mode позволяет переключаться между Profile Mode и Relay Mode.

  • Profile Mode является режимом по умолчанию. Он позволяет вам выбирать, какие relays включить на основе их «профилей». Профиль relay состоит из следующих вариантов:

  • Является ли он regulated (соответствует спискам правительственных санкций, таким как список OFAC, и вносит определенные адреса в черный список) или unregulated (не подвергает цензуре какие-либо транзакции на основе каких-либо черных списков)

  • Разрешает ли он все типы MEV или явно запрещает пакеты, включающие sandwich attacks или front-running пользователей Ethereum

  • Вы можете выбрать несколько профилей.

  • Каждый выбранный вами профиль имеет набор relays, которые придерживаются его, которые перечислены в поле описания; включение этого профиля включит все эти relays.

  • Продвинутые пользователи могут изменить это на Relay Mode, который позволяет им явно выбрать, какие relays они хотели бы использовать.

  • Поле Port не важно для пользователей Docker mode.

  • Поле Expose API Port не важно для пользователей Docker mode.

  • Поле Container Tag полезно для ручного обновления версии MEV-Boost, которую запускает Smartnode, если Flashbots выпустит новую высокоприоритетную версию, которую вы хотите использовать до выпуска обновления Smartnode с ней.

  • Поле Additional Flags используется, если вы хотите добавить дополнительные флаги конфигурации или параметры непосредственно в контейнер MEV-Boost. Обычно оно не будет полезным.

После того, как вы включили MEV-Boost и включили relays, которые хотели бы использовать, просто сохраните и выйдите. Smartnode перезапустит соответствующие контейнеры для вас и автоматически все настроит.

См. ниже инструкции о том, как проверить, что все работает должным образом.

Проверка логов MEV-Boost

Чтобы проверить логи MEV-Boost, выполните следующую команду (для пользователей Docker Mode и Hybrid пользователей с локально управляемым контейнером):

rocketpool service logs mev-boost

Вывод покажет вам, какие relays вы включили, их статус подключения, и начнет прослушивание трафика от вашего Beacon Node:

mev-boost_1      | time="2022-09-28T22:02:06Z" level=info msg="mev-boost v1.3.1" module=cli
mev-boost_1      | time="2022-09-28T22:02:06Z" level=info msg="Using genesis fork version: 0x00000000" module=cli
mev-boost_1      | time="2022-09-28T22:02:06Z" level=info msg="using 4 relays" module=cli relays="[{0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net?id=rocketpool} {0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88 https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com?id=rocketpool} {0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246 https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@builder-relay-mainnet.blocknative.com?id=rocketpool} {0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io?id=rocketpool}]"
mev-boost_1      | time="2022-09-28T22:02:06Z" level=info msg="Checking relay" module=service relay="https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net?id=rocketpool"
mev-boost_1      | time="2022-09-28T22:02:06Z" level=info msg="Checking relay" module=service relay="https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com?id=rocketpool"
mev-boost_1      | time="2022-09-28T22:02:07Z" level=info msg="Checking relay" module=service relay="https://0x9000009807ed12c1f08bf4e81c6da3ba8e3fc3d953898ce0102433094e5f22f21102ec057841fcb81978ed1ea0fa8246@builder-relay-mainnet.blocknative.com?id=rocketpool"
mev-boost_1      | time="2022-09-28T22:02:07Z" level=info msg="Checking relay" module=service relay="https://0xb3ee7afcf27f1f1259ac1787876318c6584ee353097a50ed84f51a1f21a323b3736f271a895c7ce918c038e4265918be@relay.edennetwork.io?id=rocketpool"
mev-boost_1      | time="2022-09-28T22:02:07Z" level=info msg="listening on 0.0.0.0:18550" module=cli

Это указывает на то, что все работает правильно.

Если у вас уже есть работающие validators, вы будете видеть сообщения, подобные этому, каждые несколько минут в логах:

mev-boost_1      | time="2022-09-28T21:40:48Z" level=info msg="http: GET /eth/v1/builder/status 200" duration=0.147305645 method=GET module=service path=/eth/v1/builder/status status=200
mev-boost_1      | time="2022-09-28T21:40:48Z" level=info msg="http: POST /eth/v1/builder/validators 200" duration=0.052895118 method=POST module=service path=/eth/v1/builder/validators status=200

Это указывает на то, что ваш Beacon node смог правильно подключиться к нему и зарегистрировать свои validators, что означает, что ваш node теперь активно взаимодействует с MEV relays и готов получать блоки от block builders!

Следующие шаги

Теперь, когда MEV-Boost настроен, вы готовы создать новый minipool и начать валидацию в сети Ethereum! Прочитайте следующий раздел, чтобы пройти через этот процесс.