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 | Mentor | Mentee |
---|---|---|
Peter Somogyvari PDT (UTC-7) | Grzegorz Baz CEST (UTC+2) | Han Xu EST (UTC-5) |
...
Category | Index | Current implementation and issue | Expected improvements | Difficulty level | Priority | Github Issue Link |
---|---|---|---|---|---|---|
Iroha connector plugin | 1 | gRPC tls TLS option is not implemented. Currently, only able to pass in tls TLS parameters( tls cert/ tls key/ tls portTLS Cert/ TLS Key/ TLS Port) to iroha test ledger, but those parameters are immediately discarded. | Implement gRPC tls TLS support for Iroha test ledger. (Refer to Cactus PR #1190 as an example. ) | 3/5 | 1 | |
2 | Currently the parameters are hardcoded ( i.e., we can only support new parameters if we recompile the code of the connector and then publish a brand new release of it.) | Parameters should be more generic in the future so that parameter changes can be done dynamically. | 3/5 | 2 | ||
3 | fetchCommits is not implemented. Put it 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 | 4 | ||
4 | 4a. There is no implementation for smart contract 4b. (InvokeContractV1Request) 4c. Call Engine is not implemented. (because Call Engine calls smart contract) ( Currently, intentionally reject the transaction within the ledger, and thus able to test the rejection in the test case. ) | Implement smart contract once Iroha fully supports smart contract. After that, Implement Call Engine and test it. | 3/5 | 5 5 ( will be important once Iroha fully supports smart contract) | ||
5 | 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 supports running SetSettingValue outside genesis.block, implement and test it. | 2/5 | 7 | ||
6 | removePeer is not fully tested. A valid Iroha testnet needs to be constructed to test this command. | Able to manipulate Iroha testnet ( Iroha testnet usually composes of >= 3 Iroha nodes). Then, construct Iroha test within the test case to test removePeer. | 4/5 | 6 | ||
7 | 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 Iroha Javascript library. | Able to produce a pending transaction in the test case. Able to validate the pending transaction via getPendingTrasaction query. | 4/5 | 6 | ||
8 | Prometheus exporter metrics integration is not implemented. | Add prometheus exporter to the Iroha connector plugin. | 2/5 | 6 | ||
Iroha-Javascript library | 1 | Utilized iroha-helpers-ts because the original Iroha Javascript library gives “undefined” as output. However, iroha-helper-ts is based on an old Iroha Javascript library (12/23/2020 release), which does not support some new features. | Construct our own iroha-helper-ts library (outputs tx status and tx hash) based on the Iroha Javascript library, so that it could be upgraded to match the most recent Javascript library. Its output could be further optimized to suit test cases better. | 3/5 | 3 | |
Iroha docker container | 1 | The test cases rely on a modified Iroha v1.2.0 all-in-one (AIO) docker image. However, version 1.2.0 is outdated. | Upgrade the Iroha version the latest version to improve functionality and performance. | 2/5 | 6 | |
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 | 6 | ||
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 | 6 | ||
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 | 6 | Link |
...