Project Plan - Extend existing Iroha - Cactus integration
Overview
The project's primary goal is to extend the integration of Iroha and Cactus (Iroha version at least 1.4) and make the connector plugin configurable. It also includes end-to-end testing and documentation of the Cactus-Iroha connector plugin.
Mentor and Mentee
Mentor | Mentor | Mentee |
---|---|---|
Peter Somogyvari PDT (UTC-7) | Grzegorz Baz CEST (UTC+2) | Yashraj Desai IST (UTC+05:30) |
Communication channel: RocketChat/ Public Channels/ Emails/ Microsoft Teams
Project repository:
https://github.com/yashrajdesai/iroha-javascript/tree/main
https://github.com/yashrajdesai/cactus
Project pull requests:
https://github.com/hyperledger/iroha-javascript/pull/110
https://github.com/hyperledger/cactus/pull/2148
https://github.com/hyperledger/iroha-javascript/pull/125
https://github.com/hyperledger/cactus/pull/2166
https://github.com/hyperledger/cactus/pull/2202
Project Plan
Schedule | Task/Plan |
---|---|
Week 1 - Week 2 Jun 1 - Jun 18 |
|
Week 3 - Week 6 Jun 19 - July 9 |
|
Week 6 - Week 10 July 10 - July 30 |
|
Week 10 July 31 - Aug 10 Aug 20-31: Midterm Evaluation |
|
Week 11 - Week 15 Aug 9 - 10 Sept |
|
Week 16 - Week 20 11 Sept - 9 Oct |
|
Week 21 - Week 25 10 Oct - 18 Nov Nov 18: Final Evaluation |
|
Timeline
Week | Task |
---|---|
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) |
|
9 (July 26 - Aug 1) |
|
10 (Aug 2 - Aug 8) |
|
11 (Aug 9 - Aug 15) | |
12 - 13 (Aug 16 - Aug 28) |
|
14 - 15 (Aug 29 - 10 Sept) |
|
16 - 17 (Sept 11 - Sept 24) |
|
18 - 19 (Sept 25 - Oct 9) |
|
20 - 21 (Oct 10 - Oct 23) | |
22 - 25 (Oct 24 - Nov 18) |
Process
- Communication and updates:
- RocketChat/ Public Channels/ Emails/ Microsoft Teams are used as tools.
- Weekly check-in meetings between mentors and the mentee.
Recommendations for future work:
Category | Index | Current implementation and issue | Expected improvements | Difficulty level * | Priority * | Github Issue |
---|---|---|---|---|---|---|
Iroha connector plugin | 1 | gRPC TLS option is not implemented. Currently, only able to generate and pass in TLS parameters( TLS Cert/ TLS Key/ TLS Port) to iroha test ledger, but those parameters are immediately discarded. | Implement gRPC TLS support for Iroha test ledger. (Refer to Cactus PR #1190 and Cactus PR #2202) | 3/5 | 1 | Link |
2 | fetchCommits is not implemented. It is 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 | 2 | Link | |
3 | Test smart contracts by using Call Engine command for the Iroha-Cactus connector. | Implement InvokeContractV1 for Iroha connector once Iroha fully support smart contract. (Refer: Iroha-javascript PR #110) | 3/5 | 3 | ||
4 | setSettingValue is not implemented because this command can only be called inside genesis.block file. (Current connector implementation returns HTTP 405 Error in plugin-ledger-connector-iroha.ts) | When Iroha is able to run SetSettingValue outside of genesis.block, implement and test it. (It is being said that the Iroha team plans to support running SetSettingValue outside of genesis.block.) | 2/5 | 5 | Link | |
5 | removePeer is not fully tested. A valid Iroha testnet needs to be constructed to test removePeer. | Able to manipulate Iroha testnet ( An Iroha testnet usually composes of >= 3 Iroha nodes). Then, construct Iroha test within the test case to test removePeer. | 4/5 | 4 | Link | |
6 | 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) In other words, it seems to be an issue with Iroha ledger itself instead of the Iroha Javascript library. | Able to produce a pending transaction in the test case. Able to validate the pending transaction via getPendingTrasaction query. | 4/5 | 4 | Link | |
7 | Prometheus exporter metrics integration is not implemented. | Add prometheus exporter to the Iroha connector plugin. | 2/5 | 4 | Link | |
Iroha docker container | 1 | An Iroha Python SDK is embedded inside the Iroha AIO docker image for docker healthcheck. Although this healthcheck mechanism works fine, it makes the docker image ~100MB larger. | Once the Iroha team introduces the gRPC healthcheck/ Iroha metrics page in a stable release (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 | 4 | Link |
2 | 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 | 4 | Link |
*For the difficulty level, 1 means the easiest, 5 means the most challenging.
*For the priority listing, 1 means the most important, 5 means the least important. Important ones have been marked as red.