Sidetree.js is a simple-as-possible TypeScript implementation of the Sidetree version 1.0 protocol. The purpose of the Sidetree protocol is to create a blockchain based public key infrastructure, where rather than having a central authority that can accept or revoke keys, by having the blockchain act as a whitness for regestering public keys, anyone can publish a public key that can be used to establish identity.
The Sidetree protocol describes using a Content Addressable Storage and a Ledger to establish a public key infrastructure. What this boils down to is that public keys are stored in a Content Addressable Storage, and pointers to that storage are published on a Ledger.
The simpliest possible example of this would be an public FTP server, where anyone could upload a public key and a identifier for that public key. In practice, this sets up a central authority and a single point of failure. In practice we use a public ledger such as Bitcoin or Ehtereum. And we use IPFS as a Content Addressable Storage to create Decentralized Identitifiers for Public Keys.
However since the interfaces for what needs to be implemented is flexible, we can also implement DID methods such as Photon which uses Amazon QLDB for a ledger, and Amazon S3 for content addressable storage.
The following did methods are supported or intended to be supported (or planned to be supported) by the the Sidetree.js implementation. More information on how to set up a node can be in the Dashboard package.
Method | Spec | Ledger | Storage | Support |
---|---|---|---|---|
did:elem | spec | Ethereum | IPFS | Full |
did:photon | spec | Amazon QLDB | Amazon S3 | Full |
did:ion | spec | Bitcoin | IPFS | Planned |
did:orb | spec | Hyperledger Fabric | IPFS | Planned |
Element
See Development
Commercial support for these libraries is available upon request from Transmute: support at transmute dot industries
Please see our security policy for additional details about responsible disclosure of security related issues.
Apache-2.0 © Transmute Industries Inc.