Боевой проект · работает в проде
Telegram-бот · финтех

Обменник криптовалюты в Telegram: от заявки до выплаты в блокчейн

Бот принимает рубли через платёжный шлюз, считает курс и комиссию, сам отправляет Litecoin на кошелёк клиента и закрывает заявку. Без ручных операций и без биржи-посредника.

РольРазработка под ключ
СтекPython · aiogram · PostgreSQL
ФорматПоэтапно, 3 этапа
СтатусВ продакшене
Задача

Обмен вручную не масштабируется

Что было

Каждая заявка обрабатывалась человеком: посчитать курс, проверить оплату, вручную отправить монеты, ответить клиенту. Ночью обмена нет вообще, а любая ошибка в сумме — это прямой убыток.

+ Что нужно было

Автомат, который держит весь цикл сам: курс с биржи, приём фиата, выплата в блокчейн, статусы заявок и админка. Человек подключается только там, где без него нельзя.

Решение

Что построено

Полный цикл сделки без оператора

Клиент выбирает сумму, бот считает курс и комиссию, выдаёт реквизиты, ловит подтверждение оплаты от шлюза и сам отправляет монеты. Заявка живёт 30 минут — дальше сгорает по таймеру, чтобы не висеть мёртвым грузом.

Платёжные шлюзы подключаются как плагины

Интегрированы три разных провайдера приёма платежей по H2H. Активный выбирается записью в базе, а не правкой кода: диспетчер создаёт нужный объект на лету. Провайдер поднял ставку или перестал платить — переключение занимает минуты, а не переписывание бота.

Своя выплата в блокчейн — и защита от двойной отправки

Бот работает с горячим кошельком напрямую. Публичные узлы оказались ненадёжны: транзакция уходила в сеть, но бот получал таймаут и рапортовал ошибку — а по факту деньги ушли. Такой ложный негатив — прямой риск заплатить дважды. Сетевой слой переписан на HTTP-провайдеров с резервом, а перед отправкой бот проверяет, не ушла ли транзакция уже: считает её хеш и ищет в сети. Проверено живой транзакцией.

Комиссия ступенями и админка

Тировая комиссия: три ступени в зависимости от суммы обмена. Плюс лимиты, бан-лист, рассылка, режим техобслуживания, аудит действий и автобэкап базы по расписанию.

Как устроено

Архитектура

Telegramwebhook
Ботaiogram + FSM
PostgreSQLзаявки, юзеры
Платёжный шлюзH2H · вебхук
Планировщиккурс · таймер · бэкап
LTC-кошелёкподпись + broadcast
Интерфейс

Как это видит клиент

Обменниконлайн
Курс LTC: 7 842 ₽Лимиты: 1 500 — 70 000 ₽обновлён 4 мин назад
💱 Купить💰 Продать
💱 Купить
Сколько рублей меняем?
15 000
Заявка #4471Отдаёте: 15 000 ₽
Комиссия: 30%
Получаете: 1.339 LTCРеквизиты действительны 30 минут
💳 Оплатить✕ Отменить
✅ Оплата полученаОтправляю монеты…
Готово1.339 LTC отправлены
tx: 9f2c…a41d · 2 подтверждения
Результат

Что получил заказчик

24/7обмен без участия оператора
30 минжизнь заявки, дальше автоотмена
3платёжных шлюза, переключаются без кода
0двойных выплат после фикса

Проект сдавался этапами: рабочий бот с базовым обменом → платёжные интеграции и админка → выплаты в блокчейн и обвязка эксплуатации. Каждый этап заказчик принимал отдельно, деньги за следующий начинались после приёмки предыдущего.

Стек

Технологии

Python 3.11aiogram 3PostgreSQL SQLAlchemyAlembicasyncpg Redis (FSM)Docker ComposeNginx WebhookH2H-платежиLTC-кошелёк
Проект коммерческий и работает в продакшене, поэтому имя бота, домен, реквизиты и финансовые показатели заказчика здесь не приводятся. Технические решения описаны без привязки к клиенту.