Фронтраннинг — баг или фича?
Фронтраннинг — это ситуация, при которой участник рынка использует ранний доступ к информации о торговых ордерах в свою пользу.
В традиционных финансах, фронтраннером чаще всего выступает брокер. Зная о размещении крупной заявки клиента, он совершает собственную, получая выгоду от ожидаемого движения цены.
В любой децентрализованной сети есть общедоступное место ожидания транзакций (мемпул). Валидаторы могут изменять порядок, включать и исключать оттуда транзакции, отдавая предпочтение более выгодным для них действиям. Да, это неправильно, да — неэтично, но не запрещено.
Роль мемпула в работе в блокчейна. Источник: cryptor.net
Например, если майнер (валидатор в Proof-of-Work блокчейне) замечает крупный ордер на покупку, он может выполнить собственную заявку и только потом приступить к обработке транзакции пользователя. Идея заключается в покупке актива до того, как крупный объем повлияет на его стоимость.
Способы фронтраннинговых атак
Смещение. При этом типе атаки злоумышленник оплачивает более высокую комиссию, чтобы приоритезировать выполнение его транзакции раньше остальных.
Подавление. Фронтраннер добавляет в мемпул большое количество крупных ордеров, сдвигая обработку транзакции пользователя вниз по приоритету. Он готов оплачивать большую комиссию, поэтому среди прочих заявок валидаторы выбирают его. В итоге жертва либо вовсе не покупает актив, либо покупает его по завышенной цене.
Обычно такой тип атаки используется во время первичного размещения токенов (ICO) или покупки активов с искусственным спросом. Фронтраннер создает видимость популярности токена, а затем продает его новым заинтересованным пользователям.
Подавление также может использоваться для благих целей, например, предотвращения мошеннических транзакций. В теории, если пользователь заметит кражу средств, он может добавить более приоритетные транзакции в мемпул, чтобы предотвратить незаконную. За это время валидаторы могут обнаружить мошенническую операцию и отказаться от ее выполнения.
Сэндвич-атака. Фронтраннер помещает транзакцию пользователя в так называемый сэндвич, где она находится между двух ордеров. Первый предоставляет повышенное вознаграждение майнерам, второй — пониженное.
Валидаторы обрабатывают заявку фронтраннера, позволяя ему купить актив до того, как крупный объем повлияет на его стоимость. Затем они выполняют транзакцию пользователя и цена токена увеличивается. Теперь раннеру остается продать купленный актив и извлечь прибыль.
Сэндвич-атака в блокчейне. Источник: securing.pl
Предположим, что Алекс хочет купить 1000 ETH по рыночной цене $2200. Фронтраннер обнаруживает эту сделку и, выставляя более приоритетную транзакцию, покупает ETH по цене $2200. Далее Алекс завершает операцию в полном объеме, повышая стоимость ETH до $2250. Воспользовавшись этим ростом, фронтраннер продает свои активы и зарабатывает $50 с каждого купленного ETH.
Факторы, которые стимулируют фронтраннинг
Цель фронтраннинга — извлечение прибыли за счет любой важной информации, которая влияет на цену. Это может быть как крупный ордер в стакане заявок на бирже, так и транзакция в блокчейне.
Факторы, которые стимулируют фронтраннинг, включают в себя:
- Крупные ордера. Крупные сделки могут вызвать значительное движение рынка. Фронтраннеры обращают на это внимание для получения финансовой выгоды.
- Изменение объема в пуле ликвидности. Когда ликвидность добавляется или удаляется из пула, это может привести к изменению рыночной цены актива.
- Листинг новых токенов. Появление токена на бирже вызывает интерес участников рынка. Каждый из них стремится как можно скорее купить актив, и именно тут появляются фронтраннеры.
Кроме этого, любые обновления в смарт-контрактах, протоколах и работе блокчейна также могут быть триггерами фронтраннинга. Например, переход на другой алгоритм консенсуса, создание хардфорка и тд.
Как предотвратить фронтраннинг?
Защита от фронтраннинга требует принятия мер как со стороны платформ, на которых выполняются транзакции, так и со стороны пользователей. Лучший способ для последних — деление сделки на несколько частей. Это уменьшает риск обнаружения такого пользователя фронтраннером и ее влияние на цену.
С мерами для платформ все намного обширнее. Рассмотрим самые популярные из них.
- Rollups. Если объединить несколько транзакций и обработать их как одно целое, фронтраннеру будет сложнее опередить их выполнение и понять их влияние на стоимость актива.
- Доказательства с нулевым разглашением (ZKP). Технология позволяет одной стороне доказать выполнение транзакции без раскрытия деталей (в контексте фронтраннинга — это объем сделки). Для предотвращения фронтраннинга подходят обе формы ZKP: как zk-STARK, так и zk-SNARK.
- Случайный порядок транзакций. Случайное расположение транзакций внутри блока может затруднить прогнозирование их размещения. Хотя это и снижает вероятность фронтраннинга, это также может уменьшить вознаграждение валидаторов.
Кроме этого, разработчики могут создать специальные смарт-контракты, цель которых — предотвращение фронтраннинга. Они потенциально могут наложить штрафы или отменить исполнение такой сделки.
Заключение
Все еще не существует эффективного способа предотвратить фронтраннинг. Предложенные выше варианты либо являются сложными в реализации, либо затрудняют работу сети. Смогут ли блокчейн-энтузиасты найти решение в ближайшее время — неизвестно.