The Business Guide To Blockchain or Why creating your own consensus algorithm is a bad idea?
During 2017 crypto-craze, when we saw a global ICO “gold rush”, many entrepreneurial individuals almost simultaneously arrived to the genius idea to slap a token on top of an already existing business or app (p2p “something” or SAAS) and pump this crypto-chimera to overexcited investors under the sound name of “Blockchain”.
Among other negative consequences that practice led to an explosion of phony consensus algorithms. The whole generation of “Proof of Whatever” had inundated our space and continued to haunt it long after crypto-market reached its all-times highs.
2018 crash has taught the majority of private investors to be reasonably mistrustful to all ICOs, rendering it more difficult for fake “innovators” to create FOMO. However, there’s still an opportunity present on the market, where many participants are still “technologically innocent”. That sad story might well repeat itself in the future. Hence — this short article.
If you don’t want to read it to the end — one main idea which you need to get from this piece is the following: Do not try to implement your own consensus algorithm unless you’re well suited professionally for this hard labor and really, really need to do it.
First of all, many new-born “Satoshies” do not understand the important difference existing between two consensuses: one in Blockchain/DAG and one in distributed systems.
The later is attained in complex technological networks with many potential points of weakness and with one periodically rotated “leader”. That’s, usually, how a consensus about which variant of many similar but not identical data records must be saved by all nodes is achieved. Consequently, this consensus is primarily used in heavily centralized, permissioned, automated systems. It can also be utilized as a tool by a traditional bank for creating an “internal” crypto-currency. This consensus, therefore, is not for adepts of decentralization at all.
The former, however, is us, human beings reaching an economical agreement about a present system’s state based on our financial self-interests. That consensus is mostly used in highly decentralized, permissionless networks with potentially many malicious actors, which can attack and / or subvert it. Creating such consensus algorithm from scratch has became main business objective of many would-be blockchain entrepreneurs but it’s a rather foolish idea and here’s why.
Generally speaking, there are four main types of blockchain consensuses (or mechanisms): Proof-of-Work; Proof-of-Stake, PBFT and DAG (which is considered to be a special case of “paralleled transactions” blockchain). As a matter of fact, there are more than twenty consensus algorithms used in our space with various degree of reasonableness. However, IMHO, they present themselves more or less advanced variations of those four already mentioned.
It’s not the purpose of this article to guide you trough all intricacies of PoW, PoS, PBFT and DAG. Rather, here’s a “helicopter view” of each of them.
Proof-of-work: in PoW nodes have to do some work and spend computational resources (and electricity) in order to obtain monetary compensation (fixed or variable). A fastest node became a winner and receives a right to define system’s state. PoW has already proved itself to be highly reliable and secure. However, it’s very slow and progressively become more and more expensive, which lead to hash-power dominance of few mining companies / pools. However, if you primarily want your network to be economically attractive to all types of participants and ready to sacrifice scalability for that —PoW is, probably, the way for you to go.
Proof-of-Stake: PoS asks all participants / nodes to “stake” their crypto-assets to prevent them from attacking a network. This mechanism is much, much less proven than PoW and is used by (or planned to be used by) only a few popular blockchains. It might also lead to “whales’ ” oligopoly. However, it’s significantly faster than PoW and provides much better scalability. The variation of this consensus mechanism with only several “validators“ ( Delegated PoS or DPoS) might be useful in a highly decentralized organization, which wants to keep its large network under a relative control of an elite group of users.
Practical Byzantine Fault Tolerance (or PBFT): it can, in fact, be considered as a distributed systems consensus and requires a constant communication between all participating nodes, which renders PBFT unusable in big, geographically widely distributed networks, unless consensus can be reached on a relatively small set of sub-nodes. Because of that PBFT (and its variations) is very popular with centralized corporations, trying to jump into a fast moving blockchain band-wagon.
DAGs or Directed Acyclic Graphs: they are something like exotic, almost mythical animals in the blockchain zoo. Everybody have heard that they exist but nobody have really seen them in the wild. Most DAGs claim millions of TPS (transactions per second) but none of the existing ones have been able so far to demonstrate such high throughput on a sufficiently large number of “live”, independent nodes. However, many practical simulations and tests, under very realistic set of assumptions, have already been performed to confirm that DAGs might do their job pretty well despite all skepticism. DAG is so fast because it allows participating nodes to order transactions in a block almost simultaneously and then to choose which block to verify with the so-called “tip-selection algorithm”.
Still, one of the most important issues, which all those highly sophisticated, well thought-trough and tested algorithms consensus have in common, is that nobody can 100% guarantee that they are protected from all various forms of attacks, including transactions reversals. Even with PoW the risk of “51% attack” is relatively small for only few large networks. For the rest — we can be optimistic to only a certain extend.
Now, I hope, it must become obvious to a reader that if he / she wants to create his / her own Blockchain, he / she, probably, better not to do that but, instead, fork one of the existing (not advisable) or deploy a token on top of the already existing one. Otherwise, it most likely be just feeding users money to more or less lazy hackers. That said I, of course, highly encourage consensus algorithm innovations from people with guts and solid professional background in CS, cryptography and mathematics.
Some closing remarks. Many blockchain beginners often confuse a mining mechanism with a simple reward system. They tend to forget that blockchain mining’s main purpose is not to create coins but to lure nodes into adversarial and costly computational or staking processes, which, otherwise, most of them will avoid. Consequently, if you, Dear Reader, happen to be one of those freshly minted blockchain entrepreneurs contemplating the creation of your own crypto-currency, please, don’t try to be fancy. Just issue a token on top of one of the existing platforms and supplement it with the most effective and simple reward system you can think of.
Hope it helps.