Questions on hyperledger indy technical diagram


#1

Hello Guys,

I see there is 9 indy repositories under hyperledger, so I put them into a diagram.

And I see the following diagram under indy-sdk:
image

Questions:

  1. Is my first diagram correct? I don’t what the difference between indy-node and indy-agent.
  2. In the 2nd diagram, all the CLI/Wrappers will call C Interface which have the indylib behind, what language used in the indylib?
  3. Is there a technical diagram to show which languages is in which part of indy?

#2

Unless you are writing new features in Indy, the main repos you need to know about are:

  • indy-node: contains the code to run an indy network
  • indy-sdk: helps developers write client software that uses indy

Some of the other repos are going to be collapsed over time. indy-agent is the beginnings of reference agents in various languages.

The language used to write libindy is Rust. The interface exposed by libindy is C-callable, so even though it is written in Rust, it is just like a library written in C as far as how it is called, what data types it supports, etc. So C/C++ can consume libindy directly. There are wrappers for libindy, making it easy to write an indy client, for java (or any JVM lang), python, .net, node.js, Rust (for more native-like Rust usage), and objective-C. There is an experimental wrapper in Go. I heard a community member say they were writing a wrapper in PHP, too–but I don’t know where it is or what its status is.


#3

Daniel, thanks for your reply.

I am wondering whether I can do some extension beside self-sovereign identity. For example, I am a Indy Agent and I may just need write some data (like bill payment receipt or send money transaction) the ledger. Is there some sdk API I can use to just write\query data on the ledger? Or I have to modify some Indy code to do that?


#4

A demo of how to write to the ledger and read something back is given here: https://github.com/hyperledger/indy-sdk/blob/master/doc/how-tos/write-did-and-query-verkey/python/README.md

Note that this is writing a DID to the ledger. Writing arbitrary data is also possible using an ATTRIB transaction, but I don’t know of any sample for that.

The main Sovrin production ledger should not be used for these experiments, but you could totally do this with an indy network of your own.


#5

I got it, thanks very much:grinning: