Stellar has four key aspects when it comes to adding transactions to the ledger, or blockchain:
- Freedom of participation: anyone can join the consensus process and no one has all or a majority of the decision-making power
- Low latency: Fast and cheap transactions that are confirmed within a few seconds
- Freedom of trust: nodes (those participating in the consensus system) choose their own set of trusted nodes and can revoke trust from bad actors at any time
- Safety: even if nodes fail or bad actors join the network, consensus can still be reached and the network will come to the right conclusion
The above aspects of Stellar’s consensus system are a proposed solution to a consensus dilemma called the Byzantine Generals’ Problem (BGP). The problem describes a scenario where a large Byzantine army is attempting to conquer a resistant city and must collectively decide to attack or retreat. Because of its size, the army is led by many generals who must coordinate through messengers. The problem is rooted in communication failures and the trustworthiness of generals and messengers, some of whom may be traitors. Resolving the BGP dilemma requires Byzantine Fault Tolerance (BFT), which is when all trustworthy generals reach the same conclusion, despite a small number of traitors and failures. In other words, consensus in a distributed system (like a blockchain, or the Byzantine army analogy) can be met with BFT, a failsafe method that endures activity from bad actors.
Different from BFT, Stellar’s consensus mechanism is a type of Federated Byzantine Agreement (FBA) referred to as the Stellar Consensus Protocol (SCP). On the Stellar network, faults come in the form of faulty or malicious nodes. Stellar can provide safety (or a guarantee that nothing undesirable, such as a fork of the network, will ever happen) because participants in its system can continue to vote for their desired outcome until consensus is reached. If there is ever a discrepancy - if a quorum (the set of nodes sufficient to reach consensus) can’t agree on what should be put in the ledger - then the entire network will cease operations until consensus is reached.
This kind of outcome is rare because of the way that nodes are able to choose a set with other, trusted nodes to belong to. This subset of trusted nodes is called a quorum slice, a small piece of the overall quorum that must reach agreement in order to close the ledger (i.e. add a block of transactions to the global ledger). Individual trusted nodes will convince each other of agreement within a quorum slice. As long as quorum slices intersect with each other, the overall network can reach consensus very quickly.
In order for distributed systems like blockchains to be secure and to scale, safeguards (like the Stellar Consensus Protocol) must be in place to sustain potential failures and attacks by bad actors. Stellar’s own consensus protocol is a type of Federated Byzantine Agreement, which is what allows the network to avoid the BGP dilemma and operate according to its four properties described above.