https://cosmic.link is the website I'm writing in an effort to implement the CosmicLink protocol for Stellar. The concept is about being able to share and sign a Stellar transaction as a link such as:
https://cosmic.link/?payment&amount=80&destination=anybody*federation.co
A first design proposal was using what we call a custom URI scheme. It would lead to address such as:
stellar:payment?amount=80&destination=anybody*federation.co
Further research showed that this way of doing have several pitfall:
- If you hadn't installed a program that is able to handle such links, it leads to an error (unfriendly first contact)
- Any program can claim the handling of thoses links, leaving an open door to hi-jack attacks
Using a dedicated domain solve those issues. This solution comes with its own drawback, that however can be mitigated: the owner of the domain got a lot of power over the protocol.
This is why I designed cosmic.link to fulfill two simple functions:
- Act as a welcoming gateway for curious clickers
- Act as a simple redirection service toward an authenticator service of your choice for signing the linked transaction
Basically, when you click on a cosmic link you're being proposed to sign the related transaction. You'll choose between a set of compatible wallet/authenticator service and you'll be offered to setup a permanent redirection. This way, by clicking a cosmic link in the future you'll land directly in the signing service of your choice. Additionally, a QR code will be there for anybody using a PC and willing to sign from her phone.
This way I hope to keep the protocol open and to avoid user retention. In the future, cosmic.link may also host a few links, utils & tutorials related to the protocol.
Just to give you some clues about possible usages:
- Send transaction by mail / social medias
- Allow to trust an asset with a simple click from your webpage
- Allow any Stellar webservice to act as a data provider and link constuctor. You could imagine a complete front-end for decentralized exchange that simply doesn't need to mess with any account ID or transaction sending
- Allow bots to send secured transaction and handle any account (as in secure stellar merchant over IRC)
- Basically a service doesn't have to build & secure a login/signing interface and users doesn't have to trust such service.
As this protocol may become an important vector of Stellar transactions, it is of great importance to have it properly secured. Some security features to be implemented for this protocol have been thought ahead, such as delaying code change propagation using webcache, IP/integrity checks and peer reviewing. Practically, it'll be implemented granularly as the audience grows bringing up the incentive for attacking.
I'm going to release the website and its code soon. I'm still polishing the underlying library and I plan to have something functional enough in a few days. The todo-list on this project is very thin as most of its functions are based on the underlying library:
To be done before end-june (hopefully)
- Make a nice welcoming interface
- Add safety features
- Translation in several wide-spoke languages
- Support offline-signing
To complete this effort, I'm coding two other project that I also present for SBC (both under MIT license):
- CosmicLib, easing cosmic link support & implementation for any javascript-based service
- Stellar Authenticator, an application & webapp that focus solely on signing transactions.
A month ago I wrote a proposal based on ideas shared here that led me to work on those projects:
https://galactictalk.org/d/819-a-standardized-way-of-handling-stellar-transactions