Direct interaction with ledger code
Integrate directly with the cheqd ledger code to develop more advanced applications with a deeper integration.
This is an advanced guide for those who want to develop applications that directly interact with the ledger code.
Most developers should start with our pre-built SDKs such as Veramo SDK for cheqd or the cheqd-node Cosmos CLI.
Overview
The ledger code package cheqd-node is based on Cosmos SDK and uses the same module-based approach that is does.
There are two custom modules on cheqd ledger related to identity functionality:
cheqdmodule, for everything related to Decentralized Identifiers (DIDs)resourcemodule, for DID-Linked Resources
Developing Golang apps for cheqd
If your application is Golang-based, it's extremely easy to consume cheqd-node as a Golang module.
Encoding & Utilities
Just as in Cosmos SDK, cheqd-node uses Protobufs to encode and exchange information. These can be found in the proto directory on cheqd-node repository.
Generated/built Protobuf for repeatable builds are also published to the cheqd repository on Buf.build.
Types and utilities are available for re-use for each module as well. The utils include functions for working with these custom modules, validation logic, etc.
cheqd(DID) moduleresourcemodule
Sending transactions to ledger
After compiling a message (in your custom application), you can make a gRPC call to the ledger with your message.
cheqd DID Resolver is a real-world example of a Golang app built using
cheqd-nodeprimitivesThis allowed us to decouple DID Resolution logic from the ledger, while re-utilising existing code.
Developing in other languages for cheqd
In general, the process building applications that work with cheqd in other languages follows very similar logic as described above for Golang apps.
Example 1: Veramo SDK for cheqd
Veramo SDK for cheqd combines the base NPM packages mentioned above to integrate cheqd ledger functionality into the 3rd party Veramo SDK.
The high-level steps are:
Consume Protobufs for cheqd: Our Buf.build packages for cheqd can make this take simpler for many languages. A real-world example of this is the
@cheqd/ts-protoTypeScript NPM package.Prepare and sign the message correctly: This relies partly on understanding general Cosmos SDK message format and transaction signing, as well as any cheqd-specific bits. A real-world example of this is the
@cheqd/sdkNPM package that consumes@cheqd/ts-protoNPM package.Send the message to ledger using gRPC/RPC: Once a message/transaction is correctly compiled and signed, standard transport libraries can be used to target the gRPC/RPC endpoints for a
cheqd-nodeinstance.
Example 2: Evernym VDR Tools
Evernym's VDR Tools SDK is an independent implementation written in Rust that integrates some cheqd ledger functionality.
Last updated
Was this helpful?