프로젝트 소개

Mergepay API는 Stellar 네이티브 그룹 정산 애플리케이션인 Mergepay의 백엔드 서비스입니다. 인증, 그룹 및 경비 로직, 온체인 정산, Stellar 통합, 트레저리 멀티시그, SEP-24 앵커 플로우를 처리합니다. 이 시스템은 Stellar 블록체인을 기반으로 합니다. 모든 정산은 실제 온체인 결제입니다. 로그인은 SEP-10 지갑 인증을 사용하고, 결제에는 특정 경비에 연결하는 `MP:<code>` 메모가 포함되며, 잔액은 트러스트라인을 통해 XLM 또는 USDC로 정산되고, 공유 트레저리는 Stellar 멀티시그를 사용하며, 법정화폐 온/오프램프는 SEP-24 앵커를 통해 이루어집니다. 서버는 사용자 개인 키를 보관하지 않습니다. 서버는 사용자의 지갑이 Horizon에 제출하기 전에 서명하는 미서명 XDR 트랜잭션 봉투를 생성합니다. 아키텍처: API는 PostgreSQL을 기반으로 하는 Fastify + TypeScript 백엔드입니다. Bearer JWT 인증을 사용하여 REST를 통해 Next.js 프론트엔드와 통신합니다. 백그라운드 워커는 클레임 기반 작업 추적과 충돌한 프로세스로부터의 복구를 통해 정산 제출 및 SEP-24 앵커 폴링을 처리합니다. 주요 기능은 다음과 같습니다. - 사용자의 공개 키가 곧 신원이 되는 SEP-10 지갑 기반 인증 - 정산 플로우: API가 소스, 목적지, 자산, 금액, 메모를 포함한 미서명 결제 XDR을 생성하고 이를 대기 상태로 기록하면, 지갑이 서명하고, API가 서명된 XDR을 저장된 의도와 대조 검증한 후 Horizon에 제출합니다. - 서버 제어 데드라인과 제한된 클록 스큐 허용 범위를 갖춘 트랜잭션 의도 만료 - 여러 서명자를 요구하는 출금을 위한 Stellar 멀티시그 기반 공유 그룹 트레저리 - 법정화폐-스텔라 변환을 위한 SEP-24 앵커 입금 및 출금 브리지 - 중복 제출을 방지하기 위한 정산 실행의 멱등성 보호 - 인스턴스 간 데이터베이스 기반 공유 카운터를 사용한 경로별 포괄적 속도 제한 - JSON 본문 및 멀티파트 업로드에 대한 요청 크기 제한 - 전체 코드베이스에 적용된 TypeScript 엄격 모드 - Zod로 검증되는 모든 API 요청 본문 이 프로젝트를 실행하려면 Node.js 20+ 및 PostgreSQL 14+가 필요합니다. Neon, Supabase, RDS 같은 제공업체에서 Postgres를 프로비저닝하여 Render, Fly.io, Railway에 배포할 수 있습니다. 테스트는 모킹된 Prisma와 Horizon을 사용하여 데이터베이스나 네트워크 없이 실행되며, 정산 엔진, 금액 계산, SEP-10 챌린지/검증, 서명된 XDR 검증, 인증 라우트를 다룹니다. 커밋된 `docs/api.http` 파일은 로컬 API 탐색을 위한 REST Client 컬렉션을 제공합니다.