Recently, big corporations from banks to the likes of IBM have been talking about blockchain technology. It has even been showing up in television shows like Mr. Robot. It’s the new “cloud” or “web 2.0” or “agile development”. That probably leaves you wondering just what blockchain technology is and why you should care about it. Or perhaps you’re asking whether you should be using blockchain technology. For the TL;DR crowd, the general answer is, “It depends. While you almost certainly do not need or want to use blockchain technology in your project, you have to evaluate whether it makes sense in the context of your specific project.” (I should note that you can replace “blockchain technology” in the preceding summary with any new or old technology and still have a valid conclusion.)
So what is this blockchain business anyway?
The general consensus is that blockchain got its start with Bitcoin. At its core, it is simply an ever growing sequence of blocks linked with some cryptographic algorithm that allows anyone to verify the linkage. There are, of course, many possible variations on the concept. The specfic distributed database mechanism used by Bitcoin and many other cryptocurrencies is just one way of handling a blockchain. Basically, you can think of a block chain as a stack of index cards where each card has some sort of code on it that allows you to verify that the next card below it is the correct card. You can be forgiven for thinking it sounds very much like the header on top of every page in a book, for instance. Indeed, it is very similar. The primary difference is that the linking code happens to be directly related to the specific contents of the index card below the one you are currently looking at rather than being essentially constant across all index cards. That contents will usually include the code on that card as well giving you certainty that you are traversing back down the correct chain.
What, then, is a blockchain good for? When done well, it can give you a complete history of some resource. That could be the complete list of transactions ever done with Bitcoin or it could simply be a chain of custody for some physical item, such as a piece of evidence in an investigation. There are many cases where that level of logging is a good idea or even required. The question actually becomes whether using a blockchain provides any actual benefit over traditional audit logs and the like in a given situation. Unfortunately, the answer to that is very situation specific.
Here are some questions you should ask to determine whether blockchain technology is a viable solution for your specific problem. I should point out that these are the types of questions you should be asking when evaluating any technology, not just whether to use a blockchain. I should also mention that this is not an exhaustive list of questions.
- Do you need an audit trail back to the beginning of time? That is, do you have to keep the records forever? If so, then blockchain technology may be appropriate. However, you should consider whether a simple log file or similar will just as effective.
- Does the amount of information to be tracked grow beyond some particular bound? If not, then blockchain technology is not likely to cause you any more pain than other technologies. If it does grow indefinitely and you do not need to keep it forever, then blockchain technology is probably not the right solution.
- Is the information to be stored in the blockchain to be shared with or updated by third parties? If so, there may be some benefit to a properly implemented blockchain, especially if the third parties need to verify the data. However, there may be other solutions that work just as well but with less complexity.
- Can you afford the development cost to implement blockchain technology correctly compared to a more traditional solution? If not, then you are almost certainly better off using a well understood traditional solution.
- Can you afford the additional operational expense as the blockchain grows? That includes storage requirements and computational resources for constructing and verifying the blockchain. If the cost is substantially higher than alternate technologies, it may not be feasible to use blockchain technology if other technologies will work as well but at a lower overall cost.
- Are you only consdering using blockchain technology because “everyone is doing it”, or to tick off a box on a list somewhere? In short, are you just trying to be buzzword compliant? If so, you definitely do not need blockchain technology. “Because everyone is using it” or “because it is the cool thing” are not valid reasons to select any technology, let alone blockchain technology.
So now we come to your specific project. Have you done a proper analysis of what your project actually requires? Have you consdered how blockchain technology meets those requirements? Have you considered how other technology might meet those requirements? Have you considered things beyond just the initial development and factored in ongoing operational costs of the various options? Do you have the technical expertise available to implement blockchain technology?
Having implemented my share of projects over time and seen new fangled technologies become either “old fangled” or disappear into irrelevance, the latter being much more common, I think it is reasonable to conclude that unless you can identify very good reasons why blockchain technology is going to be beneficial to your project, you should simply not bother with it. Blockchain technology is currently at that stage of its existence where everyone is trying to use it to solve every problem regardless of whether the blockchain shaped peg even fits in the specific problem’s hole, let alone has the right shape. Resist the hype and consider everything carefully. If you do eventually come to the conclusion that blockchain technology will be beneficial, than by all means use it. But if you are simply attempting to use it so you can cash in on the hype, your resources are better employed elsewhere.