Editor’s note: This is the first post in a three-part series that investigates how a distributed application using blockchain could be applied to a practical problem facing the payments space.
At Levvel, many of our clients have heard about blockchain and are interested in exploring this technology to see if it can offer them a competitive advantage. While there are a multitude of articles and books available that discuss blockchain—a decentralized database technology that ensures data consistency and validity—it is difficult to grasp the blockchain concept, let alone see how it can be applied to solve a practical problem.
The goal of this blog series is to assist the reader in their blockchain journey by ultimately developing a distributed application that sits on top of a blockchain to solve a real-world problem.
So, just what is a blockchain, and how can it be used as an application platform? Sometimes, when I am enthusiastic about a new project, my wife asks me what I am working on. I usually start by explaining it to her as if she is one of my peers, and I lose her within the first two sentences—she wishes she had never asked. With blockchain, I seem to lose my technically astute peers within the first five sentences.
Blockchain is indeed difficult to understand because of the cerebral concepts involved like cryptographic hash functions, asymmetric keys, digital signatures, distributed nodes, Merkle trees, and all that other cryptology and computer science mumbo jumbo! Even for me, an engineer turned computer scientist, it ranks at the top as one of the most difficult subjects I have ever studied (ranking just below tensor calculus), so you are in good company if you are mystified by it too.
Driving the Blockchain
Over the years, I have learned to simplify concepts as much as possible to help teammates, managers, and my wife grasp the complex concepts that I become passionate about. So, before I get too geeky and show you how to develop a distributed application (DApp) that executes on a blockchain, I will share a blockchain analogy that seems to have gained traction amongst my peers.
Most of us who drive cars can do so without much thought because we have learned the basic controls (or interface) for operating it—steering wheel, transmission, brakes, etc. We must also learn the local rules of the road so we don’t end up in a ditch, or worse yet, an accident from driving on the wrong side of the road or ignoring red lights. Many people drive their whole lives without knowing anything about how a car works, even though a car is a very complex machine. They don’t need to know these details to drive the car, they just drive it.
I believe that the role of the driver in my car analogy is like the role of a new developer writing a smart contract or distributed application for blockchain. The developer can simply write their contract or application and deploy it to the blockchain without knowing all the details of what the blockchain does under the hood, because a multitude of tools are currently available to help him or her do so. These tools make the interaction (or interface) with blockchain much easier.
I am not suggesting that developers should not learn the underpinnings of blockchain because they don’t have to—that is far from the truth. In the early days of the automobile, drivers had to know how to fix their cars because they often broke down. In fact, all drivers carried inner tube repair kits and knew how to patch holes in their tubes, because the probability of getting a flat tire was almost 100% on each journey. Likewise, distributed application developers will figure out quickly that they will be forced to learn the underpinnings of blockchain, because exceptions and errors occur frequently with our blockchain engine.
Smart contract technology is in its infancy, so the developer will be forced to know the design and limits of the machine they are driving. You can’t troubleshoot your problems if you don’t know how your engine works!
Image by Devin Smith, Senior Design Consultant at Levvel
The good news is that there is currently some great tooling available that will help anyone who is interested in wading into the blockchain waters do so without too much fuss and anxiety. I will look at some of these tools in the next part of this series and begin to apply them to our DApp.
In the meantime, if you would like more simplified explanations of blockchain, this post does a great job of explaining bitcoin—the originator of the blockchain—in a way that a five-year-old can understand. I sent this link to my wife. Don’t let the bitcoin concept scare you off—you can simply think of it as yet another application running on top of blockchain.
If you want to learn more about creating smart contracts and distributed applications on blockchain, this link provides a great introduction to developing on Ethereum. Finally, if your true geek needs to be satisfied, I highly recommend reading the Ethereum Whitepaper, which is one of the most concise and useful postings I have ever read on smart contracts and decentralized applications.
In the next post, we will roll up our sleeves and get busy exploring the exciting new world of decentralized applications!