...
Aries-vcx https://github.com/hyperledger/aries-vcx/ is Rust implementation of Aries protocols. The project has 3 main and collection of supporting projects built on top it:
Aries-vcx - the first class citizen Rust crate,library to speak Aries protocols, deal with wallets, interact with ledger
- Mobile applications building blocks:
- deprecated approach: libvcx-java, libvcx-ios: these are C binding which enable calling aries-vcx from Objective-C and Java
- endorsed approach: New approach based on UniFFI is in staged of Proof of Concept. This can generate Swift and Kotlin wrappers for aries-vcx. If you are interestd in mobile development, your contributions here would be invaluable! POC: https://github.com/hyperledger/aries-vcx/pull/737
NodeJS: we have NodeJS bindings to build NodeJS applications - The core implementation, a rust crate on top of which you can build Aries speaking applications. libvcx - Rust layer built on top of aries-vcx crate which produces C-callable library you can consume from any programming language
language wrappers - NodeJS, Java, iOS binding wrappers to hook into libvcx
How to use aries-vcx
How to get involved
We welcome new contributors to improve aries-vcx or build on top of it!
- Talk with us on Discord https://discord.com/channels/905194001349627914/955480822675308604
- Join our bi-weekly community calls via Zoom: Community calls
Built on top of aries-vcx
...
Aries-vcx is generic crate which can be used to build Rust applications and libraries. We strive to be opinion-less to enable arbitrary use-case. Aries-vcx can be used to build web, mobile, cli and potentially embedded agents.
Example of crates built on top of aries-vcx:
- libvcx - wrapper around aries-vcx to enable certain FFI approach
- uniffi wrapper (POC phase) - wrapper around aries-vcx to generate Kotlin and Swift mobile wrappers, using uniffi library
- aries-vcx-agent - simple agent implementation with in-memory storage
- aries-vcx-backchannel - simple web agent built on top of aries-vcx-agent, used for cross testing aries-vcx with other Aries implementations in Aries Agent Test Harness
Consuming as via FFI
Fore-mentioned libvcx provides C-callable API. While we still maintain this crate, there's better ways to build FFI interfaces for Rust crate in 2022. We encourage contributions which would evolve building FFI interfaces on newer technologies such as
Project ideas
- Aries-vcx uniffi wrapper - continue implementation of uniffi_aries_vcx
- This can unlock building native mobile apps with aries-vcx
- This can unlock building native mobile apps with aries-vcx
- Aries mediator client - implement rust client capable of connecting with mediation agent and use pick-up protocol https://github.com/napi-rshyperledger/node-rs
- https://github.com/mozilla/uniffi-rs
How to get involved
We welcome new contributors to improve aries-vcx or build on top of it!
- Talk with us on Discord https://discord.com/channels/905194001349627914/955480822675308604
- Join our weekly meetings, anyone is welcome - find the next Aries-vcx Rust meeting with Zoom link in calendar https://lists.hyperledger.org/g/aries/calendar?calstart=2022-11-10
Project ideas
- aries-rfcs/tree/main/features/0685-pickup-v2 to receive messages
- This can unlock integration of aries-vcx with different aries mediation agent implementations! This is extremely important for mobile use-cases.
- This can unlock integration of aries-vcx with different aries mediation agent implementations! This is extremely important for mobile use-cases.
- Verifier agent - build aries agent specialized for proof verification
- In the real world, there will be presumably handful of issuers but likely many verifiers! Deploying full featured agent capable of both issuance, verification and perhaps other protocols can be complex, a narrowly focused Verifier agent could be built on
aries-vcx
. This would require minimal configuration, the agent can be largely stateless as it would only need to READ ledger, not write. Aries-vcx is perfectly positioned to be core of high-performance proof verifier.
- In the real world, there will be presumably handful of issuers but likely many verifiers! Deploying full featured agent capable of both issuance, verification and perhaps other protocols can be complex, a narrowly focused Verifier agent could be built on
- Load tester - create tool to simulate many agents simultaneously
Load tester - aries-vcx can many wallets and many pool connections, being written in Rust making it great candidate as high-performance tool to test server implementations- Creating tool which can represents many agents can be useful for load/stress testing across the aries ecosystem
- CLI agent - building on top of aries-vcx-agent and some of many console UI interface frameworks available in Rust, you could build tool to manage an Aries agent from CLI interface
- First implementation POC done! https://github.com/hyperledger/aries-vcx/pull/692
- First implementation POC done! https://github.com/hyperledger/aries-vcx/pull/692
- Aries message mediator - you could build aries -compliant mediator - sort of mailbox for encrypted aries message, this is useful to enable asynchronous communication for mobile devices.Aries anonymizer - similar to mediator, a simpler implementation could be created which would simply forward messages to other destination. Sort of "nginx specialized for Aries".mediator
- there's nodejs implementation of aries-mediator-service in progress, but hey, why not to build an alternative!
- there's nodejs implementation of aries-mediator-service in progress, but hey, why not to build an alternative!
- Embedded device aries agent - we are no aware of anyone yet trying building embedded with aries-vcx
- Credential faucet - simple web agent with UI capable of issuing some credential by scanning a QR code. Having something like that deployed against Sovrin networks, it could be useful for wide ecosystem of developers.
Research ideas
- try to build aries agent for embedded uses case
- this is yet rather unknown journey, who knows what it entails?
- DID parser - a proper DID type and parser
- DIDs, while similar to URLs, have slightly different composition.
- we need to be able to compose and decompose DIDs in a consistent manner
- DID resolver - a component that takes a DID and returns the data it points to
- things such as
DIDDocs
orservices
are stored on the ledger (or some other place) and need to be retrieved by resolving their DID
- things such as
- Protocol Registry - a static, compile-time component that holds the protocols and versions an agent supports
- the first implementation uses a lazily initialized map
- a better approach would be to have code generation in place controlled by feature flags
Research ideas
- Can How to leverage https://github.com/sicpa-dlab/didcomm-rust in dependency be leveraged by
aries-vcx
?