LibVCX was library donated into IndySDK by Evernym around 2018. At that point of time Aries did not yet exist, and the library contained custom proprietary communication protocols of Evernym. In early 2020, Evernym has contributed implementation of the main Aries protocols. Later on in summer 2020, Absa has decided to fork the library, deleted legacy code and worked on improving code quality. In October 2020, Absa's forked version was brought back under Hyperledger umbrella and rebranded to "AriesVCX".
The further development of the library can be split into a few phases, roughly marking important architectural milestones.
- We could call the phase from Absa's fork up until return to Hyperledger as Phase 0, the most of the code cleanup and code restructuring happened. We have
- ✅ deleted legacy code,
- ✅ migrated CI to Github Actions (building docker, ios, android artifacts)
- ✅ changed library testing approach (favoring integration testing in language wrappers, removing encrypted mock inputs on rust-level unit testing)
- ✅ thinned language wrappers (wrappers should use functions to access data, rather trying to map out Rust data structures).
This phase is all about decoupling parts of the library into independent modules. We have decoupled the library into 3 pieces.
- ✅
mediator agent client
- client for talking to a compatible agencies - the only open source implementation available is vcxagencynode. - ✅
aries-vcx
- the "glue" between Aries state machines,libindy
and mediator agent. - ✅
libvcx
- adds memory management and C bindings on top ofaries-vcx
- making it consumable on Android, iOS and any programming language.
- ✅ Migration from
libindy
to its fork vdr-tools. - ✅ Removal of blocking calls to
vdr-tools
- ✅ Support for public DID-based connection invitations
- ✅ Support for out-of-band protocol
- ✅ Implement testing backchannel for aries-vcx. Test runs
- ✅ Removal of global state from
aries-vcx
- ✅ Support wallet multi-tenancy on aries-vcx level
- ✅ Extract
aries-vcx::messages
module intoaries-messages
crate - ✅ Implement simple aries agent on top aries-vcx
- ✅ Implement
aries-vcx - AFJ
AATH back-channel pair - 🚧 Remove FFI layer between
aries-vcx --- vdr-tools
- 🚧 Concise
aries-vcx
public crate API - Update public agents' API to enable for receiving messages directly, without a mediator intermediary.
- Update connection protocol implementation to make use of mediator optional
- Extract
aries-vcx::protocols
module intoaries-protocols
crate - Extract
aries-vcx::did_doc
module intodid-doc
crate - Publish crates to crates.io
- Implement
did-exchange
protocol - Add support for full did format, such as
did:sov
,did:peer
- Unify approach for Aries FSM interface across protocols
- Abstract away concept "wallet handle" and "pool handle" from
aries-vcx
codebase
- Use
indy-vdr
to facilitate ledger calls