- Коротко: flash loan — заём, который существует только внутри одной транзакции блокчейна и должен быть возвращён к её концу, иначе вся транзакция откатывается. Поэтому нет риска дефолта, нет залога, а размер займа — до целого пула, на Aave выше $1 млрд в сентябре 2020.
- Первое научное исследование flash loan (Qin, Zhou, Livshits, Gervais) разбирает две атаки февраля 2020 на платформу bZx, принёсшие около $350 тысяч и $600 тысяч с доходностью на вложенный капитал выше 500 000 %.
- В первой flash loan на 10 000 ETH помог сдвинуть небольшой пул Uniswap так, что bZx купил WBTC по 109,79 ETH за WBTC при рыночной цене 36,55. Во второй сделки в тонких пулах сдвинули ценовой источник bZx с 268,30 до 108,44 sUSD за ETH.
- Это исторические события на конкретных контрактах, которые исправлены или выведены из обращения. Урок — в схеме: цену из тонкого пула можно сдвинуть внутри одной транзакции, и всё, что ей доверяет, можно обмануть.
Коротко. Flash loan — заём, который рождается и умирает внутри одной транзакции. Вы занимаете, что-то делаете и возвращаете до конца транзакции; если вернуть нельзя, блокчейн откатывает всё, как будто займа не было. Поскольку кредитор не может потерять, залог не нужен, а размер может быть целым пулом. В феврале 2020 два трейдера использовали это, чтобы заработать на платформе bZx, а научная работа разобрала, как именно.1
Что такое flash loan и почему он возможен?
Работа определяет его так: заём, действительный только внутри одной атомарной транзакции блокчейна и проваливающийся, если заёмщик не вернул до конца. Отсюда три свойства: у кредитора нет риска дефолта, нет залога, а размер ограничен лишь пулом. По состоянию на сентябрь 2020 крупнейший пул flash loan, на Aave, предлагал свыше $1 млрд.1
Авторы показывают также, что атомарность увеличивает арбитражную выручку, потому что трейдер может использовать разрыв цен капиталом, занятым на одну эту транзакцию. Так что техника нейтральна; важно, на что тратится занятый капитал.
Что произошло в первой атаке на bZx, 15 февраля 2020?
Работа восстанавливает транзакцию. Трейдер занял 10 000 ETH у dYdX. Часть, 5 500 ETH, ушла залогом в Compound, чтобы занять 112 WBTC. Затем трейдер открыл на маржинальной платформе bZx шорт ETH к WBTC с плечом 5x, со своим залогом 1 300 ETH. bZx исполнил сделку на Uniswap, обменяв 5 637,62 ETH всего на 51,35 WBTC по 109,79 ETH за WBTC при рыночной цене 36,55: поставщики ликвидности за bZx переплатили почти втрое. Пул Uniswap был мал (около 2 817 ETH), поэтому сделка сильно сдвинула его цену.1
После возврата flash loan трейдер был в плюсе на 71,41 ETH и держал долг 112 WBTC, обеспеченный 5 500 ETH. В следующие два дня трейдер небольшими частями купил 112 WBTC и забрал залог, общий выигрыш — 1 193,69 ETH. Работа считает убыток поставщиков займов равным 2 330,86 ETH и отмечает, что проверка, которая заблокировала бы сделку, — на отрицательный капитал маржинальной позиции, — в коде bZx существовала, но была вызвана неправильно.1
Что произошло во второй атаке, 18 февраля 2020?
Вторая использовала flash loan bZx на 7 500 ETH и била в другое слабое место — источник цены. Кредитная платформа bZx брала цену sUSD за ETH с Uniswap и резерва Kyber. Атакующий конвертировал часть ETH в sUSD на этих тонких рынках, что сдвинуло цену с 268,30 до 108,44 sUSD за ETH, тогда как другие платформы DeFi оставались на 268,30. С искажённым видом цены у самой платформы атакующий заблокировал купленные sUSD как залог и занял намного больше ETH, чем позволяла реальная стоимость. Работа оценивает выигрыш атакующего в 2 381,41 ETH, а убыток кредиторов — примерно в 2 699,97 ETH.1
Насколько велики были эти атаки и что добавили авторы?
Авторы оценивают, что две атаки принесли около $350 тысяч и $600 тысяч, и отмечают доходность на вложенный капитал выше 500 000 %. Затем они формулируют поиск параметров атаки как задачу оптимизации и показывают, что обе атаки можно было «усилить» до прибыли $829,5 тысячи и $1,1 млн. Мы не описываем оптимизацию. Это предупреждение разработчикам платформ: когда такая атака известна, её лучший вариант математически ищется.1
Что трейдеру и пользователю взять из этого
- Цена на DEX — число в пуле, а не рынок. Первая атака сдвинула небольшой пул Uniswap в разы внутри одной транзакции. Размер пула важен: см. проскальзывание и влияние на цену.
- Ликвидаторы и боты живут в том же блокчейне. Как конкурируют ликвидации и другие боты и кто зарабатывает — в как работают ликвидации в DeFi на Aave и Compound и что такое MEV и как боты опережают сделки на DEX.
- Жертвы — поставщики ликвидности. В обеих атаках убытки легли на кредиторов или поставщиков ликвидности. Как поставщики ликвидности теряют на информированном потоке и без атак — в теряют ли LP деньги на арбитражёрах? Что такое LVR.
- Знайте, чему доверяет протокол. Если он берёт цену из одного тонкого пула, считайте, что эту цену можно сдвинуть.
- Это исторические события. Платформы и контракты с тех пор менялись; не принимайте числа за описание сегодняшнего DeFi.
Статья описывает опубликованное исследование в образовательных целях. Это не руководство по атаке на какую-либо систему.
Материал образовательный, не инвестиционная рекомендация.
Footnotes
-
Qin, K., Zhou, L., Livshits, B., Gervais, A., «Attacking the DeFi Ecosystem with Flash Loans for Fun and Profit», arXiv:2003.03810v4 (20 марта 2021); прочитан полный текст PDF. Аннотация и введение: определение, три свойства, пул Aave свыше $1 млрд в сентябре 2020, атомарность и арбитражная выручка, доходность свыше 500 000 %, атаки примерно на $350 тысяч и $600 тысяч, «усиленная» прибыль $829,5 тысячи и $1,1 млн (в 2,37 и 1,73 раза). Раздел 3.1 (накачка и арбитраж 15 февраля 2020): заём dYdX 10 000 ETH, залог Compound 5 500 ETH и 112 WBTC, шорт bZx 5x с 1 300 ETH, обмен 5 637,62 ETH на 51,35 WBTC по 109,79 ETH за WBTC против 36,55, пул Uniswap 2 817,77 ETH, 71,41 ETH после flash loan, выкуп за 4 377,72 ETH, выигрыш атакующего 1 193,69 ETH, убыток поставщика займа 2 330,86 ETH, невызванная проверка отрицательного капитала. Раздел 3.2 (манипуляция оракулом 18 февраля 2020): flash loan bZx 7 500 ETH, оракул с 268,30 до 108,44 sUSD за ETH на Uniswap и Kyber, выигрыш атакующего 2 381,41 ETH, убыток кредитора около 2 699,97 ETH. ↩ ↩2 ↩3 ↩4 ↩5 ↩6
Частые вопросы
Что такое flash loan?
Flash loan — заём, действующий только внутри одной атомарной транзакции блокчейна и подлежащий возврату до конца этой транзакции; если его не вернули, транзакция откатывается. По работе, это даёт три свойства, которых нет в традиционных финансах: у кредитора нет риска дефолта долга, не нужен залог, а размер займа — до целого пула ликвидности.
Почему flash loan не требует залога?
Потому что кредитору гарантирован возврат. Транзакцию блокчейна можно откатить во время исполнения, если условие возврата не выполнено, поэтому flash loan, который нельзя вернуть, просто не выдаётся.
Как сработала первая атака на bZx в феврале 2020?
15 февраля 2020 трейдер взял flash loan на 10 000 ETH у dYdX, положил 5 500 ETH залога в Compound, чтобы занять 112 WBTC, и открыл на bZx шорт ETH с плечом 5x. bZx обменял на Uniswap 5 637,62 ETH всего на 51,35 WBTC, по 109,79 ETH за WBTC при рыночной цене 36,55. По расчёту работы, общий выигрыш атакующего составил 1 193,69 ETH, около $350 тысяч.
Что такое манипуляция оракулом?
Это искажение источника цены, на который опирается кредитная платформа. Во второй атаке на bZx 18 февраля 2020 сделки атакующего сдвинули цену sUSD за ETH на Uniswap и в резерве Kyber, которые bZx использовал как оракул, с 268,30 до 108,44, тогда как другие платформы оставались на 268,30. Выигрыш атакующего работа оценивает в 2 381,41 ETH.
Сами flash loan незаконны или опасны?
Работа рассматривает их как нейтральную технику: они также увеличивают арбитражную выручку, позволяя действовать капиталом, которого у трейдера нет. Опасность идёт от приложений, доверяющих ценам, которые можно сдвинуть внутри одной транзакции. Описанные атаки исторические, а затронутые платформы с тех пор изменились.
Источники
- Attacking the DeFi Ecosystem with Flash Loans for Fun and Profit. Kaihua Qin, Liyi Zhou, Benjamin Livshits, Arthur Gervais. arXiv:2003.03810v4 [cs.CR], 20 марта 2021 (прочитан полный текст), 2021
Статья — исследование, а не инвестиционная рекомендация. Результаты на истории не гарантируют результатов в будущем.