The Internet consists of three parts: creators, consumers, and servers where creators who build websites, apps, content, services, etc. then store it on the servers and later, consumers consume according to their need. But what if servers go down or failed?
Just try to imagine you are at the end of the world who enjoys his favourite social media like Facebook, Twitter, etc. but the servers situated at another end of the world suddenly failed then what will happen?
Then doubtlessly, you can say you will face service disruption, and some countries like China, the US, UK, Japan will face vast losses of millions of dollars in their e-commerce sell per hour {Reference}. If you check out the history, then you will find there are already some examples of internet failure, like the Cloudflare outage on July 17, 2020, In June 2020 T-mobile had an outage that disrupted voice and data service across the United States, Microsoft had an outage with Azure active directory services in June 2021, and so on. All this possibly happened because of single-point failure, and in future, we may face more failures like this.
Suppose you compare the Internet with the Bitcoin blockchain. In that case, you will find that the Bitcoin blockchain has never faced any failure since ten years of its launch. It is possible because of the unique architecture of blockchain, decentralization, PoW consensus, etc. As Bitcoin blockchain is the first generation of Blockchain so it has some limitations and flaws; for example, low scalability, PoW consensus uses a massive amount of energy and computational power. Here, asynchronous binary byzantine agreement (ABBA) consensus can make a big difference because it is the most efficient consensus created by Achour Mostéfaoui.
It is a different type of consensus where this Asynchronous Binary Byzantine Agreement (ABBA) consensus aims to produce blocks at any condition without any error, where the protocol assumes asynchronous with virtualized subnodes connected by a reliable communications link. So the connection can be arbitrarily slow but will eventually deliver messages. If any network split happens in the network, then virtual nodes of the consensus protocol make sure to do successful transactions by making multiple attempts.
In asynchronous binary byzantine agreement consensus, the protocol assumes that less than 1/3 of nodes are Byzantine which means if 1/3 nodes are offline remaining 2/3 nodes can produce blocks.
Every consensus follows three steps first, block proposal creation, then block validation, and block elongation. The same in Asynchronous Binary Byzantine Agreement (ABBA) protocol follows some algorithms to carry out these steps.
Block proposal creation algorithm
The proposal creation algorithm automatically checks the queue and try to find if any pending blocks or pending transactions are there or not. If it found some pending blocks by comparing total blocksize with max block size, it takes blocks from the queue and creates block proposals. But if there are no pending blocks, it automatically arranges transactions in a block from oldest received to newest received, and in case if there are no transactions, it creates an empty block with no transactions.
Block proposal reliable communication algorithm
When a node creates a proposal, it communicates with other nodes using the data availability protocol, which make sure that if a block successfully created, the message transferred to the supermajority of nodes.
There are five steps the protocol follows:
An honest node will never vote on any proposal if there is no supermajority signature S. Data availability protocol ensures that if proposal P wins, consensus will be available to any honest nodes.
Consensus round
Asynchronous Byzantine Binary Agreements (ABBAs) in a consensus is very suitable for elastic blockchains and we call a blockchain an elastic blockchain because the node of an elastic blockchain virtually holds multiple subnodes inside it to increase scalability where we can delete or create a dedicated blockchain for a Dapp without sharing resources.
So each virtualized subnode A who has received supermajority signature S for their proposal P will vote for Asynchronous Byzantine Binary Agreements (ABBAs) in a consensus round R.
Each round R virtualized subnodes produce N instances of ABBA. All ABBA[i] agrees to a vote on block proposal from the virtualized subnode i, where all ABBA[i] completes with a consensus vote of yes or no.
Once all ABBA[i] complete counting of votes started and a proposal with only one yes vote, the corresponding block proposal P is assigned to the Elastic Sidechain. If there are many yes votes, then P is pseudorandomly selected from the yes-voted proposals applying pseudorandom number R (R is the sum of all ABBA common coins). The winning proposal index is the remainder of the division of R by N-win, where N-win is the total number of yes proposals.
Finalizing Winning Block Proposal
After completing the consensus round, we get winning block proposal P on any virtualized subnode A. now, virtual subnode A executes an algorithm to conclude the proposal and commit it to the chain.
But before finalizing a block node A makes sure that the proposal has signature shares from a supermajority of virtualized subnodes, including itself. After receiving the supermajority of signature shares, it will connect them into a threshold signature. A will then commit the P to the blockchain and the threshold signature S.
The conclusion part is my personal opinion where I feel that the Asynchronous Binary Byzantine Agreement (ABBA) protocol is a little complicated to understand. Still, once you know how it works, you will find that this is a very secure consensus protocol because a proposal has to pass through multiple voting rounds and when I got to know about this consensus I found it interesting and described it in layman’s language. SKALE blockchain is a single project in the crypto space that uses this protocol to finalize blocks in its elastic blockchain.