4 Major Consensus Algorithms
All blockchains and decentralized networks need a way to reach consensus, where everyone agrees on which transactions happened in such a way that the network cannot be hacked.
Here are the 4 biggest consensus algorithms in the cryptocurrency space today.
Proof of Work
Proof of work is the most common consensus algorithm being used today. It is Bitcoin's solution, and still holds up well.
In proof of work, the block producers are called 'miners.' They race to find the correct answer to a specific mathematical equation using their computing power. So if someone has more computing power, they can find blocks quicker, and be rewarded more.
Advantages:
- Easy to set up in code.
- Proven to be secure.
- Most well known.
Disadvantages:
- Requires massive amounts of computing power, which uses up lots of electricity. Not exactly environmentally friendly!
- Can become centralized if ASICs, processors specifically designed for mining the cryptocurrency, are designed and built by a small group of companies.
- Blocks are somewhat randomly placed, that is, we can't be sure when the next block will be found.
Proof of Stake
Proof of stake is often touted as the solution to proof of work's problems. It is the second most common consensus algorithm on the market, soon to be used in Ethereum.
People who produce blocks are called 'stakers' in proof of stake. Proof of stake works by, instead of requiring more computing power to find blocks, requires more coins. Basically, the more coins you have, the more common it is for you to find blocks.
Advantages:
- Can be more decentralized than proof of work, because large companies cannot have a monopoly on ASIC production.
- Environment-friendly, because very little electricity is used.
- Provides an incentive for people to buy the cryptocurrency, because they can earn a return on their investment by 'staking.'
Disadvantages:
- Difficult to program
- Can become more and more centralized, as people who have the most coins get more from proof of stake, exponentially growing their worth.
- The majority of people, who don't have many coins, don't stake.
Delegated Proof of Stake
Delegated proof of stake is very similar to proof of stake, and is used in Steem and EOS.
Delegated proof of stake is one very important addition to proof of stake, the ability for people who don't stake their coins to have a say in who gets to confirm the most blocks and get the most rewards.
Say I have 20 Steem Power. That wouldn't be enough for it to be worth it for me to stake my coins using traditional proof of stake, but with delegated proof of stake, I can 'vote' on who gets to confirm blocks and maintain the network.
Advantages:
- Fairly easy to program
- More decentralized than proof of stake because everyone has a say in who gets to stake, even if they themselves aren't staking.
- Allows for certain things to be adjusted dynamically by the witnesses, such as inflation rate, etc.
Disadvantages:
- Somewhat more centralized, because there are a small number of witness nodes.
DAG
A DAG is fundamentally different from a blockchain, because it doesn't have blocks, only transactions.
There is no proof of stake, and only a tiny bit of proof of work. Everything kind of just works on its own. And plus, there are no miners, so this massively eliminates centralization.
Advantages:
- Instant transactions
- Network gets faster as more transactions happen
- Very decentralized
Disadvantages:
- Very difficult to program
- No sense of time, difficult to tell which transactions came first.
- Smart contracts are impossible
Coins mentioned in post:
Very informative, thank you! This actually answered a lot of my recent questions surrounding the Delegated Proof of Stake system and the blockchain in general. Out of curiosity, why is it that Proof of Stake is listed as difficult to code and Delegated Proof of Stake is listed as easier? What about the modification to the system simplifies it?
In delegated proof of stake, witnesses create blocks in a specific order that is predetermined, while in proof of stake they are randomly chosen. The way to randomly choose a staker to create the block is very difficult to code.
Interesting. Thanks again!
Thanks for the post @shredz7
I've been wanting to read up on the difference but delayed it due to not being able to find it all in one place.
.