Артур Галстян traping1 Паспорт верифицирован
Full-stack разработчик: быстрые и масштабируемые решения
Рейтинг
13 756
№ 71 в каталоге
Отзывы
Профессионализм
9/10
Коммуникация
8 /10
Город
Москва
Опыт работы
7 лет
На сайте с
2020 года
Юридический статус
Частное лицо
Безопасная сделка
Деньги списываются после приёмки

VERITEX

Используемые навыки Docker Linux Next.js PostgreSQL Typescript

Описание

Вот текст, укладывается в лимит (около 2900 знаков). Если нужен другой тон или короче — скажи.

Клиент — владелец инвестиционной платформы Veritex AI (verite-x.com), работающей с реальными деньгами пользователей в криптовалюте USDT в сетях TRC20 и BEP20.

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

Поставленные задачи:

Личный кабинет пользователя. Регистрация и вход, два кошелька (депозитный и бонусный), начисления пассивного дохода, партнёрская программа с уровнями, история операций с постраничной выдачей, интерфейс на русском и английском языках.

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

Автоматические выплаты. Заявки на вывод до установленного порога одобряются системой сами, свыше порога — только вручную владельцем. Отправку средств в блокчейн выполняет отдельный сервис-подписант, вынесенный на изолированный сервер, где хранятся ключи горячего кошелька. Подписант забирает очередь одобренных выплат по защищённому каналу, отправляет USDT и возвращает хеш платежа. Предусмотрены пауза выплат, потолок суммы одной транзакции и проверка баланса перед отправкой.

Административная панель. Управление заявками на пополнение и вывод, список пользователей, кошельки приёма платежей, раздел выплат и трат, возможность скрывать служебные аккаунты из отчётов, поиск по имени, почте, адресу и коду.

Уведомления через Telegram-бота: о статусах заявок, зачислениях и выплатах.

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

Надёжность и эксплуатация. Развёртывание на собственном сервере в контейнерах, ежедневные резервные копии базы с ежемесячной проверкой восстановления, единая кодовая база под системой контроля версий с деплоем только через неё, строгий запрет на хранение секретов и ключей в репозитории.

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

Решение

Текст на «Решение», около 3400 знаков.

Архитектура и стек. Приложение собрано на Next.js с серверными маршрутами API, база — PostgreSQL, схема описана в Prisma и применяется отдельным сервисом миграций. Всё разложено по контейнерам Docker Compose: база, миграции, веб и Telegram-бот. Деньги хранятся в целых центах, а не в дробных числах, чтобы балансы всегда сходились копейка в копейку.

Приём пополнений. Реализована двухшаговая схема. На первом шаге создаётся заявка с уникальной суммой к оплате: к базовой сумме добавляется случайная надбавка с фиксированным шагом, и эта сумма резервируется лично за пользователем на сутки. Именно она связывает конкретный платёж с конкретной заявкой, хотя адрес приёма общий для всех. На втором шаге пользователь присылает хеш, и сервер сам идёт в блокчейн: для BEP20 — через публичный узел BSC с запасным адресом на случай отказа, для TRC20 — через ноду Trongrid. Проверяются тип токена, адрес получателя, совпадение суммы в пределах допуска, подтверждённость транзакции и то, что она совершена позже создания заявки. От повторного зачисления защищает уникальность хеша в базе, проставляемая внутри транзакции БД, что снимает гонку при одновременных подтверждениях. Если проверка не прошла, заявка не теряется, а попадает администратору на ручное решение.

Выплаты. Ключи горячего кошелька вынесены с основного сервера на отдельный VPS. Там работает служба-подписант, которая по защищённому каналу через SSH-туннель забирает очередь одобренных выплат, отправляет USDT в нужной сети и возвращает хеш обратно в систему. Наружу эти маршруты не публикуются, доступ только по секрету. Встроены предохранители: потолок суммы одной выплаты, проверка баланса и газа перед отправкой, локальный журнал уже отправленных платежей, стоп-файл и пауза из админки. Автоодобрение работает только для сумм ниже порога, всё крупное подтверждает владелец вручную.

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

Уведомления. Telegram-бот сообщает пользователю о статусах заявок и реальных отправках средств, причём уведомление об автовыплате уходит не при одобрении, а после фактической отправки в блокчейн.

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

Сопровождение. Разбирались обращения по инцидентам: восстановление доступа, недоступность сайта у отдельных пользователей, анализ очереди выплат и сверка балансов по журналам сервера и базе. По каждому случаю давалось объяснение причины и, где требовалось, правка в коде.

Результат

Текст на «Результат», около 3200 знаков.

Платформа запущена и работает в продакшене на боевом сервере, обслуживает реальных пользователей и реальные деньги в USDT. Сайт доступен круглосуточно, контейнеры приложения, базы и бота работают в штатном режиме, без ручных перезапусков.

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

Выплаты уходят автоматически и при этом остаются под контролем. Небольшие суммы одобряются системой и отправляются подписантом сразу, крупные ждут решения владельца. Ключи горячего кошелька физически отделены от основного сервера, а у владельца есть стоп-кран: пауза выплат из админки, потолок одной транзакции и проверка баланса перед отправкой. На практике это выглядит так: владелец пополняет горячий кошелёк, и очередь одобренных выплат разбирается сама по мере появления средств, а на каждую отправку в системе сохраняется хеш транзакции, по которому платёж можно проверить в блокчейне.

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

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

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

Эксплуатация поставлена на регламент. База ежедневно копируется по расписанию, раз в месяц копия проверяется восстановлением, перед любыми изменениями, затрагивающими деньги, снимается отдельный бэкап. Вся работа ведётся через систему контроля версий, деплой делается только обновлением из репозитория с пересборкой контейнеров, поэтому любое изменение можно откатить, а история правок сохраняется.

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

Оценили проект:

Другие проекты

Все проекты →
Веб-разработка и IT Challengers
Challengers
103
Тексты и Переводы Techno
Techno
85
Веб-разработка и IT TheFour Lite
TheFour Lite
104
Веб-разработка и IT Punte
Punte
94