Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between hyperledger indy-sdk and Libvcx?

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.

like image 388
Alam Téllez Avatar asked Jan 27 '23 14:01

Alam Téllez


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.

like image 185
Patrik Stas Avatar answered Mar 07 '23 02:03

Patrik Stas


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.

like image 43
CryptoKate Avatar answered Mar 07 '23 03:03

CryptoKate