Об этом проекте
Mergepay API — это серверная часть Mergepay, приложения для групповых расчётов на основе Stellar. Он обрабатывает аутентификацию, логику групп и расходов, расчёты в блокчейне, интеграцию со Stellar, мультиподпись казначейства и потоки SEP-24.
Система построена на блокчейне Stellar. Каждый расчёт — это реальный платёж в блокчейне: вход через SEP-10, платежи содержат мемо `MP:<code>`, связывающий их с конкретным расходом, балансы рассчитываются в XLM или USDC через trustlines, общие казначейства используют мультиподпись Stellar, а фиатные шлюзы работают через SEP-24. Сервер никогда не хранит приватные ключи пользователей — он создаёт неподписанные XDR-конверты транзакций, которые кошелёк пользователя подписывает перед отправкой в Horizon.
Архитектура: API — это бэкенд на Fastify + TypeScript с PostgreSQL. Он общается с фронтендом на Next.js через REST с JWT-аутентификацией. Фоновый воркер обрабатывает отправку расчётов и опрос SEP-24 с отслеживанием задач на основе претензий и восстановлением после сбоев.
Основные возможности:
- Аутентификация на основе кошелька SEP-10, где публичный ключ пользователя — это его идентичность
- Поток расчётов: API создаёт неподписанный XDR платежа с источником, получателем, активом, суммой и мемо, записывает его как ожидающий, кошелёк подписывает, API проверяет подписанный XDR на соответствие сохранённому намерению перед отправкой в Horizon
- Истечение срока действия намерения транзакции с контролируемыми сервером сроками и ограниченным допуском на расхождение часов
- Общие казначейства групп с мультиподписью Stellar для выводов, требующих нескольких подписей
- Мосты SEP-24 для депозитов и выводов фиатных средств в Stellar
- Защита от повторных отправок при выполнении расчётов
- Ограничение частоты запросов для каждого маршрута с общими счётчиками в базе данных для нескольких экземпляров
- Ограничения размера запросов для JSON и multipart
- Строгий режим TypeScript во всей кодовой базе
- Все тела запросов API проверяются с помощью Zod
Для запуска требуются Node.js 20+ и PostgreSQL 14+. Можно развернуть на Render, Fly.io или Railway с Postgres от Neon, Supabase или RDS.
Тесты запускаются без базы данных и сети, используя моки Prisma и Horizon, покрывая механизм расчётов, денежную математику, SEP-10 challenge/verify, проверку подписанных XDR и маршруты аутентификации. Файл `docs/api.http` содержит коллекцию REST Client для локального изучения API.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.