Keyhole Virus Tracker

Open-source reference application deployed to the cloud that tracks viruses across the country using a Hyperledger Fabric Blockchain network.

Reference Example Overview

Each year, Influenza begins in the Southern Hemisphere and migrates around the world mutating along the way. The CDC makes educated guesses as to which strain will be the most virulent for which to create vaccines. When the flu season makes its way to the United States, the CDC and state-level agencies track its progress by medical practitioner reports and monitoring search engines for folks searching for the flu.

Imagine that a blockchain exists and the CDC, State Health and Human Services, medical practitioners, and testing labs are all participating as Peer Nodes in that blockchain.

Completely Open-Source

The Keyhole Virus Tracker has been open-sourced and is now under an Apache 2.0 open source license. All portions of the code implementation can be modified or updated to reflect custom requirements.

The blockchain platform consists of three, Github open-source projects: the Keyhole Virus Tracker Fabric Blockchain, the Keyhole Fabric API Gateway, and a React UI.

Keyhole Virus Tracker Fabric Blockchain

Github Repository 
This portion is the Hyperledger Fabric blockchain implementation for tracking virus lab tests. This project also includes chaincode that manages a ledger of Influenza tests and implements functions to create and retrieve Influenza test results.

Keyhole Fabric API Gateway

Github Repository 
This portion provides the communication gateway to the Fabric runtime. It provides client access to Hyperledger Fabric blockchain network through RESTful APIs. Recently Accepted Into Hyperledger Labs!

React UI

Github Repository
ReactJS UI client for the Keyhole Virus Tracker Blockchain.

Additionally, Keyhole Software has published a free white paper further detailing the implementation of the Keyhole Virus Tracker. Download for free and read White Paper: Tracking Lab Results Better with Blockchain Technology.

Go Right to the Code



Reference application is a Hyperledger Fabric blockchain network providing accurate, real-time tracking of virus epidemics across the United States.


Implements a HyperLedger blockchain network with chaincode that manages a ledger of testing.

The chaincode implements functions to create and retrieve test results.

A web application (deployed to the cloud) integrates with blockchain to provide real-time, secure information.

Blockchain Actors

The web application interacts with the Blockchain Lab results from different perspectives, emulating real word Actors. The benefit of the permissioned blockchain approach to medical records is that various authorized personnel can interact the data in real time.


Center for Disease Control

Medical Practitioners

Medical Labs

State Health Services



The reference application is deployed to the cloud and interfaces with a web application for easy user input.


A Certificate Authority ("CA Server") ensures all actors have the correct authentication to access the data.

Users from the CDC and Lab can interact directly with the blockchain through React/Node/js web application.




Each participant starts up a Peer Node. Hyperledger provides a Docker-based container to start up a Peer.

The Peer requires cryptographic keys, certificates, and for Hyperledger to provide a utility to generate these.

A Certificate Authority is also required to authorize these certificates in the network. This is provided by the framework.


Once started, a Channel can be created, which is a ledger. Then the Smart Contract (“chaincode”) can be installed and instantiated on selected Peers that are designated as Endorsing Peers.

For our example, the Influenza chaincode function is defined in a Labs.go file. A Fabric stub interface provides an API to put and get data from the blockchain global data store.

Integrating With a Web Application

With the virus blockchain being used by all parties, lab results will be distributed throughout the network applications. Blockchain users can interact and process this real-time data by creating client applications that access a Peer Node.

Example: we use React for the user interface with Node.js as an API layer.