I've been looking into the hyperledger indy framework and I wanted to start to build an app to get started but I noticed that there's the sdk that uses Libindy but there's also the Libvcx that is on top of Libindy but I don't know which one to use since they both seem to do the same.
2 Answers
As you've said, LibVCX is built on top of LibIndy.
LibIndy
Provides low level API to work with credentials and proofs. It provides operations to create create credential requests, credentials, proofs. It also exposes operations for communication with Hyperldger Indy ledger.
What Libindy doesn't handle is the credential exchange. If you write backend which issues credential and a mobile app which can request and receive credentials using Libindy, you'll have to come up with some communication protocol to do so. Is it gonna be HTTP? ZMQ? How are you going to format messages? This is what LibVCX does for you. You will also have to come up with solution how will you securely deliver messages and credentials from server to client when the client is offline.
LibVCX
LibVCX is one of several implementations of Hyperledger Aries specification. LibVCX is built on top of LibIndy and provides consumer with OOP-style API to manage connections, credentials, proofs, etc. It's written in Rust and has API Wrappers available for Python, Javascript, Java, iOS.
LibVCX was designed with asynchronicity in mind. LibVCX assumes existence of so called "Agency" between the 2 parties communicating - a proxy which implements certain Indy communication protocol, receives and forwards messages. Therefore your backend server can now issue and send a credential to someone whom it has talked to days ago. The credential will be securely stored in the agency and the receiver can check whether there's any new messages/credentials addressed for him at the agency.
You can think of agency as a sort of mail server. The message is stored there and the client can pull its messages/credentials and decrypt them locally.
What to use?
If you want to leverage tech in IndySDK perhaps for a specific use case and don't care about Aries, you can use vanilla libindy.
If you want to be interoperably exchange credentials with other apps and agents, you should comply with Aries protocol. LibVCX is one of the ways to achieve that.

- 1,883
- 17
- 24
-
Hi, I am currently trying to build a PoC using VCX and the Evernym Connect.me app. As far as I can tell LibVCX requires a cloud agent. The only implementation I have found of such an entity is the Dummy Cloud Agent in the Indy vcx repo. However, since this is written in Rust (in which I am not familiar) I have had trouble figuring out how it works. Do you happen to know of a public VCX Agent spec, I have been looking for a couple of days now but have not been able to locate any info – Nikos T Aug 21 '19 at 10:55
-
Hi @NikosT, I think I'll have to update my answer above. Things have changed and there's more options to go with now. Right now it's questionable whether Evernym will keep updating LibVCX. What you are saying is right, there's nothing other than Dummy Cloud Agent (which is not production grade software). I'd highly advise to take a look at following alternative https://github.com/bcgov/aries-cloudagent-python before you invest yourself in libvcx. – Patrik Stas Aug 23 '19 at 07:57
-
Hi @Patrik many thanks for your kind answer. Unfortunately I was also looking for a production level wallet app and as far as I can tell only Connect.me is ready for use today :( Maybe I have to look into another SSI framework. Again many thanks! – Nikos T Aug 24 '19 at 07:09
The indy-sdk repository is the Indy software that enables building components (called agents) that can interact with an Indy ledger and with each other.
In 2019, at a "Connect-a-thon" in Utah, USA, developers from a variety of organizations gathered to demonstrate interoperability across a set of independently developed agent implementations. At that time, a further idea developed that led to the creation of Hyperledger Aries. What if we had agents that could use DIDs and verifiable credentials from multiple ecosystems? Aries is a toolkit designed for initiatives and solutions focused on creating, transmitting, storing and using verifiable digital credentials. At its core are protocols enabling connectivity between agents using secure messaging to exchange information.
Libvcx is a c-callable library built on top of libindy that provides a high-level credential exchange protocol. It simplifies creation of agent applications and provides better agent-2-agent interoperability for Hyperledger Indy infrastructure. You need LibVCX if you want to be interoperably exchange credentials with other apps and agents, in others words if you want to be comply with Aries protocol. In this case LibVCX Agency can be used with mediator agency which enables asynchronous communication between 2 parties.

- 61
- 1
- 1