Project TitleIroha 1: Enhance query functionality by introducing supplementary, optional parameters to extend the versatility and customization capabilities of queries within the Hyperledger Iroha 1 blockchain.
Status

COMPLETED

Primary Focus

RESEARCH CODING   

Description


In Hyperledger Iroha 1, while presenting a robust set of commands and queries, the absence of certain pertinent commands and queries has been identified. As Hyperledger Iroha 1 positions itself as a foundational element for banking systems due to its support for transactions and multiple currencies, the current implementation exhibits limited advanced filtering capabilities for transactions, a crucial requirement for robust banking systems. Presently, the process of filtering transactions involves retrieving a substantial number of them and subsequently applying filters within our codebase. This approach, however, proves to be resource-intensive for both C++ Iroha's node and the Python client application.

As part of an ongoing internship project, there is a strategic initiative to enhance the query functionality by introducing optional arguments:


what

which queries

extra information

reason

Add optional argument, description GetAccountAssetTransactionNot present in the WSV database.

Sometimes we need to find transactions containing some text/words. It would be great if it would be possible to have multiple fragments in the query (e.g. when we want to find transactions in the bank, we use some words which we think would be there, but we are not sure what order).

Add optional argument, destinationAccountGetAccountAssetTransactionNot present in the WSV database.Sometimes we need to check all transactions sent to a specific account.
Add optional argument, sourceAccountGetAccountAssetTransactionNot present in the WSV database.Sometimes we need to check all transactions sent from a specific account.
Add an optional argument, 

Send Title in AddAssetQuantity

Not present in the WSV database.Introduce an optional title parameter to the AddAssetQuantity, enhancing functionality within Iroha Core for improved message communication. Ensure corresponding handling capabilities in Iroha CLI for seamless integration.
Add an optional argument, titleSend Title in SubtractAssetQuantityNot present in the WSV database.

Introduce an optional title parameter to the SubtractAssetQuantity, enhancing functionality within Iroha Core for improved message communication. Ensure corresponding handling capabilities in Iroha CLI for seamless integration.


GetAccountAssetTransaction has a parameter account_id, which returns all transactions for the account; it is currently impossible to specify only the destination/source/tx creator account, so it needs to be fixed.

Optionally - there is a bug in Iroha 1 when we use ordering. However, this internship is connected to querying databases, so the mentee may be able to fix it.

An optional description to commands as an alternative: AddAssetQuantity and SubtractAssetQuantity can be implemented. Currently the information on why it was added or subtracted is unavailable. It can be hard to get help, though: HL Iroha 1 is not under active development.

After applying changes to queries/commands, Iroha client libraries should also be updated (probably regenerate code from the protocol buffers).
Client libraries:

Additional Information

Learning Objectives

The mentee will be able to learn the following:

  • the architecture of Iroha (1.x),
  • work in the true spirit of open-source, communicating with the Iroha community, joining calls, etc.
  • writing documentation,
  • following rules of the open-source code of Hyperledger Iroha
  • creating automatic tests of code

Expected Outcome

  • Implementation according to description and plan of documentation and tests.
  • Added the possibility of running modified queries from Iroha's client libraries.
  • Present changes during the Iroha bi-weekly meeting at the end of the internship.

Relation to Hyperledger 

Hyperledger Iroha (documentation, wiki)

Internship project adding Iroha-cpp library in 2022: Implement iroha-cpp library for Hyperledger Iroha 1

Internship project to add extra params to queries GetAccountTransactions and GetAccountAssetTransactions in 2021: Extend HL Iroha queries with optional arguments

Internship project which was adding extra command and queries in 2020: Making HL Iroha Data Model Modular for Interoperability with Other Projects

Mentee Skills

  • Reading English documentation
  • C++ advanced
  • Git
  • basic knowledge of Protobuf
  • CMake
  • Python, Java
  • JSON
  • Postgres and RocksDB

Mentee Open Source Contribution Experience

This project is dedicated to C++ developers, so candidates should attach a short video where they would say something about one of their previous projects.

Future plans

Adding those optional arguments would make it easier for future mentees to modify existing commands and queries or add more to Iroha 1.

Links

"Iroha 1: extend queries with optional arguments" mentorship page on the LFX platform.

Mentor(s) Names and Contact Info


Grzegorz Bazior (AGH University of Science and Technology and Yonix Digital Systems)
email: bazior[you know what]agh.edu.pl
Telegram: @baziorek - preferred
Discord: baziorek#9186


Aleksandr Petrosyan
email:
petrosyan@soramitsu.co.jp
Telegram:
@m3lcore


Andrzej Gruntowski
email: andrzejggru@gmail.com
Discord: Byte#5828