| description | 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.
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
If your application is Golang-based, it's extremely easy to consume cheqd-node as a Golang module.
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
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.
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.