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.
- Install the latest stable cheqd-node CLI, either as a standalone binary or Docker container image.
- 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.
To create a DIDDoc, you can follow the instructions to create a DID with cheqd Cosmos CLI.
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:
JSON file
Within the payload file the amount should be specified as:
denom:
ncheqamount:
2500000000
This equates to 2.5 CHEQ.
Image file
Within the payload file the amount should be specified as:
denom:
ncheqamount:
10000000000
This equates to 10 CHEQ.
Default (any other) file
Within the payload file the amount should be specified as:
denom:
ncheqamount:
5000000000
This equates to 5 CHEQ.
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
.fees
- the specific fee for the transaction, depending on the type of resource file defined here
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.