Stellar can serve as a backend for a static UI that provides nice exchange features. All you need to build is the UI. Matching, accounts and everything that would normally happen server side can instead be handled by the network.

Advantages:
- You only have to create the UI. You don't need any server side code or a DB.
- Can be set up such that you don't need to have customers or touch funds which should reduce the regulatory burden.
- Can be used by anyone in the world.
- Acts as a decentralized exchange.
- Users can trade using a collection of anchors of their choice. Increasing the liquidity for everyone.

Ideally the UI would be like Poloniex or Oanda or other retail Forex site. Users don't need to have accounts with you.

1) login
Simplest thing here would be to just ask the user to enter their Stellar account secret key. It would never be sent server side. Only used to sign transactions locally.
Inspecting the markets should still be possible without logging in.

2) Allow selecting the pair to trade.
Should have a few preset pairs. But should allow people to enter in Anchors/currency codes.

3) Trusting Anchors
Probably want to have this feature somewhere in the UI. Again with maybe some prest anchors.

4) Trading
This should behave essentially like it does on Poloniex. Or even better on Oanda where you can trade from charts!

After you built this it would be essentially a distributed exchange that anyone could use. A good addition to this would be being an anchor yourself...

For example: https://galactictalk.org/d/27-project-idea-anchoring-digital-currencies

    14 days later
    4 months later

    I have a few questions about how we could implement this:
    Where can I find a list of Anchors and assets they offer?
    * If an anchor does not offer an Asset like ETH can you add it and verify the asset somehow?
    - Like a Linux hosted ETH wallet that generates a new wallet address for each user.
    - It seems stepping outside what is already offered by Anchors would take on burden of figuring out compliance.
    * I'm not seeing any fees. If you build a Poloniex on Stellar and it starts getting any significant volume on Horizon is there some sort of hosting / transactional fee I am missing besides what is charged to the users for processing an exchange?
    * Compliance. Jed you mentioned reducing the burden I guess because its up to the anchors to assure compliance of assets. To avoid any gray areas is there a general guideline. (ie. Don't offer service in NY without bitlicense. )
    * Seems avoiding FIAT exchange where users can only add funds to the exchange via BTC or Lumens would reduce some of the headaches the big exchanges have run into.
    * Multi-asset wallet. What is the best path for this to host each variant of altcoin you want to offer on a server and store funds there when an asset like Dash is released from an Anchor or is there something built-in that will track wallet balances per asset?
    * Either way this is fantastic as the user will only need their Stellar secret key to login and the rest of the wallets credentials would be managed either by Horizon or probably a Nodejs API we'd build to read externally hosted wallets on linux servers.. maybe there is a less complex path?
    I'd want to start off very simple with just a couple of assets to see how it does.

    Trying to scope this to see how long it would take. Seems there is a bit more to it than just UX although yes Horizon has done a lot of the heavy lifting of what would be needed for an exchange.

    Anchors: https://galactictalk.org/d/14-projects-built-on-stellar

      Are you asking if there is some asset that no anchor supports can you add that to the exchange? Not really. You could make some mechanism of doing this but then that would be an anchor.

      There are a few different business models that could be tried.
      - you could charge some lumens per trade
      - you could charge anchors for listing or for promotion
      - you could require the users to point their inflation destination at you
      - you could be the anchor for some of the currencies. Maybe the bulk of the crypto ones?
      - freemium model where you ask people to pay for the pro-version

      The compliance stuff you should run by a lawyer but I would guess that since you are just making an interface for the network so you shouldn't have compliance issues.

      You don't have to host anything. the assets are tracked in stellar and held by the anchors.

      Seeing as this would only be an interface to the Stellar DEX, how do you make people use your interface instead of someone else's, and pay you for it at the same time?

      Easy peasy lemon squeezy... You centralize. You provide functionality that no-one else has. You provide a better interface, etc..

        a month later

        I agree with dzham on this one. You will need to find a balance between decentralisation and centralisation.

        Just being an UI and letting people log in with the secret key may sound ok at first, but if you get any popularity you are going to end up as a target for phishing attacks. Being part of cryptocurrency communities I learned that if there is a way to lose money, people are going to find it.

        If you provide some login method (and 2FA) you will need to hold users XLM/tokens. This is a really hard thing to get right.

        Does anyone have any other idea how to make it more secure? At the same time let users keep their own wallet, but use your "centralised" exchange.

          5 months later

          jed can I charge the commission fee or the rule is totally controller by core component?

          [unknown] really? but if as Jed said there is no backend, where does you put this operations? cannot be in javascript. It can be overridden easily. Maybe some sort of backend still required for security reason and also give the operator a handler. what do you think?

          @jackyq2015 the person who would be using your app would know they would pay you a fee on each transaction. If they keep using your app then they are fine with it and your app will automatically send a transaction to your account.

          Of course the person can manually control the page's JavaScript to change that, or they can fork the project, or do a bunch of things, or -- much better -- they could just use the Stellar API directly to operate on the distributed exchange -- but all that would defeat the purpose of your app, that is to offer greater value on the UI.

          So, in other words, anyone who's willing to dig into your app's JavaScript code just to change that will just not use your app in the first place.

          bkolobara I don't know if this is correct, but I think the first thing all wallets should start doing is to not actually request the user seed key, but actually guide them into creating a secondary signer key (and setting proper threshold options) and request that secondary key instead.

          @fiatjaf I got your point. I think the Android/iOS app may be not suitable for the exchange since its complexity. I used to see a project call Bitsqure which provide fat client for exchange. But it not only cover the UI but also the core back end component. Sad thing is nobody is using it after I login to the tor network.

          a month later

          What about offloading computations on the cloud.

          Think of apple's siri but decentralized version

          Many mini siri's in the cloud each doing the computations when needed.

          a year later

          jed You can also try https://scopuly.com/ - there is everything listed in the SDEX plan and some other useful features, such as: Tokenization of Assets, Crypto / Fiat Exchange and Block explorer. As well as Watchlist for convenient monitoring of certain Addresses and Assets ..