Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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!

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

How to get involved

We welcome new contributors to improve aries-vcx or build on top of it!

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.

  • 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. 

  • 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
  • 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!

  • 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  or services  are stored on the ledger (or some other place) and need to be retrieved by resolving their DID


  • 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