Hyperledger Fabric is a Linux Foundation Open Source project specifically for per-missioned blockchain infrastructure which is gearing a lot of traction in enterprise space. This technical article gives a brief account of one of the challenges we have encountered using fabric at production level. The pre-requisite for understanding the problem statement is a basic minimum exposure to any of the enterprise blockchain framework.
Building a network of host virtual machines using Hyperledger Fabric framework and effects of it.
Blockchain network deployment on a single host in fabric is well documented. As we migrate from POCs to production level solution we will have different challenges to address like cross platform communication, scalability, etc. So, addressing this prob-lem is a priority task.
- Hybrid solution (Virtual Machine + Linux Box + Cloud)
The idea is to offer a hardware independent solution. Running a blockchain network on a single virtual machine with multiple peer containers is easy but not scalable. Also, we can not ask a customer to migrate to a new hardware just because the solution is hardware-dependent. Hence, building a hybrid network comprising of bare metal linux based machines, cloud and other hardware form-factors is a priori-ty.
- High availability
Hybrid approach will let us to build resilient, fault-tolerant and HA blockchain net-work.
Scalability is implicitly addressed.
- Cloud deployment
Bringing up multiple host virtual machine also solves the problem to create a block-chain network over multiple cloud vendors like Google cloud, AWS etc.
Setup of observed topology:
In our setup, we use two Linux based virtual machines and our peers are distributed across.
In the following figure we demonstrate the container based docker components of blockchain network:
An important thing to note here is that all the peer are part of a single organisation consortium. We establish single channels between between all peers on both VMs. We have a chaincode (smart-contract) up and running which is populating distributed ledger in expected fashion.
We had to do code level modifications to modify the single host deployment solution. The key here is a CLI container that has the Go (Google go) environment and interacts with all the peers. It also provides chain-code and channel utilities. This is one of the components where we tweaked code and were able able to successfully solve the problem.
Although we have solved major part of the problem in this domain. But the other important challenges to address here is:
- Create a setup for multiple organisation (like Fig. Multi-organisation topology).
- Natively build the Fabric code on Linux.
- Create a standard code repository for ease of deployment of Blockchain network.
- Deep dive into chaincode and contribution to open source if possible.