01 / 11 screenshot-2026-09-10-at-08.31.17-2.png
Экран 1 из 11 Экран 2 из 11 Экран 3 из 11 Экран 4 из 11 Экран 5 из 11 Экран 6 из 11 Экран 7 из 11 Экран 8 из 11 Экран 9 из 11 Экран 10 из 11 Экран 11 из 11

Разработка P2P-платформы: сделки, TON и Jetton

P2P · Laravel · Vue · TON · Jetton

P2P-платформа для обмена криптовалютой между пользователями. Проект объединяет объявления, сделки, переписку и разбор споров. Для работы с TON-кошельками и токенами Jetton приложение связано с отдельным микросервисом GRAM.

Задача проекта

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

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

Архитектура платформы

Основное приложение

Laravel отвечает за серверную логику, Inertia и Vue — за интерфейс. Здесь находятся объявления, сделки, профили пользователей, банковские реквизиты и административные инструменты.

Кошельковый микросервис GRAM

Работа с блокчейном вынесена в отдельное приложение. P2P получает от GRAM события о депозитах и передаёт ему заявки на вывод Jetton через межсервисный API.

Схема P2P-платформы: Laravel и Vue, отдельный микросервис GRAM, TON и Jetton
P2P-приложение и кошельковый сервис разделены и взаимодействуют через API.

Объявления и сделки

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

  • создание и подтверждение сделки;
  • принятие или отклонение предложения;
  • отметка об отправке оплаты;
  • завершение обмена или отмена;
  • открытие и закрытие спора.

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

Отметка участника об оплате и завершение обмена — разные действия. Это позволяет разделить сообщение об отправке денег и дальнейшее решение по сделке.

Приём TON и Jetton

GRAM передаёт подтверждённые входящие транзакции в P2P через API. Для TON и Jetton предусмотрены разные обработчики и отдельный учёт балансов.

В интеграции используется идентификатор внешнего события: повторная доставка одного депозита должна распознаваться как повтор уже известной операции. Для Jetton документация проекта описывает отдельный журнал зачислений и движений по пользовательским балансам.

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

Вывод Jetton

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

Синхронизация заявок вынесена в фоновую команду. Она восстанавливает отправку недоставленных запросов и обновляет статусы активных операций после перезапуска очереди.

Доступ и взаимодействие сервисов

Аккаунт пользователя

В проекте предусмотрены PIN, двухфакторная аутентификация, привязка Telegram и сценарии восстановления доступа. Пользовательские и административные операции разделены в маршрутах приложения.

API между P2P и GRAM

Интеграция использует HMAC-подпись, timestamp, одноразовый nonce, список разрешённых IP и Idempotency-Key. Подпись запроса и распознавание повторной финансовой операции решают отдельные задачи.

Стек и развёртывание

Laravel, PHP, Inertia, Vue, MySQL и Redis. Приложение запускается в Docker: отдельно работают Nginx, PHP-FPM, обработчик очередей, планировщик и Laravel Reverb для WebSocket-соединений.

Фоновые процессы отделены от обработки веб-запросов. Документация содержит порядок развёртывания проекта, обновления кода, запуска миграций и сборки интерфейса.

Тестовый токен для интеграции

Для проверки взаимодействия P2P и GRAM подготовлен отдельный проект TGRAM в TON testnet. В него входят контракты Jetton и инструменты развёртывания, выпуска и перевода тестовых токенов.

TGRAM используется для интеграционных сценариев в тестовой сети. Он не является отдельным платёжным активом запущенной P2P-платформы.

Что объединяет проект

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

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