sovrin-foundation / old-sovrin

Open source code base for Sovrin Identity Network public/permissioned distributed ledger
Apache License 2.0
52 stars 25 forks source link

API's #25

Open kc1116 opened 8 years ago

kc1116 commented 8 years ago

where are the API's to build apps that utilize this thing?

dhh1128 commented 8 years ago

There are two basic ways to integrate with the sovrin ecosystem:

  1. talk directly to the ledger
  2. talk to an "agent"--software that works on behalf of an identity owner, and mediates between the sovrin ledger and a more familiar world like mobile app development, RESTful web services, etc.

1 is possible, but the protocol that's used (RAET; see https://github.com/saltstack/raet) is highly specialized. This is the way the current CLI and Getting Started tutorial talk to the ledger to get things done. I believe it's not the ideal long-term solution because RAET binds sovrin too tightly to python. I prefer a solution that's easily callable in a variety of programming languages. (When I say "I" here, I'm trying not to speak too officially for the Sovrin Foundation, but I am connected with them and think I have some influence.)

2 is entirely possible, but today it's not yet defined. There is a discussion about both APIs and the communication protocols that they use in the latest agent design doc on the wiki: https://github.com/sovrin-foundation/sovrin/wiki/Perspectives-on-Agent-Design

I expect clarity on this issue to begin to emerge in the next two weeks. This might be an excellent discussion topic for the next user community call on Nov 21.

kc1116 commented 8 years ago

Thank you for the swift reply. This technology looks awesome and very promising but as a developer first thing I want to do is write a "hello world" app using it. From your reply I am assuming that it won't be a straightforward thing to do and you guys are still making decisions on API , Protocol , design etc. Is it safe to assume that?

dhh1128 commented 8 years ago

@kc1116 that is partly correct. Today the CLI is the easiest way to experiment. It would not be hard as a developer to take the CLI and turn it into a "hello world" app if you felt inclined; as a small python package it's eminently hackable. Underneath, the CLI is turning human-friendly commands into calls over RAET that submit transactions like "NYM" (which creates an identifier for a user on the ledger). Inspecting the CLI's code will uncover the other ledger transaction types.

In the next few weeks, I expect visible progress on more traditional APIs.