このプロジェクトについて
Mergepay APIは、Stellarネイティブのグループ決済アプリケーションであるMergepayのバックエンドサービスです。認証、グループと経費のロジック、オンチェーン決済、Stellar統合、トレジャリーのマルチシグ、SEP-24アンカーフローを処理します。
このシステムはStellarブロックチェーン上に構築されています。すべての決済は実際のオンチェーン支払いです。ログインにはSEP-10ウォレット認証を使用し、支払いには特定の経費に紐付ける`MP:<code>`メモが付与され、残高はトラストライン経由でXLMまたはUSDCで決済され、共有トレジャリーはStellarマルチシグを使用し、法定通貨のオン/オフランプはSEP-24アンカーを通じて行われます。サーバーはユーザーの秘密鍵を一切保持しません。サーバーは未署名のXDRトランザクションエンベロープを構築し、ユーザーのウォレットが署名してからHorizonに送信されます。
アーキテクチャ: このAPIはFastify + TypeScriptのバックエンドで、PostgreSQLを基盤としています。Next.jsフロントエンドとは、Bearer JWT認証を用いたRESTで通信します。バックグラウンドワーカーが、クレームベースのジョブ追跡とクラッシュしたプロセスからの復旧を伴う決済送信およびSEP-24アンカーポーリングを処理します。
主な機能は次のとおりです。
- SEP-10ウォレットベース認証。ユーザーの公開鍵がそのままIDとなります
- 決済フロー: APIが送信元、送信先、アセット、金額、メモを含む未署名の支払いXDRを構築し、保留として記録し、ウォレットが署名し、APIが保存された意図と署名済みXDRを照合して検証してからHorizonに送信します
- サーバー制御の期限と許容範囲を限定したクロックスキュー耐性を備えたトランザクション意図の有効期限
- 複数の署名者を必要とする出金にStellarマルチシグを使用する共有グループトレジャリー
- 法定通貨からStellarへの変換のためのSEP-24アンカーの入金および出金ブリッジ
- 重複送信を防ぐ決済実行時の冪等性保護
- インスタンス間でデータベースに基づく共有カウンターを用いた、ルートごとの包括的なレート制限
- JSONボディおよびマルチパートアップロードのリクエストサイズ制限
- コードベース全体でTypeScriptのstrictモードを強制
- すべてのAPIリクエストボディをZodで検証
このプロジェクトの実行にはNode.js 20+およびPostgreSQL 14+が必要です。Neon、Supabase、RDSなどのプロバイダーからPostgresをプロビジョニングし、Render、Fly.io、Railwayにデプロイできます。
テストは、モック化されたPrismaとHorizonを使用してデータベースやネットワークなしで実行され、決済エンジン、金額計算、SEP-10チャレンジ/検証、署名済みXDR検証、認証ルートをカバーします。コミットされた`docs/api.http`ファイルは、ローカルでAPIを試すためのREST Clientコレクションを提供します。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.