🤓
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-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:
- 1.
cheqd
module, for everything related to Decentralized Identifiers (DIDs) - 2.
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
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-proto
TypeScript 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/sdk
NPM package that consumes@cheqd/ts-proto
NPM package. - 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
cheqd-node
instance.
Evernym's VDR Tools SDK is an independent implementation written in Rust that integrates some cheqd ledger functionality.