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.