Table of Contents
- Morpheus and DIDs
- Current and Future Features
- How to Use
Morpheus and DIDs
Morpheus relies on the Hydra Blockchain and custom transactions to build a repository of DID documents. These documents establish the identity of an entity even when using different cryptographic keys over time, and contain no personal identifiable information. Personal data will be stored elsewhere (decided by the users and service providers), using the Morpheus DB for establishing validity of information.
This way, Morpheus far exceeds the GDPR requirements.
Additionally, Morpheus DID Documents allow referencing other web locations that contain additional information about the entity (service endpoints), allowing for publicly claiming DIDs.
Morpheus forms the basis of secure transmission and validation of personal information in the IOP ecosystem and will enable a multitude of use-cases, such as the ones described below:
- separating personal and business roles
- digitalized ID documents
- digital tickets for public transport, cinemas, concerts, etc. (both personalized and non-personalized)
- KYC and AML verification with minimal data disclosure
- reusing verification with different service providers
- offline verification of ID ownership
- and many more
Current and Future Features
[ x ] Query implicit DID Documents [ x ] Add/Revoke Key to DID [ x ] Add/Revoke Right to DID [ x ] Tombstone DID [ x ] Dry run on state [ ] Add/Remove Service Endpoint
How to Use
Morpheus will be used as by default plugin on the Hydra chain, hence will be shipped with the Hydra core code. However this repo can also be used standalone for demo and testing purposes until we provide an SDK.
Under the examples package you will see example codes for all available API.
- Node v12.13.1
# Install nvm to easily switch between node versions $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.1/install.sh | bash # Install node itself using nvm $ nvm install v12.13.1 # Set the just installed version 12 as default $ nvm alias default v12.13.1 # Check versions $ node --version v12.13.1
- npm 6.13.4
We use Lerna for this multipackage project. We have these commands available under the root:
# Installs all dependencies $ npm install
# Cleans all packages' node_modules and dist directory including the root itself $ npm run clean
# Builds all packages $ npm run build
# Runs all packages' tests $ npm run test
# Runs EsLint on all packages' code $ npm run lint
Here we describe how can the packages be used and what responsbility a package has.
This package contains a command line NodeJS application where you can try out the available endpoints. There you can also observe the code to see how the components (like did-manager) are used. For more details how to use it, please check its README.
Note: it requires a node running that supports Morpheus.
This package contains all business logic that needed for DID management, hence can be used for building Morpheus transactions and parsing results.
This is a Hydra plugin that will be started up when your node is running. Receives block events (Layer 1) and forwards it to the business logic (Layer 2).
This is a webassembly binding for our keyvault written in Rust.
A simple logging utility used by multitple packages. Uses Hydra's built in chain logger package.
Feel free to open issues and send pull requests in this repository. By sending contributions, you are agreeing to transfer all intellectual property from your changes to the Decentralized Society Foundation, Panama, who owns the copyright of this code. To avoid losing precious time you spend on coding, you could open an issue first and discuss what you are up to before forking and sending us a PR.
Small note: If editing the README, please conform to the standard-readme specification.
We are using a commit hook and quite strict linting rules for our codebase. Please install
husky to check your commits before you send us pull requests. This requires git >= 2.13 so does not work on Ubuntu 16.04 Xenial Xerus or before. Works on Ubuntu 18.04 Bionic Beaver or Debian stable distributions.
# install husky $ npm install -g husky # it automatically lints during commits $ git commit ...
GPL-3.0 or later © 2019 Decentralized Society Foundation, PA