– Let’s talk about Stellar. I’ve got a lot of requests recently for a video on Stellar, more specifically the Stellar Consensus Protocol. What powers the whole network known as Stellar? I think a lot of these interests has come from the fact that the Stellar price has actually been going up to the right recently. But also, that a bunch of ICO are starting to run their ICOs on Stellar instead of Ethereum.
The obvious question is, why would they make that decision? So let’s try to break that down in this video. I do warn you this gets a little bit technical because we are talking about a consensus protocol, so if you’re having trouble following along, something I recommend to a lot of viewers is if you go down to the YouTube settings in that little cog icon, you can change the speed to 0.75, and changing it to 0.75 speed would make me sound all weird, but it will make things a little bit slower and easy to follow along with. It’s hard to go at just the right speed for everybody. Some people say I’m too fast; some people say I’m too slow. So I’m just trying to pack everything in a nice condensed video, and hopefully, you can adjust the speed to suit your viewing preference.
The history of Stellar
Stellar has been around for a while, since 2014 actually. And it was started through the Stellar Foundation, which was created by Jed McCaleb and Joyce Kim. Originally, Stellar was simply a fork of the Ripple protocol, and that’s because Jed McCaleb, the creator of Stellar, also created Ripple back in the day. But there’s a common misconception that that’s still the way it is, and that’s not true. Stellar actually completely re-architected their code based in a way that protocol works, so let’s cover that in this video.
So to start with, we need to talk about what Byzantine Fault Tolerance means, and I have a previous video on this, which I recommend you go back and watch just around how consensus works. But in a nutshell, you have a set of validators, say 12 validators who need to all agree on one thing. When they agree on this thing, they achieve something called quorum or consensus, and then that gets written back into history in the form of a Blockchain or some sort of other ledger data structure.
Most implementations to date in the cryptocurrency space have implemented something called Practical Byzantine Fault Tolerance, which was actually outlined in a Whitepaper all the way back in 1999. And these networks typically have a predefined set of validators who achieve consensus. By predefined, I mean that there’s usually a central authority, usually the software developers of the protocol, who define who those validators are. In Practical Byzantine Fault Tolerance, everything’s peachy if you can keep 66% of the validators agreeing on the one thing, so just like in proof of work systems where you have a 51% attack, if someone gets 51% of the hashing power, in practical byzantine fault tolerance systems, you have to make sure that you don’t have more that 33% of the nodes in the network being malicious.
Some examples of this PBFT systems include systems like Ripple, which I’ve already mentioned, Hyperledger, which is another private blockchain solution, and also Tendermint, which I’ve covered in the previous video. So as I said earlier, Stellar was originally forked from the PBFT implementation of Ripple, which is originally created by Jed McCaleb as well. But after the initial release of the Stellar network as it began to gain traction, the network suffered a pretty bad fall, which means consensus wasn’t being achieved on the network.
Stellar did a lot of research in this, and they actually brought somebody in called Professor David Mazières. And in this research, they found that the existing Ripple system wasn’t really fault tolerant beyond one or a couple of nodes. So they had to go back to the drawing board, and Professor David Mazières wrote to Whitepaper outlining something called the Stellar Consensus Protocol. Rather than using that traditional practical byzantine fault tolerance, it uses something called a Federated Byzantine Agreement. And in this model, instead of having that predefined set of validators that a company like Ripple sets up or when you set up a Hyperledger you have to define their validators.
In a Federated Byzantine Agreement system like Stellar, the nodes can openly choose who they trust, and when the node in a Stellar network decides who to trust, this is called a “quorum slice.” based on all the nodes that are talking to one another, they combine these quorum slices to form quorums within the network. Ultimately, the market that exists within the network defines who is trustworthy, rather than the software developer’s own company predefining any set of validators. Because of nodes being able to choose who they trust, you’ll sometimes hear this system called “open membership,” because it’s not a closed system.
Anyone can spin up a node and become a validator in the network of their own accord. Now because of this open motto where people were choosing who they trust, you can end up having two quorums completely separate and not talking to one another, which obviously would be a problem. And this is addressed through something called quorum intersection, which essentially states that two quorums always have to be linked by one node. It will essentially make sure that transactions that are happening in one side of the quorum are also happening on the other.
The Stellar consensus protocol
The Stellar consensus protocol outlines a lot of cool ways to deal with this, but it’s important to outline that this isn’t bulletproof. If you do have a network full of malicious nodes who are doing things to mess up the network, or you have just nodes going down for no reason, then obviously this system is gonna fall apart. But because of the open membership system, it’s ultimately more decentralized and, in my opinion, better than practical byzantine fault tolerance protocols.
So the core of this Stellar consensus protocol is that in order to achieve this federated byzantine agreement, nodes were essentially filling out a ballot all the time and voting on consensus. And during this federated voting process, the nodes are sending messages between one another with a statement of something that they believe should be written into history.
In addition to that, when they’re sending these messages, essentially, the transactions that are being written into the state of the blockchain, these nodes are also broadcasting what the quorum slice looks like, who they trust. And through this, they’re essentially getting a gossip protocol that helps spread node discovery. These people are saying, hey, I trust these people, and as another node, you can look at who everybody trusts and build a quorum based on that. If everybody’s telling you who they trust, you can essentially build a map of the whole network and see how consensus is being reached.
Now, I’m not going to go too deep into the voting process ’cause it is quite complex, and I recommend you read the Whitepaper if you wanna go that deep into the protocol. But essentially, all these participating nodes do continuous rounds of voting until they can come to an agreement about what should be written into history. Eventually, assuming you don’t have malicious nodes or nodes just going offline, the net group of nodes will establish a quorum.
After everything it’s prepared and voted on, then there’s another round of voting to get that actually committed into the network. At this point, the nodes can vote to do one of two things. They can either commit or they can abort. And through this and repeated cycles of voting, they eventually come to consensus. So it’s really important to know what we’ve just discussed is simply a consensus network. It’s a way to get a group of decentralized entities to agree on something. It means it doesn’t take care of things such as minting new coins. It doesn’t take care of incentivising nodes, like why would I spin up a node if it’s only gonna cost me money and there’s no block rewards? And it also doesn’t predefine trust, which, in a way, is a good thing, but also means that discovery has to happen on the node itself.
To solve the minting problem, Stellar had an initial period where you could sign up and verify with something like Facebook and social media profile, and they would essentially airdrop you a bunch of tokens. They’ve also done things like Bitcoin airdrops based on how much Bitcoin you have as well. So the Stellar consensus protocol and Stellar in general, they do still require some trust in the system and who you’ve defined that you trust in your quorum slice. It does provide a much better order trail of what those nodes and participants are doing. So if all of a sudden, a bunch of nodes become malicious, you can easily update your quorum slice to point at other nodes which you find trustworthy. In that way, it’s resilient to a lot of different attack factors.
Through all of this, Stellar able to offer a protocol that has very fast transaction times, low fees, and high skill ability ultimately. They’ve done away with proof of work mining, which means you don’t have a bunch of people wasting computing power just in order to secure the network. One thing I do wanna call out, because it gets a lot of comments though is that Stellar does have a limited number of nodes powering the network at this point in time. I can only find around 20 or 30 nodes that is securing the network. I think this is mostly because there’s no real incentive for an average Joe to spin up a server and run a validating node. It’s an expensive thing to do, and there’s no block rewards that give you payment for doing so.
So this does introduce some incentive toward centralization. But again, remember back to the fact that this is an open membership system, so essentially, anybody can spin up a node if they want to. That means that it’s not that technically different from something like Bitcoin. Or technically, anybody can point hashing power at it and participate. Even in a system like Bitcoin, we’ve seen that centralization develop over time as it’s so costly to run the hardware and pay for the electricity. Ultimately though, I think that Stellar is a far better improvement upon other practical byzantine fault tolerant protocols like Ripple, ’cause it has that open membership system. It’s not closing it off.
How currency and assets work on the Stellar protocol?
Anybody can participate. So that’s consensus, but let’s talk a little bit about how currency and assets work on the Stellar protocol. Stellar has a native currency called XLM or lumens. And this is use simply to pay fees which are relatively low, but offer a form of spam protection. So on top of the Stellar network and that XLM currency, you can also issue assets or tokens just like you could with an ERC20 token on Ethereum. But I’d say it’s actually a little bit more secure that something like an ERC20 because there’s no scripting, there’s no smart contract required. It’s simply using built in functions to issue an asset on the Stellar protocol.
Assets can be anything, from something that’s created like a token, or it can be a real world asset like USD or Euros. When you hold an asset on the Stellar protocol, you’re actually holding a credit from an issuer that you trust to have that asset somewhere. This all takes place through something called a trustline. To set up this relationship, you set up a trustline between your account i.e. your wallet and the issuer of the asset.
So for instance, if you setup a trustline with company X, and they gave you token Y, what they’re actually issuing you is a credit for that token Y. And the trustline is simply a relationship that says, I trust that these people are good for token Y and they can repay that or I can redeem that token Y in the future. This matters less with token systems that are new tokens that a company is issuing, but for something like USD, you’re saying that you trusted that company has a reserve somewhere that you can redeem that USD credit you’ve been issued for that USD at some point in the future.
Participants that issue assets like this are called “anchors” in the Stellar network. And any account can issue assets in this way. So the ability to create and transfer assets on top of the Stellar protocol, Stellar needed to offer a way for people to trade between these assets freely. And so there’s actually a distributed exchange built into the protocol itself. When you have trustlines set up and you have assets on a particular issuer, you can actually put orders on the distributed order book and then trade just like you would on a regular exchange. This is baked in at the actual protocol level, but there are some interfaces and websites that go into this that make it look more like a regular exchange.
The most popular one is called stellarterm.com. I’ll link to it below. And you can actually go there and have a look at the order books that are trading right now. Due to the nature of easily being able to issue assets and then allow users to transfer them and trade them on a distributed exchange, a lot of these ICO companies are investigating whether they should issue their tokens on Stellar instead of something like Ethereum which has high transaction cost. When you want to transfer an ERC20 token to somebody right now, it can cost a lot. It can cost upwards of $2. On Stellar, you’d be paying a fraction of a penny for that transaction.
Users also get excited about this as well, ’cause they don’t have to worry for the asset to then get listed on some secondary market or big exchange. It’s instantly tradable on the distributed exchange which Stellar offers out of the box. If you wanna play around with this, you can simply go over to the stellarterm.com website, and once you’ve signed up for, well, it’s a pretty simple process. You can go to the “Accept Assets” tab. Under there, you can see all the assets which you can start accepting, and you just click a button and it creates a trustline between them.
Hot tip when you’re doing this, this has confused me before as well, you have to mintain a minimum balance of XLM of lumens in the account before you can setup these trustlines. So you wanna have a few lumens in the account before you go ahead and do that. Support for Stellar seems to be growing with the Ledger Nano S, the hardware wallet that everybody loves, adding support for Stellar recently. And you can actually set it up to support tokens and assets listed on Stellar as well.
If you wanna check out an asset that was recently issued on Stellar, you should check out Mobius. I did an interview with them previously, and they recently did their whole ICO on Stellar. It’s a Stellar native asset rather than ERC20 token. I’ll link to all these stuff in the description below so you can go and check it out. So Stellar is a really novel approach to byzantine fault tolerant consensus. I think more people should look into the Whitepaper ’cause it’s actually really well written. That’s rather unique in the way it approaches the problem.
I also really appreciate the fact that Stellar Foundation is a non-profit organization, and they’re focusing on trying to bank the unbanked in economies where people don’t have access to the infrastructure we have in the U.S. It’s always nice when you see projects try to give back to society, rather than just creating something that the rich can use. I think, ultimately, for all the reasons I’ve listed, there’s gonna be a lot more ICOs and people who will try and “tokenize” things, putting those tokens in assets on the Stellar protocol rather than something like Ethereum, something to avoid the congestion and transaction fees that Ethereum has right now. As it gains adoption, it’s gonna be really interesting to monitor how the Stellar protocol scales, because I don’t thing we’ve really seen the protocol, the current set of validators really battle tested to the scale that Ethereum is running at right now.
I do just wanna reiterate that the Stellar consensus protocol isn’t a magical bulletproof solution to consensus. There are a lot of issues which I have tried to point out in this video. It does do rely on a bulk of the network being honest and not trying to submit malicious transactions for the quorum to be reached and consensus to write into history. But I do think it is a step above other protocols like Ripple and other people who have tried to implement practical byzantine fault tolerance.
We have a preselect set of validators that you have to adhere to. There’s some other technologies which I have been asked to cover and I will in the future. One of them that comes to mind is Hashgraph, but I’ve yet to see if they can implement an open membership system. All the implementations I’ve seen so far have been closed membership systems by private blockchains. And they haven’t had an open membership system when anybody can spin up a node and become a validator.
So that’s Stellar and an overview of its consensus protocol and how it handles byzantine fault tolerant consensus. I think it’s pretty novel approach. I’d love to hear your thoughts in the comments and if you have any questions about it, just drop them below. Thanks for watching this video. If you found it helpful, click that like button. It really helps out. And if you wanna get weekly updates, click the subscribe button. If you click the bell icon next to the subscribe button, we’ll go on better and actually notify you when I post a new video. As always, thanks for watching. Until next time. See you later.