The use of blockchain technology for business applications has become the flavor of the month, drawing interest from many important institutions, including the Federal Reserve. Throughout 2016 there was a stream of announcements of development projects, some of which involved the largest banks and companies in the world.
One project with some very serious juice is Hyperledger, which is hosted by the Linux foundation and led by IBM—both of whom know a thing or two about software.
IBM is a dominant contributor and user of Linux, and the Hyperledger group is patterned after the successful experience with the operating system. The code is open source, and the goal is to create a ubiquitous backbone and API upon which many parties can construct their own apps.
Hyperledger aims to provide a generic way to use blockchains and “smart contracts” in business. This will require quite a bit of engineering, including development of standard APIs, robust implementations, and, in the case of executable contracts, programming languages and debuggers. The Hyperledger project is exploring and testing several candidate designs. The IBM entry is “Fabric”, a fancy term that says everything you need ot know about their ambition to connect everything.
One of the good things about the project (especially Fabric) is the effort to create a “neutral” API that can be implemented with alternative blockchains inside it. This design makes it possible for a business to create their code in a way that will work with many other businesses, even if some use different underlying products, and even if technology changes (which it will).
“Fabric” also aspires to deliver solid software with real “smart contracts”. The software includes industrial grade end-to-end security, cryptographic infrastructure, and sophisticaed support for executing business logic (AKA, “smart contracts”), such as “containers” to execute code.
Now, readers of this blog should know by now that I am not a huge fan of smart contracts, and have pointed out the deep difficulty of creating this technology.
However, in the case of IBM, there is reason for optimism. First, so called “smart contracts” are not essentially different from technologies that IBM has been supporting for many years inside their database systems and business networks. Second, the IBM actually knows what they are doing, and isn’t making unrealistic promises.
As an indication of the state of the work, Michael del Castillo reports on a recent software demo that tried out a simple app running on hundreds of nodes around the world.
The “marbles” demo is a fully working application that uses the IBM implementation of Fabric to create and pass around small records. This is not unlike many business to business systems by IBM, except where there might be a conventional database, this demo uses a blockchain running on dozens of independent nodes. The logic for creating and transferring the records (“marbles”) is implemented by a form of “smart contract”, executed by the notes of the blockchain. The idea here is to demonstrate all the pieces, including cryptography and the distributed consensus processes of the blockchain.
The recent demo was done at moderately large scale, running live using 100 nodes situated around the globe. A dozen of more representatives of the foundation fiddled around, creating and transferring “marbles”, and watching other transactions. Eventually, the group was unleashed to “try to break it”.
Del Castillo reports that the demo went well, with only one obvious glitch, and the system recovered gracefully from the problem. The participants seemed suitably impressed. If nothing else, the software worked as advertised.
When I saw these reports, I thought it was kind of trivial. Perhaps I have done enough demonstrations of distributed software in my life to be unimpressed by the trivial task represented by “marbles”. Sure, getting the user app working nicely isn’t easy, and getting anything running on nodes at multiple sites is hard. But this is IBM, so they know how to do these things.
So what were these people so excited about? I think the users were excited because they are interested in the innards, with the fact that the promised decentralized, cryptography-heavy, protocols worked, and worked at a big enough scale to be interesting. Plus, the fact that nothing interesting happened is the interesting thing that was supposed to happen. The dog didn’t bark.
Overall, this is a significant milestone for he project.
But there is a long way to go, and lots of questions I wonder about. A few transactions over 100 nodes is no where need the scale needed. Trivial “marbles” is hardly an example of the diversity and difficulty of creating, validating, and testing “smart contracts”. With IBM’s track record, I won’t be surprised if they get this all to work pretty well.
Furthermore, this implementation was all written by IBM (I think). The real test of the Fabric concept will come when several different implementations “just work” all together at the same time. That will be interesting to see.
Finally, it is worth pointing out the significant difference between this kind of business to business, access controlled blockchain, and the open, power-to-the-people vision of, say, Provnance.org or Ouishare. Even though “Fabric” is open source, it is not clear whether it will be suitable for these “public” use cases that cannot pay for all the great IBM infrastructure to run it. We’ll have to see.