ТЗ на Mev bot (sandwich) ERC-20
1. Назначение
1.1 Область действия
1.2 Ссылки
1.3 Краткий обзор
2 Общее описание
2.1 Взаимодействие продукта (с другими продуктами и компонентами)
2.2 Функции продукта
2.3 Ограничения
2.4 Допущения и зависимости
3 Математические вычисления (формула вычисления прибыли)
3.1 Интерфейсы пользователя
3.2 Интерфейсы аппаратного обеспечения
3.3 Интерфейсы программного обеспечения
3.4 Интерфейсы взаимодействия
3.5 Требования к производительности
3.6 Нефункциональные требования (надежность, доступность, безопасность и пр.)
1. Назначение
Целью MEV bot является мониторинг транзакций в сети и создание собственных транзакций до или после транзакции пользователя, чтобы манипулировать ценой или другими параметрами транзакции в свою пользу. Метод "sandwich" заключается в создании ботом двух транзакций: первой, которая покупает активы по низкой цене (опережая пользователя путем увеличения газа), и второй, которая продает их по более высокой цене, извлекая прибыль из разницы в цене.
1.1 Область действия
DEX, Uniswap v2, v3 (v4 в перспективе), возможно рассмотреть другие децентрализованные биржи или даркпулы.
1.2 Ссылки
Ссылка на смарт-контракт MEV Bot с Github
Ссылка на фреймворк для создания MEV Bot с Github, написанного на Rust
1.3 Краткий обзор
2. Общее описание
- MEV bot мониторит транзакции в сети и ищет подходящие возможности для извлечения прибыли.
- Когда бот обнаруживает подходящую транзакцию, он создает две собственные транзакции: первую, которая покупает активы по низкой цене, и вторую, которая продает их по более высокой цене.
- Первая транзакция выполняется до транзакции пользователя(жертвы), а вторая - после, что позволяет боту извлечь прибыль из разницы в цене.
- Таким образом, MEV bot манипулирует порядком транзакций в блоке, чтобы извлечь прибыль за счет пользователей(жертвы) сети.
2.1 Взаимодействие продукта (с другими продуктами и компонентами)
Mev bot должен взаимодействовать с мемпулом и CMS, который через API будет отправлять команды боту.
Если на этапе тестирования создание CMS будет нецелесообразным - можно отказаться от её разработки.
2.2 Функции продукта
- Мониторинг транзакций: MEV bot должен отслеживать транзакции в сети и искать подходящие возможности для извлечения прибыли.
- Стратегия торговли: MEV bot должен использовать определенную стратегию торговли, такую как sandwich торговля, для извлечения прибыли.
- Анализ рынка: MEV bot должен анализировать рыночные данные и тренды, чтобы оптимизировать свою стратегию торговли.
- Безопасность: MEV bot должен обеспечивать высокий уровень безопасности, включая защиту от несанкционированного доступа и манипуляций.
- Интеграция с системами: MEV bot должен взаимодействовать с криптовалютными биржами или другими децентрализованными финансовыми системами, где он может выполнять операции.
- API интерфейс: MEV bot должен предоставлять API интерфейс для взаимодействия с ним программным образом.
- Отчетность: MEV bot должен предоставлять отчеты о своей деятельности, включая статистику по транзакциям, прибыли и другим параметрам (на этапе тестирования подойдут логи транзакций).
- Масштабируемость: MEV bot должен быть масштабируемым и способным обрабатывать большие объемы транзакций и данных.
- Настройка: MEV bot должен предоставлять возможности для настройки параметров и стратегий торговли в соответствии с потребностями.
- Сканирование и добавление токенов: MEV Bot должен иметь возможность сканировать токены на DEX и автоматически добавлять их в список отслеживаемых токенов для использования в sandwich атаках. Бот должен учитывать ликвидность токенов, объем торговли и другие факторы, чтобы выбирать наиболее подходящие токены для торговли. Кроме того, бот должен периодически обновлять список отслеживаемых токенов, чтобы учесть изменения на рынке и максимизировать прибыль.
На этапе тестирования добавление токенов возможно вручную, для проверки математических вычислений.
2.3 Ограничения
- Ограничение на максимальную сумму комиссии: MEV bot должен иметь ограничение на максимальную сумму комиссии, которую он может заплатить за одну сделку, чтобы минимизировать риск потерь.
- Ограничение на минимальную прибыль: MEV bot должен иметь ограничение на минимальную прибыль, которую он должен получить от каждой сделки, чтобы избежать излишнего риска.
- Ограничение на типы токенов: MEV bot должен иметь ограничение на типы токенов, которые он может использовать в своих сделках, чтобы избежать риска, связанного с низкой ликвидностью или другими факторами.
2.4 Допущения и зависимости
Допускается зависимость от любых API если они не замедляют скорость транзакций и способствуют работоспособности MEV bot.
3 Математические вычисления (формула вычисления прибыли)
Где А (количество токена) умноженного на B (количество эфира)
Стоимость монеты от пула ликвидности
B/A * (actual price of B in usdt e.x ETH, SOL...)
Где B (текущая стоимость эфира) деленая на A (текущая стоимость токена) и умноженная на текущую стоимость эфира.
Калькуляция ликвидности после покупки
Актуальная стоимость токена после покупки мистера Х
(Pn = Bn / An) * (actual price of B in usdt e.x ETH, SOL...)
((Gas price in gwei + 0.01)*gas used ) / 1 000 000 000 = trans_fee_front
Даём комиссию на 0.001 больше чем мистер Х и покупаем вперед
((Gas price in gwei - 0.01)*gas used ) / 1 000 000 000 = trans_fee_sell
Даем комиссию меньше чем мистер Х, и продаем сразу после его транзакции
Условия выбора токенов для совершения атаки
Количество покупок и продаж за 24ч = sum > 10, где sell min 10% (sum)
В блоке должно быть только 2 наших транзакции и 1 транзакция Мистера X
Величина транзакции относительно ликвидности:
1% если ликвидность <= 300.000
0.70 если ликвидность <= 1.000.000
0.50 если ликвидность > 1.000.000
Симуляция. Если от пула 1.9кк, купить на 20к фронтом и продать. Получается без комиссий 796 долларов, при условии, что мистер икс купил после нас тоже на 20к. Погрешность до 0.3% видимо за счет комиссий унику и поставщикам ликвидности. Погрешность константы тоже существует при изменении пула ликвидности 0.0001%. можно пренебречь.
1. Находим потенциальную транзакцию исходя из условий
2. A1*B1 = k
3. A2= k/(B2), (B2= B1+BUY1), где B1 покупка наша фронт
4. Pold = известно
5. P1 = B2/A2
6. deltaP1,2 = Pold / P1
7. A3=k/(B3) (B3=B2+BUY2), где B2 покупка Мистера Х
8. P2 = B3/A2
9. DeltaP2,3 = P1/P2
10. Продажа
11. B3=(k/A3) (A3=A2+SELL1), где A3 пулл монет после нашей продажи
12. B3-B2=С с – количество USD/ETH после продажи
13. bruttoProfit=C-B1
14. bruttoProfit-(fee1+fee2)= nettoprofit
15. nettoprofit > 0 success
16. nettoprofit < 0 fail and repeat from step 1
3.1 Интерфейсы пользователя
Интерфейс пользователя для MEV bot может совмещать в себе CMS и dashboard с отчётностью по эффективности MEV bot. (На этапе тестирования не требуется)
3.2. Интерфейсы аппаратного обеспечения
3.3 Интерфейсы программного обеспечения
3.4 Интерфейсы взаимодействия
3.5 Требования к производительности
- Скорость обработки транзакций: MEV Bot должен быть способен быстро обрабатывать большое количество транзакций, чтобы вовремя реагировать на изменения рынка и выполнять торговые операции в реальном времени.
- Время отклика: MEV Bot должен иметь минимальное время отклика на изменения рынка, чтобы эффективно использовать sandwich атаки и максимизировать прибыль.
- Масштабируемость: MEV Bot должен быть масштабируемым, чтобы обеспечивать эффективную работу при увеличении объема транзакций и данных.
- Надежность: MEV Bot должен быть надежным и обеспечивать стабильную работу без сбоев и ошибок, которые могут привести к потере прибыли или другим негативным последствиям.
- Эффективность использования ресурсов: MEV Bot должен эффективно использовать ресурсы системы, такие как память, процессорное время и пропускную способность сети, для обеспечения максимальной производительности.
- Адаптивность: MEV Bot должен быть адаптивным и способным изменять свою стратегию в зависимости от изменений рынка и других факторов, чтобы максимизировать прибыль и минимизировать риски.
- Тестирование производительности: MEV Bot должен проходить тестирование производительности, чтобы оценить его эффективность и выявить возможные проблемы перед его эксплуатацией.