Thank you Prof. @alphafx, for your lecture this week. There are always a lot to learn in blockchain technology and I’m happy to learn about consensus algorithm today.
To submit my homework, I will be writing on Stella consensus algorithm. I hope my piece meet the expectations. Join me.
Introduction to Stella Consensus Protocol
Through the use of a Whitepaper, which can be found HERE, David Mazières was the first to give a description of the Stella Consensus algorithm in 2015. The protocol could be defined as a federated Byzantine agreement system which allows leaderless computing networks that are decentralized to carry out consensus that are decision based.
A quick look at consensus protocols, it has the reputation of being difficult to understand over the years. The stella consensus protocol (SCP) has this same issue, though its federated voting system makes it more friendly and less cumbersome to understand when compared to others.
The agreement system within the protocol allows for a frictionless decision making between the several nodes in the network. Although the agreement system is a distributed computing network, it is designed to be fault-tolerant in order to ensure a smoot running of the protocol.
Stella Consensus Algorithm (SCP) | What it is
Safety and liveness are the two most important properties of a consensus algorithm. The protocol is said to be safe if it produces same results to different users. That is to say that if a protocol produces different results to different people, then it is not safe.
On the order hand, liveness means the ability of the protocol to produce result without failure to do so.
The federated voting procedure used by the SCP is said to be safe because if one node produces a value, V, another node will not produce something different.
The SCP is designed to have both safety and liveness. That is to say that just as the protocol produces same results from all the nodes, the nodes must be producing. Thus, liveness is the ability of a consensus protocol to produce result.
The SCP might seek consensus on Stella Ledger, lunch orders, among others, although the federated voting system does not vote on these values. Rather, the protocol votes on statements about these values.
Steps on Federated Voting
This is where the voting starts. Each nodes are running simultaneously until a node chooses a value, V to be voted on. The initial process of choosing is termed nomination. A statement I nominate V is made. The aim is to confirm the nomination through federated voting and this is done by all nodes in the blockchain.
If it happens that not enough nodes voted on the statement, the nomination will not see the light of the day. In a situation that different statements are being made, nodes can vote for different values and the one with the highest number of votes will reach the accepted threshold.
A vote from a node to nominate a particular value is a promise never to vote against it. Different nodes can vote for different nominations, but the node whose nomination gets to the acceptance level is called the Candidate.
A summary of this can be seen below:
A ballot is a pair, comprising of a value and a counter statement. The counter is defined as an integer, example from 1, while a value is a candidate that comes from the nomination phase.
The role of the ballot is to ensure that repeated nominations get to the different nodes before the acceptance threshold is reached. The counters present in ballots track the attempts made, thus ensuring that counters with higher attempts get precedence over others.
The Stella Consensus protocol is one of the most interesting protocol and makes the blockchain really atrractive to developers. The federated voting system is something to consider when working on similar projects on other blockchains. This is the true demonstration of decentralization.
Thank you for reading.