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 because the original Iroha Javascript library gives “undefined” as output. It could be upgraded to match the most recent Javascript library. Its output could be further optimized to suit test cases better. | Construct our own iroha-helper-ts library (outputs tx status and tx hash) based on the Iroha Javascript library. | 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. | Upgrade the Iroha version 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 |