Project Plan - Implement iroha-cpp library for Hyperledger Iroha 1

Project Plan - Implement iroha-cpp library for Hyperledger Iroha 1

Abstract

Hyperledger Iroha 1 is blockchain implemented in C++. To interact with Irohas' nodes (perform commands and queries) there are few client libraries - iroha-pythoniroha-javascriptiroha-javairoha-ios. Despite the fact that Iroha has implemented iroha-cli in C++ there is no client library in C++.

The project is about implementing the iroha-cpp library.

Optionally the library should be compatible with C language (extern "C") to make it easy to use the library from multiple programming languages.

Mentors

Name

Time zone

Discord ID

Telegram ID

Email ID

Name

Time zone

Discord ID

Telegram ID

Email ID

Grzegorz Bazior

CEST

baziorek#9186

@baziorek

bazior@agh.edu.pl

Piotr Pawłowski

CEST

 

@pawlak00

ppiotru@gmail.com

Mentee

Name

Time zone

Discord ID

Telegram ID

Email ID

Name

Time zone

Discord ID

Telegram ID

Email ID

Andrzej Gruntowski

CEST

Byte#5828

 

andrzejggru@gmail.com

Communication channel:  Discord + Telegram + Email + Github

Project repo: TBD

Deliverables

Approved library design and flow

Merged PR's

Final Project Presentation:

  • It was presented during Iroha-BI-Weekly community meeting on 18th November 2022 (link):

 

 

Milestones

Eval 1:

Configured environment to handle development library inside Hyperledger Iroha's main repository
Prepared final design of external library

 

Eval 2:

 

Completed external Iroha library in C++

Eval 3:

Completed well defined documentation

Eval 4:

*Clean up, refactoring and debugging Iroha-lib
Present final results

Timeline

Dates

Tasks/Plan

Status

Dates

Tasks/Plan

Status

June 1 - June 14

Getting familiar with Iroha documentation and starting example database.

Building and running Iroha from code.

Mentee intro with the mentor. Introduction to the concepts of Hyperledger Iroha 1.

Build and run Hyperledger Iroha node (Irohad) and Iroha-cli from source.

Send sample commands and queries via Iroha-cli with succeed.

Done

June 15 - June 28

Send sample command and queries via Iroha-Python and Iroha-Java library.

Reading Iroha code. Getting familiar with iroha transactions, queries and statuses.

Done

June 29 - July 12

Design interface of Iroha-cpp library.

Done

July 13 - July 26

Start implementing iroha-cpp library. Introduce working draft/concept of the interface. Resolving current issues.

Done

July 27 - Aug 9

Refactor current implementation. Possible contact with the iroha developers on monthly meetings in order to verify current progress,

design and approach of the implementation. Create a separate directory/module for iroha-cpp client library in iroha main repository.

Independence from iroha transaction/query/status implementation. Implement own methods in order to handle auto-generated protobufs.

Done

Aug 10 - Aug 23

Implement grpc client in order to send a transaction/query/status to the iroha server. Create a separate repository (iroha-cpp). Create first PR to review.

Done

Aug 24 - Sept 6

Working on newly created draft pull request. Improvements/refactoring/testing.

https://github.com/hyperledger/iroha/pull/2660

Added atomic to Batch Transactions.
Provided more detailed samples of usage.
Refactored Grpc Client class.
Removed grpc handlers.
Extracted status code, status name and error code based on transaction hash.

Done

Sept 7 - Sept 20

Response to all comments from PR. Contact with Iroha Hyperledger developers/architect. Possible additional training(s) related to the project (on Udemy platform).

Done

Sept 21 - Oct 4

Update the description. Add more samples. Reply and modify all comments from draft pull request.
Rebase commits on top of current develop. Resolve all conflicts with develop branch.
Squash all 56 commits into 1.
Mark Pull Request as a Ready for review.

Done

Oct 5 - Oct 18

Resolve/reply to all comments during the review. Pull Request successfully merged and closed.

Done

Oct 19 - Nov 1

Prepare more detailed README file with functionalities of the library. New PR with readme file created. Attend to biweekly Iroha meetings to be up to date with the latest changes and updates.

Done

Nov 2 - Nov 12

New PR with some improvements -> https://github.com/hyperledger/iroha/pull/2935 → Approved & Merged.

Final evaluation. Presentation of project final results to Iroha Team on bi-weekly meeting (link) and presentation of project.

Done

Methodology

TBD

 

Project results

 

Presentation

IrohaPresentationAndrzejGruntowski.pdf