Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

blockchain

What is a consensus algorithm?

Chizurum Ibeawuchi

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Answers Code

Consensus algorithm

Generally, there is no central authority or decision maker in network systems with multiple distributed nodes in a decentralized fashion. Therefore, decentralized network systems require a means to make decisions and achieve overall system reliability. As a result, a mechanism has been designed to coordinate the system's processes to agree on data value and how that will be used in the system. This mechanism is referred to as a consensus algorithm.

Recently, the term consensus algorithm has become one of the buzzwords used most commonly in blockchain. Blockchain as a decentralized technology seeks to find a means to make decisions without tampering with the system's security. Therefore, this is where the consensus algorithm comes into play. The consensus algorithm was designed as a model to reach a final agreement among the peers in a particular blockchain network.

How a consensus algorithm works

A consensus algorithm is a mechanism or protocol employed in a distributed decentralized network for reaching an agreement on activities or transactions being carried out in the network. It ensures these network activities are done in a secure and reliable manner, therefore establishing trust among peers in the network. The consensus algorithm in blockchain networks validates and verifies transactions that are stored in blocks. Before a block of transactions is added to the blockchain, it must be validated and verified to have happened and to be correct. This is done to ensure that the network remains secure, reliable, and immutable.

Consensus Algorithm

The consensus algorithm is designed to determine which nodes to trust in order to validate, verify, and enable transactions in the network.

The need for a consensus algorithm

The consensus algorithm is a core part of the blockchain network because it achieves agreement, trust, and security across a decentralized network. Consensus algorithms are also designed to prevent the 51% attack on a network. This means that a particular validator cannot have control of the network.

Here are a few reasons why a consensus algorithm is needed:

  1. Unified agreement: A consensus algorithm makes it easy and secure to reach an agreement on the activities and state of the network.
  2. Prevent double-spending: Double spending means spending a digital currency twice. A consensus algorithm is designed to ensure that only transactions that are verified and valid are added to the blockchain.
  3. Fair and equitable: Consensus algorithms align with the open-source feature of blockchain by allowing anyone to join and participate in the network.
  4. Reliable: Another major need for the consensus algorithm is to ensure the reliability of the network. It also ensures the network is fault-tolerant and resistant to threat attacks.

Types of consensus algorithms

The consensus algorithm can be designed with different functionalities while maintaining the basic objective: to reach an agreement and ensure the reliability of the network. The following is a list of the different types of consensus algorithms:

  • Proof of Work
  • Proof of Stake
  • Proof of Burn
  • Practical Byzantine Fault Tolerance (PBFT)
  • Proof of Elapsed Time
  • Proof of Capacity
  • Proof of Authority (PoA)
  • Delegated Proof of Stake (DPoS)
  • Proof of Activity
  • Proof of Weight

The two most commonly used consensus algorithms are the Proof of Work and the Proof of Stake. Let's look into these two major types in detail:

  1. Proof of Work (PoW): The validators in this type of consensus algorithm are called miners. For a new block of transactions to be created and added to the blockchain, the miners are required to solve a complex mathematical puzzle that involves a lot of computational power. The first miner to solve the puzzle gets to create the next block and add it to the blockchain, and this process is known as mining. In addition, a certain amount of the network’s native coin is given to the first miner as a block reward.
Proof of Work

In a nutshell, the mathematical puzzle acts as the consensus metric in ensuring the network is secure, reliable, and trusted. Examples of blockchain networks that use this consensus algorithm include Bitcoin, Ethereum, and more.

  1. Proof of Stake (PoS): This consensus algorithm was designed as an alternative to Proof of Work because of the large computational power and hardware requirements of Proof of Work.
Proof of Stake

Here, the validators participate in the validation and verification of transactions by locking up some of their coins in a wallet as their stake. The validator with the highest stake is selected to create a new block and add it to the blockchain. This validator receives transaction fees as a reward. Examples of blockchain networks that use Proof of Stake include Ethereum 2.0, Cardano, Polygon, and others.

Conclusion

As time passes by, more consensus algorithms are being designed to ensure the maximum use of resources in reaching an agreement while securing the network too. However, a combination of any two consensus algorithms can still be used in a particular network to achieve their desired result.

RELATED TAGS

blockchain

Grokking Modern System Design Interview for Engineers & Managers

Ace your System Design Interview and take your career to the next level. Learn to handle the design of applications like Netflix, Quora, Facebook, Uber, and many more in a 45-min interview. Learn the RESHADED framework for architecting web-scale applications by determining requirements, constraints, and assumptions before diving into a step-by-step design process.

Answers Code
Keep Exploring