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.
The ledger code package
cheqd-nodeis 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)
Just as in Cosmos SDK, cheqd-node uses Protobufs to encode and exchange information. These can be found in the
Generated/built Protobuf for repeatable builds are also published to the
cheqdrepository on Buf.build.
Types and utilities are available for re-use for each module as well. The
utilsinclude functions for working with these custom modules, validation logic, etc.
After compiling a message (in your custom application), you can make a gRPC call to the ledger with your message.
This 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.
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:
- 1.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-protoTypeScript NPM package.
- 2.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
- 3.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
Evernym's VDR Tools SDK is an independent implementation written in Rust that integrates some cheqd ledger functionality.