Can you speak a bit about your role at IBM?
I’m a software developer at IBM, and I work on the IBM blockchain team. This team is responsible for contributing to the Hyperledger project, which is an open source project under the Linux Foundation. It is a project that is geared towards promoting open source solutions for blockchain and blockchain applications. Typically, the focus is on business applications such as supply chain, financial transactions, record keeping, or privacy. So our team mainly a lot of source code. A lot of our team members also do the testing as well and supply the documentation. I specifically work on the squad that deals with the SDK component, Node SDK. We’re providing an SDK for developers to build their applications on Hyperledger Fabric. Essentially, they’re able to start writing an app in Node, they can pull in the Node package, and with the use of those APIs they’re be able to interact with the blockchain, deploy their code, and send requests.
Can you give a quick definition of what blockchain is?
Most people have heard of bitcoin, it’s a cryptocurrency that’s very widespread today, and people use it now for all kinds of microtransactions like buying coffee or paying back their friends. What people don’t realize is that bitcoin and blockchain are not the same. A lot of people kind of associate them that way but they’re really not. So blockchain is an architecture, essentially. It’s something that bitcoin is built on top of, but blockchain can be used in a lot of other areas.
Just to give a brief summary of blockchain, it is a distributed record of transactions on the network, so you have a network of participating computers, or nodes, and they exchange transactions. Those transactions would be like a financial transaction — exchanging some kind of money like bitcoin — and those transactions are agreed upon and go through this process called consensus. They agree that these transactions are valid by temporal order, i.e. what comes before the next thing. They commit them, or write them down to this ledger that they have, and they distribute it to everyone else.
So essentially every node has the same record, and the thing about it that’s very important is that it’s append-only, so to modify something in the middle is extremely difficult. Typically, you would append and change values by appending new transactions as opposed to modifying something in the middle, and that’s because of the way transactions are stored in the blockchain. If you try to modify something in the middle, it messes up all of the links in the chain. That’s very important because that makes it more tamper-proof. So someone might modify something, and it’s very easy to mathematically see that someone’s modified the chain. That’s the big pull for people to use blockchain, because you can easily see that it’s been modified or tampered with.
How’d your talk go? Any ideas of what people thought of it?
I had a lot of questions right after the talk, and I had a lot of people stick around asking all kinds of questions. Generally, the feedback was that the talk was extremely helpful to them to understand blockchain, that I gave a very good summary of what blockchain is and cleared their understanding, and I gave a good presentation on Hyperledger and showed its differences. So overall the response has been very positive, and people were excited to get a good handle on the technology.
I felt the same way. We've only posted a few articles on blockchain on DZone, but what we do have tends to do very well. You mentioned financial transactions, but what are some other applications that you think will take off?
Well, as I mentioned in my talk, I do think that the supply chain example will be one of the most prominent areas aside from finance, and that’s because there are so many points of exchange in a supply chain network, regardless of what supply chain you have. It could be farm-to-table or anything from chemical manufacturing to plastic products, anything like that.
The more exchanges or steps in any process there are, the more likely there’s some intermediary fraud introduced which can’t be tracked, so that’s why blockchain is such a good application for the supply chain. It’s also a very good application to automate supply chains with IoT because a lot of supply chains can be instrumented with IoT devices that measure temperature, or locks, or anything that can report back their state. So, for example, you can instrument your containers with different devices like temperature sensors or GPS devices and integrate those into your processing to see if your supplier stays on track. You can work that into your blockchain contract to decide automatically whether they’re breaching your contract or not by how they’re storing your goods. That application is very interesting to me because I really like IoT, I think it’s a really cool idea, so I kind of latched on to that example of the supply chain.
Honestly, I think it can be used in a lot of other applications. One important one is, for example, storing government documents. A lot of them probably get lost, and there are a lot of them that probably aren’t kept up with. So how do you store them in a way so that modifications can really be tracked so there’s no fraud or people changing things that other people didn’t even know existed. So that’s going to be a big one too.
So for the supply chain example, would that involve sensors interacting with each other and adding information to the blockchain automatically?
Interacting with each other or interacting with some gateway to pass on information about the state that they’re in. It would essentially be something that would be used as an input to a smart contract, so if your smart contract depends on let’s say your meat being under a certain temperature, but your sensors report that it’s been breached by ten degrees, obviously the meat is now spoiled, so something like that would trigger the smart contract to nullify your exchange with a particular party.
What do you hope people took away from your talk?
A couple of things. I think a lot of people are interested in blockchain, but a lot of them are also intimidated by it. Therefore, they don’t really appreciate what it brings, I think. I really hope the thing they carried away was the basic premise of how it works. You know, they shouldn’t be scared of it. It’s mathematics and there are some core principles that make it work by linking the blocks in this cryptographic way, so I tried my best to convey what makes a blockchain what it is, going as basic as why it’s called the blockchain, and how you link these blocks. That’s why I spent a good portion of the talk on that. But I also think Hyperledger’s pretty cool, there are a lot of things people can contribute to it, and we are trying to grow the community a lot.
However, there is a pretty high barrier to entry, because not a lot of people are familiar with the subject and it is pretty obscure given that the community is so new. The documentation is still kind of spotty so people are overwhelmed by the documentation we have, they don’t know where to start. So I see how it would difficult for someone from the outside to enter the community. It’s easier for us because we’re already kind of integrated but I tried to invite people to contribute and provided them some links and a tutorial that I made, which should give them a pretty good sample of how they can quickly get started if they’re interested in application development as opposed to developing the actual platform. So I hope to convey that it’s easy for people to get a taste of it to decide if it’s right for them.
What you do you feel is personally one of the most exciting opportunities in OSS right now?
Probably one of the things that excites me most is what I learned from working on Hyperledger, and that’s Docker. I think it’s a really cool technology that’s applied to so many different instances, particularly in our case. Everything we do is packaged as Docker images, and those are so easy for people to spin up and use. It’s also highly used in the context of our smart contracts, because they are deployed on the blockchain as Docker containers as well. So the more I learned about how easy it is to package your products and manage them…that makes it one of the coolest things for me personally.
What’s something you feel should be standard practice in the community but isn’t yet?
There are a lot of practices that are good, like code reviews and inviting people to contribute. I think the existing practices that we have and that we try to stick to are already there, it’s just that we can do better at applying them. I think there’s a lot to be said about being inviting in a community and making people feel like they’re wanted. I think every open source project tries to live by that premise but it doesn’t always come across that way, and it can maybe turn some people away.
So it’s a communication issue?
I think it’s a communication issue and especially because a lot of us do communicate only virtually, being behind that computer screen can really…it puts in a distance where you don’t know how harsh you may sound on the other end. I think people just generally need to be more mindful of how they communicate, what they post, and how they respond to that GitHub issue or slack or whatever it is. Just to be more welcome and be mindful that they can’t see your face when you write something. In general, all of these things are kind of common sense but I think they can be applied better to how we run things.