Skip to content

Instantly share code, notes, and snippets.

@MisterTicot
Created January 23, 2019 14:46
Show Gist options
  • Save MisterTicot/b219b2f72d0968485442c7f89b62623b to your computer and use it in GitHub Desktop.
Save MisterTicot/b219b2f72d0968485442c7f89b62623b to your computer and use it in GitHub Desktop.

One Year Later: Walletless Stellar Applications Are Finally Coming

Exactly one year ago, I wrote a article called "A Standardized Way Of Handling Stellar Transactions". It was the synthesis of several ideas floating around in the community & described a secure way for independent applications to interact with Stellar wallets. You can think about it as a way to give Metamask-like capabilities to any Stellar wallet.

I think now is a good time to sum up & give a hint about what's coming.

What Happened Since A Year ?

Back when I wrote that article, I hoped that someone would take on the job. Some interested developers helped me to refine the concept, which was really great. However, no one showed up to actually code that thing. I decided to put myself at work. One month later I released the Stellar Authenticator wallet & the Cosmic Link transaction request protocol. At first it was only a proof-of-concept, but it won a prize in Stellar Build Challenge #6 (SBC#6) that allowed me to go ahead improving it.

It was not a trivial task, mainly because I had to teach myself JavaScript first (v_v). Fortunately, I'm a seasoned code wizard so all went perfectly fine after dozens of hours of research and a few complete rewrites :).

The definitive design is a bit different from what I proposed in the original article, mainly on two points:

  • Query strings & real URLs (https://example.org/?payment...) are used instead of custom URI scheme (stellar:payment?...); This is a general trend in web technologies. It is more secure, decentralized and allows to support web wallets as well as native ones.
  • The idea of an unique ultra secure wallet have been abandoned for an implementation that allows any existing wallet to implement the protocol; Trying to compete against existing wallets would have raised too much friction while the real priority was to make walletless applications possible.

I released fully functional beta version for both softwares this summer and I earned another SBC prize. While I initially planned to publish the stable versions by the end of 2018, I'm not there yet because I had to delay the few last missing pieces in order to focus on... Well, I guess we'll talk about it later.

In practice, however, those softwares are already stable since several months. Signing into Lumenaut inflation pool with a compatible wallet needs no voodoo:

https://cosmic.link/?setOptions&inflationDest=GCCD6AJOYZCUAQLX32ZJF2MKFFAUJ53PVCFQI3RHWKL3V47QYE2BNAUT

Alternatives

As I said ideas that led me there were already floating around. Even while nobody initially showed up to implement them, a few alternatives popped out later that year. I think some of them are worth mentioning here:

SEP-0007 is a Cosmic Link alternative that have been proposed shortly after SBC#6 by Nikhil Saraf from Inter/stellar (ex lightyear.io). I think that this happened mostly because back then Cosmic Link was perceived as a centralized (= under control) protocol. In fact, this is not the case but the way the whole thing would work was not so clear yet.

SEP means Stellar Ecosystem Protocol, so it's a kind of official standard. This is definitely something we need here. However, this alternative suffers from consequent drawbacks. The more obvious one being that is can't properly support web wallets. Hopefully that's going to get solved in a new iteration.

Stellar Expert ID is a wallet by OrbitLens that pushed the challenge further by implementing login & message signing capabilities. While being a proof-of-concept, it won an impressive prize at SBC#7. I think there are a few ideas there that are going to make a long way, and I guess you'll hear about it before long...

Non-Competitive Strategy

I figured out that if I wanted my marathon to success, I had to go for a non-competitive strategy. The goal of all this work is to enable users to access different Stellar applications without putting their funds at risk. At the end, it doesn't really matter if they do so using this or that wallet or protocol.

This is why the Cosmic Link website and the underlying library can support any wallet that comes to accept arbitrary transactions request. In case it requires an alternative protocol, I'll get you covered. In fact, they are already compatible with Ledger Wallet, SEP-0007 and Stellar Laboratory.

All the softwares I released are under the MIT permissive license, which makes it possible for everybody to read, copy, edit and distribute. When it comes to improve the whole "ecosystem", I think cooperation is the key.

Today's Challenge: Bootstrapping Adoption

Initially, I expected the developer community to add Cosmic Link support as soon as it would become stable enough and documented. After all, this is an unique piece of code that brings a level of safety that no other blockchain project propose.

However, a protocol such as Cosmic Link is subject to the famous network effect − nobody has incentive to use it as long as nobody uses it. Walletless Stellar services are now possible, but obviously there's a missing piece: a first application that demonstrates it.

Hence this is my duty to provide you with such a software. This is called Equilibre.io. This is a portfolio balancer for the Stellar DEX. This is going to be beta-released for the birthday of Cosmic Link's proof of concept, February the 16th.

And I hope you'll find it awesome :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment