Бот

Данил5 месяцев в сервисе
Данные заказчика будут вам доступны после подачи заявки
20.08.2025

1) Цель

Арбитражно‑реактивный бот, который:

Отслеживает цену заданных токенов по блокам.

Если в текущем блоке цена падает > X% (по умолчанию 10%, настраивается), отправляет bundle на покупку через Titan Builder.

Параллельно мониторит публичный мемпул и при детекте крупной продажи по токену — формирует backrun‑bundle (наша покупка сразу после продажи в этом же блоке).
либо в следующий блок , если транзакции не было видно в публичном мемпуле соответственно.

2) Скоуп

2.1 Источник цены / детектор падения

Поддержка Uniswap v2 и v3 (основная пара: Token/WETH).

Цена берётся из ончейн‑состояния пула:

v2: reserve0/reserve1 (on-chain call на последний собранный блок).

v3: slot0.sqrtPriceX96 → конвертация в цену.

Метрика падения: сравнение цены «предыдущий блок → текущий блок». Порог падения X% (дефолт 10%), конфигурируется.

Анти-шум: минимальный объём пула / ликвидности, игнор мелких скачков (параметры в конфиге).

2.2 Отслеживание публичного мемпула

Подписка на mempool по целевым пулам/роутерам (Uniswap v2/v3).

Дефолтный триггер «крупной продажи»: либо минимальный notional (например, ≥ 10k USD экв.), либо ≥ Y% от текущей ликвидности пула — задаётся вручную.

При детекте продажи для нашего токена: собираем backrun‑bundle: [их sell] → [наш buy].

2.3 Управление списком токенов

Вы задаёте список токенов + адрес пула(ов). В конфиге по каждому:

адрес токена,

адрес(а) пула,

тип пула (v2/v3, fee для v3),

индивидуальные параметры: порог падения, min ликвидность, slippage профиль и т.д.

2.4 Размер входа и tip билдеру

Размер входа ручной диапазон на токен: 0.06…0.2 ETH. Логика:

в конфиге задаём интервалы «просадка → размер входа» (step‑функция или линейная зависимость).

бот читает текущую просадку и выбирает размер из разрешённого диапазона.

Вознаграждение билдеру (bundle bribe):

ручной диапазон 0.0012…0.0045 ETH.

расчёт: либо фикс по «корзинам» просадки, либо линейка: tip = a + b * drawdown% (коэффициенты в конфиге).

опция автоподнятия tip при N неудачных включениях подряд.

2.5 Отправка bundle через смарт‑контракт

Процесс:

1. Средства (WETH/ETH) лежат на контракте‑контроллере.

2. Контракт имеет метод «исполнить покупку» (вызов роутера Uniswap + проверка minOut и deadline).

3. Транзакция с вызовом отправляется только внутри bundle (через Titan).

4. Если билдер не включает bundle — ничего не списывается (tx не майнится, средства остаются на контракте).

5. Если bundle включён, но ценовые условия не выполняются — require/revert откатывает, средства не уходят.

Контрактные фичи:

Whitelist «исполнителя» (бота) — чтобы никто посторонний не мог дёргать метод.

Пауза/разблок (Pausable).

События логирования.

2.6 DEX‑роутинг

Uniswap v2: прямой swap по паре Token/WETH (или через WETH при нужде).

Uniswap v3: используем единичный пул с фиксированной fee (из конфига) или Quoter для расчёта amountOut и minOut.

Опция мульти‑хопов (WETH→…→Token) — вне MVP, можно добавить по желанию.

2.7 Проскальзывание (slippage)

Предлагаю 3 варианта, можно иметь все и выбирать в конфиге:

A. Фиксированное:

На токен задаём жёсткий slippage_bps (например, 50–200 bps).

Простое и предсказуемое. Для backrun‑bundle можно ставить чуть шире (потому что наш buy идёт сразу после большого sell).

B. Динамическое от просадки:

slippage = clamp( base + k * drawdown%, min_slip, max_slip ).

Идея: чем сильнее просадка, тем шире окна, чтобы не упустить включение.

C. Рыночное (по ликвидности):

Считываем виртуальный price impact от ожидаемого amountIn по кривой пула и добавляем safety‑надбавку (например, +20% от рассчитанного импакта).

Самое «умное», но потребует on‑the‑fly Quoter/симуляцию (в бандле это ок).

Технически в контракте это просто minOut, который мы заранее вычисляем и передаём из бота:

minOut = quotedAmountOut * (1 - slippage)

deadline = block.timestamp + 90 (или block.number window, если делаем строго текущий блок)

Рекомендация на старт: B для обычных падений, A (узкое, 50–100 bps) для backrun, потому что порядок фиксирован: сначала их sell, тут же наш buy.

2.8 Безопасность и защитные проверки
Чёрный список токенов с налогом/антиботом (при желании — скан простых «honeypot» признаков перед добавлением).

Минимальная ликвидность пула.

Лимит газ/priorityFee и лимит на количество подряд неуспешных бандлов.

Хранение ключей: .env/vault, отдельный деплойер для контракта, ролевой доступ.

2.9 Логи, мониторинг, симуляции

Логи в файл + Telegram‑уведомления (опционально).

Тесты на форке (anvil/hardhat) + Tenderly симуляции бандлов.

Дашборд (CLI или простая веб‑страница) с текущими параметрами и состоянием баланса контракта.

2.10 Технологии

Язык бота: Python (web3.py) и TypeScript.

Контракты: Solidity (Foundry/Hardhat).

Интеграция: Titan Builder API/SDK (приватные бандлы, backrun).

3) Что от вас нужно

Список токенов и пулов (адреса).

Ваши стартовые диапазоны:

размер входа per token,

tip билдеру per token,

пороги падения и «крупной продажи».

Выбор стратегии slippage (A/B/C) и стартовые значения.

RPC/infra (можем поднять сами, но лучше выделенный эндпоинт с низкой задержкой).

4) Доставляемое

Репозиторий с кодом бота и смарт‑контрактом.

Скрипты деплоя, примеры конфигов.

Инструкция по запуску.

Набор автотестов и сценариев симуляций (fork/Tenderly).

Базовая телеметрия/логи.

5) Оценка стоимости

Два пакета — чтобы было прозрачно.

MVP (один DEX‑роут, v2 простая стратегия slippage A/B; список токенов; backrun по одному пула на токен; базовые логи, без веб‑дашборда):

$2500

Обычные падения (detector): стратегия B, например

slip_bps = clamp(60 + 25 * drawdown%, 50, 250)

Пример: при падении 12% → ~360 bps → срабатывает ограничение 250 bps (2.5%).

Backrun после крупной продажи: стратегия A — узкое окно 50–100 bps, потому что мы в том же блоке сразу за продажей и знаем порядок включения; достаточно зафиксировать minOut от Quoter/резервов.

Поддержка: баг‑фиксы 2 недели включены. Дальше — $300/мес (опционально).

(Инфраструктура — RPC/Tenderly/Builder‑аккаунты/алёртинги — оплачиваются отдельно по их тарифам.).

Заявки фрилансеров