Blockchain, the underlying technology of digital currencies like Bitcoin, has gained lots of attention of late and many consider it to be a technology that has the potential to disrupt our life in a variety of ways in the next few decades.
As mentioned in an earlier column, Blockchain is a distributed ledger, a decentralised transaction recording and verification system. In addition, it is public (means everyone can look into it) and once the data are confirmed/recorded by the network nodes (on the blockchain), it is nearly impossible to edit/remove it.
Since transaction-verification is an important task in the blockchain workflow, we will delve a little deeper into the process. As mentioned earlier, one of the tasks of a mining node is to verify the authenticity of a transaction. To receive a bitcoin, you need a Bitcoin address and to spend the bitcoin you have to use the private key linked to this public key.
Let us assume that person ‘A’ needs to send ‘B’ two bitcoins. For this, A has to instruct the Bitcoin network (through A’s e-wallet) to transfer the ownership of two bitcoins that are currently owned by him to B’s public address. In response to A’s instruction, his e-wallet locates the required unspent money available in A’s address and signs it with A’s private key (to prove that he is the owner of these bitcoins). This is one part of the transaction. Now, before broadcasting the transaction to the network, A locks this money with B’s public address. This is done using a ‘locking script’, which specifies the conditions to be met to spend this money. The condition here is that B should show her private key when she needs to redeem it.
So, when B chooses to spend this amount, her transaction will provide an unlocking script containing a signature from B’s private key. Bitcoin nodes validate a transaction by executing these scripts together. The point to be noted here is that the transaction validation process involves the execution of a program. So, in the blockchain, along with money, we store programs too. This opens up immense possibilities. This means we can program the blockchain to record everything of value to us –marriage certificate, ownership title and the like. Many developers attempt to use this scripting capability for creating different types of applications. One such application worth a mention is the smart contract.
A smart contract is a self-executing contract. Unlike a conventional contract, which is drafted through natural language, the terms of a smart contract are expressed through a computer code. Once the conditions of the contract are satisfied, the code gets executed by a computer. Let us illustrate this with an ATM money transfer. When you put the card into the ATM machine and punch in the amount and other details (your inputs), the program in the ATM automatically executes and pushes the currency to you. Your input satisfies the terms of the code residing in the device and it self-executes. This can be considered a smart contract.
One issue with such a contract is that it is not easy to find a computer that can be trusted by all stakeholders of a contract. This is where blockchain comes into the scene. As we know, the blockchain is a highly secured database and it is almost impossible for anyone to tamper with its contents. Once an entry is made, it is there forever- it is indomitable.
As already pointed out, the bitcoin blockchain can store small scripts that can be executed on the mining nodes. So, it is a good vehicle to store a smart contract that can be executed without any intermediary. However, the programming language of the Bitcoin blockchain is very limited in its features and to circumvent this limitation new blockchains are being developed. One such blockchain that has gained lots of attention is the one from Ethereum.
Another innovative concept gaining ground is the idea of smart-property –a property whose ownership is controlled via blockchain. How can blockchain be used to implement the concept of smart property? Here, we will use an example from the Bitcoin MOOC, which was run on Coursera recently. Let us imagine a car controlled by a cryptographic key pair. The public key is engraved in the car, and it gets activated when it receives a message signed with the corresponding private key.
Let us change the scene a little bit. Instead of hard coding the public key in the car, let us store it in the blockchain and make the car dynamically update this key based on what is going on in the blockchain. Once a transaction of this type is recorded, the ownership of the car rests with the person who is having the corresponding private key. Now, you can switch the ownership to another person (say ‘Your-Friend’) by just sending a bitcoin transaction to your friend’s public address. One issue: how does the car obtain this information? If the car runs a bitcoin node software, it will always have a copy of the latest copy of the blockchain and it can update the public key.
Once, the car’s public key is updated thus, only the new owner with the corresponding private key can access it. The sale of the car happened without any intermediary- only a simple change in blockchain database was required to change the ownership of the car. The implication of this idea is far reaching. This concept can be applied to different types of assets. For instance, why can’t we have a smart home, whose ownership is linked to its owner’s public key stored in the blockchain? So, technology has helped us eject the title document issuing authority from the sales process!
Yet another interesting use case is identity management. Here, one’s identity data gets stored in a blockchain using the Public/Private key. The identity information can include biometric data, voice and so on. By sending a signed message, the owner can pass on the identity data. Though the blockchain carries all the information, the owner can determine (via her private key) the identities that are to be shared. Perhaps, the blockchain technology may help us remove central databases like Aadhaar from the whole identity management equation!
Blockchain is fast turning out to be a generic product that can be used in almost all domains. To explore the potential of this technology, many companies have floated several blockchain related projects. Block Chain Garages from IBM, MicroSoft’s Blockchain as a service, and R3’s (a consortium of financial institutions) blockchain initiative are some of the major projects worth a look in this regard.