Проще говоря, этот пользователь хотел обменять стабильную монету USDC на сумму 220,800 долларов в пуле Uniswap v3 на эквивалентное количество USDT, но в результате он получил всего 5,272 USDT, и за считанные секунды его активы испарились на 215,700 долларов, см. рисунок ниже.
На изображении выше приведен скриншот записи этой сделки в блокчейне. Основная причина этой трагедии заключается в том, что она подверглась печально известной в мире блокчейна «сэндвич-атаке» (Sandwich Attack).
Первым, кто раскрыл эту атаку MEV, был Майкл (см. изображение выше), который объяснил, что:
MEV-бот совершил фронт-ран операции, выведя всю ликвидность USDC. После выполнения транзакции они вернули ликвидность. Нападающий заплатил строителю блока (bobTheBuilder) $200k и получил прибыль в $8k от этой транзакции.
Перевод: MEV-роботы получают преимущество в tx, меняя всю ликвидность USDC. После выполнения сделки они возвращают ликвидность. Нападающий заплатил строителю блока (bobTheBuilder) 200000 долларов и получил прибыль в 8000 долларов от этой сделки.
В приведенном выше содержании имеется опечатка: MEV-атака заменила большое количество USDT, а не USDC.
Тем не менее, после того как вы прочитаете его объяснения и новости, вы все равно можете быть в недоумении, потому что в них слишком много новых терминов, таких как "сандвич-атака" (Sandwich Attack), "преждевременная транзакция" (front-ran the tx), "возврат ликвидности" (put back the liquidity), "чаевые строителю блока" (tipped a block builder) и т.д.
Сегодня мы разберем этот случай атаки MEV, подробно рассмотрим весь процесс и познакомим вас с темной стороной MEV.
Во-первых, нам нужно объяснить, что такое MEV.
1. Что такое MEV?
Первоначально MEV назывался Miner Extractable Value, что относится к дополнительной прибыли, которую майнеры могут получить, переупорядочивая, вставляя или исключая транзакции в блоках блокчейна. Это может привести к более высоким затратам для среднего пользователя или к более невыгодной цене транзакции.
С переходом блокчейн-сетей, таких как Ethereum, от механизма согласования на основе доказательства работы (Proof-of-Work, PoW) к механизму согласования на основе доказательства доли (Proof-of-Stake, PoS), власть контролировать порядок транзакций перешла от майнеров к валидаторам. Соответственно, терминология также изменилась с "добываемой ценности майнеров" (Miner Extractable Value) на "максимально извлекаемую ценность" (Maximal Extractable Value).
Несмотря на смену названия, основная концепция извлечения ценности путем манипулирования порядком транзакций остается прежней.
Содержимое выше все еще немного профессионально, вам нужно просто помнить: MEV существует потому, что бывшие майнеры и нынешние валидаторы имеют право сортировать транзакции в мемпуле. Эта сортировка происходит в пределах блока, и сейчас в Ethereum блоки создаются примерно каждые 11 секунд, что означает, что каждые 11 секунд происходит такое осуществление права. Точно так же, эта MEV-атака также была реализована через сортировку валидаторов.
Нажмите на эту ссылку, и вы увидите содержание транзакций блока с номером 22029771, связанным с этой атакой, как показано на рисунке ниже.
Обратите внимание, что сделки на рисунках 1, 2 и 3 — это та самая атака MEV, о которой говорилось в начале статьи, и этот порядок был установлен валидатором (bobTheBuilder). Почему это возможно?
2. Принцип MEV
Чтобы понять, как работает MEV, нам необходимо сначала разобраться, как блокчейн записывает и обновляет информацию.
2.1 Механизм обновления состояния блокчейна
Блокчейн можно рассматривать как постоянно растущую бухгалтерскую книгу, которая фиксирует все происходящие транзакции. Состояние этой книги, например, баланс каждого счета, объем резервов различных токенов в торговом пуле Uniswap и т. д., определяется предыдущими транзакциями.
Когда новый блок добавляется в блокчейн, все транзакции, содержащиеся в этом блоке, выполняются последовательно в порядке их расположения в блоке. При выполнении каждой транзакции глобальное состояние блокчейна соответственно изменяется.
То есть, важен не только порядок блоков, но и порядок транзакций в блоках. Так как же определяется порядок транзакций в блоке?
2.2 Решение валидатора о порядке транзакций
Когда пользователь инициирует транзакцию в блокчейн-сети, например, эту транзакцию по обмену USDC на USDT через Uniswap, она сначала транслируется на узлы сети. После первичной проверки эта транзакция попадает в область, называемую "пулом памяти" (mempool). Пул памяти подобен зоне ожидания, где транзакции еще не подтверждены и не добавлены в следующий блок блокчейна.
Бывшие майнеры (в системе PoW), теперь валидаторы (в системе PoS) имеют право выбирать транзакции из пула памяти и решать, в каком порядке эти транзакции будут размещены в следующем блоке.
Порядок транзакций в блоке имеет решающее значение. Прежде чем блок будет окончательно подтверждён и добавлен в блокчейн, транзакции в этом блоке будут выполнены в порядке, установленном валидатором (например, bobTheBuilder). Это означает, что если в блоке содержится несколько транзакций, взаимодействующих с одним и тем же пулом транзакций, то порядок их выполнения напрямую повлияет на результат каждой транзакции.
Эта способность позволяет валидатору приоритизировать определённые транзакции, откладывать или исключать другие транзакции, а также вставлять свои собственные транзакции для максимизации прибыли.
Порядок этой транзакции также важен, и небольшая ошибка может привести к неудаче атаки.
2.3 Сортировка транзакций при атаке MEV
Сначала давайте кратко ознакомимся с 3 сделками, связанными с этой атакой MEV:
Транзакция 1 (первая транзакция злоумышленника): выполняется до транзакции жертвы. Цель этой транзакции обычно заключается в том, чтобы поднять цену токена, который жертва хочет продать.
Сделка 2 (сделка жертвы): выполняется после первой сделки атакующего. Из-за предыдущих действий атакующего цена в пуле сделок неблагоприятна для жертвы, и ей нужно заплатить больше USDC, чтобы получить эквивалентное количество USDT, или она может получить только меньшее количество USDT.
Транзакция 3 (вторая транзакция злоумышленника): выполняется после транзакции жертвы. Цель этой транзакции, как правило, заключается в том, чтобы извлечь выгоду из новых ценовых изменений, вызванных транзакцией жертвы.
В этот раз валидатором MEV-атаки стал bob-The-Builder.eth, который отвечал за упорядочение транзакций в последовательности 1, 2, 3. Конечно, bobTheBuilder тоже не работал просто так, он заработал более 100 ETH на этом упорядочивании, в то время как инициатор MEV-атаки получил только 8000 долларов. Их доход поступает именно от второй транзакции жертвы.
Одним предложением, злоумышленники (MEV-роботы) сговорились с валидатором (bobTheBuilder), из-за чего жертва второй сделки потеряла 215 000 долларов, при этом злоумышленник получил 8000 долларов, а валидатор - 200 000 долларов (более 100 ETH).
Атакующий метод, который они используют, имеет образное название — сэндвич-атака. Далее мы будем объяснять это по сделкам одну за другой, чтобы вы полностью поняли, что такое довольно сложная сэндвич-атака MEV.
3. Полный анализ сэндвич-атаки
Причина, по которой это называется атакой сэндвичем (Sandwich Attack), заключается в том, что две сделки злоумышленника (сделка 1 и сделка 3) размещаются перед и после сделки жертвы (сделка 2), что делает всю последовательность сделок похожей на структуру сэндвича (см. рисунок выше).
Торговля 1 и Торговля 3 выполняют разные функции. Проще говоря, Торговля 1 отвечает за совершение преступления, а Торговля 3 отвечает за распределение добычи. Конкретно весь процесс выглядит следующим образом:
3.1 Сделка 1, ответственная за повышение цены USDT
Нажмите на ссылку сделки номер 1 на изображении выше, и вы увидите подробности сделки номер 1. Атакующий повысил цену USDT очень просто, обменяв 17,58 млн USDT внутри на 18,65 млн USDC, см. изображение ниже.
В этот момент в ликвидностном пуле осталось много USDC и немного USDT. Если верить сообщениям новостей, перед атакой в ликвидности Uniswap было около 19,8 миллиона USDC и USDT, тогда после выполнения сделки 1 в пуле останется только 2,22 миллиона USDT (=1980-1758), а баланс USDC увеличится до примерно 38,45 миллиона (=1980+1865).
В этот момент обменный курс между USDC и USDT в этом пуле уже далеко не 1:1, а составляет 1:17, то есть в данный момент нужно 17 USDC, чтобы обменять на 1 USDT, однако этот коэффициент всего лишь приблизителен, потому что этот пул является V3, и ликвидность в нем распределена неравномерно.
Еще один момент, который я хочу сообщить вам. На самом деле злоумышленник не использовал 18,65 миллиона USDC за один раз, фактически использованная сумма составила 1,09 миллиона, даже не 6%. Как он это сделал? Мы подробно расскажем об этом, когда закончим рассказ о нападении.
3.2 Сделка 2, выполнение 22 тысяч USDC на USDT
Нажмите на ссылку торговли 2 на рисунке выше, чтобы увидеть рисунок ниже.
Как показано на рисунке, транзакция жертвы 2 была затронута транзакцией 1, в результате чего 220000 USDC превратились только в 5272 USDT, что привело к незаметной потере 170000 USDT. Почему это называется незаметной потерей? Потому что, если жертва осуществляла сделку через Uniswap, то при подаче транзакции она увидела бы следующий интерфейс.
На приведенной выше картине вы можете увидеть, что жертва как минимум должна была получить 220000, что должно быть гарантировано. Причина, по которой жертва в конечном итоге получила всего более 5000 USDT, заключается в том, что произошёл огромный проскальзывание, достигшее более 90%. Однако Uniswap имеет предустановленное ограничение на максимальное проскальзывание в 5.5%, см. на нижней картинке.
То есть, если жертва совершала сделку через фронтенд Uniswap, то она должна была получить как минимум 208381 USDT (= 220510 * 94.5%). У вас может возникнуть вопрос, почему в записях блокчейна указано, что эта сделка была проведена в «Uniswap V3».
Потому что фронт и бэкэнд блокчейн-транзакций разделены. Упомянутый выше «Uniswap V3» относится к пулу ликвидности USDC-USDT Uniswap, который является открытым, и любой фронтэнд транзакции может торговать через этот пул.
Именно по этой причине некоторые сомневаются, что жертва не проста, это не обычный человек, иначе бы такого большого проскальзывания не произошло. Возможно, это связано с атакой MEV для отмывания денег. Об этом мы поговорим позже.
Нажмите на ссылку, чтобы увидеть детали сделки 3, как показано на рисунке. Мы подробно обсудим три сделки: A, B и C.
Торговля A восстановила ликвидность в пуле, обменяв 17,32 миллиона USDT на 18,60 миллиона USDC.
Торгуйте B, готовьтесь разделить добычу, а часть выручки обменяйте — 204 000 USDC на 105 ETH;
Торговля C, дележ, выплатить 100.558 ETH валидатору bob-The-Builder.eth.
Таким образом, атака сэндвичем завершена.
Теперь давайте ответим на один очень важный вопрос, упомянутый выше: как злоумышленник с помощью 1,09 миллиона USDC осуществил атаку на 18 миллионов.
4. Как злоумышленник осуществил атаку на пул в 18 миллионов USDC
Причина, по которой злоумышленник смог провести атаку на уровне 18 миллионов долларов, используя всего лишь 1,09 миллиона USDC в качестве первоначального капитала, заключается в существовании волшебного и уникального механизма в мире блокчейна — флеш-обмена (Flash Swap) Uniswap V3.
4.1 Что такое молниеносный обмен (Flash Swap)?
Проще говоря:
Лимитированная обменная функция позволяет пользователям сначала извлекать активы из пула Uniswap в одной транзакции, а затем погашать их другой активом (или тем же активом плюс комиссия).
Uniswap позволяет такое поведение «сначала получить, затем заплатить», при условии, что вся операция завершается в одной и той же сделке. Обратите внимание, что это должно быть завершено в одной и той же сделке. Такая конструкция предназначена для обеспечения безопасности самой платформы Uniswap:
Нулевой риск заимствования: Uniswap позволяет пользователям без залога временно заимствовать средства из пула (аналог заимствования), но необходимо немедленно вернуть их по окончании сделки.
Атомарность (Atomicity): Операция должна быть атомарной, она должна либо полностью завершиться успешно (возврат средств), либо полностью провалиться (откат транзакции).
Изначальная цель дизайна молниеносного обмена заключалась в более эффективном проведении арбитража на блокчейне, но, к сожалению, он был использован атакующими MEV и стал инструментом манипуляции рынком.
4.2 Как работает мгновенный обмен?
Теперь давайте посмотрим на изображение и шаг за шагом разберемся, как была реализована молниеносная обмена в этой атаке, см. рисунок ниже.
Атакующий F1 берет в долг 1,09 миллиона USDC, используя свои 701 WETH от AAVE;
F2 атакующий инициирует запрос на молниеносный обмен, сначала извлекая 17,58 миллиона USDT из пула Uniswap (в этот момент предварительная оплата не требуется); временно увеличивается баланс атакующего на 17,58 миллиона USDT;
Атакующий быстро вложил 17,58 миллиона USDT в пул Curve, обменяв их на 17,55 миллиона USDC. На счету атакующего USDT уменьшилось на 17,58 миллиона, а USDC увеличилось на 17,55 миллиона. Из нижеприведенной диаграммы вы увидите, что атакующий выбрал Curve из-за высокой ликвидности: более 70,54 миллиона USDT и 50,71 миллиона USDC, что обеспечивает относительно низкий проскальзывание.
Нападающие F4 затем вернули 17,55 миллиона USDC, полученных от обмена Curve, вместе с 1,09 миллиона USDC (полученных от займа Aave), всего 18,64 миллиона USDC, единовременно вернув их Uniswap, завершив обмен.
После этой транзакции (Транзакция 1) баланс счета злоумышленника уменьшился на 1,09 млн USDC, потому что из 18,64 млн USDC, возвращенных в Uniswap, только 17,55 млн USDC было обменено на Curve, а оставшиеся 1,09 млн USDC — собственные средства злоумышленника.
Вы, должно быть, заметили, что эта сделка на самом деле привела к убыткам атакующего в 1,09 миллиона. Однако последняя сделка 3, также осуществленная через метод молниеносного обмена, не только вернула 1,09 миллиона USDC, но и заработала более 200 тысяч.
Проведем пошаговый анализ на основе данных из Транзакции 3.
K1 атакующий вывел 18,6 миллиона USDC через Lightning Swap на Uniswap;
K2 атакующий, обменяв 17,3 миллиона USDC, только что выведенных из Uniswap, на 17,32 миллиона USDT;
Атакующий K1 вернул 17,32 миллиона USDT обратно в Uniswap, которые он получил от Curve. Мгновенный обмен завершен. Вам следует обратить внимание на то, что атакующий получил 17,32 миллиона USDT, потратив всего лишь 17,3 миллиона USDC через K2. Из оставшихся 1,3 миллиона (= 1,86-1,73) USDC, 1,09 миллиона - это собственные средства, а оставшиеся 210 тысяч USDC - это прибыль от этой атаки.
Атакующий K3 вернул основной капитал AAVE, забрал свои 701 WETH, одновременно обменял 200000 USDC на 105 ETH и отправил 100.558 ETH валидатору в качестве чаевых (около 200000 долларов), оставив себе менее 10000 долларов прибыли.
Вы, возможно, удивитесь, почему злоумышленники готовы отдать до 200 000 долларов прибыли валидаторам?
4.3 Почему нужно давать «чаевые» в 200000 долларов?
На самом деле, это не щедрость, а необходимое условие для успешной атаки MEV, такой как сэндвич-атака:
Ядром успешной атаки является точное управление порядком транзакций, а контролировать порядок транзакций как раз и является валидатор (bobTheBuilder).
Валидаоры не только помогают атакующим обеспечивать, чтобы транзакции жертвы находились между атакующими транзакциями, но что более важно, валидаоры могут гарантировать, что другие конкурирующие MEV-роботы не смогут встать в очередь или помешать успешному завершению атаки.
Таким образом, злоумышленник предпочитает пожертвовать большей частью прибыли, чтобы гарантировать успех атаки, оставив себе определенную прибыль.
Следует особо отметить, что атака MEV также имеет свои затраты: она имеет стоимость в Uniswap при мгновенном обмене, и также имеет стоимость при торговле на Curve, просто из-за низких тарифов, примерно 0,01~0,05%, это можно не считать по сравнению с доходом от атаки.
В конце концов, хочу напомнить, что защита от атак MEV на самом деле очень проста: просто установите допустимый уровень проскальзывания, не превышающий 1%; выполняйте крупные сделки по частям. Поэтому вам не нужно отказываться от торговли на DEX (децентрализованных биржах) из-за страха.
Заключение: Предупреждение и уроки из темного леса
Это событие с атакой MEV на сумму 215000 долларов США, безусловно, является еще одним жестоким проявлением закона «темного леса» в мире блокчейна. Оно ярко демонстрирует сложные игры, скрывающиеся в децентрализованной, безразрешительной среде, которые используют механические уязвимости для получения выгоды.
С более высокой точки зрения, появление MEV является проявлением двустороннего эффекта прозрачности и программируемости блокчейна.
С одной стороны, все записи транзакций являются открытыми и проверяемыми, что позволяет отслеживать и анализировать атаки;
С другой стороны, сложная логика смарт-контрактов и определенность выполнения сделок предоставляют умным участникам возможности для маневра.
Это не простое хакерское действие, а глубокое понимание и использование основных механизмов блокчейна, которое испытывает надежность проектирования протоколов и бросает вызов сознанию участников о рисках.
Понимание MEV и осознание его рисков позволит лучше ориентироваться в этом цифровом мире, полном возможностей, но также скрывающем опасности. Помните, что в "темном лесу" блокчейна только уважение к правилам и повышение осведомленности помогут избежать того, чтобы стать следующей жертвой.
Это также то, чего я надеюсь достичь с помощью этой статьи.
Содержание носит исключительно справочный характер и не является предложением или офертой. Консультации по инвестициям, налогообложению или юридическим вопросам не предоставляются. Более подробную информацию о рисках см. в разделе «Дисклеймер».
Полный анализ MEV-сэндвич-атак: от сортировки до смертельной цепочки обменов
Автор: Daii Источник: mirror
В прошлую среду (12 марта) криптотрейдер стал жертвой MEV-атаки и потерял 215 тысяч долларов.
! d40IzkNmiRRIQY5uP5wMz1zpFo0cMqNwhmogZmhk.png
Проще говоря, этот пользователь хотел обменять стабильную монету USDC на сумму 220,800 долларов в пуле Uniswap v3 на эквивалентное количество USDT, но в результате он получил всего 5,272 USDT, и за считанные секунды его активы испарились на 215,700 долларов, см. рисунок ниже.
! yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png
На изображении выше приведен скриншот записи этой сделки в блокчейне. Основная причина этой трагедии заключается в том, что она подверглась печально известной в мире блокчейна «сэндвич-атаке» (Sandwich Attack).
! kf5CcjkRVjOcv2Tj5LM63tYSNd150MXNqxzlLXgj.png
Первым, кто раскрыл эту атаку MEV, был Майкл (см. изображение выше), который объяснил, что:
В приведенном выше содержании имеется опечатка: MEV-атака заменила большое количество USDT, а не USDC.
Тем не менее, после того как вы прочитаете его объяснения и новости, вы все равно можете быть в недоумении, потому что в них слишком много новых терминов, таких как "сандвич-атака" (Sandwich Attack), "преждевременная транзакция" (front-ran the tx), "возврат ликвидности" (put back the liquidity), "чаевые строителю блока" (tipped a block builder) и т.д.
Сегодня мы разберем этот случай атаки MEV, подробно рассмотрим весь процесс и познакомим вас с темной стороной MEV.
Во-первых, нам нужно объяснить, что такое MEV.
1. Что такое MEV?
Первоначально MEV назывался Miner Extractable Value, что относится к дополнительной прибыли, которую майнеры могут получить, переупорядочивая, вставляя или исключая транзакции в блоках блокчейна. Это может привести к более высоким затратам для среднего пользователя или к более невыгодной цене транзакции.
С переходом блокчейн-сетей, таких как Ethereum, от механизма согласования на основе доказательства работы (Proof-of-Work, PoW) к механизму согласования на основе доказательства доли (Proof-of-Stake, PoS), власть контролировать порядок транзакций перешла от майнеров к валидаторам. Соответственно, терминология также изменилась с "добываемой ценности майнеров" (Miner Extractable Value) на "максимально извлекаемую ценность" (Maximal Extractable Value).
Несмотря на смену названия, основная концепция извлечения ценности путем манипулирования порядком транзакций остается прежней.
Содержимое выше все еще немного профессионально, вам нужно просто помнить: MEV существует потому, что бывшие майнеры и нынешние валидаторы имеют право сортировать транзакции в мемпуле. Эта сортировка происходит в пределах блока, и сейчас в Ethereum блоки создаются примерно каждые 11 секунд, что означает, что каждые 11 секунд происходит такое осуществление права. Точно так же, эта MEV-атака также была реализована через сортировку валидаторов.
Нажмите на эту ссылку, и вы увидите содержание транзакций блока с номером 22029771, связанным с этой атакой, как показано на рисунке ниже.
! gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png
Обратите внимание, что сделки на рисунках 1, 2 и 3 — это та самая атака MEV, о которой говорилось в начале статьи, и этот порядок был установлен валидатором (bobTheBuilder). Почему это возможно?
2. Принцип MEV
Чтобы понять, как работает MEV, нам необходимо сначала разобраться, как блокчейн записывает и обновляет информацию.
2.1 Механизм обновления состояния блокчейна
Блокчейн можно рассматривать как постоянно растущую бухгалтерскую книгу, которая фиксирует все происходящие транзакции. Состояние этой книги, например, баланс каждого счета, объем резервов различных токенов в торговом пуле Uniswap и т. д., определяется предыдущими транзакциями.
Когда новый блок добавляется в блокчейн, все транзакции, содержащиеся в этом блоке, выполняются последовательно в порядке их расположения в блоке. При выполнении каждой транзакции глобальное состояние блокчейна соответственно изменяется.
То есть, важен не только порядок блоков, но и порядок транзакций в блоках. Так как же определяется порядок транзакций в блоке?
2.2 Решение валидатора о порядке транзакций
Когда пользователь инициирует транзакцию в блокчейн-сети, например, эту транзакцию по обмену USDC на USDT через Uniswap, она сначала транслируется на узлы сети. После первичной проверки эта транзакция попадает в область, называемую "пулом памяти" (mempool). Пул памяти подобен зоне ожидания, где транзакции еще не подтверждены и не добавлены в следующий блок блокчейна.
Бывшие майнеры (в системе PoW), теперь валидаторы (в системе PoS) имеют право выбирать транзакции из пула памяти и решать, в каком порядке эти транзакции будут размещены в следующем блоке.
Порядок транзакций в блоке имеет решающее значение. Прежде чем блок будет окончательно подтверждён и добавлен в блокчейн, транзакции в этом блоке будут выполнены в порядке, установленном валидатором (например, bobTheBuilder). Это означает, что если в блоке содержится несколько транзакций, взаимодействующих с одним и тем же пулом транзакций, то порядок их выполнения напрямую повлияет на результат каждой транзакции.
Эта способность позволяет валидатору приоритизировать определённые транзакции, откладывать или исключать другие транзакции, а также вставлять свои собственные транзакции для максимизации прибыли.
Порядок этой транзакции также важен, и небольшая ошибка может привести к неудаче атаки.
2.3 Сортировка транзакций при атаке MEV
Сначала давайте кратко ознакомимся с 3 сделками, связанными с этой атакой MEV:
! dOFw7Sh0V9EIVxqeuCZIDFbCHSXZ7Sl9JXeXJUue.png
В этот раз валидатором MEV-атаки стал bob-The-Builder.eth, который отвечал за упорядочение транзакций в последовательности 1, 2, 3. Конечно, bobTheBuilder тоже не работал просто так, он заработал более 100 ETH на этом упорядочивании, в то время как инициатор MEV-атаки получил только 8000 долларов. Их доход поступает именно от второй транзакции жертвы.
Одним предложением, злоумышленники (MEV-роботы) сговорились с валидатором (bobTheBuilder), из-за чего жертва второй сделки потеряла 215 000 долларов, при этом злоумышленник получил 8000 долларов, а валидатор - 200 000 долларов (более 100 ETH).
Атакующий метод, который они используют, имеет образное название — сэндвич-атака. Далее мы будем объяснять это по сделкам одну за другой, чтобы вы полностью поняли, что такое довольно сложная сэндвич-атака MEV.
3. Полный анализ сэндвич-атаки
Причина, по которой это называется атакой сэндвичем (Sandwich Attack), заключается в том, что две сделки злоумышленника (сделка 1 и сделка 3) размещаются перед и после сделки жертвы (сделка 2), что делает всю последовательность сделок похожей на структуру сэндвича (см. рисунок выше).
Торговля 1 и Торговля 3 выполняют разные функции. Проще говоря, Торговля 1 отвечает за совершение преступления, а Торговля 3 отвечает за распределение добычи. Конкретно весь процесс выглядит следующим образом:
3.1 Сделка 1, ответственная за повышение цены USDT
Нажмите на ссылку сделки номер 1 на изображении выше, и вы увидите подробности сделки номер 1. Атакующий повысил цену USDT очень просто, обменяв 17,58 млн USDT внутри на 18,65 млн USDC, см. изображение ниже.
! vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png
В этот момент в ликвидностном пуле осталось много USDC и немного USDT. Если верить сообщениям новостей, перед атакой в ликвидности Uniswap было около 19,8 миллиона USDC и USDT, тогда после выполнения сделки 1 в пуле останется только 2,22 миллиона USDT (=1980-1758), а баланс USDC увеличится до примерно 38,45 миллиона (=1980+1865).
В этот момент обменный курс между USDC и USDT в этом пуле уже далеко не 1:1, а составляет 1:17, то есть в данный момент нужно 17 USDC, чтобы обменять на 1 USDT, однако этот коэффициент всего лишь приблизителен, потому что этот пул является V3, и ликвидность в нем распределена неравномерно.
Еще один момент, который я хочу сообщить вам. На самом деле злоумышленник не использовал 18,65 миллиона USDC за один раз, фактически использованная сумма составила 1,09 миллиона, даже не 6%. Как он это сделал? Мы подробно расскажем об этом, когда закончим рассказ о нападении.
3.2 Сделка 2, выполнение 22 тысяч USDC на USDT
Нажмите на ссылку торговли 2 на рисунке выше, чтобы увидеть рисунок ниже.
! x3kBJKcYVyM44HJSUHuIxVQ1ScIutWsoZ6JuRvM7.png
Как показано на рисунке, транзакция жертвы 2 была затронута транзакцией 1, в результате чего 220000 USDC превратились только в 5272 USDT, что привело к незаметной потере 170000 USDT. Почему это называется незаметной потерей? Потому что, если жертва осуществляла сделку через Uniswap, то при подаче транзакции она увидела бы следующий интерфейс.
! rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png
На приведенной выше картине вы можете увидеть, что жертва как минимум должна была получить 220000, что должно быть гарантировано. Причина, по которой жертва в конечном итоге получила всего более 5000 USDT, заключается в том, что произошёл огромный проскальзывание, достигшее более 90%. Однако Uniswap имеет предустановленное ограничение на максимальное проскальзывание в 5.5%, см. на нижней картинке.
! Qlpu7GNLheCyBJtsy2LEgpo0vVP2oENI4sGcSiiW.png
То есть, если жертва совершала сделку через фронтенд Uniswap, то она должна была получить как минимум 208381 USDT (= 220510 * 94.5%). У вас может возникнуть вопрос, почему в записях блокчейна указано, что эта сделка была проведена в «Uniswap V3».
Потому что фронт и бэкэнд блокчейн-транзакций разделены. Упомянутый выше «Uniswap V3» относится к пулу ликвидности USDC-USDT Uniswap, который является открытым, и любой фронтэнд транзакции может торговать через этот пул.
Именно по этой причине некоторые сомневаются, что жертва не проста, это не обычный человек, иначе бы такого большого проскальзывания не произошло. Возможно, это связано с атакой MEV для отмывания денег. Об этом мы поговорим позже.
3.3 Сделка 3, сбор + дележ
! hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png
Нажмите на ссылку, чтобы увидеть детали сделки 3, как показано на рисунке. Мы подробно обсудим три сделки: A, B и C.
Торговля A восстановила ликвидность в пуле, обменяв 17,32 миллиона USDT на 18,60 миллиона USDC.
Торгуйте B, готовьтесь разделить добычу, а часть выручки обменяйте — 204 000 USDC на 105 ETH;
Торговля C, дележ, выплатить 100.558 ETH валидатору bob-The-Builder.eth.
Таким образом, атака сэндвичем завершена.
Теперь давайте ответим на один очень важный вопрос, упомянутый выше: как злоумышленник с помощью 1,09 миллиона USDC осуществил атаку на 18 миллионов.
4. Как злоумышленник осуществил атаку на пул в 18 миллионов USDC
Причина, по которой злоумышленник смог провести атаку на уровне 18 миллионов долларов, используя всего лишь 1,09 миллиона USDC в качестве первоначального капитала, заключается в существовании волшебного и уникального механизма в мире блокчейна — флеш-обмена (Flash Swap) Uniswap V3.
4.1 Что такое молниеносный обмен (Flash Swap)?
Проще говоря:
Uniswap позволяет такое поведение «сначала получить, затем заплатить», при условии, что вся операция завершается в одной и той же сделке. Обратите внимание, что это должно быть завершено в одной и той же сделке. Такая конструкция предназначена для обеспечения безопасности самой платформы Uniswap:
Изначальная цель дизайна молниеносного обмена заключалась в более эффективном проведении арбитража на блокчейне, но, к сожалению, он был использован атакующими MEV и стал инструментом манипуляции рынком.
4.2 Как работает мгновенный обмен?
Теперь давайте посмотрим на изображение и шаг за шагом разберемся, как была реализована молниеносная обмена в этой атаке, см. рисунок ниже.
! S6eRIwZXTXtWBU7tUaAjr9bvAm2RIPpdoyjiHnhn.png
! o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png
После этой транзакции (Транзакция 1) баланс счета злоумышленника уменьшился на 1,09 млн USDC, потому что из 18,64 млн USDC, возвращенных в Uniswap, только 17,55 млн USDC было обменено на Curve, а оставшиеся 1,09 млн USDC — собственные средства злоумышленника.
Вы, должно быть, заметили, что эта сделка на самом деле привела к убыткам атакующего в 1,09 миллиона. Однако последняя сделка 3, также осуществленная через метод молниеносного обмена, не только вернула 1,09 миллиона USDC, но и заработала более 200 тысяч.
! oKE3vvGoW8lIISTane5LmOrh3BrDYyLV5PxHLXkM.png
Проведем пошаговый анализ на основе данных из Транзакции 3.
Вы, возможно, удивитесь, почему злоумышленники готовы отдать до 200 000 долларов прибыли валидаторам?
4.3 Почему нужно давать «чаевые» в 200000 долларов?
На самом деле, это не щедрость, а необходимое условие для успешной атаки MEV, такой как сэндвич-атака:
Таким образом, злоумышленник предпочитает пожертвовать большей частью прибыли, чтобы гарантировать успех атаки, оставив себе определенную прибыль.
Следует особо отметить, что атака MEV также имеет свои затраты: она имеет стоимость в Uniswap при мгновенном обмене, и также имеет стоимость при торговле на Curve, просто из-за низких тарифов, примерно 0,01~0,05%, это можно не считать по сравнению с доходом от атаки.
В конце концов, хочу напомнить, что защита от атак MEV на самом деле очень проста: просто установите допустимый уровень проскальзывания, не превышающий 1%; выполняйте крупные сделки по частям. Поэтому вам не нужно отказываться от торговли на DEX (децентрализованных биржах) из-за страха.
Заключение: Предупреждение и уроки из темного леса
Это событие с атакой MEV на сумму 215000 долларов США, безусловно, является еще одним жестоким проявлением закона «темного леса» в мире блокчейна. Оно ярко демонстрирует сложные игры, скрывающиеся в децентрализованной, безразрешительной среде, которые используют механические уязвимости для получения выгоды.
С более высокой точки зрения, появление MEV является проявлением двустороннего эффекта прозрачности и программируемости блокчейна.
Это не простое хакерское действие, а глубокое понимание и использование основных механизмов блокчейна, которое испытывает надежность проектирования протоколов и бросает вызов сознанию участников о рисках.
Понимание MEV и осознание его рисков позволит лучше ориентироваться в этом цифровом мире, полном возможностей, но также скрывающем опасности. Помните, что в "темном лесу" блокчейна только уважение к правилам и повышение осведомленности помогут избежать того, чтобы стать следующей жертвой.
Это также то, чего я надеюсь достичь с помощью этой статьи.