Git Product home page Git Product logo

bcgov / aries-vcr Goto Github PK

View Code? Open in Web Editor NEW
78.0 15.0 67.0 7.31 MB

Hyperledger Aries Verifiable Credential Registry (VCR) is a set of application level software components designed to accelerate the adoption of trustworthy entity to entity communications.

License: Apache License 2.0

Python 94.59% Shell 5.32% Dockerfile 0.09%
verifiable-organizations-network von hyperledger verifiable-credentials trust-over-ip vcr verifiable-credential-registry citz aries hyperledger-aries

aries-vcr's Introduction

Hyperledger Aries VCR

License Lifecycle:Stable

Overview

Aries Verifiable Credentials Registry (VCR), part of the Hyperledger Aries family of Digital Trust technologies, provides a searchable public directory based on Verifiable Credentials (VCs). It was historically known as both OrgBook (which is actually a deployment of Aries VCR) and Indy Catalyst.

Aries VCR is actively developed by the British Columbia Government’s Digital Trust Team in Canada, and the most well-known live example is OrgBook BC.

In an instance of Aries VCR, credentials can be issued from a variety of authorities about subjects in the instance. A core set of credentials are issued by an authority responsible for “creating” the subject. Other credentials can then be issued against the subject of these core credentials. All credentials are stored in a secure digital wallet and accessed via its website or the public API. This means an instance of Aries VCR can be an authoritative public registry of any referenceable information.

A diagram showing the relationship between issuing organizations and Aries VCR, including ways to consume Aries VCR data via the website and API

An instance of Aries VCR also differs from a traditional database in several additional ways, including:

  • Credentials stored in Aries VCR are tamperproof, so any attempt to change the data would be detected
  • Any user can prove exactly which issuer issued a credential, and the issuer doesn’t need to be contacted to make that proof
  • Credentials are cryptographically encrypted when being issued and stored.

Aries VCR is built using open source technologies, and is based on Aries Cloud Agent Python (ACA-Py), a flexible, open-source Aries framework for Digital Trust that’s under continuous and active development. In the four-layer Trust Over IP framework (PDF) Aries VCR sits in the third layer, Trusted Exchanges.

For practical usage, issuers issue their credentials to an instance of Aries VCR using a standard web controller with business logic, such as with the template Aries VCR Issuer Controller.

Users can access data in an instance of Aries VCR through:

  • A searchable website interface, instantly familiar to any web users and fully customizable for any branding or design
  • An API, allowing developers to use the data in any way they need.

Example Applications and Live Services

A well-known live Aries VCR instance is OrgBook BC, a directory containing organizations registered in British Columbia, Canada, as well as licenses and permits issued to those organizations.

Example 1: Business registration

OrgBook BC is a business registration application of Aries VCR. Information about government-registered corporations (name, registration ID, address, directors, and so forth) is the root of trust in an instance of Aries VCR, and then business permits, liquor licenses, and so forth are issued against those corporations. Citizens, organizations and others could then look up a corporation and see up-to-date, proven information and any associated licenses and permits.

Example 2: Vaccination and testing locations

In this application, the root of trust would be government information on approved labs and health sites in a region or across the country. Then, a government regulatory agency would issue credentials against specific locations that are authorized to deliver particular vaccinations and tests.

Example 3: Educational institutions

A national or international registry of educational institutions is a third example. The root of trust might be a regional government (or whoever has oversight of educational institutions) issuing credentials about all diploma-granting institutions. Those credentials could include details about the specific diplomas they’re authorized to grant and the identifier (DID) each institution uses in issuing diploma credentials to individuals.

The model could be extended with another layer or two. For example, it could extend to a national entity issuing credentials about the authority of the regional oversight bodies. And to make it international in scope, a global authority could issue credentials about the national authority.

How to get started

Aries VCR uses standard technologies and common integration patterns. If you’re a developer it should be a relatively minimal effort to get up and running.

If you simply want to see an Aries VCR instance in action, you can try out the OrgBook BC search interface.

Alternatively, if you are just wanting to issue credentials to an existing Aries VCR installation then you need the Aries VCR Issuer Controller repo.

If you wish to create your own instance of Aries VCR, read on.

You will need:

  1. A Hyperledger Indy-compatible ledger to store issuer DIDs and credential schemas. For development, you can use VON Network to run a local Indy instance. For production, you might use a global Indy instance, such as the one run by the Sovrin Foundation.
  2. This repo, run in Docker on a local machine to start.
  3. (Optional) An issuer controller that issues credentials to your Aries VCR instance.

This repo has setup instructions for these three steps (using some old terminology in places).

If you wish to explore the API, a great starting place is the API web interface for OrgBook BC, presented using Swagger. Also, this API repo has a demo of how you can use the REST API to access Aries VCR credentials.

For the client (web) interface, the search is powered by Solr. The user interface is fully customizable; this repo has instructions on building and customizing the interface and theme.

Aries VCR also provides a web hook facility so parties can subscribe to notifications for credential updates. It is possible to subscribe to all new credentials, any updates to existing credentials, or updates to specific credentials.

Credit

Aries VCR was developed by the Government of British Columbia’s Digital Trust Team.

Contributing

Pull requests are welcome! Please read our contributions guide and submit your PRs. We enforce developer certificate of origin (DCO) commit signing—guidance is available on how to achieve that.

We also welcome issues submitted about problems you encounter in using Aries VCR.

License

Apache License Version 2.0

aries-vcr's People

Contributors

alexgmetcalf avatar amanji avatar andrewwhitehead avatar dependabot[bot] avatar esune avatar ianco avatar jljordan42 avatar moskrc avatar nrempel avatar rajpalc7 avatar repo-mountie[bot] avatar seanadipose avatar swcurran avatar usingtechnology avatar wadebarnes avatar wadeking98 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

aries-vcr's Issues

Cleanup hl/indy-agent interop work

This may require pull requests/changes to indy-agent.

We need to support:

  • raw plaintext agent messages
  • wire messages that have been anon/auth_crypted
  • wire messages that have been 'packed'

Add Subscribing to credential change notifications via published webhooks from Credential Registry

Add mechanisms to support client applications subscribing to webhook notifications from an Indy Catalyst Credential Registry. When updates are made to credentials to which clients have subscribed, send a webhook notification that let's them know of the change.

Subscriptions can be at various levels/types of scoping:

  • By Credential Type, for
    • New credential issuances (e.g. show me all new ones, and I'll subscribe to ones about BC companies)
    • Existing credentials (send me updates to all credentials of a certain type)
    • Specific credential streams (when a new credential is issued that replaces an existing one)
  • By Topic across multiple Credential Types (e.g. all credential of all types issued for a given Organization)
  • All - just tell me about everything
  • NTH: Further filtered by some condition (e.g. notify if a given claim in a credential is true)

TBD:

  • APIs to manage subscriptions
  • Method to authenticate subscribers (DID-Auth?) and track their subscriptions
  • Contents of the webhook

Update readme

Add a thorough guide to

  • what steps do I run to get things running?
  • what steps do I take now that I have something running to go through the functionality?
  • what configurations can I control?
  • what is the edit-build-test cycle?
  • how do I run tests?
  • how do I add tests to the test suite?

Add admin messaging (or log file) based Web UI to show connections/messages for Bootcamp

Add a message board to the IndyCat Agent via (ideally) an admin message handler agent and display the data on the screen so that workshop participants can see their connection/messages. Ideally, used A2A messaging that can be reused. If too hard for now - implement as just a public API from IndyCat that can be polled and presented.

workshop.png

Must be completed for us to use at the Indy Bootcamp on March 11.

UI - show the log in various tabs - eg activities, connections list - things that are understandable to the Bootcamp participants.

We plan on reusing this for future bootcamp/workshop scenarios.

Enable the issuer to provide credential type specific i18n translations

Provide a way for issuers to provide credential-type-specific translations for the credentials they issue.

Suggestions from Andrew:

  • In service.yml, allow adding "description_xx" alternatives for the description of each Credential Type.
  • In schema.yml, allow adding "label_xx" alternatives for each claim name (initial one is English) and allow adding "description_xx" alternatives for each description field.

Collect the I18n values at Issuer Registration time and use them in the UI.

Remove the corresponding values from the TOB languages files.

Enforce linting

Enforce code linting and set up automated linting process.

Bring whole codebase up to spec with linting rules.

Investigate connecting indy catalyst agent to the Agent Test Suite in hyperledger/indy-agent

We should investigate the hyperledger/indy-agent repo's Agent Test Suite:

https://github.com/hyperledger/indy-agent/tree/master/test-suite

The goal would be to make sure that we can test the Indy Catalyst Agent against the test suite (by version on both sides) - and others can do the same. If that can't be done - let's take a leadership role in making that happen.

To now, Daniel Bluhm has driven most of the test suite implementation and Daniel Hardman defined a HIPE that defines what the test suite is supposed to do. I'm not sure of the capability defined in either, but that is where to start. HIPE is here.

Enjoy!

Add filters to '/schema' API endpoint

The call to the /schema API endpoint currently returns a list containing all the versions of the schemas that have been published to the ledger, regardless of whether they are still active or not.

It would be useful to have the possibility to only request a list of the latest versions of each schema, and in particular of each schema that is still active (where active means that it appears to be active in ToB).

Question: is there any other API call in ToB that would benefit from the same filtering?

Add a entity resolution API to allow onboarding services to match the data they have to a TheOrgBook Legal Entity

Define a service-to-service search endpoint that allows a Service to call TOB with "flexible" data and have the TOB return matched legal_entity_id's that can be used by the Service to anchor the credential(s) they issue to TOB.

By flexible, we want to allow the service to pass in what data they have - perhaps a name, address and phone number - and have TOB match it against existing TOB search data and return matching records with a confidence score for the match. The Service can then manage how to use the returned results based on the number and confidence of the match - use the data directly or pass it to a person for cleaning the data.

The Service, on matching the data may even be want to do a Proof Request to TOB to get better data for the Service by using the credentials about the legal entities that are stored by the Service.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.