🧑‍💻 Veramo SDK


Veramo is a JavaScript Framework for Verifiable Data. TheVeramo SDK is an agent designed to handle multiple networks and DID methods. Current implementations of the Veramo SDK include did:ethr, did:web, did:key and more.
We chose Veramo for a few key reasons.
  1. 1.
    Design Principles — The Veramo SDK was designed to be highly flexible and modular making it highly scalable and fit for a lot of complex workflows. As a result, we felt it offered a route to minimise how much needs to be built from scratch. Through its flexible plug-in system, it’s easy to pick and choose which plug-ins are most beneficial, plus it’s possible to add in our custom packages where required which we knew would be necessary from Cosmos-based transactions.
  2. 2.
    Developer Experience — The Veramo SDK has been designed in a way that offers a fast end-to-end process. Ultimately, at cheqd, we want to reduce the amount of time our team spends on SDKs and so we can maintain our focus on building ledger functionality (i.e. building our implementation of the revocation registry and the credentials payment rails).
  3. 3.
    Attractive & Simple CLI — The Veramo core API is exposed by its CLI which makes it easy to create DIDs and VCs directly from a terminal or local cloud agent.
  4. 4.
    Platform Agnostic — The Veramo packages run on Node, Browsers and React & React Native right out of the box.

Setting up Veramo SDK for cheqd

What does the Veramo SDK for cheqd allow you to do on the cheqd network?

Veramo provides an excellent foundation for clients that want to build verifiable data applications. This is because Veramo Core, the Veramo CLI and any specific plugins are available as NPM packages, enabling:
  1. 1.
    Identity functionality to be carried out through a native CLI interface; or
  2. 2.
    Identity functionality to be integrated directly into client applications through NPM packages.
More importantly, Veramo is useful for both DIDs as well as Verifiable Credentials and Verifiable Presentations. It’s not just for one side of the credential usage process.
When combining the existing packages provided by the Veramo SDK with some native packages that we’ve built at cheqd the following functionality is available on the cheqd network (hyperlinks go to the tutorial/information for each):
With the additional Resource module recently applied to the cheqd ledger, AnonCreds will also be possible through the cheqd/sdk which the Veramo SDK for cheqd uses.


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.