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.
To deepen the model, you have all the information in the wiki.
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:
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 |
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 |
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 |
Download and install:
$ git clone https://github.com/alastria/alastria-identity.git
$ cd alastria-identity
$ npm install
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 |
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.
Our identity core team will be happy to listen to you at slack #identidaddigital