ChainMetric: Network
Overview
Chainmetric Network is an IoT-enabled permissioned blockchain network based on Hyperledger Fabric stack.
It is oriented on storing, managing, and handling the continuous flow of sensor readings data, which is sourced by IoT on-network devices, and validating those readings against organization assigned requirements, thus providing full control on the assets supply chain.
This solution provides a convenient way of deploying such a blockchain network onto the cloud-based Kubernetes cluster environment via Helm charts and dedicated Bash script.
Requirements
- Kubernetes cluster is required to deploy a Chainmetric network (minikube is also suitable).
- Helm binaries must be presented on a local machine from which deployment script will be used.
Deployment
Hyperledger Fabric is a powerful enterprise-grade permissioned distributed ledger framework. Its modular architecture and unique orderer-based approach to consensus enable versatility in use cases and production-ready performance and scalability.
However, its deployment procedure especially in the Kubernetes environment may require quite a lot of time and effort. Hyperledger Fabric's documentation is indeed helpful though it still covers the very basics.
The current solution provides a straightforward way of deploying permissioned blockchain network in the Kubernetes environment using a combination of a Bash script and Helm charts with the following commands:
Use init
command to generate crypto materials and network channels artifacts:
$ ./network.sh init
Use deploy
command with orderer
action to deploy Ordering Service, which is responsible for ensuring data consistency and enables performance at scale while preserving privacy:
$ ./network.sh deploy orderer
Use deploy
command with peer
action to deploy single Blockchain peer which will store a copy of ledger and perform read/write operations on it:
$ ./network.sh deploy peer --peer='peer subdomain name' --org='organization name'
Use deploy
command with channel
action to deploy network channel which provides a secure way of communication between peers:
$ ./network.sh deploy channel --channel='channel name' --peer='peer subdomain name' --org='organization name'
Use deploy
command with cc
action to deploy or upgrade Chaincode (Smart Contract):
$ ./network.sh deploy cc --cc_name=`chaincode name` --channel='channel name' --peer='peer subdomain name' --org='organization name' --upgrade
Use following environmental variables to define some additional network properties:
$ export DOMAIN 'chainmetric.io'
$ export ORDERER 'orderer.chainmetric.io'
$ export CHAINCODES_DIR '../contracts'
$ export IMAGE_REGISTRY 'chainmetric'
Roadmap
Wrap up
Chainmetric network designed to be an enterprise-grade, confidential and scalable distributed ledger, which in combination with dedicated Smart Contracts, embedded sensor-equipped IoT devices, and cross-platform mobile application provides ambitious metric requirements control solutions for general assets supply chains.
License
Licensed under the Apache 2.0.