Design and Architecture
The Stellar Disbursement Platform consists of four services deployed together:
- Dashboard: the user interface administrators use to initiate and track the progress of disbursements
- SDP Core Service: the core backend service that performs several functions:
- Dashboard API: the API used by the front-end UI for all disbursement requests. The API is documented here
- Messaging Service: a recurring process that sends text messages to users prompting them to download the wallet selected for a particular disbursement and verify their phone with an OTP
- Wallet Registration UI: a web application that collects and verifies the recipient’s OTP code and verification information via Stellar’s SEP-24: Hosted Deposit and Withdrawal protocol
- Anchor Platform Service: the API server that the wallet uses to authenticate and initiate the recipient’s registration process through the SEP-24 deposit flow
- Transaction Submission Service: the service that submits all payment transactions to the Stellar network. This service is designed to maximize payment throughput, handle queuing, and graceful resubmission/error handling
Dependencies
- Container Orchestration: the SDP is packaged as Docker containers and can be deployed to Kubernetes or AWS Fargate. SDF provides a Helm Chart for Kubernetes
- Postgres: the SDP uses a Postgres database server for all of its services
- Twilio or AWS SNS and SES: the SDP’s messaging service uses SMS messages via Twilio or AWS SNS and administrative emails for organization account setup and recovery via AWS SES
- Stellar Accounts:
- Distribution Account: the SDP requires access to a funded Stellar account to make payments to the recipient
- SEP-10 Auth Account: the SDP requires a Stellar account for the mutual authentication protocol SEP-10: Stellar Web Authentication used to connect to wallet applications