aries
go
review
Aries Go Framework is an Aries-compatible agent with implemented REST API. Right now only DID Exchange functionality is implemented along with DID transport. Also JWT credentials are implemented.
It looks like it will be easy to integrate this framework into software – framework structure is clean and simple. Option builder looks easy to use, so initialization is a good example of usage.
Golang provides good functionality for documentation that is published on godoc.com – it is easy to use and informative. Aries Go Framework has a good documentation on that site – here is the link: https://godoc.org/github.com/hyperledger/aries-framework-go
May be I am not really familiar with Golang usual code structure but it was pretty hard for me to find the entry point in DID Exchange package for example. It is possible that it should be better documented where to look first.
Right now Aries Go Framework have JWT Credentials implemented. There are BDD tests that show their correctness. However, they are incompatible with CL credentials that are implemented in Libindy.
The easiest way to support the interoperability is to make some Golang wrapper (it may be partial, only for anoncreds part) around Libindy and reuse it. This way may not fit the requirements of framework as it needs to be portable as far as I know.
The other way is to make a wrapper around LibUrsa and to make the same structures for proofs, proof requests and credentials. Libursa has portable builds that would not require any system dependencies but it will require more time and more tests to implement.
From the first glimpse Aries Go Framework seems to be more flexible – its configs are built not only with configs like vcx (pretty obscure ones to be honest) but with calls of different methods on context or framework object.
Right now LibVCX is in some tested again Aries Test Suite (work and discussion is in progress) and I do not have any data about compatibility of Go Framework with the test suit. However, this complaint is less relevant because test suit is still in the draft state.
About Anoncreds – I don't know how much useful JWT credentials are useful in Aries ecosystem, CL credentials are used by several agents by now. What is more, LibVCX has already implemented Credential Issuance and Proof Presentation RFCs.
Right now LibVCX and Go framework have two different connection protocols implemented – LibVCX implemented Connection Protocol and Go framework has DID Exchange. Connection protocol is a legacy way of establishing a secure channel for interaction between agents but DID Exchange is still in a proposed state. As a result, integration will be a painful process, but most likely LibVCX will have to implement DID Exchange in some future.
Our vision on a common interaction workflow is similar – LibVCX has caches as has stores for different connections and interaction threads.
REST API in Go framework is a useful piece of functionality and it is good that it is implemented outside of the framework itself. LibVCX does not have such a feature.
Current implementation status of RFCs in aries-framework-go (and an RFC wish list): https://github.com/hyperledger/aries-framework-go/issues/920
Initial scaffolding for a generic API into the framework - this one shows the WASM and JS Worker version
https://github.com/hyperledger/aries-framework-go/commit/461943a54d9324302a3bd85d7e9842008b6b669c
Did you evaluate LibIndy before taking your own approach?
We have heard that it is hard to consume C libraries inside of Go. Is that correct?
Are you happy with the C callable API that you experimented with?
What was your experience with adding WASM support?
Why do you implement JWT credentials instead of Anoncreds?
Do you expect to be able to hold Indy credentials?
What are your plans for interopability testing?
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing