Project Plan - Identity Mixer Support for both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java
Abstract
Idemix (Identity Mixer) is a cryptographic protocol suite, which provides strong authentication as well as privacy-preserving features such as anonymity, the ability to transact without revealing the identity of the transactor, and unlinkability, the ability of a single identity to send multiple transactions without revealing that the transactions were sent by the same identity. More details here - https://hyperledger-fabric.readthedocs.io/en/release-2.2/idemix.html
Currently, Fabric Gateway SDK for Java and Fabric Gateway Client API for Java doesn't have support to use an Idemix Identities for transactions doing in Hyperledger Fabric. The objective of this mentorship program is to give support to store Idemix Identities in a Wallet and be able to use the same to invoke and query the transaction in a Hyperledger Fabric Network.
Mentors
Name | Time zone | Discord ID | Email ID |
---|---|---|---|
Kamlesh Nagware | IST | knagware#6976 | kamlesh.nagware@gmail.com |
Mentee
Name | Time zone | Discord ID | Email ID |
---|---|---|---|
Kavin Arumugam | IST | KArumugam#1934 | a.kavin24@gmail.com |
Communication channel: Discord+ Github
Hyperledger Fabric Repositories involved in this project:
Deliverables
- Ability to store Idemix Identity in a Wallet by using Fabric SDK for Java & Fabric Gateway SDK for Java.
- Ability to use Idemix Identity in a Fabric Gateway Client API for Java.
- Ability to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network using Fabric Gateway SDK for Java and be able to invoke & query the transaction by signing it using Fabric Gateway Client API for Java.
- Demonstrate the usage of Identity Mixer Identity by using both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java.
Implementation
- Fabric SDK for Java:
Goal: Return Identity Mixer Identity as an Encoded String so that it can be stored in a Wallet.
Code: https://github.com/KarthikKavinA/fabric-sdk-java/commit/5593dd7fcbcd6b22dfb1b387e603e09f2f18cfa9
- Fabric Gateway SDK for Java:
Goal: Add an implementation to store an Identity Mixer Identity in a Wallet.
Code: https://github.com/KarthikKavinA/fabric-gateway-java/commit/75c0250034151729abb1089790ea07d1722a4f8b - Fabric Gateway Client API for Java: (Strongly recommended for applications using Fabric V2.4 and later)
Goal: Provide Identity Mixer Identity Signing Capabilities and using the same to invoke & query the transaction
Code: https://github.com/KarthikKavinA/fabric-gateway/commit/75cd65c722ce0bd777e74d658995641aac2b294a
- Demo Application for using Idemix Identity in Fabric
Code: https://github.com/KarthikKavinA/fabric-idemix-identity-demo
Final Project Presentation
Milestones
Eval 1:
- Ability to store Idemix Identity in a Wallet by using Fabric SDK for Java & Fabric Gateway SDK for Java.
Eval 2:
- Ability to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network using Fabric Gateway SDK for Java.
Eval 3:
- Ability to use Idemix Identity in a Fabric Gateway Client API for Java.
- Able to invoke & query the transaction by signing it using Fabric Gateway Client API for Java.
Eval 4:
- Demonstrate the usage of Identity Mixer Identity by using both Fabric Gateway SDK for Java and Fabric Gateway Client API for Java.
Timeline
Dates | Tasks/Plan | Status |
---|---|---|
June 1 - June 14 |
| Done |
June 15 - June 28 |
| Done |
June 29 - July 12 |
| Done |
July 13 - July 26 | Basic Flow Test of Idemix Usage in Fabric:
| Done |
July 27 - Aug 9 |
| Done |
Aug 10 - Aug 23 |
| Done |
Aug 24 - Sept 6 |
| Done |
Sept 7 - Oct 4 |
| Done |
Oct 5 - Nov 1 |
| Done |
Nov 2 - Dec 19 |
| Done |
Discussions & Clarifications
- https://discord.com/channels/905194001349627914/946761626072277002
- https://discord.com/channels/905194001349627914/943089887589048350/945341135977582642
- https://discord.com/channels/905194001349627914/1052794417917984788