Direct interaction with ledger code
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:
cheqd
module, for everything related to Decentralized Identifiers (DIDs)resource
module, 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) moduleresource
module
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-node
primitivesThis 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 Protobofs 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-proto
TypeScript 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/sdk
NPM package that consumes@cheqd/ts-proto
NPM 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-node
instance.
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