Consensus protocols in the crypto world function as guidelines that let the nodes in a network, be it a blockchain, DAG or BlockDag, communicate with each other and reach some agreement. My goal in this article is to introduce every protocol that has been implemented in cryptocurrency world in a simple manner while making observations about their usage and flaws, if any.

PoW: Not to be confused with Prisoner of War, Proof of Work which was used by Satoshi Nakamoto first if you ignore Finney. Many coins still use it despite its problems. Very simply, the miners of a network need incentives to confirm transactions. So they compete with each other to solve a block. Whoever that solves the problem first announces it to the network and gets the reward. The problem is a mathematical problem that uses a lot of computational power unless you’re using quantum computer. PoW depends on the amount of work a miner usually does. If you wanna know more about what exactly the miners do, I’d recommend this video: https://www.youtube.com/watch?v=_160oMzblY8

PoW protocol uses a lot of energy because its difficulty goes up when more miners join and you need more CPU power and electricity to solve the problems and make money. Unless of course you live with your mom and she pays the bills. It’s also very slow which makes the whole system unscalable.

PoS: First used by Peercoin in 2012, Proof of Stake uses a different method to reach the consensus. Miners (called forgers or validators here) are chosen to validate a transaction depending on their wealth (stake) and/or age of their wealth. With no block rewards, they’re paid in transaction fees. It’s assumed that the nodes with high stakes and age can build a trusted and loyal network that can kick out any bad players. Since there is no mining, PoS is energy efficient and cheap and faster than PoW. Dishonest nodes are punished by losing their stakes which are submitted like a security deposit when validating a transaction. Even though PoS is an improvement to PoW, there are problems associated with it such as oligarchic control of the network, which means, in case you flunked your political science class, power in the hands of the few as they have more money (or coins in this case) and can decide and vote whatever they want. They can also and revert and restart the chain and call it Jesuscoin. Another is “nothing at stake” problem. When two miners validate a transaction at the same time, others can vote on both branches because there are no cost as opposed to PoW, where the miner must choose the longer branch (the one with more transactions) because splitting the computational power is not lucrative. There are some solutions suggested such as penalizing the double voters or picking the validator with the highest coin-age.

DPoS: Delegated Proof of Stake is a consensus protocol devised by some dude named Dan Larimer. In short, users vote for witnesses (or delegates) who have various duties including timestamping the transactions and validating signatures. The more stakes you have, the stronger your votes are. Only the top twenty witnesses have the regular salary but as the community grows larger, the competition for becoming a witness gets fiercer. The voting is always ongoing and bad actors are kicked out through the community vote. So basically, DPoS is similar to PoS except there are delegates that take over the responsibilities of maintaining the network. The users can only vote who are chosen as their delegates. Similar to PoS, power stays among the selected few and the network becomes centralized. Another problem, similar to the representative democracy, could be voter apathy which is when the users don’t participate in the election of the delegates.

DBFT: Delegated Byzantine Fault Tolerance is a name that Neo has chosen for its consensus protocol. It’s from the Byzantine Generals’ problem that came up during the fictional siege of the city of Rome. Assume a bunch of generals have surrounded the city. They can only win if they attack or retreat together, much like the nodes of a network. However, they are far from each other and can only use messengers to send and receive votes. Additionally, some generals can be bribed by the Romans who are famous for their anchovy pizza. The way to solve this problem is called Byzantine Fault Tolerance; It’s a characteristic of a system that can tolerate the class of failures (called Byzantine Faults) that make no assumptions about how a node can behave. There are different types BFTs. One is DBFT that is similar to, you guessed it, DPoS. In Neo, there are two types of nodes: ordinary nodes that can only exchange and transfer and bookkeeping nodes that validate transactions. These nodes represent the ordinary users by understanding their needs. They also have to have certain qualifications such as special equipment and enough Gas to choke everybody in the room. To pass a law, a speaker is randomly chosen from the bookkeepers. If 66% (2/3) of the delegates agree, the law will pass. Otherwise, another speaker is chosen. Even though BFT makes every transaction final and therefore, fast, if the consensus drops below 2/3, everything comes to a halt. The network requires honest nodes that can hold everything together and shun any bad actors. This can result in a permissioned blockchain that is far from what Satoshi was thinking when he first mentioned the concept of blockchain to me (okay, maybe not me but somebody close to him). Aside from this, you can add voter apathy and whales controlling the whole network (1000 Gas is a lot of money right now) to DBFT’s problems.

PBFT: Not to be mistaken for Pacific Blue Fin Tuna, Practical Byzantine Fault Tolerance is a protocol used by Hyperledger Fabric as another suggested solution for the so-called generals surrounding Rome. Every transaction is signed by every node to verify its format. Once enough identical responses are reached, the transaction is verified. This process requires that every node know the others which makes it unsuitable for blockchains. Even though the anonymity is out of window, PBFT uses less energy and is faster than PoW.

FBA: Not to be confused with Fulfillment by Ama- okay, I’ll stop. Federated Byzantine Agreement is a protocol that Stellar Consensus Protocol (SCP) is based on. It tries to solve the Generals’ problem by creating small groups of trusted nodes that select other trusted nodes and try to reach consensus between the members of their group. In other words, every general picks their own team and members only go to see him when there are disagreements. This way you can build a form of validation that leaves out bad dishonest actors and produce faster transactions. You need neither the whole history of the blockchain nor the equipment to mine, nor the stake to validate. Nevertheless, the generals (or validators) are chosen by some organization (like in Ripple) or you can pick whoever you like. Either case, the anonymity of the validators is jeopardized.

PoWeight: Proof of Weight is an umbrella term for different consensus algorithms that base your likelihood of discovering the next block on some weighted value such as reputation, data storage, etc. Proof of Reputation protocol, for example, ensures that the network is governed by nodes that have acquired the best reputation by other nodes, either explicitly or implicitly, through the idea of liquid democracy. Liquid democracy, to put it simply, is a democracy wherein you can choose to vote via direct democracy or representative democracy.

NEM uses a protocol similar to PoR, called Proof of Importance. The importance of any node is determined by how much coin they have (at least 10,000 XEM) as well as how much they transact with others. Vesting XEMs also adds importance because it protects the network against Sybil attacks. A Sybil attack is when a network is attacked by forged identities, something similar to sockpuppets.

PoA: In a Proof of Authority based network, transactions are validated by verified accounts. Think of the blockchain as a subreddit where only admins can determine which transactions can be verified and which ones cannot. It’s fast and scalable but highly centralized. Plus, some people have issues with authorities and by some people, I meant me.

PoSign: Very little is known about Proof of Signature protocol as it is being considered for patent registration. Devised by Zoltan Szabo, the creator of Xtrabytes, the algorithm requires every node to sign the transactions in order for them to be verified. If a bad actor sends out a fake or bad block hash, it stands out among others and is given a warning to repair or get blacklisted. Originally, there are 512 nodes but it can change after the patent. Setting up a node is not cheap so plotting a 51% attack is financially difficult. Furthermore, node owners may not be willing to sell their nodes if they start making money with the development of Xtrabytes modules, vault, exchange, etc. Also in case you don’t know what 51% attack is: it refers to an attack on a blockchain when more than half of the miners take control of the blockchain and start changing, stopping, or reversing transactions. This is one of the known flaws that Bitcoin has to deal with.

Hashgraph: Hashgraph wants to be an alternative to blockchain and uses Asynchronous Byzantine Fault Tolerance, boasting 250k plus transactions per second. It utilizes two techniques: gossip protocol and virtual voting. Gossip, in this context, means relaying information to randomly chosen neighbor nodes. These neighbors will gather more info from other nodes and then send it to other randomly chosen neighbors. This process continues until all of the nodes are aware of the information. As gossips usually do, Gossip protocol can result in fast spread of information. Also nodes can make sure every transaction is valid by virtual voting, which determines if it has two third of the nodes as witnesses. Hashgraph, nevertheless, has a long way to take over blockchains. The fast transaction can only happen in a permissioned network and the Gossip protocol can’t guarantee that some of those randomly selected neighbors won’t be malicious.

DAG: Directed Acyclic Graph is a graph that has no directed cycles. There you have it. Simple as that. But if you want more, think of DAG as a web of nodes connected to each other by edges. An edge here is not some guitarist but a connection between two nodes in only one direction. It’s not possible to go in opposite direction. Hence, the directed acyclic part. You cannot encounter the same node when moving from one node to the other. The throughput in DAGs are higher than blockchains because they parallelize transactions. Iota uses the Tangle (a form of DAG) where every transaction has to verify two other transactions. This way, there will be no need for miners and transaction fees. The network remain scalable and lightweight. So why hasn’t the Tangle caught on yet, you might ask? Well, there are still some kinks to be worked out. Because the consensus is based on transactions, whoever that generates 1/3 of the transactions can control the network (34% attack). So the Tangle needs more transactions to avoid this type of attack. That’s why every transaction is double checked by the Coordinator (a centralized node that oversees the Tangle) until the Tangle matures. If Iota and Tangle reach their full potential, they can make whatever protocol was mentioned earlier extinct. Until then, I hold off on entangling anything yet.

Block Lattice: Developed by Nano, formerly known as Raiblocks, the Block lattice is more of a structure than a consensus protocol but I bring it up here because of its novelty and no, I don’t hold any Nanos. Block lattice is a type of DAG where each user has her own chain, consisted of two channels of send and receive. And instead of recording each transaction, the lattice remembers only the balance to save up on storage. To avoid any double spending, the nodes have to take a vote on which transaction to accept. Nano uses DPoS as a consensus protocol as there are delegates whose vote is dependent on how much Nano they’re linked to. But since there are no transaction fees in Nanoland, no one knows exactly how the delegates are incentivized. To many though, the main thing is Nano wants to do one thing and be good at it and that’s feeless and instantaneous transactions.

SPECTRE: This is NOT the sequel to the much anticipated Skyfall, in James Bond’s series, but an acronym for Serialization of Proof-of-Work Events: Confirming Transactions via Recursive Elections. Much like its name, this protocol hasn’t been battle tested but has an interesting concept: it is a mix of PoW and DAG wherein each block can point to multiple parents and thus, gain its validity. This way, multiple blocks are mined at the same time, solving Bitcoin’s scalability problem. In SPECTRE concept, blocks are created at the rate of about 10 per second. On deciding over conflicting transactions, pairwise voting is implemented, in which each node votes according to what block it is referenced in the DAG.

PHANTOM: PHANTOM is an extension of SPECTRE as it shows the researchers’ infatuation with the spirit world. However, it differentiates itself by creating a linear block structure through a greedy algorithm that distinguishes between blocks mined by honest nodes and those mined by non-cooperating nodes. The main thing is PHANTOM can support smart contracts which require linear ordering. This, however, comes at the cost of losing some confirmation speed which was achieved previously by SPECTRE. Both protocols are still being tested along some off-chain solutions like Lightning Network to improve the scalability of Bitcoin and other PoW coins.

I tried to give a brief but clear description of every consensus protocol that is being used or even worked on. I don’t have a PhD in computer science but am a relatively good researcher. If I have missed something or made a mistake, please feel free to mention it. I decided to write this because I keep seeing people on various subs asking about differences between one protocol and another. Hopefully this helps investors to pick their projects more carefully as they gain more knowledge.