Why software developers should pay attention to blockchain technology
Like most people, I am aware of cryptocurrencies like Bitcoin. I’ve been watching its incredible rise in value recently and I was shocked when it broke past $10,000 in late November 2017. It seems all the news outlets are focused on this now. There’s a lot of talk about banks becoming obsolete and government issued currencies being replaced by cryptocurrencies. While this may be interesting, I did not give it much thought. I’m not a banker or a day trader. My interest was limited to that of a curious bystander.
Then in late December 2017, a very strange news story caught my attention. It was entitled, “Long Island Iced Tea Soars After Changing Its Name to Long Blockchain“. My first reaction was, “What? That makes no sense.” I read the article, researched a little more, and realized that I was missing a large part of the story. This craze was not limited to banking and cryptocurrencies, it was related to all things blockchain. From what I could surmise the hype of blockchain technology was beginning to rival that of the world wide web back in the 1990s. (And we all know how that turned out). So my next questions were, “Why? Why is blockchain the next big thing? How is it distinct from cryptocurrencies like Bitcoin? What is causing such irrational behavior that an Iced Tea Company changing its name would make the market go wild?”
To explore these questions I jumped headfirst into blockchain. In the past 4 weeks I have setup a local blockchain development environment, setup a private blockchain on two AWS instances, and deployed a smart contract to the Etherium test blockchain (testRPC). This is what I have learned so far.
At its core, blockchain is simply a decentralized digital ledger that records transactions or facts. Some have compared it to an Excel sheet where each entry is linked to the previous entry but I’ve found using a book analogy seems to be the most clear. Imagine a book, for example Moby Dick, and all the copies of that book that exist in the world. Now, imagine that you go into your local library and tear out a page. If you gave me that book, would I be able to determine that the book had been altered? Yes I would, because I would notice the page number sequence had been interrupted. Further, I would be able to determine the contents of that missing page by calling my librarian friend and having them read that missing page to me from their copy. This book example describes a part of what blockchain enables. It enables a lot of individual computers to manage a digital ledger and validate its information.
Continuing with the book analogy, imagine that the page numbers are not the standard sequential numbering of 1, 2, 3, 4. Instead imagine that the page numbers are mathematically derived based on the contents of the previous page . For example, let’s say that page 1 only contains the text, “Moby Dick, by Herman Melville”. The next page number would be created in part by using the digital signature (hash) of that text. Let’s assume the hash of the text is “-1797682120”. Then the second page would not be Page “2”, it would be Page “-1797682120”. The process repeats for the next page. The entire page contents of “Chapter 1: Call me Ishmail …” would be hashed and used to create the next page number, and so on.
Of course, this example is simplified but I hope the main point is clear. Each new block in a blockchain contains within itself a hash of the previous block. This gives a blockchain immutability. If a hacker were to corrupt a block, all subsequent blocks would have incorrect hashes. This change would be rejected by the other nodes on the network. This is the key feature of blockchain, immutability. Which means, in theory, you can trust the data in a blockchain.
Trust. This is the first thing that developers need to understand about blockchain technology. It is potentially going to change how software systems trust each other. Bitcoin is a very specific use case of blockchain’s inherent trust feature. When funds are transmitted from User A to User B, the transaction is added to the blockchain. Once added, it cannot be undone. It is immutable. This eliminates the need for a third-party, such as a bank, to mediate the transaction. However, blockchain is not limited to virtual currencies. It can potentially disrupt any third party that exists to mediate transactions. Uber is a third party that mediates interactions between riders and drivers. EBay mediates transactions between buyers and sellers. ITunes mediates transactions between musicians and consumers. In theory, all these companies could be disrupted by blockchain.
The second thing developers need to understand about blockchain is that there are many other potential uses that are still in their infancy. This is why there is such hype in the market. The number of projects in the blockchain space is growing quickly. Here are just a few examples.
- uPort – Identity Management
- DeepMind – Health Care Record Management
- LO3 Energy – Renewable Energy Distribution
- IBM – Entire division with 1500 employees dedicated to blockchain
The final thing developers need to understand is that anyone can deploy applications on a blockchain, right now. For example, Ethereum allows individuals to deploy “Smart Contracts” onto their public blockchain for a small fee. Think about that. You can deploy code on a decentralized blockchain and it will execute 24/7 with no further action on your part. Very cool.
Through my investigation and coding of smart contracts, I have become convinced that all professional software developers need to become familiar with blockchain. I believe we will be encountering questions regarding blockchain and its applications very soon. Further, if you have always wanted to launch a startup, blockchain seems to be where investments are happening. Check out ICO Alert for a list of all the blockchain startups that are launching.