Abstract
Idemix (Identity Mixer) is a cryptographic protocol suite, which provides strong authentication as well as privacy-preserving features such as 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
Current Currently, Fabric Java SDK doesnGateway SDK for Java and Fabric Gateway Client API for Java doesn't have support to store use an Idemix Identities in Hyperledger Fabric Walletfor 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 |
...
Communication channel: Discord+ Github
Project repo: https://hyperledger.github.io/fabric-gateway/main/api/java/org/hyperledger/fabric/client/identity/Identity.html , https://hyperledger.github.io/fabric-gateway/main/api/java/org/hyperledger/fabric/client/identity/Signer.html
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 store use Idemix Identity in a Wallet by using Fabric Gateway Client API for Java.
- Ability to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network in both using Fabric Gateway SDK for Java and be able to invoke & query the transaction by signing it using Fabric Gateway Client API for Java.
- Write Unit Tests and Add Examples in fabric-samples Repository.
Merged PR's
- TBD
- TBD
- TBD
...
- 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
Final Project Presentation
- TBD
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 in both using Fabric Gateway SDK for Java.
Eval 3:
- Ability to store use Idemix Identity in a Wallet by using Fabric Gateway Client API for Java.
- Ability Able to use the Stored Idemix Identity from a Wallet to fire transactions to the Hyperledger Fabric Network in Fabric invoke & query the transaction by signing it using Fabric Gateway Client API for Java.
Eval 4:
- End to end Unit and integration testing. Contribute back to fabric java SDK/gateway SDK.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:
| InprogressDone |
July 27 - Aug 9 |
| Done |
Aug 10 - Aug 23 |
| Done |
Aug 24 - Sept 6 |
| Done |
Sept 7 - Sept 20 | ||
Sept 21 - Oct 4 | ||
Oct 5 - Oct 18 | ||
Oct 19 - Nov 1 | ||
Nov 2 - Nov 12 |
...