External Chaincode Service in Hyperledger Fabric

Hyperledger Fabric is the most prominent enterprise-level blockchain under the Hyperledger umbrella. At the end of the first month of this year, Hyperledger has forwarded its second major release, v2.0. This stable version comes out after an incubation period of almost 1 year in alpha and beta stages.

The Hyperledger Fabric comes with many groundbreaking changes from its previous version v1.4.   One of them is its ability to run chaincode as an external service. Let’s have a look at this.

As with all software solutions, the maintenance of the chaincode is a headache in hyperledger fabric too. Being in a distributed environment, this is a real issue. The code is required to be installed a number of peers in most cases.

But in the new version, we can deploy and run the chaincode independently outside the Fabric system. This opens up further possibilities like deploying the code in Kubernetes pod. This is enabled by utilizing another feature of v2.0. That is the external builder and launcher functionality. Using this technology we can build and launch the chaincode with any technology. Both these technologies together provide a better solution in chaincode management.

Even if the fabric allows us to write chaincode in three different programming languages(Go, Node.js, Java), this model of chaincode management is only supported by Go chaincode shim, as of now. We can expect the support of other languages and it may also be released in the near future.

The Go shim API now comes with a ChaincodeServer type for creating a chaincode server. The chaincode id, server endpoint address, TLS information, etc are passed into this. This can be then executed in a peer machine or in cloud services like Kubernetes.

Before this update, the chaincode source files of a particular language, say Node.js is built into a chaincode binary. This constitutes the chaincode package. But in the case of the new model, the package need not constitute the chaincode binary, as chaincode is run as an external service. Therefore the package consists of the endpoint information of chaincode servers which runs either in an external server or in a cloud Kubernetes based deployments. Another thing in the chaincode package is the TLS certificate information.

This is just an introduction about what external chaincode service is. Expect more blogs about the actual implementation.



Leave a comment