Morpheus is a decentralized identity system with an open ecosystem enabling verifiable claims in a web-of-trust way. See the specification or check out the whitepaper where this fits.
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
Morpheus is used as by default plugin on the Hydra chain, hence it is shipped with the Hydra core code. However this repo can also be used standalone for demo and testing purposes.
In the Typescript examples repo you will see example codes for all available API.
-
Node v12.16.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.16.1 # Set the just installed version 12 as default $ nvm alias default v12.16.1 # Check versions $ node --version v12.16.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 WIP PoC for the Authority entity described in the specification.
This package contains a WIP PoC for the Inspector/Verifier entity described in the specification.
Contains all interfaces and tool needed for communication with Morpheus, Authorities or Inspectors.
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).
It's a wrapper on top of sdk-wasm
to provide a more coherent interface for the wasm code.
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 © 2020 Decentralized Society Foundation, PA