Обратный сэндвич-арбитраж LP

Введение

В наших предыдущих статьях, описывающих темный лес MEV, мы очень подробно рассмотрели арбитраж LP Sandwich (также известный как Just-in-Time liquidity).

Чтобы повторить ограничение, JIT-злоумышленник ликвидности идентифицирует крупную сделку в пуле AMM с концентрированной ликвидностью (в основном Uniswap V3), вносит большое количество ликвидности в пул прямо перед сделкой и снимает ликвидность сразу после сделки, тем самым прикарманивая комиссии и влияние сделки на цену.

В этой статье мы поговорим о Reverse LP Sandwich Attack, которую можно рассматривать как противоположность LP Sandwich Attack.

Здесь злоумышленник сначала идентифицирует операцию по предоставлению ликвидности (депозит или снятие средств), которая должна быть выполнена в пуле. Вычисляя, как именно новая ликвидность повлияет на цены, злоумышленник вставляет сделку до и после изменения ликвидности, получая прибыль.

Как работает обратная сэндвич-атака

По сути, обратная атака LP Sandwich заключается в том, чтобы найти транзакцию, в которой LP изменяет ликвидность пула, и получить прибыль за счет опережающего, а затем обратного выполнения этой транзакции.

Рассмотрим простой теоретический пример с использованием базового Constant Product AMM:

Допустим, у нас есть пул между двумя активами по цене 1 и 2 доллара соответственно, и предположим, для простоты, что пул вмещает 200 X и 100 Y.

Теперь кто-то собирается добавить ликвидность в пул.

Злоумышленник обнаруживает, что ликвидность вот-вот будет добавлена, допустим, новый LP хочет добавить 100 X и 50Y.

Злоумышленник вставляет транзакцию frontrun перед транзакцией LP и транзакцию backrun сразу после нее, как показано ниже:

  1. Продайте 100 X в пул и получите 33,26 года. Пул теперь содержит 300 X и 66,73 Y, а соотношение X/Y в пуле меняется с 2/1 до продажи до 4,49/1.
  2. LP вносит средства. В постоянном продукте AMM ликвидность может быть депонирована только при текущем соотношении активов в пуле. Поскольку соотношение изменилось из-за фронтунинга, вместо 100 и 50 LP фактически внесет 100 X и 22,24Y вместо 100X и 50Y, как планировалось изначально.
  3. Злоумышленник продает 33,26 Y в пул. Поскольку пул стал глубже, она получает 111,99 X — на 12% больше, чем было продано на шаге 1, получая прибыль.

Важное примечание: В большинстве смарт-контрактов AMM метод депозита ликвидности имеет способ контролировать проскальзывание, то есть неожиданное изменение соотношения между двумя активами в пуле. В Uniswap V2 это достигается двумя параметрами — amountAMin и amountBMin, указывающими минимальные суммы двух монет, которые LP готов внести. В приведенном выше примере, если бы LP указал, скажем, 98 и 49 в качестве минимальных сумм (эквивалентных 1% надбавки на проскальзывание), эта атака не произошла бы.

Пример из жизни

Вот реальный пример обратного сэндвича LP на пуле Uniswap V2.

Злоумышленник обнаруживает предстоящий депозит ликвидности на сумму 90 ETH в пул SUDO-WETH и создает пакет MEV, оборачивая транзакцию депозита в сэндвич из 3 частей:

1. Злоумышленник продает пулу 204,97 ETH перед операцией, получая 177 653 SUDO.

2. Жертва выполняет предполагаемый депозит LP (в соотношении, отличном от первоначально ожидаемого LP), поставляя в пул 45 ETH и 27 652 SUDO.

3. Злоумышленник выполняет бэкран, продавая 177 653 SUDO обратно в пул за 207,77 ETH, получая солидную прибыль в размере 2,79 ETH.

Смотрите транзакции на Etherscan: FrontrunVictim LP, Backrun.

Почему атака работает?

Когда ликвидность добавляется в пул, кривая AMM становится выше. На приведенном ниже графике зеленая линия представляет собой кривую до депонирования дополнительной ликвидности, а красная линия показывает кривую после депонирования новой ликвидности.

Для лучшей наглядности мы изменили приведенный выше пример из реальной жизни следующим образом:

  1. Ликвидность в пуле XY составляет X=607,36 и Y=494,30
  2. Frontrun: злоумышленник меняет 204.97Y на 177.65X
  3. Жертва вносит в пул 691,32X и 1,125Y (мы намеренно сделали депозит очень большим относительно исходного размера, чтобы сделать график более выразительным)
  4. Backrun: злоумышленник обменивает 177,65X обратно на 248,90 года, получая прибыль в 43,9 года.

Точки A и B показывают состояние пула до и после переднего запуска, а точки C и D показывают состояние пула до и после бэкрана.

Пунктирная стрелка показывает депозит LP, перемещая кривую AMM с зеленой на красную, а состояние пула с B на C.

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

Вариации атаки

В то время как «классические» обратные сэндвич-атаки LP ловят депозиты LP, бывают случаи, когда LP не только вводит или снимает ликвидность, но и выполняет своп. Во многих случаях провайдеры ликвидности владеют только одним из двух активов и обменивают половину желаемой суммы на второй актив перед депонированием. Точно так же, после вывода доли LP из пула, LP в некоторых случаях захотят получить все в одном активе и обменять один из снятых активов на другой прямо в пуле. Эти свопы неизбежно нарушают баланс пула, создавая дополнительную возможность арбитража.

Вот довольно примечательный пример комбинированной атаки

  1. Frontrun (см. на Etherscan)

— Злоумышленник обменивает 618 WETH на 43,3 млн SHIB на Uniswap V3

— Злоумышленник меняет 43,3 млн SHIP на 499,9 WETH

2. Атакованная LP-транзакция (см. на Etherscan)

— LP выводит из пула V2 233 WETH и 22,12M SHIB (~4,5% ликвидности)

— LP немедленно меняет 22.12M SHIB на 221 WETH в этом пуле, разбалансируя его

3. Backrun (см. на Etherscan)

— Злоумышленник меняет 499.9 WETH на 46.8M SHIB на несбалансированном пуле V2

— Злоумышленник обменивает 46.8M SHIB на 652 WETH в пуле V3, получая доход в размере 34 WETH

Другие протоколы

Атака работает не только на Uniswap V2. Фактически, в последнее время, поскольку Uniswap V2 затмевается другими протоколами, только небольшая часть атак Reverse LP Sandwich происходит на Uniswap V2. Curve, Balancer, Dodo, Uniswap V3 и другие подвержены такого рода атакам.

Кто теряет деньги?

Арбитраж — это игра с нулевой суммой, поэтому, когда злоумышленник получает деньги, кто-то проигрывает. В Reverse LP Sandwich Attack проигрывает LP, добавляющий ликвидность. Злоумышленник вынуждает LP предоставлять ликвидность по неправильной цене и возвращает цену обратно к рыночной цене сразу после депозита ликвидности, по сути, лишая LP части их инвестиций. В принципе, установка низкого допуска проскальзывания должна предотвратить атаки, но, по-видимому, достаточное количество LP либо устанавливают слишком высокий предел, либо не устанавливают его вообще.

Статистика

Давайте углубимся в цифры. В этой статье мы рассмотрим только Ethereum, оставив другие блокчейны на потом.

Сколько

На графике ниже показано количество атак по протоколам:

Количество атак по протоколу

Мы наблюдаем значительный рост ежемесячного числа атак, начиная с 22 августа, а общее число достигло исторического максимума в 629 атак в марте 2023 года.

Однако, по сравнению с общим количеством событий предоставления ликвидности, количество атак довольно ограничено. Для справки, ниже приведен график, показывающий общее количество депозитов ликвидности по протоколу за прошедший год.

Количество депозитов LP по протоколу

Атаке подвергается лишь крошечная часть всех депозитов LP (в среднем атаковано 0,0024% всех операций LP). Вероятно, это объясняется тем, что в большинстве случаев LP правильно устанавливал защиту от проскальзывания, не допуская атаки. Другая причина заключается в том, что большинство депозитов LP недостаточно велики, чтобы сделать атаку прибыльной. Как мы показываем в Приложении А, в Uniswap V2 депозит должен составлять не менее 0,6% от общего размера пула, чтобы быть подходящей целью для атаки.

Сколько денег

В общей сложности боты использовали более 1,2 млрд долларов для обратных атак LP Sandwich, а общий доход, полученный ими, составляет 5,5 млн долларов, что очень похоже на прибыль от JIT Liquidity, также известной как LP Sandwich Attacks, о которой мы говорили в нашей предыдущей статье. Вот историческая диаграмма, показывающая общие объемы, используемые для форраннинга, и ежемесячную валовую прибыль (т.е. доход от атак за вычетом затрат на газ), полученную злоумышленниками, с разбивкой по протоколам:

Выручка и объем, используемый злоумышленниками, по протоколам

Исторически сложилось так, что Uniswap V2 был основным источником целей для атак и основным источником дохода для ботов MEV. Однако за последние 12 месяцев основными целями стали Uniswap V3 и Curve.

Общий доход по протоколу

Чистая прибыль

В экосистеме Ethereum MEV после слияния арбитражеры (также известные как поисковики) соревнуются на аукционе с Block Builder, чтобы их пакеты транзакций были включены в блок. Ставки (также известные как MEV Rewards) подаются в виде прямых переводов на адрес coinbase, и сумма всех арбитражных заявок может рассматриваться как стоимость последней транзакции в блоке. Однако есть сложность — большинство блоков содержат более одной MEV атаки, и невозможно определить, какую долю от общего вознаграждения MEV следует отнести к конкретной атаке, используя данные блокчейна.

Чтобы оценить вознаграждение за MEV, выплачиваемое злоумышленниками, мы выбрали случаи JIT-атак, в которых вознаграждение за MEV, выплачиваемое в блоке, было ниже, чем предполагаемый доход от торговых сборов. Мы предполагаем, что злоумышленник может точно рассчитать доход, который он ожидает получить от атаки, и что он рационален, поэтому он не будет предлагать вознаграждение MEV, превышающее ожидаемый доход от комиссии.

Из 3 179 атак, произошедших после слияния, только 408 соответствовали этому условию. Средняя и медианная доли прибыли злоумышленников, выплачиваемой валидаторам, составляют 58,2% и 63,9% соответственно.

Дисперсия выручки

В то время как в большинстве атак (76%) доход злоумышленника составляет менее 1000 долларов, есть некоторые значительные выбросы с прибылью более 100 тысяч долларов за транзакцию.

На приведенной ниже диаграмме показано распределение количества сделок и полученной прибыли по ячейкам прибыли.

Самая успешная атака Reverse LP Sandwich произошла 25 ноября 2022 г. в 04:28:23 + UTC и принесла валовую прибыль в размере 535 тысяч долларов. Мы рассмотрели это в нашей серии #talesfromthedarkforest здесь: https://twitter.com/VirtuSwap/status/1597178044392693765?s=20

Существует определенная разница по протоколу атаки, как показано ниже, при этом кривая показывает самый высокий средний доход за атаку:

Средний доход злоумышленников по протоколам

Ниже показана функция распределения вероятностей общего дохода и количества атак со стороны корзин доходов в размере 1000 долларов. Атаки с доходом ниже $1000 составляют 75% всех атак, но приносят только 11% всего дохода.

Распределение количества атак по корзине доходов

Где

Для того, чтобы атака произошла, LP должен обеспечить высокий допуск к проскальзыванию. Допуск задается в пользовательском интерфейсе, поэтому мы посчитали интересным проверить, какие фронтенды отвечают за атаки. Ниже приведена разбивка общего количества атак Reverse LP Sandwich по маршрутизатору, т.е. по интерфейсному продукту, с которым взаимодействует LP.

Количество атак роутера

Одним из маршрутизаторов, который выделяется, является Zapper.fi — похоже, что в период с мая 2021 года по июль 2022 года соотношение атакованных LP-депозитов, исходящих от Zapper, было намного выше, чем на любом другом маршрутизаторе. Мы подозреваем, что допуск на проскальзывание был либо слишком слабым по умолчанию, либо вообще не был реализован. Также похоже, что Zapper перестал предлагать своим пользователям возможность вносить средства в пулы AMM примерно в июле 2022 года.

Депозиты LP, исходящие от Zapper, и количество атак

Кроме того, каждому атакованному депозиту LP на Zapper предшествует своп, а это означает, что пользователям предлагалось LP использовать только один актив (обмен половины суммы на второй актив за кулисами). Это привело к дополнительной разбалансировке пула, предоставив дополнительные возможности злоумышленникам.

Кто

Давайте познакомимся с нападающими. В общей сложности было замечено, что 61 контракт ботов проводит обратные сэндвич-атаки LP.

Топ ботов-злоумышленников

Более 80% всего дохода получают всего 6 ботов.

Топовый бот 0x000000… b40 — по этому контракту было совершено 470 атак и получен доход в размере 1,57 млн долларов. Поздравляем 0x000000… В40!

Выводы

В этой статье мы проанализировали атаки Reverse LP Sandwich — подмножество сэндвич-атак. Принцип действия атаки основан на использовании жертвы, устанавливающей слишком высокий допуск проскальзывания, а также на опережение и обратное выполнение операции.

Эта атака наносит ущерб LP и приносит пользу только злоумышленнику (в отличие от атаки JIT Liquidity, которая также приносит пользу трейдеру).

Количество таких атак растет довольно круто, достигнув месячного исторического максимума в марте 2023 года. Можно предположить, что атаки продолжат нарастать.

Приложение А — Формулы

В этом приложении мы представим математическое моделирование «классической» сэндвич-атаки Reverse LP на пул Uniswap V2 с активом X и активом Y. Классическая атака имеет следующие стадии:

  1. Злоумышленник меняет ∂x суммы актива X на ∂y актива Y
  2. LP добавляет ликвидность в пул — X количество актива X и соответствующее количество актива Y
  3. Злоумышленник выполняет бэкран, обменивая полученные на шаге 1 ∂y обратно на актив X и получая прибыль

Обозначим начальные уровни ликвидности актива X и актива Y как X и Y соответственно.

Этап 1 — злоумышленник меняет ∂x на ∂

Сумма ∂y определяется следующим образом:

Здесь и в последующих формулах f обозначает комиссию пула (в Uniswap V2 она обычно равна 0,003)

После свопа резервы активов в пуле изменяются на следующие:

Этап 2 — LP предоставляет ликвидность

Первоначально LP обозначает суммы X и Y. Однако из-за того, что коэффициент пула изменился, так как злоумышленник выполнил своп до депозита lP, сумма второго актива будет другой.

Учитывая сумму X, которую пользователь хотел предоставить, мы можем рассчитать сумму Y, которая ей соответствует, а затем обновленные ликвидности в пуле после депозита LP:

Введем коэффициент роста ликвидности r:

Учитывая r, мы можем рассчитать новые ликвидности после депозита:

Этап 3 — Бэкран

Продажа первоначально полученного ∂y количества актива Y обратно в пул после изменения ликвидности приведет к получению следующего ∂x»’ количества актива X:

Подставим вычисляемые формулы на ∂y, X» и Y», и упростим. Для удобства подставим вместо ∂x(1-fee)

Подставляя t обратно, получаем:

Теперь давайте рассчитаем арбитражную прибыль от обратной сэндвич-сделки. Выручка (без учета платы за газ) равна ∂x»’ — ∂x. Для удобства заменим на (1-f)²:

Теперь давайте откроем член r-1:

и расширьте выражение Profit дальше, чтобы получить следующий довольно сомнительный результат:

Далее подставляя F’ вместо 1-F, мы получаем следующую, немного более простую форму:

Минимальные значения

Давайте теперь количественно определим минимальные значения X и ∂x, необходимые для успеха арбитража:

В последнем уравнении для P выше, знаменатель, очевидно, всегда положительный.

Таким образом, прибыль будет положительной тогда и только тогда, когда числитель больше нуля. Выразим это в неравенстве:

Неравенство 1

Заметим, что знаменатель последнего неравенства также должен быть положительным:

Помня, что F’ расшифровывается как 1-(1-f)², и учитывая обычную комиссию Uniswap V2 в размере 0,03, мы получаем следующее:

Таким образом, если ликвидность увеличивается хотя бы на 0,6%, возможен арбитраж Classic Reverse LP Sandwich, а минимальная сумма, которую злоумышленник должен использовать для получения прибыли с учетом текущего объема ликвидности в пуле и суммы, которую LP собирается внести, определяется по формуле ниже:

Обратите внимание — в приведенном выше обсуждении не учитываются расходы на газ. Мы оставляем это любознательному читателю.

Приложение В — Методология

Мы обнаруживаем атаку Reverse LP Sandwich как набор из 3 транзакций, строго следующих одна за другой и обращающихся к одному и тому же пулу AMM, следующим образом:

  1. Обменивать
  2. Предоставление ликвидности (ввод или снятие)
  3. Еще один своп

Транзакции 1 и 3 должны быть с одного и того же адреса (злоумышленника), а транзакция 2 должна быть с другого адреса (жертва).

Для каждой атаки мы определяем несколько точек данных, включая следующие

  1. Выручка злоумышленника и объем торгов
  2. Объем ликвидности, предоставленной жертвой LP
  3. Выполняла ли жертва свопы до или после операции LP
  4. Контракты, используемые жертвой и злоумышленником.

Мы используем базу данных VirtuSwap Research, полученную из blockchain_etl таблиц Ethereum.

Источник