Abstract
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 |
---|---|---|---|
Incorporate an optional parameter, "title," to facilitate the inclusion of a title when executing the AddAssetQuantity operation. This addition enhances the flexibility and functionality of the process, allowing for the seamless inclusion of relevant titles as needed. | 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. |
Incorporate an optional parameter, "title," to facilitate the inclusion of a title when executing the AddAssetQuantity operation. This addition enhances the flexibility and functionality of the process, allowing for the seamless inclusion of relevant titles as needed. | Not 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. | |
Add optional argument, description | GetAccountAssetTransaction | Not 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, destinationAccount | GetAccountAssetTransaction | Not present in the WSV database. | Sometimes we need to check all transactions sent to a specific account. |
Add optional argument, sourceAccount | GetAccountAssetTransaction | Not present in the WSV database. | Sometimes we need to check all transactions sent from a specific account. |
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:
- Iroha-python library as a client library
- Iroha-cpp (embedded in Iroha core repository) the core repository
- Iroha CLI as a command line interface
Mentors
Name | Time zone | Discord ID | Telegram ID | Email ID |
---|---|---|---|---|
Aleksandr Petrosyan | CEST | @m3lcore | petrosyan@soramitsu.co.jp | |
Grzegorz Bazior | CEST | baziorek#9186 | @baziorek | bazior@agh.edu.pl |
Andrzej Gruntowski | CEST | Byte#5828 | andrzejggru@gmail.com |
Mentee
Name | Time zone | Discord ID | Telegram ID | Email ID |
---|---|---|---|---|
Tomasz Gruntowski | CEST |
Communication channel: Discord + Telegram + Email + Github
Project repo:
[C++ Core Iroha Lib + Iroha CLI] Introduce an optional title parameter to the AddAssetQuantity and SubtractAssetQuantity, enhancing functionality within Iroha Core for improved message communication. Ensure corresponding handling capabilities in Iroha CLI for seamless integration.
https://github.com/hyperledger/iroha/pull/4003
[Python client] Incorporate an optional title parameter into the AddAssetQuantity function for the Python client, aligning with the enhanced functionality within Iroha Core for optimized message communication.
https://github.com/hyperledger/iroha-python/pull/157
[Confluence Documentation] Update message AddAssetQuantity and SubtractAssetQuantity with extra optional parameter
https://github.com/hyperledger/iroha/pull/4032
[Base Confluence Documentation] Iroha base documentation:
https://iroha.readthedocs.io/en/develop/develop/api/commands.html?highlight=AddAssetQuantity#id80
[C++ Core Iroha Lib] Incorporate additional Protocol Buffers (protobuf) parameters to enhance the extensibility and functionality of the data model within the specified oneof constructs, ensuring a more comprehensive representation and utilization of transaction related information.
https://github.com/hyperledger/iroha/pull/3840
[Python] Integrate supplementary Protocol Buffers (protobuf) parameters into the Python client to augment the extensibility and functionality of the data model within the designated oneof constructs, ensuring a more comprehensive representation and utilization of transaction related information.
https://github.com/hyperledger/iroha-python/pull/156
Deliverables
- Approved library design and flow
Merged PR's
- ToDo
Final Project Presentation:
- ToDo
Milestones
Eval 1:
- Configured environment to handle development library inside Hyperledger Iroha's main repository
- Prepared final design of extended queries with optional arguments
Eval 2:
- Completed extended queries with optional arguments
Eval 3:
- Completed well defined documentation
Eval 4:
- Clean up, refactoring and debugging new features
- Present final results
Timeline
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 | Get familiar with GRPC protocol (e.g. protobufs). | Done |
July 13 - July 26 | Add parameter creator_id to queries.proto. Modify query to database. Modify protobufs for Python code. Run compile-proto.py. | |
July 27 - Aug 9 | Changes in Iroha core. | Done |
Aug 10 - Aug 23 | Changes in Python library for Hyperledger Iroha | Done |
Aug 24 - Sept 6 | More changes in Iroha code. Focus on protobuf changes. Update configuration and documentation files. | Done |
Sept 7 - Sept 20 | Create pull request with Iroha C++ changes. | Done |
Sept 21 - Oct 4 | Create a pull request with Iroha python changes. | Done |
Oct 5 - Oct 18 | Make integration tests with new parameters. | Done |
Oct 19 - Nov 1 | Accommodate iroha core changes to the iroha-lib. | Done |
Nov 2 - Nov 12 | Rebase changes to the one commit. Final modifications. | Done |
Project results
Completed
[C++ Core Iroha Lib + Iroha CLI] Introduce an optional title parameter to the AddAssetQuantity and SubtractAssetQuantity, enhancing functionality within Iroha Core for improved message communication. Ensure corresponding handling capabilities in Iroha CLI for seamless integration.
https://github.com/hyperledger/iroha/pull/4003
[Python client] Incorporate an optional title parameter into the AddAssetQuantity function for the Python client, aligning with the enhanced functionality within Iroha Core for optimized message communication.
https://github.com/hyperledger/iroha-python/pull/157
[Confluence Documentation] Update message AddAssetQuantity and SubtractAssetQuantity with extra optional parameter
https://github.com/hyperledger/iroha/pull/4032
[Base Confluence Documentation] Iroha base documentation:
https://iroha.readthedocs.io/en/develop/develop/api/commands.html?highlight=AddAssetQuantity#id80
[C++ Core Iroha Lib] Incorporate additional Protocol Buffers (protobuf) parameters to enhance the extensibility and functionality of the data model within the specified oneof constructs, ensuring a more comprehensive representation and utilization of transaction related information.
https://github.com/hyperledger/iroha/pull/3840
[Python] Integrate supplementary Protocol Buffers (protobuf) parameters into the Python client to augment the extensibility and functionality of the data model within the designated oneof constructs, ensuring a more comprehensive representation and utilization of transaction related information.
https://github.com/hyperledger/iroha-python/pull/156
Presentation
Completed