alastria / alastria-identity

Alastria Identity Model and Smart Contracts
https://alastria.io/en/id-alastria/
MIT License
38 stars 24 forks source link

ALASTRIA IDENTITY 1.0

Self-sovereign identity (SSI) implementation on Alastria network.

At this moment, this solution has been developed and tested for Quorum (Geth) on the Alastria Red-T network. More information about its nodes and the network can be found in the alastria-node repository. In the future, the objetive is that this works with other Alastria networks such as Besu Red-B or Hyperledger Fabric Red-H.

A mobile Alastria Wallet on IONIC has been developed as a reference implementation to exploit and explore the self-sovereign identity concept. It has the logic for managing credentials to be stored and sended when required. Also, the app asks for user aceptance. Code is available on the alastria-wallet repository where you can download an APK to install in your Android mobile phone for demo purposes.

To interact with the identity contracts, there is also a library to use from the wallet in the alastria-identity-lib repository.

And finally, if you are looking for a way to use it inside your Web page you can find information and examples in the alastria-identity-examples repository.

Alastria Self-Sovereign Identity Model

To deepen the model, you have all the information in the wiki.

Contracts

Contracts must be deployed by Alastria Core Identity Team. The version, the addresses and the ABIs of the deployed contracts are always updated at ContractInfo.md and at the contracts/abi folder. If you want to deploy them in your test-environment you can use dev-tools/deployContracts.

The GIST ID to open these smart contracts on Remix is 65747824fd972fcde14bac5101489032. Any contribution must follow the code quality rules for developers.

This SSI model has been implemented with three groups of contracts:

1. Identity Manager

Contract What it does
AlastriaIdentityManager.sol It generates access tokens, creates identities, deploys an AlastriaProxy for each identity and sends transactions through the proxy of the sender
AlastriaProxy.sol It is the Alastria ID itself. Only receives transactions from the IdentityManager and resends them to the target
AlastriaIdentityIssuer.sol It keeps a registry of the issuers identities
AlastriaIdentityServiceProvider.sol It keeps a registry of the service providers identities
AlastriaIdentityEntity.sol It keeps a registry of the entities

2. Registry

Contract What it does
AlastriaCredentialRegistry.sol It manages all the credentials and keeps the registry and the status
AlastriaPresentationRegistry.sol It manages all the presentations and keeps the registry and the status
AlastriaPublicKeyRegistry.sol It manages all the public keys and keeps the registry

3. Libs

The previous contracts use some libraries which are:

Contract What it does
Eidas.sol It manages Eidas level of assurance for credentials
Owned.sol It assures that just the account which deployed a contract can update the version

Up & Running

Download and install:

$ git clone https://github.com/alastria/alastria-identity.git
$ cd alastria-identity
$ npm install

Developers tools

On the dev-tools directory you can find some interesting functionalities for developers and quick testing:

dev-tool What it does
createFakeIdentities Creates some fake Alastria identities to play with. You already have 5 mock-identities to play with!
deployContracts Deploys the contracts on the chosen network and, if it is Alastria T-Network, it updates their address, ABI and version on this repository
serviceprovider Service Provider site, capable of doing login and sending credentials

How to test AlastriaID compliant

As the AlastriaID is a ID Model, plus an Reference Implementation of the SC and APIs and, additionally, a demo wallet and a demo entity provider, it is highly recommended that all the identity projects that will aim to use the AlastriaID Model or even the SC or the API, will pass a test to verify compatibility with the AlastriaID reference implementation. Please visit the documents to do an autocheck validation under the autocheck directory. A set of automated test will be detailed soon to be used also by all the projects.

Need Help?

Our identity core team will be happy to listen to you at slack #identidaddigital