Пишем сканер мемпула для арбитража на децентрализованных биржах (DEX)

Процесс сборки сканера:

  1. Инфраструктура. Обычный HTTP-запрос (REST API) слишком медленный. Нам нужно постоянное WebSocket соединение. Регистрируемся в Alchemy или Infura (провайдеры узлов блокчейна) и получаем WSS-ссылку.

  2. Подключение. В Node.js пишем скрипт: создаем провайдера new ethers.providers.WebSocketProvider('WSS_ССЫЛКА').

  3. Слушаем мемпул. Вызываем метод provider.on('pending', (txHash) => {...}). Теперь скрипт получает хеши всех транзакций, которые люди только что отправили, но майнеры еще не включили в блок.

  4. Фильтрация контрактов. Нам не нужны переводы обычных людей. Мы берем хеш, запрашиваем детали транзакции getTransaction(txHash) и смотрим на поле to (адрес получателя). Если это адрес роутера Uniswap V2 - идем дальше.

  5. Декодирование данных. Транзакция содержит поле data - это байт-код вызова функции (например, swapExactETHForTokens). С помощью ethers.utils.Interface мы расшифровываем этот код и достаем параметры: какой токен человек покупает и на какую сумму.

  6. Логика профита. Если кто-то покупает огромный объем токена А на Uniswap, цена там взлетит. Скрипт быстро проверяет цену этого же токена на Sushiswap. Если спред (разница) перекрывает комиссии сети (Gas) - скрипт сигнализирует о возможности арбитража.

Есть важная техническая проблема: метод getTransaction() очень медленный, если вызывать его для каждого хеша. Чтобы сканер работал в реальном времени, вам нужен собственный локальный узел (Full Node) на сервере с быстрым NVMe диском. Публичные провайдеры вроде Infura на бесплатном тарифе имеют лимит (Rate Limit), вы упретесь в него за первые 10 секунд сканирования мемпула.

Добавлю про экономику процесса (пункт 6). Спред должен перекрывать не просто стандартный газ, а аукционный. В Ethereum сейчас все решают боты MEV (Maximal Extractable Value). Если вы найдете связку, вам придется заплатить майнеру напрямую (через сервисы вроде Flashbots) огромную комиссию в виде “чаевых”, чтобы он поставил вашу арбитражную сделку сразу после крупной покупки, но до того, как это сделают другие боты. Закладывайте на газ минимум 30-40$ при расчете профита.

Будьте предельно осторожны с токенами, у которых есть встроенные налоги на покупку/продажу (Tax Tokens). Сканер может показать разницу курсов в 10%, но при попытке продать контракт токена удержит комиссию создателя в 15%, и вы уйдете в жесткий минус. Всегда проверяйте код контракта на наличие скрытых комиссий перед тем, как давать скрипту команду на торговлю.

Для локальных тестов используйте Hardhat Network. Он позволяет сделать форк (копию) основной сети Ethereum к себе на компьютер и симулировать любые транзакции без траты реальных денег.