Every time I see a "Blockchain 101" post, inevitably, it mentions Bitcoin. That’s telling you about a specific use of a blockchain technology rather than describing what blockchain technology is and what it can do for you in general. So, I figured I'd write the more general “what is” version. I’ll also touch on what it takes for you to work with blockchains.
By the way, I'm going to try not to mention Bitcoin again here. So, let's go...
Traditionally, if parties wanted to track assets—let’s say cars—these assets would be tracked by separate parties keeping their own individual records. Those parties can alter those assets (buy the car, sell the car, be the insurer for the car). However, this is inefficient and prone to error.
For instance, one party might only keep records of the car when it’s in their possession. But, to keep track of the entire lifecycle of the car, that record would need to be shared with another single or multiple parties.
The Big Blockchain Concept
What blockchain does is to create a shared dataspace where there is one—and only one—correct status for the data. The reason why this is called a “chain” is that the record about the asset isn’t like a single row in a database table but rather a list of actions that happened to the asset. Items in the list are never deleted—they are only ever added to. This makes it more like a ledger, which is why blockchains are often referred to as “shared’ or ‘distributed’ ledgers.
Elements in a Blockchain
When the assets change—for example, the car gets sold—another link is added in the chain. The parties then must all agree that the asset was changed and by whom.
This agreeing bit is called "consensus"—a very important part of Blockchain. The "consensus algorithm" (and there are more than one) is what starts to make Blockchain standout from being just a shared database.
The algorithms stop rogue ledger owners from coming along and claiming that something happened when it didn't. This is achieved by the other ledgers disagreeing with the rogue ledger and they block out the rogue ledger and its rogue entries.
Okay, so there is obviously some other stuff built around this to provide qualities of service which we expect from any system.
As with any system, there are security measures in place. You can't just let anyone say that they own the car—or else you'd have chaos! Therefore, blockchain uses the usual TLS certificate methods to ensure that people who alter car statuses are allowed to. To do this, standard certificate management is put in place. A blockchain provider may provide that management (i.e. give out the usual certificates), allocate different users different roles (e.g. changing car status role, view car status role, sell cars, buy cars, etc.).
Not all blockchains are secured—but the commercial ones will almost certainly be.
I mentioned earlier that there are different algorithms for members of the ledger to achieve consensus. There is a reason for this—you may have read about "certain cryptocurrencies" (phew, almost said the word!) and how it takes huge amounts of power to "mine" coins. That's not a good thing when you want to use the blockchains in a more generic environment. So, there are a number of algorithms that allow different qualities of service. Which one is chosen for which ledger will depend on the main issue that is being resolved and there are, potentially, compromises. The sorts of qualities of service considered include speed of transactions, number of participants required to achieve consensus, etc.
Blockchains have the concept of what is referred to as “Smart contracts.” This is logic (code) that is positioned with the chain and is run when something happens on the chain (e.g. a car is bought or sold).
Smart contracts are very important to the blockchain as they effectively define the rules and states that the assets held on the blockchain can be. In our car case they may, for instance, check that the asset was owned by me before I sold it. Or perhaps, they send an event out to the insurance company to say that my car has just been sold so they need to cancel my insurance—and perhaps contact the new owner to see if they can insure it for them.
The sort of things that smart contracts can do include:
- Verify the data
- Start other processes based on the data
- Alter the data, and perhaps augment it with other data.
There is only one set of smart contracts per blockchain. So, individual users of the blockchain will not have their own set of smart contracts with different logic in them from everyone else (although I reserve the right to say that this won’t change in the future).
Let’s discuss that elephant in the room again—blockchains can burn up a lot of CPUs. Their consensus algorithms are being improved all the time, but they still fundamentally rely on complex equations being run in order to validate the ledger. To ease some of this burden, blockchains have evolved to have a secondary storage area where metadata about the transaction can be placed.
Integrating With the Chain
Working with blockchains requires the usual integration skills to be in place—getting data into the blockchain (telling the chain that the car dealer has just sold the car) and getting data back out of the blockchain (asking "who owns the car"), or responding to events in the blockchain (an insurance company being told that the car has just been sold).
If you are a blockchain creator then you will need to be able to code those smart contracts as well.
These are all problems that have been solved before in the integration space and will need to be solved again, except this time your project will be working with a piece of a blockchain instead of, say, a partner’s database.
I hope I’ve managed to give an overview of what blockchain technology is. To recap, it’s a shared ledger which is underpinned by consensus algorithms ensuring that all parties agree on the same entries in the ledger. Code is placed with the ledger to ensure that the ledger data is accurate and that rules are run when the ledger entries are created. These are called smart contracts.
If you intend to create your own blockchain then you will need to understand how to write those smart contracts. However, if you’re just going to add entries or react to other people’s entries on the ledger then you just need to understand how to integrate with the ledger and this is a much simpler thing to do.
In future posts I’m going to discuss more about the current blockchain landscape and where I think things may be heading.
About the Author
John Hawkins is EMEA Integration practice lead based in the Lightwell UK offices. John has previously worked for IBM as an MQ strategist and architect working on next generation cloud messaging solutions and messaging appliances. Since leaving IBM John has continued to focus on both integration and cloud technologies such as IBM PureApplication Systems, MQ and, more recently, API Management at Lightwell.
If you're attending IBM Think 2018 in Las Vegas, you can meet John and other team members at the Lightwell booth #712.