Active Discussions

💬 This week, I wanted to feature an ongoing discussion around anchor deposit and withdrawal flows.

First, a little background: anchors connect to banking rails to handle deposits and withdrawals of users’ money, thereby serving as bridges between the real world and the Stellar network. To do that, they interoperate with Stellar wallets so that consumers can initiate transfers on and off the network using their interface of choice.

Currently, the favored standard defining deposit and withdrawal flows is SEP-0024, the Interactive Anchor/Wallet Asset Transfer Server spec. It explains how wallets can poll anchor servers to initiate deposits and withdrawals, and then connect users to anchor-hosted webapps to complete the off-network part of the transaction.

If you’re using, say, StellarX to connect with AnchorUSD to move money onto the network, you’ll notice that StellarX pops up an AnchorUSD webapp when you click “Deposit,” and that’s where you input relevant information and connect to your bank account. That’s what “Interactive” in the title means: the deposit requires the user to interact directly with the anchor’s webapp.

However, SEP-0024 is not the original spec for deposit and withdrawal. That honor belongs to SEP-006, which specifies systems for both interactive and non-interactive flows. A non-interactive deposit flow doesn’t require a user to convey information directly to an anchor: instead, they can upload information (bank info, ID, etc) to a wallet, and the wallet can store it and provide it to an anchor via API as needed.

Originally, a lot of people favored the non-interactive flow because it allows for a better user experience: enter your info once and you’re done. It turns out, however, that most anchors require an interactive flow to prevent fraud and comply with local regulations, and so SEP-0006 was deprecated in favor of SEP-0024, which streamlined things by removing the non-interactive flow from the standard. After that deprecation, it also turns out that some anchors still want a non-interactive flow (oops), and as a result SEP-0026 was born.

SEP-0026 aims to create a new standard for non-interactive flows to exist alongside SEP-0024, but it’s still a work in progress. While it’s congealing, the non-interactive part of SEP-0006 has been reinstated. This provides a temporary solution to services looking to support the deposit /withdrawal flow of their choice.

Once SEP-0026 is completed, SEP-0006 will likely be deprecated again, leaving SEP-0024 and SEP-0026 to handle deposit / withdrawal flows.

👉 If you’ve enjoyed this saga about the the creation of SEPs, be sure to keep up with the developer mailing list where these discussions take place!