John works as a graphic designer. He also runs a taxi organization in Mumbai. John doesn’t have an office and prefers working from his home in Delhi. The company’s management suggested Mumbai as the optimum city for him to run operations based on his preferences. He does not own any of the vehicles, they are rented through a third organization in which a number of people like John have pooled resources of value (time, money, reputation, computation). The hardware and software of the vehicles updates automatically, the vehicles decide when they need to go for servicing, tell each other about best routes for a greater return on investment. When Seema enters one of John’s taxis and asks it to take her home, the taxi recognizes her through a third party service that verifies identities called ‘VerifyB’. ‘VerifyB’ automatically identifies important credentials about her, like blood group, insurance, wallet balance and sends only relevant information to John’s taxi service.As soon as the ride begins, software on the taxi begins deducting pico-payments from Seema’s bank wallet which contains US dollars. Thankfully, John’s taxi service accepts USD and even if it didn’t, the system can convert any currency into one that John prefers. The software on the taxi service runs a dynamic insurance pricing algorithm for the taxi as well as Seema. The model charges a higher insurance rate in accident prone areas. If John’s fleet has decided to go by the route that is safer to drive on, but slightly longer; the algorithm adjusts the price of the fare and insurance accordingly.All transactions in Seema’s ride happened automatically. She never had to interact with a hand held device. She entered into a taxi of her choice and specified her intent. Only relevant information about Seema was provided to John’s fleet. John could never know her name, age, where she lives, her friends, relationships, etc. The identification software does not allow this information to be shared and asks for consent from Seema when an odd request such as her name or phone number arises, Seema declines it and flags John’s fleet’s reputation. This does not affect her journey. Both John and Seema did not have to know or interact with each other.
John’s taxi service is not a normal organization. The company consists of John who is an investor and a software program that manages everything. There is no human management. There are no drivers, the fleet comprises of self-driving cars. John does not have a lot of liquid money, but he contributes in terms computing resources.
Back home, John runs another venture that sells excess energy from the solar panels on his roof to a micro-grid, he rents out his excess wifi bandwidth. When not at home, he rents out his empty apartment through a software program that manages home rental and pays him per second for occupancy and usage in a currency of his choice. Smart locks, motion sensors, thermostats and host of ‘smart’ devices manage services such as identity verification, time spent in the house, usage of water, electricity, usage of the swimming pool, etc. Things collaborate with each other seamlessly. All transactions of currency and otherwise are recorded and encrypted in a distributed ledger. John does not have to rely on a third party to ensure trust. Trust is intrinsic. Trust is encoded in the system.
Bitcoin, Ethereum or <insert popular digital currency in trend> started to appear in regular parlance due to their impressive returns. It made some people really really wealthy. That in my opinion is not what is interesting about these currencies. What’s interesting is the potential of the technology underlying these currencies. If you view the world in terms of money and you are thinking in terms of Billions of dollars, you might be wrong. Think trillions!
Welcome to the world of Blockchains!
Blockchain is a globally distributed ledger which depends on the resources of a peer-to-peer network. Simply put, think of the Blockchain as a really long spreadsheet. You have a copy of the spreadsheet and your friend Martha has another copy. The document consists of four columns: fruit name, amount of fruit added, who added the fruit and the date when the fruit was added. You add an entry to the spreadsheet, “2 Apples”. For both your spreadsheets to be identical, Martha needs to add the same entry “2 Apples”. Now Martha’s friend Seema wants to join your little spreadsheet group, so Martha gives a copy of the spreadsheet to Seema. When Seema adds an entry “9 Oranges”, both you and Martha need to make changes to your respective copies for them to be identical. The rule is that no one can delete or modify a previous entry, members can only add entries.
It’s been a few days, your little spreadsheet group now has 20 members. Martha, who was one of the founders of the spreadsheet group hasn’t made any contributions to the document. She starts getting jealous of Seema, who has become somewhat of a rockstar. In the spite of anger, she decides to make slight modifications to the spreadsheet. She replaces Seema’s name with her’s at a few places in the spreadsheet. She even convinces 5 other members to do the same in exchange of favors.
When it is time for everyone to update their spreadsheets, John notices a discrepancy in some spreadsheets belonging to Martha and a few other members. They call for a Fruit spreadsheet intervention where all spreadsheet copies are laid out and checked for inconsistencies. 14 of the 20 spreadsheets are found to be identical copies, 6 copies belonging to Martha and her gang are found to be fudged. A consensus is reached based on a vote of members. Martha and her gang are forced to delete their copies and replace them with the 14 identical copies. The document’s sanctity remains intact. Balance is restored.
Fruit spreadsheet consensus. The other members had far more identical copies on the spreadsheet.
Handling 20 members was still manageable for the team, however it quickly starts getting messy and complicated to maintain copies on our group even beyond 50 members. Now imagine a million members in our Fruit spreadsheet group, it is a nightmare.
Seema suggests they start using a computer program to maintain copies. This simple program checks and updates all copies of all the members whenever an entry is made to the spreadsheet. It also checks for any discrepancies in the previous entries by tallying all copies on this network. Seema’s idea although clever, has one major flaw. Checking and updating a million spreadsheets is computationally intensive and soon a few members’ computers start crashing.
We can create unique hash values by adding the fruit id multiplied by the number of units, the user id and the date and the previous hash.
John suggests another idea; rather than checking the entire spreadsheet, why not check for a single mathematically unique value (we will call this the Hash value) in each document. The value is derived by a formula from the spreadsheet’s columns. Let’s say we assign a unique numerical ID to each member and fruit respectively. We add the IDs of the member and the fruit in each column entry along with the date and amounts fruit which we store as the Hash value for the first entry in the spreadsheet. For subsequent entries, we use the same formula and add the hash value of the previous entry. This starts forming a chain of hash values that reference the entire spreadsheet. The advantage of this is that the computer program will only have to check for the hash value of the last entry in the spreadsheet chain rather than the entire spreadsheet. If any member tries to tamper with the spreadsheet’s previous entries, he will have to make changes for all entries in the spreadsheet chain that too for all spreadsheet copies, which is practically not very feasible.
However, the spreadsheet chain too has a flaw in design. For a large spreadsheet on the network, performing realtime updates to all members’ documents is also computationally intensive since transactions and updating of chains can take place in milliseconds. How does the system handle two entries at the same time? What if an entry to the chain takes place while the chain is being updated?
Martha suggests that rather than performing transactions realtime, we handle all the transactions within a span on 10 minutes. This chunk of transaction can then be added to our spreadsheet chain as a block. John, Seema and Martha have just created a Blockchain.
For the sake of simplicity, I’ve deliberately left out a number of features like encryption, cryptography, consensus protocols, etc. in the above example. We will cover those going forward.
P.S. A lot has been talked about the opportunities and possibilities of this technology in the domain of finance, viz . micro-payments, currency conversions, remittances, insurance, Blockchain IPOs, Altcoins etc. I have tried to stray away from these topics as much as possible.All views are personal.
Please clap and share this article if you find it useful. :)