À propos du projet

L'API Mergepay est le service backend de Mergepay, une application de règlement de groupe native de Stellar. Elle gère l'authentification, la logique de groupes et de dépenses, le règlement on-chain, l'intégration Stellar, la trésorerie multisig et les flux d'ancrage SEP-24. Le système est construit sur la blockchain Stellar. Chaque règlement est un véritable paiement on-chain : la connexion utilise l'authentification par portefeuille SEP-10, les paiements portent un mémo `MP:<code>` les reliant à une dépense spécifique, les soldes se règlent en XLM ou USDC via des trustlines, les trésoreries partagées utilisent le multisig Stellar, et la rampe fiat on/off passe par des ancres SEP-24. Le serveur ne détient jamais les clés privées des utilisateurs — il construit des enveloppes de transaction XDR non signées que le portefeuille de l'utilisateur signe avant soumission à Horizon. Architecture : L'API est un backend Fastify + TypeScript soutenu par PostgreSQL. Elle communique avec un frontend Next.js via REST avec authentification Bearer JWT. Un worker en arrière-plan gère la soumission des règlements et l'interrogation des ancres SEP-24 avec un suivi des tâches basé sur des claims et une récupération après plantage des processus. Les fonctionnalités clés incluent : - Authentification par portefeuille SEP-10 où la clé publique de l'utilisateur est son identité - Flux de règlement : l'API construit un XDR de paiement non signé avec source, destination, actif, montant et mémo, l'enregistre comme en attente, le portefeuille le signe, et l'API valide le XDR signé par rapport à l'intention stockée avant soumission à Horizon - Expiration de l'intention de transaction avec des délais contrôlés par le serveur et une tolérance bornée au décalage d'horloge - Trésoreries de groupe partagées utilisant le multisig Stellar pour les retraits nécessitant plusieurs signataires - Ponts de dépôt et de retrait d'ancrage SEP-24 pour la conversion fiat-vers-Stellar - Protection d'idempotence sur l'exécution des règlements pour éviter les soumissions en double - Limitation de débit complète par route avec compteurs partagés soutenus par la base de données entre les instances - Limites de taille des requêtes sur les corps JSON et les téléversements multipart - Mode strict TypeScript appliqué à l'ensemble de la base de code - Tous les corps de requête API validés avec Zod Le projet nécessite Node.js 20+ et PostgreSQL 14+ pour fonctionner. Il peut être déployé sur Render, Fly.io ou Railway avec un Postgres provisionné auprès de fournisseurs comme Neon, Supabase ou RDS. Les tests s'exécutent sans base de données ni réseau en utilisant Prisma et Horizon simulés, couvrant le moteur de règlement, les calculs monétaires, le défi/vérification SEP-10, la validation des XDR signés et les routes d'authentification. Un fichier `docs/api.http` versionné fournit une collection REST Client pour l'exploration locale de l'API.