Modern technology has allowed us to easily communicate with each other despite long distances. Voice and video calls, e-mails, and instant messages travel directly from one device to another. Most of the systems that provide such solutions rely on centralized servers and this opens up the possibility of hacking and/or data loss.
Moreover, most solutions today do not effectively guarantee that the information stored is not ever going to be modified or deleted. Some applications require a higher level of reliability and this is the main proposal of the Blockchain. To provide a structure capable of being reliable, immutable and most importantly, decentralized, each node that makes up the Blockchain may contain a copy of all the information.
The Blockchain, as its name suggests, is a structure composed of a series of blocks carrying a certain number of transactions from the past. Each block contains its own address, or hash, and the address of its predecessor in the chain. This hash is created based on the contents of the block. Therefore, if any of the information is ever modified in any block, the whole chain, from that block up to the most recent one, would change.
To guarantee the immutability of the information, the Blockchain implements a consensus algorithm. This algorithm requires that every node in the chain agree that a certain block is valid, otherwise, it is not included in the chain.
The most common consensus algorithm is the Proof-of-Work (PoW), where all nodes in the chain compete against each other to be the first to “mine” the block. In this case, mining means to solve a computational puzzle that would lead to a hashed address similar to the one of the target block. The first node to mine the block receives a financial reward.
Due to the redundant computational effort generated by PoW, leading to high amounts of unnecessary energy consumption, other consensus algorithms have been introduced, such as Proof-of-Stake (PoS). PoS allows the nodes in the chain to set a bet at the most recent block and the node that presents the highest bet is the one allowed to mine the block and gain its reward.
Among Blockchain’s possible applications are money transfers, registry offices, medical records, and product history tracking. This structure should always be considered if the main requirements are security and data immutability.
The first and most famous application of Blockchain is the Bitcoin. Created by Satoshi Nakamoto, in 2009, the Bitcoin introduced the first ever successful cryptocurrency. Other attempts to create such currencies have failed due to not being able to avoid double spending. Bitcoin avoids this problem by simply using a natural characteristic of the Blockchain, in which the information is permanently stored in a serial manner.
Another interesting application of Blockchain is the Ethereum network. It presents the concept of a decentralized computer where anyone can create and upload “smart contracts”. These contracts can be defined as a piece of software that automates the negotiation, providing reliability in online transactions.
At Poatek, we have several research groups for each emerging technology and Blockchain is the subject of one of those groups. Weekly meetings are held for discussing the latest trends in Blockchain, possible applications and projects planning. The Ethereum network has served us as a good development platform where we can implement and test our projects. This has allowed us to have a closer touch with the technology and improve our knowledge and development skills.
The Blockchain is a disruptive technology that may be on its early stages, but has already taken the attention of governments, industries and important parties. A lot of research is being made aiming to improve and extract the most effective applications. Blockchain is more than simply a decentralized database, it is a tool to create a more equitable, transparent and truthful society.
Marcelo is a Software Engineer at Poatek. He has a Master Degree in Computer Science in the area of Embedded and Digital Systems, focusing in Monitoring and Control of SDRAM Memory Accesses. Despite working mainly in C++ development, Marcelo holds a strong passion about other areas such as Blockchain and IoT. Check Marcelo’s Github at www.github.com/marcelomlinck.