Veramo SDK for cheqd


Veramo SDK is a modular and pluggable client app SDK for decentralised identity and SSI applications. Our Veramo plugin - the @cheqd/did-provider-cheqd NPM package - enables developers to interact with the cheqd ledger using Veramo SDK.
This package includes Veramo SDK Agent methods for use with the Veramo CLI NPM package. It can also be consumed as an NPM package outside Veramo CLI for building your own applications with NPM.
The package's core functionality is borrowed from Veramo Core NPM package and extends this to include cheqd ledger functionality, such as creating and managing DIDs.

🆔 did:cheqd-specific functionality

did-provider-cheqd is the first Veramo SDK plug-in that utilises the DID Manager Update method to offer a full-body DIDDoc update for a DID on cheqd ledger, rather than individual field update transactions used more commonly in other DID methods such as did:ethr.
New DID creation can also be done by passing a full-body DIDoc payload in JSON, rather than having to assemble the document field-by-field.
Our Veramo CLI setup guide provides step-by-step instructions on how to configure your installation for cheqd network

📝 Architecture

Veramo SDK for cheqd architecture
Figure 1: Veramo SDK for cheqd architecture with components (editable version)
did-provider-cheqd consumes functionality that exists within the @cheqd/sdk NPM package in a way that complies to the Veramo AbstractIdentifierProvider. (You don't need to call this package separately as it's already included as a dependency in package.json.)
This package works alongside other base Veramo packages:
The @cheqd/sdk package adds Cosmos SDK specific functionality such as signing transactions, paying for ledger fees, etc.
For identity-related keys, this plugin uses Veramo's Key Management System (KMS) to manage keys for create and update operations.

Working with Veramo SDK for cheqd outside of Veramo CLI

You can use our Veramo plugin in non-CLI contexts as well, for example, for integrating into custom applications
Depending on the type of application you are looking to develop, you will need to install a different set of packages.
For other applications, see: