Editor's Note: This is a guest post by Jed McCaleb, co-founder and CTO of Stellar.org.
Stellar is a fully decentralized payment network that allows anyone to send and exchange any currency. It can act as a decentralized exchange for bitcoin.
Why Stellar? After years of working in the fintech space, I realized that the world’s financial infrastructure is fundamentally broken, leaving billions without resources. As a result, Joyce Kim and I co-founded Stellar.org to create an open standard for financial technology. Since anyone can participate in the network, it can be particularly helpful for the 2 billion unbanked people worldwide.
Since the launch of Stellar, we’ve announced several partnerships, spoken at the United Nations and unveiled a new consensus algorithm and codebase. Along with other contributors to Stellar Core — Professor David Mazieres, Graydon Hoare and Nicolas Barry — I had the task of designing this new codebase. I’m excited to share some of the motivations behind the design decisions and to talk about projects that Stellar’s future might hold.
Upgrade to a simple, modular network
One of the key principles that facilitated organic growth of the Internet was its low-level simplicity. With this in mind, we designed the upgraded network with complexity moved to the edges. With simple primitives that can be composed in different ways, the system is robust and maintainable, yet still expressive and powerful.
The upgraded Stellar network is more secure, scalable and modular. We separated the network’s responsibilities into multiple components to make them easy to understand, maintain and extend. Stellar Core is now less than half the size of the previous codebase. It stores data in a standard SQL database, making it easier for people to get information out of the Stellar network and interact with it using standard tools and libraries. Graydon’s presentation provides granular details on the movement and locations of data in the Stellar system.
One of the main reasons we refactored the code was to implement the new Stellar Consensus Protocol (SCP), which has a unique, provably correct federated consensus algorithm. Distributed systems are complex, and achieving consensus in a decentralized network is even more complex — it requires a fully understood and proven consensus algorithm like SCP, which ensures the network will not fork.
For maximum safety, we simulated many failures through unit and integration tests. We also used an interface and model that connects Stellar Core to Kyle Kingsbury's Jepsen tool for testing distributed systems against network partitions. In all these cases, the network halts until quorum can be re-established, at which point it picks up and carries on. The network must halt in these conditions. The other option is to fork, meaning two sides of the network disagree about the state of the world. Not forking is a critical feature of any distributed, decentralized consensus algorithm and the one we've spent the most time trying to get right.
Following our overarching design philosophy, we focused on creating simple components that users can combine in complex ways to get the behavior they need. Our approach to smart contracts has been to keep most of the logic outside of the core system so that Stellar Core can scale globally.
The two key components of smart contracts on the Stellar network are multi-signature support and the ability to batch operations. Accounts can now have multiple signers with various weights, so you can simply set up m-of-n accounts or other, more complex, access schemes.
Transactions are now a series of operations that affect the state of the world. For example, a single transaction can trivially say A sends to B if B sends to C. These abstractions, coupled with the network’s distributed exchange, produce a surprisingly rich vocabulary for contracts. Bonds, escrow, collateralized debt and the Lightning Network are all possible on the network.
The live network is entirely run by community participants outside Stellar.org. We want to ensure that the network does not wind up operated or administered primarily by us. Stellar.org contributes to the open-source core protocol, but everything beyond that — everything that actually makes the network useful and valuable — is up to the community!
Looking toward the future
We're currently developing tools and protocols that live above the base Stellar protocol and support future features such as messaging and private transactions.
I have a long list of interesting ideas for things that could be built on Stellar. I jotted down a few of my favorite ones here: https://github.com/stellar/docs/blob/master/other/things-to-build.md
Honestly, I'm most excited to see what people come up with on their own — I know there will be amazing ideas that we haven't even thought of yet.
Jed McCaleb is co-founder and CTO of Stellar.org. In 2000 he developed e-Donkey, one of the largest file-sharing networks of its time. He later created Mt. Gox, the first bitcoin exchange, which was subsequently sold and re-coded by its current owners. Find Jed online on GitHub, LinkedIn, and Twitter.