This is the second article from Blockchain 101 series, which talks about consensus algorithms used by various blockchain implementations. consensus algorithms are responsible for collective decision making for single data value between all the participating peers (nodes).
What is the consensus in blockchain?
Consensus algorithm in distributed computing is a process used to achieve agreement between the peers on a single data value. As for the blockchain, implementations let’s take Bitcoin and Ethereum as examples where both use Proof-of-Work algorithm to ensure security in the trustless network. The basic principle of Proof-of-Work consensus mechanism is to validate that the required work effort is represented in the block submitted by a peer. In simple terms, peers use their computing power to solve transaction related puzzle and submit the result for validation to the network.
What are the consensus algorithms used in blockchain technologies?
One of the most popular (if not the most) among the blockchain consensus algorithms, currently used by Bitcoin and Ethereum networks. The proof-of-work product is a chunk of data produced by solving complex, therefore time and resource expensive functions. On the other hand, it is easily verifiable by all of the network peers. The first worker (peer) who is able to find a solution to the puzzle receives reward and writes the block to the blockchain.
This consensus was created to address high computing power requirements, 51% attack, and other related issues in Proof-of-Work. Proof-of-Stake participants in order to be able to validate the transactions and write new block to the blockchain are required to set aside some portion of their funds and create so-called stake. That’s the way members compete for their entitlement. The higher the stake the more chances are that the member will be entitled by the consensus. However, there are also variations in the validator selection. Some systems are using randomized block selection formula to select the next winner, others follow the coin-age selection where coins must reach maturity before can start competing for the next block or delegated proof-of-stake where the system uses the only limited number of nodes to propose and validate block.
In blockchain systems using PoA consensus, transactions and blocks are validated by preapproved accounts called validators. PoA only allows non-consecutive block approval from any validator, meaning that the risk of serious damage is centralized to the authority node. Proof-of-Authority is a consensus suited for both public and private networks.
Proof-of-Elapsed Time-based network participating nodes are assigned randomly selected wait time and enters “sleep” mode. The first node that wakes up is allowed to write new block to the blockchain and transmit the update to all connected peers. Right after writing the block it randomly selects the time and goes to sleep mode again.
Proof-of-Space is also known as Proof-of-Capacity (PoC) and a somewhat similar concept to Proof-of-Work (PoW) except that Proof-of-Space uses storage instead of computing power. A proof-of-space is a piece of data that a prover sends to a verifier to prove that the prover has reserved a certain amount of space. For practicality, the verification process needs to be efficient, namely, consumes a small amount of space and time. For soundness, it should be hard for the prover to pass the verification if it does not actually reserve the claimed amount of space.
The method is built around “burning” coins. The bottom line is that in order for a new block to be extracted, users need to send coins to a certain address (“burn” address) without the possibility of being subsequently forwarded elsewhere. The greater the number of coins burnt by the user, the higher the chance the user has of mining bonuses for the so-burnt coins. This mechanism often pays off at stages where a switch between currencies is required, i.e., the user has got something to burn.
Serialization of Proof-of-work Events: Confirming Transactions via Recursive Elections (SPECTRE)
In SPECTRE, the blocks are mined pointing to multiple parents, not just one, so the network could potentially handle multiple blocks per second. Mining a block pointing to some parent blocks supports those blocks validity. Compared to PoW’s “longest chain wins”, SPECTRE uses something like “blocks with the most children wins.”