Abstract
Aries-VCX is a collection of Rust crates which provide APIs for stepping through Hyperledger Aries Protocols. Previously, Aries-vcx has provided it's functionality to mobile (android and ios) consumers via a wrapper layer known as libvcx. Libvcx wraps over aries_vcx functionality and creates C-callable FFI bindings, and provides Java and Objective-C bindings for calling those bindings from mobile ecosystems. Overtime, manually maintain libvcx has become quite a chore, and does not leverage new FFI tech which is now available. The goal of this mentorship project, is to create new mobile bindings using the UniFFI tool, which from initial prototyping has shown a lot promise.
Mentor and Mentees
Mentors
Patrik Stas, Discord: Patrik Stas#7722, Absa Group
Bogdan Mircea, Discord: bobozaur#5997, Absa Group
Miroslav Kovar, Discord: mirgee#3763, Absa Group
George Mulhearn, Discord: gmulhearn#0356
Mentee
Swapnil Tripathi, Discord: swaptr, Github: https://github.com/swaptr
Deliverables
- Create Android binary + bindings compilation scripts for the existing UniFFI prototype in aries-vcx: https://github.com/hyperledger/aries-vcx/tree/main/uniffi_aries_vcx
- Bootstrap sample android demo application, which consumes the existing prototype's bindings and binaries
- Update existing prototype to use newer aries_vcx functionality (switch from vdrtools profile to modular_libs profile)
- Create bindings for all
Connection
APIs and update sample app accordingly - Create bindings for all
Holder
APIs and update sample app accordingly - Design/Discover APIs for a rust mediator client
- Implement APIs for a rust mediator client
- Create bindings for mediator client and update sample app accordingly
- Create bindings for all
Prover
APIs and update sample app accordingly - Update existing prototype to use newer aries_vcx functionality (switch from vdrtools profile to modular_libs profile)
Bonus Deliverables
- Create CI for compiling and packaging an Android SDK deliverable with aries_vcx and mediator client functionality
- Consider async API optimizations (how can be improve on the existing
run_blocking
approach.. UniFFI may have support for this later in the timeline!) - Create CI for compiling and packaging an iOS SDK deliverable with aries_vcx and mediator client functionality
...
- Comfortable with aries-vcx and UniFFI tool
- Script for building uniffi_aries_vcx android consumables developed
- Sample app bootstrapped and consuming/demonstrating uniffi_aries_vcx bindings
Eval 2:
- Connection APIs wrapped in UniFFI
- Holder APIs wrapped in UniFFISample app updated to demonstrate Connection APIs
- Sample app updated to demonstrate Holder APIs
Eval 3:
- Designed mediator client implementation
- Implemented mediator client implementation
- key registration
- message pickup
- Holder APIs wrapped in UniFFI
Eval 4:
- mediator client APIs wrapped in UniFFI
- Prover APIs wrapped in UniFFI
- Migrate to modular libs stack (credx, indy-vdr)
- Sample app updated to demonstrate Prover APIssupport Holder flow (receive a credential)
Timeline
Dates | Tasks/Plan | Status |
---|---|---|
Jun 12 - Jun 26 | Mentee intro with the mentor. On-boarding:
| ✅ |
Jun 27 - Jul 10 |
| ✅ |
Jul 11 - Jul 24 |
| ✅ |
Jul 25 - Aug 7 (Jul 28 eval) |
| ✅ |
Aug 8 - Aug 21Complete Holder API uniffi bindings |
| ✅ |
Aug 22 - Sep 4 (Sept 1 eval) |
| ✅ |
Sep 5 - Sep 18Implement mediator client key registration related APIs (i.e. creating initial connection with mediator service) |
| ✅ |
Sep 19 - Oct 2 |
| ✅ |
Oct 3 - Oct 16 (Oct 13 eval) |
| ✅ |
Oct 16 - Oct 30 |
| ✅ |
Oct 31 - Nov 6 |
| |
Nov 7 - Nov 30 (Nov 30 eval) |
|
...