Процесс сборки сканера:
-
Инфраструктура. Обычный HTTP-запрос (REST API) слишком медленный. Нам нужно постоянное WebSocket соединение. Регистрируемся в Alchemy или Infura (провайдеры узлов блокчейна) и получаем WSS-ссылку.
-
Подключение. В Node.js пишем скрипт: создаем провайдера
new ethers.providers.WebSocketProvider('WSS_ССЫЛКА'). -
Слушаем мемпул. Вызываем метод
provider.on('pending', (txHash) => {...}). Теперь скрипт получает хеши всех транзакций, которые люди только что отправили, но майнеры еще не включили в блок. -
Фильтрация контрактов. Нам не нужны переводы обычных людей. Мы берем хеш, запрашиваем детали транзакции
getTransaction(txHash)и смотрим на полеto(адрес получателя). Если это адрес роутера Uniswap V2 - идем дальше. -
Декодирование данных. Транзакция содержит поле
data- это байт-код вызова функции (например, swapExactETHForTokens). С помощьюethers.utils.Interfaceмы расшифровываем этот код и достаем параметры: какой токен человек покупает и на какую сумму. -
Логика профита. Если кто-то покупает огромный объем токена А на Uniswap, цена там взлетит. Скрипт быстро проверяет цену этого же токена на Sushiswap. Если спред (разница) перекрывает комиссии сети (Gas) - скрипт сигнализирует о возможности арбитража.