So, You Wanna Use a Blockchain, Huh?
I got into blockchain from when I hit the Ethereum Developer Conference, DevCon1, out of sheer inquisitiveness, in London a couple of years ago.
Here’s a typical 3-min overview of blockchain, for those super new to the technology.
Two years doesn’t seem like a long time, but in Blockchain terms, that’s a decent stretch. Since then, I’ve written whitepapers, visited government accelerators, and have been lucky enough to take part in industry guidance boards regarding blockchain technology and its uses. Still, this tech is moving so fast that if I take a week out, I feel like I’ve missed another development.
One thing that struck me early on with blockchain, is that you can apply it to so many use cases that it’s tempting to do just that. But if you pause and think a little a bit about your use case, more often than not, there’s decent tech out there that will serve you just as well if not better.
Blockchain has some fantastic properties and I love its disruptive powers, but it’s the use cases that really exploit those powers that shine and are much fewer in number. These days when someone comes and asks me about how great a use case they have for a blockchain, my answer has started to be somewhat predictable… “So, you wanna use a blockchain, huh?”
On that note, in the rest of this blog post, I’m going to try and discuss what makes a good basis for using a blockchain. And to do that I’m going to totally rip off an excellent flow diagram put together by University College London, I’ve re-created here:
First off, if you don’t need a database, you probably don’t need a blockchain (Database being a place to store a bunch of data). If you don’t need a place to store a bunch of data, you won’t need a blockchain. Blockchains are essentially a distributed database of record. Like a giant audit book or ledger (thus, blockchain tech also gets referred to as Distributed Ledgers).
If you do need a database, then next think about if you or your application are the only actor that is going to be writing to it. If you are the only actor, then again, you probably don’t need to use a blockchain. You’ll be better off with a standard database on the whole. And there are plenty of those out there to choose from. This is where the bulk of applications fall, I would suggest.
Now, if you have a bunch of folks or applications that will need to directly write to your database to provide the best solution to your use case, things are getting a little more interesting.
But, if you trust them all, then guess what, you don’t need a blockchain. You could use one, sure, but you don’t need to as you’re not using the best properties of a blockchain and what makes it unique. It’s just a technology choice on your part to use a blockchain, and one that could add needless complexity to your solution. Think carefully about that one. Many an enterprise application behind a firewall sits in this bucket.
Next, is there a third party that everyone else trusts that can act as a regulator of the database of record? If so, then you might not want a blockchain. I think this decision is an interesting trade-off between the complexity of building solutions on blockchains (at least, at the moment) and still having a technical solution that works for your use case. Setting up a regulator or finding one for the purpose of trust might be hard and the agreements around this at a business level, complex. Personally, I’d explore blockchain tech at this point in the flow and make a decision on if the tech solution warrants the business model of not having a trusted third party (if there is an option to have one). I think the very much touted supply chain use case hits this bucket. Probably controversial, that. I’ll keep it in the blog just for that reason.
If no-one can trust anyone (What IS the world coming to? ) and you need a database with a bunch of folks writing to it constantly, then a blockchain could be the solution for you! Woo! Great examples here are IoT registration, M2M communication and transaction solutions etc. At that point, you’ve got quite a number and variety to choose from, public or private or community, open source or proprietary, language considerations…I feel another blog post coming on in the future.
But, hopefully that little run through will help the new blockchain practitioner understand if a blockchain is appropriate for the use cases they are thinking of, or at least instigate more thought on how to really exploit the unique properties of blockchain technology.
Here at Cisco, we’re helping the community understand use cases and applications of blockchain through our work on the Linux HyperLedger and Trusted IoT Alliance. We are also getting to meet and discuss solutions with the awesome folks who work in this area as a community!
Also, check out the DevNet Hyperledger Sandbox if you want to get hands-on with blockchain technology in the near future.