Comment on page
Creating a DID-Linked Resource using cheqd Cosmos CLI
The purpose of this document is to outline how someone can create a Resource on the cheqd network using cheqd Cosmos CLI. The process that's followed is similar to what's described in the high-level Resource creation flow.
- 1.
- 2.Acquire test CHEQ tokens through our testnet faucet (if creating it on our testnet), or CHEQ tokens (if you plan on creating it on mainnet).
Note: If you already have a DIDDoc and corresponding keys, you can skip this step.
Let's assume the DID for the DIDDoc is as follows:
did:cheqd:mainnet:6h7fjuw37gbf9ioty633bnd7thf65hs1
UUIDs are used to identify Resources. On Unix systems, the
uuidgen
tool can be used to generate a new UUID:$ uuidgen
e7b662f8-d3f8-4a83-bd00-2cdcd6cc50ab
Resource content should be placed in a file and stored locally.
cheqd-noded tx resource create [payload-file] [resource-data-file] [flags]
The fee for a resource transaction changes depending on the file type being passed to the ledger. Currently there are three different variations on the fee:
payload-file
- file with JSON formatted payload. The format and structure can be found in exampleresource-data-file
- file which will be sent to the ledger as adata
. Can be a picture or an image or whatever you want.flags
- additional parameters like,--gas
or--from
.
Example input:
cheqd-noded tx resource create \
--chain-id cheqd \
--keyring-backend test \
--output json \
--fees 2500000000ncheq \
--gas auto \
--gas-adjustment 1.8 \
--from base_account \
[payload.json] [resource.json]
where
payload.json
is:{
"payload": {
"data": null,
"collectionId": "b0ca0b75-ca6a-4674-a261-45f6dd0c9c77",
"id": "5e16a3f9-7c6e-4b6b-8e28-20f56780ee25",
"name": "TestResource",
"version": "1.0",
"resourceType": "TestType",
"alsoKnownAs": []
},
"signInputs": [
{
"verificationMethodId": "did:cheqd:testnet:b0ca0b75-ca6a-4674-a261-45f6dd0c9c77#key1",
"privKey": "y4B5qis9BXUq/mODsrWtS3q5ejOk/okSIXlX1/a9HvuG3PgYmekfQmq3QhJ4JSzN/rkiGCQDNKoTXMmxuXDHbg=="
}
]
}
After you execute the command, you will receive
"code": 0"
if the resource was successfully written to the ledger.Otherwise, the
raw_logs
field in the response can help figure out why something went wrong. For example:{
"code": 1201,
"data": "",
"raw_log": "failed to execute message; message index: 0: id:cheqd:testnet:fcbarcelona: DID Doc not found"
}
Finally, to check that the resource was successfully written, we can use the following query:
cheqd-noded query resource specific-resource \
<collection-id> \
<resource-id> \
--node https://rpc.cheqd.network:443
<collection-id>
: The same unique identifier as that after the namespace of the corresponding DID created in step 1<resource-id>
: Unique ID of the resource within the collection of resources associated with the DIDDoc
Example input:
cheqd-noded query resource specific-resource \
c82f2b02-bdab-4dd7-b833-3e143745d612 \
3e6bd814-6851-4c8a-b114-c64f035ef590 \
--node https://rpc.cheqd.net:443 --output json
Ouput:
{
"resource": {
"resource": {
"data": "..."
},
"metadata": {
"collectionId": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "3e6bd814-6851-4c8a-b114-c64f035ef590",
"name": "EventBrite Logo",
"version": "",
"resourceType": "image/png",
"alsoKnownAs": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/3e6bd814-6851-4c8a-b114-c64f035ef590",
"description": "did-url"
}
],
"mediaType": "image/svg+xml",
"created": "2022-11-17T10:35:23Z",
"checksum": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559",
"previousVersionId": "",
"nextVersionId": ""
}
}
}
Notice that both
previous_version_id
and next_version_id
are empty now cause there is only one resource in such collection c82f2b02-bdab-4dd7-b833-3e143745d612
.There are also 2 annother commands for getting resource from ledger depending what the actual info is needed.
Here is the command which allows to get only metadata information without getting the whole resource. The format of call is:
cheqd-noded query resource metadata [collection-id] [resource-id] [flags]
Parameters
collection-id
and resource-id
have the same meaning as before.Example input:
cheqd-noded query resource metadata \
c82f2b02-bdab-4dd7-b833-3e143745d612 \
3e6bd814-6851-4c8a-b114-c64f035ef590 \
--node https://rpc.cheqd.net:443 --output json
Output:
{
"resource": {
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "3e6bd814-6851-4c8a-b114-c64f035ef590",
"name": "EventBrite Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/3e6bd814-6851-4c8a-b114-c64f035ef590",
"description": "did-url"
}
],
"media_type": "image/svg+xml",
"created": "2022-11-17T10:35:23Z",
"checksum": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559",
"previous_version_id": "",
"next_version_id": ""
}
}
For querying all the resources but only metadata there is a special command:
cheqd-noded query resource collection-metadata [collection-id] [flags]
As the main parameter it requires only
collection-id
.Example input:
cheqd-noded query resource collection-metadata c82f2b02-bdab-4dd7-b833-3e143745d612 --node https://rpc.cheqd.net:443 --output json
Ouput:
{
"resources": [
{
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "3e6bd814-6851-4c8a-b114-c64f035ef590",
"name": "EventBrite Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/3e6bd814-6851-4c8a-b114-c64f035ef590",
"description": "did-url"
}
],
"media_type": "image/svg+xml",
"created": "2022-11-17T10:35:23Z",
"checksum": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559",
"previous_version_id": "",
"next_version_id": ""
},
{
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "9447c669-0ba1-4989-bd10-a85cc298aace",
"name": "Discord Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/9447c669-0ba1-4989-bd10-a85cc298aace",
"description": "did-url"
}
],
"media_type": "image/png",
"created": "2022-11-17T10:35:51Z",
"checksum": "b2939df5a48f422fc9d62f270c182f07b5fd5a7a334478ea73af4fdb5eb12d3b",
"previous_version_id": "",
"next_version_id": ""
},
{
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "ba4d1a8b-6395-4b96-8492-aaf2800d5727",
"name": "Twitter Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/ba4d1a8b-6395-4b96-8492-aaf2800d5727",
"description": "did-url"
}
],
"media_type": "image/png",
"created": "2022-11-17T10:36:26Z",
"checksum": "aeb8f203a6a21cca668c5c8983dfe86b3cf95add102305da8208100595d69800",
"previous_version_id": "",
"next_version_id": ""
},
{
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "cb3f5f64-c138-4309-b9ea-8d658b0ae28e",
"name": "IIW Event Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/cb3f5f64-c138-4309-b9ea-8d658b0ae28e",
"description": "did-url"
}
],
"media_type": "image/png",
"created": "2022-11-17T10:36:37Z",
"checksum": "d48e158b915eae31ba2db640bd4aac7f82179ee5ca0263a8fe99012d4b02cf48",
"previous_version_id": "",
"next_version_id": ""
},
{
"collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
"id": "e2651dd2-7ca7-44f1-9ba5-57a77747d9b4",
"name": "GitHub Logo",
"version": "",
"resource_type": "image/png",
"also_known_as": [
{
"uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/e2651dd2-7ca7-44f1-9ba5-57a77747d9b4",
"description": "did-url"
}
],
"media_type": "image/png",
"created": "2022-11-17T10:36:09Z",
"checksum": "22ed95ff774cee8427c86b60288af4077b3b26424c758bec95a34aa8b7a88937",
"previous_version_id": "",
"next_version_id": ""
}
],
"pagination": null
}
Congratulations! You've successfully created a resource on cheqd ledger; hopefully, the first of many.
Last modified 3mo ago