Blockchain is getting more and more popular. There are some announcements from time to time that another company is considering, working on or using blockchain based solution. Actually, blockchain has become a buzzword associated with cryptocurrencies, but there is a lot more inside. Let’s take a deeper look on it.
What are you, blockchain?
Blockchain is a database, which stores data in the chain of blocks. This means that pieces of information are collected and grouped in digital blocks. When new block is generated it gets connected to the existing chain. From this moment this block and all grouped information within it are part of the database.
Blockchain is decentralized. It means that there are multiple nodes within peer-to-peer network storing copy of the chain (copy of the database) and taking part in managing its content. There is no central authority upon the data. Blockchain protocol enables nodes to participate in decision making process (eg. accepting new blocks) and to preserve data consistency. The most important aspect is that every decision is made and concerned to be valid when a consensus between nodes is reached.
Blockchain is immutable. Due to chain nature of database there is only a possibility to add new blocks, but no way to rollback entered changes. Every new block is connected to the last existing one in the chain, so the new transactions depends on the old ones. Changing one piece of data in the middle of block results in need to recount every next block. This is almost impossible. If it was it would lead to many errors and frauds. Once transaction is done, it is done and cannot be removed or modified.
Smart contracts... are you really smart?
Blockchain is mostly associated with cryptocurrency, but it is not only limited to money transfers. Another feature, which makes this kind of database more interesting are smart contracts.
Smart contracts allow users to create their own rules, automate operations or even build system within blockchain. It is like programming database. What is important, once contract is deployed it may be used by users and cannot be changed (this is a result of blockchain immutability). If you have a bug in your code it will run with the bug forever. There is no way to modify, delete or redeploy it.
Mining process is about creating new blocks, not the currency itself. Creating new block requires a lot of computation power to build a markle tree - a tree of hashes. This is the most power consuming process in the whole idea of blockchain.
For cryptocurrency public blockchains such as Bitcoin, many people misunderstand this process by saying “Bitcoin mining” as if it was creating new Bitcoins. In fact, every winning miner (miner who is the fastest to commit new block) is rewarder by the system and people that want to make transactions. This is a regular process of paying someone for the work.
The reward combines of transactions fees (paid by users) and an extra prize from the system. This extra prize was established to develop blockchain and encourage miners to contribute to the blockchain infrastructure. Some of public blockchains such as Bitcoin, will not grant prize anymore when the limit of issued currency is reached (as it is set up that there will be fixed number of currency).
What are the advantages?
Immutability. Imagine, there is a document which says it was generated on 12.12.2012 and you are reading it three years later. How can you check if this is true and it has not been changed since then? Once the document is generated, its checksum may be saved in blockchain. After some time you may count checksum and compare it with the one stored in database. If those two are the same you are sure that no changes were done. There’s no such guarantee in any other database, because there is a possibility to modify checksum and leave generation date unchanged. Blockchain stores every operation from the beginning of its existence. If something is recorded there you are sure it happened and the entry has not been changed.
Code is law. There are no other rules in blockchain than code. No influence from external sources. No external authority. Just code.
Security. Firstly, Blockchain database uses strong cryptography. Secondly, it would be hard to change anything in the chain due to its distribution. Potential hacker would need enormous computing power or at least 51% of majority in the network to cheat.
Everyone has influence. Everyone may be part of the network. Not only as a database user, but also as a database holder or operator. Everyone may create and commit new blocks. Everyone may store chain. Everyone may take part in accepting new blocks.
Decentralization. There is no way to change anything using just one computer. Due to distribution of responsibilities there is no need to have one trusted authority, because a quorum of untrusted nodes creates it. Every operation has to be approved by several nodes. This ensure fairness and stability.
No single point of failure. Due to distributed nature of blockchain and number of nodes taking part in it there is no threat that network will go down when one node is not reachable.
Transparency. Every wallet (and its balance), every operation is publicly visible, but it is not visible who owns the wallet. Blockchain network operates on addresses and does not know your identity.
Automation. Every process may be automated by smart contracts. Paying your liabilities, confirming deals, transferring data. All those and many more with security and reliability guaranteed by blockchain.
What are the disadvantages?
Power consumption. This is major Blockchain’s issue. Public blockchain platforms consume enormous amount of energy. According to digiconomist.net statistics, Bitcoin (the biggest public blockchain) uses as much electricity as Colombia. Its estimated annual power consumption is 59,87 TWh, which causes 29,334 kt annual CO2 emission.
Second biggest public platform, Ethereum, may be compared to Cuba regarding electricity usage with estimated annual power consumption 17,06 TWh.
Huge amount of energy is wasted due to miners competition. Only one miner wins the race, so other’s work is kind of waste of time and energy. This is part of blockchain concept.
Those numbers are way too big and this is a huge problem globally. Fortunately, there is a light in a tunnel, some announcements say that engineers are working on it and the aim is to reduce power consumption.
Code is law. When you deploy contract with bugs it’s deployed. There is no way to remove it. It is mainly difficult for developers as it requires a lot of accuracy to provide bug free and robust code.
Decentralization. Firstly, Blockchain requires more complex infrastructure. There are several roles to be played by all network participants. More hardware, more administrators, more costs. Secondly, there is no central authority that could resolve conflicts. Good example of such conflict is a hard fork performed on Ethereum network in 2016. Not all users accepted it and as a result there are two valid and working Ethereum networks ETH and ETC now.
Can I use blockchain for my company purposes?
Yes, you can. Blockchain has gained its popularity thanks to public cryptocurrency chains, but there is a possibility to run your own private chain. This database may have restricted access only for you and your business partners or even just for your company.
Private blockchains consume less energy and the infrastructure may not be as huge as it is in public platforms. What is more, this kind of database may be part of other applications eg. those written in Java, Scala, PHP, Python.
Considering all pros and cons. Blockchain manifesto defines it as very secure, fair and reliable and in fact it is. On the other hand, currently, power consumption is an issue that will increase your bills and will not make your infrastructure eco-friendly.