Skip to content

factomatic/py-factom-did

Folders and files

NameName
Last commit message
Last commit date
Nov 4, 2019
Nov 19, 2019
Mar 17, 2020
Mar 17, 2020
Sep 12, 2019
Sep 10, 2019
Sep 16, 2019
Oct 24, 2019
Jul 4, 2019
Sep 17, 2019
Nov 1, 2019
Nov 4, 2019
Sep 10, 2019
Nov 4, 2019

Repository files navigation

Build Status Coverage Status License: MIT Code style: black

py-factom-did

py-factom-did is a Python library for working with DIDs on the Factom blockchain. It is an implementation of the Factom DID method specification and consists of two main modules: factom_did.client and factom_did.resolver.

The client module enables:

  • creation of a new DID
  • addition of management key(s) for the DID
  • addition of DID key(s) for the DID
  • addition of service(s) for the DID
  • export of public metadata to be recorded on Factom
  • encryption of the newly created keys
  • update of an existing DID: adding/revoking management keys, DID keys and services and producing a signed DID update entry
  • upgrade of the method version of an existing DID
  • deactivaiton of an existing DID

The resolver module contains a pure-data library for re-constructing the effective DID Document from a list of DID entries. It is a complete implementation of the resolver specification in https://github.com/bi-foundation/FIS/blob/feature/DID/FIS/DID.md and contains an extensive unit test suite with 100% test coverage.

Examples

You can find an example of the library workflow in the examples/ directory. In order to run the example, please note that it is necessary to:

  • have local instances of factomd and factom-walletd running
  • create an environment variable called EC_ADDR, which contains a funded EC address to pay the fees for recording the DID on-chain

Installation

pip install py-factom-did

Documentation

API documentation of the library is available here

Build

  • Clone the repo

  • Create the virtual environment and install the dependencies:

pipenv install

or

pipenv install --pre -d

to install both the default and development dependencies

  • Activate the virtual environment:
pipenv shell
  • Execute the tests:
pytest
  • Execute the example:
python -m examples.example