Project TitleChaincode-level event monitoring tool for Hyperledger Fabric
Status

UNSELECTED

Difficulty

MEDIUM

Description 

Monitoring tools are an essential part of the deployment of any software solution. Hyperledger Fabric networks can be monitored using general metrics exported by orderers and peers. However, there is a lack of general-purpose tools which ease monitoring of chaincode-level events in Fabric.

Chaincode-level events are highly dependent on the chaincode specificities. To overcome this, the solution must define an easy-to-use user interface which helps system administrators to configure the different connections to peers, the credentials to use and the event model to listen.

From the point of view of the performance, the solution must ensure the availability of the registered events and the capability to perform rich queries to audit when the events were triggered. For this, the architecture which supports the solution must be scalable and based on open-source frameworks and tools.

Additional Information

Learning Objectives

  • Development of a parametrizable and user-friendly monitoring solution
  • Design of a scalable and available architecture to listen events coming from chaincodes
  • Deep understanding of the Hyperledger Fabric model: configuration of a network, credential handling and event listening
  • The mentee will define pipelines for the CI/CD of the solution
  • He/she will work together with a team which uses the best agile practices and open source development tools (e.g., Gitlab and Docker compose)
  • The mentee will be under the direct supervision of experts in the blockchain field with vast experience in the design and development of both research projects using state-of-the-art technology and production-ready solutions

Expected Outcome

  • D1 (M2): Design of an architecture which uses open-source frameworks to listen, persist and query events coming from chaincode deployed in Hyperledger Fabric.
  • D2 (M4): Development of a listener which can be parametrized to define which events to listen to and the credentials to be used in each communication channel.
  • D3 (M5): Basic webapp design and development to configure the solution. The listener module should be parametrizable to listen to any chaincode and peer.
  • D4 (M6): Configuration of a flexible UI with several general-purpose sample views to monitor events using existing tools like OpenSearch Dashboard and Grafana.
  • D5 (M6) Evaluation of the performance of the solution. The mentee should test the concurrency and scalability of the developed solution.

Relation to Hyperledger 

  • Hyperledger Fabric: this project will create a parametrizable app to listen to chaincode events in a Fabric network.

Education Level

Undergraduate

Skills

  • NodeJS development. Preferably, but other languages with an official Fabric SDK can be considered, particularly if an existing project is used as a base.
  • Basic frontend development skills: React, Angular or a similar framework and component libraries like Material UI.
  • Version control sytems like Git and ticketing systems.
  • Deployment tools: Docker and docker-compose.
  • Basic understanding on how Hyperledger Fabric works.
  • Working on a team following agile methodologies.

Future plans

  • The main results of this project (D2 and D3) will be open-sourced in Hyperledger-labs as a contribution for the community. Depending on the design decisions, the result might be provided either in a monorepo, as an extension of an existing project or separately for each module developed. All the deployment and usage documentation as well as any sample configuration (D4) should be provided in the Github repository too.
  • The assessment results (D5) might be published in a research paper.

Preferred Hours and Length of Internship

Part-time (20 hours a week for 24 weeks)

Mentor(s) Names and Contact Info





9 Comments

  1. How about enhancing this labs repository and building a User Interface for those APIs https://github.com/hyperledger-labs/hlf-connector ?

  2. Sure, extending that project could be an option too. Thanks for pointing it out.

    1. Aitor Gomez-GoiriIf you could make that part of the proposal more explicitly it would definitely get stronger support from me. Reading the proposal as-is I wasn't sure where and in what format the produced code will end up and the way that would affect the future contributions/maintenance of it. 

      1. Peter Somogyvari I've tried to address some of your concerns on how the outcomes of this project should be opensourced in the "Future plans" section.

        I didn't fully understand your comment regarding the "format of the produced code", so if you could elaborate it, maybe I could include it in the proposal.

        Also, I've explicitly mentioned the "hlf-connector" in a couple of sections and the posibility to extend it or any related existing project. However, I wouldn't want to make design decisions beforehand as I understand that deciding the best way to proceed should be one of the mentee's tasks (see M2) and his/her decision might depend in his/her profile/expertise. Therefore, I've kept the description somehow opened.

        1. Aitor Gomez-GoiriSorry for missing the fact that your link was pointing to HLF, I should've checked it more carefully. (smile) Thank you for clarifying!

          1. Nothing to be sorry about, I actually modified the proposal and included the HLF references  in the last update after your comment (wink)

  3. How do I get involved in the project? Do I write to the contact email listed on the project page? Thank you.


    1. Also, please note that this proposal was not accepted! (smile)