Description
The current fabric (packages/cactus-plugin-ledger-connector-fabric) and vault(packages/cactus-plugin-keychain-vault) connectors are not cli-friendly. By cli-friendly, I refer to their use via api-server connector (packages/cactus-cmd-api-server).
To import and initialise fabric/vault connector over api-server, one can include them as
docker run \ --rm \ --publish 3000:3000 \ --publish 4000:4000 \ --env AUTHORIZATION_PROTOCOL='NONE' \ --env AUTHORIZATION_CONFIG_JSON='{}' \ --env GRPC_TLS_ENABLED=false \ cas \ ./node_modules/.bin/cactusapi \ --plugins='[{"packageName": "@hyperledger/cactus-plugin-ledger-connector-fabric", "type": "org.hyperledger.cactus.plugin_import_type.LOCAL", "action": "org.hyperledger.cactus.plugin_import_action.INSTALL", "options": { "connectionProfile": {}, "instanceId": "some-unique-instance-id"}}]'
The problem with this sort of import is that,
In case of fabric connector: The IPluginLedgerConnectorFabricOptions
currently expects the user to pass in a lot of information and some of the information like the pluginRegistry
is very difficult to pass as a JSON stringified object. Also passing a huge connectionProfile
as a flatten JSON string is not a good practice (sometimes the network can be huge and this could lead to a 50 liner docker run...
command)
In case of vault connector: The token
passed via IPluginKeychainVaultOptions
should have an option so that the plugin can pickup the token during initialisation from environment variable.
Additional Information
For additional information, one can check out the current usage of plugins within the api-server docs
Learning Objectives
Through this, the mentee can learn production grade best practices along with the usage and creation of Hyperledger Cacti plugins and their interaction with the api-server
Expected Outcome
The following outcomes are expected from this:
- Modification of fabric-connector by introducing optional fields to the constructor, to facilitate the above mentioned goals in a way, it has minimal to no impact on the example usecases/testcases
- Modification of the vault-connector by introducing optional fields to the constructor, to facilitate the above mentioned goals in a way, it has minimal to no impact on the example usecases/testcases
Relation to Hyperledger
Hyperledger Cacti
Mentee Skills
- Expertise in JS/TS coding
- Prior knowledge/hands-on experience related to Cacti and its connectors
Future plans
This project will enable us to rework on the Fabric connector which provides the same current functionality with minimum user inputs, taking into consideration the production grade angle of the ledger environments.
Mentor(s) Names and Contact Info
Peter Somogyvari, Accenture, Discord ID: peter_somogyvari#3365
Sownak Roy , Accenture, Discord ID: Sownak#7728
Jagpreet Singh Sasan , Accenture, Discord ID: axetacular#2402