Overview
The main goal of the project is to create a documented Iroha (1.x) package for the Cactus project, which demonstrates the interoperability between Iroha and Cactus. The project also includes 3 documented examples of integration between Iroha and Cactus, and 2 documented examples of integration between Iroha and Fabric. The documentation will benefit the community so that people can understand this project.
Mentor and Mentee
Mentor | Mentor | Mentee |
---|---|---|
Peter Somogyvari PDT (UTC-7) | Grzegorz Baz CEST (UTC+2) | Han Xu EST (UTC-5) |
Communication channel: Telegram/ RocketChat/ Public Channels/ Emails/ Microsoft Teams
Project repo:
https://github.com/hyperledger/cactus
https://github.com/hyperledger/iroha
Project Plan
Schedule | Task | Deliverable |
---|---|---|
Week 1 - Week 3 Jun 1 - Jun 18 Jun 18: 1st Quarter Evaluation |
|
|
Week 3 - Week 6 Jun 19 - July 9 July 9: Midterm Quarter Evaluation |
|
|
Week 6 - Week 10 July 10 - July 30 July 30: 3rd Quarter Evaluation |
|
|
Week 10 July 31 - Aug 10 Aug 20-31: Final Evaluation |
|
|
* Will wrap up all codes-relevant stuff by Aug 5.
Timeline
Week | Task | Weekly Slide |
---|---|---|
1 (Jun 1 - Jun 6) |
| |
2 (Jun 7 - Jun 13) |
| |
3 (Jun 14 - Jun 20) |
| |
4 (Jun 21- Jun 27) |
| |
5 (Jun 28- July 4) |
| |
6 (July 5 - July 11) |
| |
7 (July 12 - July 18) |
| |
8 (July 19 - July 25) |
Process
- Communication and updates:
- Telegram/ RocketChat/ Public Channels/ Emails/ Microsoft Teams are used as tools.
- Weekly check-in meetings between mentors and the mentee.
- Quarterly evaluations on Jun 18/ July 9/ July 30/ Aug 20.
Recommendations for future work:
Category | Index | Current implementation and issue | Expected improvements | Difficulty level |
---|---|---|---|---|
Iroha connector plugin | 1 | Call Engine is not implemented. (made the transaction rejected within the ledger, and thus rejected in the test case. ) | Implement Call Engine command and test it. | |
2 | setSettingValue is not implemented. (returned http 405 Error in plugin-ledger-connector-iroha.ts) | Implement SetSettingValue command and test it. | ||
3 | removePeer is not fully tested. A valid Iroha testnet needs to be constructed to test this command. | Able to manipulate Iroha testnet (>= 3 Iroha nodes are recommended). Then, construct Iroha test within the test case to test removePeer. | 4/5 | |
4 | fetchCommits is not implemented. Inside the plugin-ledger-connector-iroha.ts, but unable to test it due to its unique characteristic of streaming responses. | fetchCommits could be implemented as something similar to Besu connector's WatchBlockV1. | 3/5 | |
5 | getPendingTransaction is not fully tested. There is an issue with producing a pending transaction, the code will get stuck and fail the test suite. It seems like Iroha ledger itself is struggling to generate the pending transaction. (https://jira.hyperledger.org/browse/IR-1010) | Able to produce a pending transaction in the test case. Able to validate the pending transaction via getPendingTrasaction query. | 4/5 | |
Iroha-Javascript library | 1 | Utilized iroha-helpers-ts. It could be upgraded to match the most recent Javascript library. Its output could be further optimized to suit test cases better. | Improve the JS library. The JS library gives “undefined” as output. It would be better for us to do the testcases if it outputs tx status and tx hash. | 3/5 |
Iroha docker container | 1 | The test cases rely on a modified Iroha v1.2.0 all-in-one (AIO) docker image. Version 1.2.0 is a little bit outdated. | Iroha version should be upgraded to improve Iroha ledger's performance. | 2/5 |
2 | Embedded Iroha Python SDK inside the Iroha AIO docker image. Although the current healthcheck mechanism works fine, it makes the docker image ~100MB larger. | Once the Iroha team introduces the grpc healthcheck/ make metrics page an option in a release version (e.g., v1.2.2), implement healthcheck mechanism through grpc healthcheck or curl the metric page. `curl http://127.0.0.1:8080/metrics` | 2/5 | |
3 | Each Iroha docker container relies on a corresponding Postgres database container to store information. | Replace the Postgres database docker container with RocksDB, which needs just one folder (a docker volume) to keep data between different runs of image.) | 3/5 | |
Documentation | 1 | For docs/source/support/iroha.md, the test link is not guaranteed to be valid. | Once the current Iroha connector plugin PR gets merged/released, update the test link to be a valid link. | 1/5 |