One of the main use cases for Stellar is the tokenization of fiat currency to optimize processes like cross-border payments, and this section of the docs details the technical and operational steps necessary to set up a service that does that.
This section doesn’t cover the basic steps for issuing an asset on the network—you can find those here—rather, it explains how developers can connect the Stellar Network to their country’s banking system and regulatory processes such as KYC and AML by setting up specific endpoints and a webapp that allow users to make deposits and withdrawals. It will walk through the flow, features, and protocol specifications for integrating with wallets and other clients, and offer examples and tools to make the process easier to implement and test.
There are three stages in the process, each of which we will go over in detail: 1. Setting up a test server 1. Setting up a production server 1. Launch
Stellar Anchors are the on/off ramps of the Stellar network: they accept deposits of fiat currencies (such USD, CNY, and BRL) via existing rails (such as bank deposits or cash-in points), and send to the user the equivalent digital stablecoins representing those deposits on the Stellar network. On the flipside, they allow holders to redeem those tokens for the real-world assets they represent. To read more about the kinds of things you can do with digital fiat currency, check out this explainer.
Stellar Anchors can be asset issuers (aka Issuing Anchors), or they can honor assets that already exist on the network.
The complete customer flow from deposit to withdrawal goes something like this:
- Customer goes through KYC
- Deposits real fiat currency (e.g. sends a bank transfer)
- Receives the digital asset on the Stellar network from the asset distributer and/or issuer
- Uses the digital asset on the Stellar network (for remittance, payments, trading, store of value, etc)
- Redeems the digital asset by returning it to the issuer on the Stellar network
- Receives real fiat currency in return (e.g. receives a bank transfer)
Since customers generally use wallets to hold their Stellar tokens, and since there are a lot of wallets to choose from, a crucial step in enabling that customer flow and making a fiat-backed token widely accessible is to set up infrastructure that enables wallets to offer in-app deposits and withdrawals, and to follow best practices when doing to allow any wallet to easily find and interact with it.
Those best practices are specified in Stellar Ecosystem Proposals (SEPs), which are publicly created, open-source documents that live in a Github repository. They define how different institutions (such as asset issuers, wallets, exchanges, and service providers) should interact and interoperate.
There are many use cases covered by the existing SEPs—including regulated assets (SEP-8) and federated user identification (SEP-2)—and new SEPs are proposed and discussed on Github all the time. We encourage you to participate in those discussions and help build new standards that will make the financial services easier and more accessible.
This guide will focus on the Interactive Anchor/Wallet Asset Transfer Server SEP (aka SEP-24), since it defines the specs for deposit and withdrawal implementations. SEP-24 is focused on interactive user flows, meaning flows where users interact with an Anchor-hosted interface rendered inside a wallet.
To enable an interactive flow, fiat-backed Anchors (aka on/off ramps) should implement two SEPs in addition to: SEP-01, which links meta-information to an asset, and SEP-10, which creates authenticated user session. The basic steps from an Issuing Anchor’s (meaning an entity that is both on/off ramp and an asset issuer) point of view are:
- Issue a token on the Stellar network, which you can do by following this guide.
- Link a stellar.toml filed published on their home domain to that asset by following this guide.
- Create a series of public endpoints that wallets can interact with, covered below.
- Create a webapp that allows users to initiate deposits and complete withdrawals, covered below.
Last updated Apr. 02, 2020