arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Update a DID-Linked Resource

Update a DID-Linked Resource (DLR) or add new resources to an existing Resource Collection.

The purpose of this document is to describe how someone can create a new Resource on under an existing Collection.

This tutorial uses the cheqd Cosmos CLIarrow-up-right, similar to the creating a new Resource tutorial.

hashtag
Pre-requisites

  1. Install the latest stable cheqd-node CLI, either as a or .

  2. Acquire test CHEQ tokens through (if creating it on our testnet), or (if you plan on creating it on mainnet).

  3. An

  4. Having under this DIDDoc Collection

hashtag
Adding a new Resource to an existing DIDDoc Collection

hashtag
1. Generate a new UUID for the new Resource version

. On Unix systems, the uuidgen tool can be used to generate a new UUID:

hashtag
2. Prepare a file with Resource content

Resource content should be placed in a file and stored locally.

hashtag
3. Publish the new Resource version to the ledger

Resources with the same Collection ID and name are grouped into version sets. Each resource in such a set has a link to the previous version (except the first version) and the next version (if it's not the most recent version).

To create a resource and mark it as a new version within a particular group, we need to use the same collection-id and name as in the previous version. Links between versions will be created automatically.

New versions have dedicated unique IDs and can be referenced and retrieved as any other resources.

hashtag
Command

hashtag
Parameters

  • payload-file - file with JSON formatted payload. The format and structure can be found in example

  • resource-data-file - file which will be sent to the ledger as a data. Can be a picture or an image or whatever you want.

hashtag
Example

where payload.json is:

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:

hashtag
4. Check that new Resource version was successfully written to the ledger

Finally, to check that the resource was successfully written, we can use the following query:

hashtag
Parameters

  • <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

hashtag
Example

hashtag
Result

Notice that previous_version_id is not empty and pointing to the previously created resource with id : 3e6bd814-6851-4c8a-b114-c64f035ef590.

flags - additional parameters like, --gas or --from. --fees should match the price of the speicfic resource file type defined here.
standalone binaryarrow-up-right
Docker container imagearrow-up-right
our testnet faucetarrow-up-right
CHEQ tokensarrow-up-right
existing DID + DIDDoc created on cheqd ledger
a Resource already created
UUIDs are used to identify Resourcesarrow-up-right
$ uuidgen
c8ef6d88-ee0c-4ca4-9fd6-f9e17f6f8f3f
cheqd-noded tx resource create [payload-file] [resource-data-file] [flags]
cheqd-noded tx resource create \
--chain-id cheqd \
--keyring-backend test \
--output json \
--fees 10000000000ncheq \
--gas auto \
--gas-adjustment 1.8 \
--from base_account \
[payload.json] [resource.jpeg]
{
  "payload": {
    "data": null,
    "collectionId": "b0ca0b75-ca6a-4674-a261-45f6dd0c9c77",
    "id": "c8ef6d88-ee0c-4ca4-9fd6-f9e17f6f8f3f",
    "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=="
    }
  ]
}
{
  "code": 1201,
  "data": "",
  "raw_log": "failed to execute message; message index: 0: id:cheqd:testnet:fcbarcelona: DID Doc not found"
}
cheqd-noded query resource specific-resource \
    <collection-id> \
    <resource-id> \
    --node https://rpc.cheqd.network:443
cheqd-noded query resource specific-resource \
    c82f2b02-bdab-4dd7-b833-3e143745d612 \
    c8ef6d88-ee0c-4ca4-9fd6-f9e17f6f8f3f \
    --node https://rpc.cheqd.net:443 --output json
{
  "resource": {
    "resource": {
      "data": "..."
    },
    "metadata": {
      "collection_id": "c82f2b02-bdab-4dd7-b833-3e143745d612",
      "id": "c8ef6d88-ee0c-4ca4-9fd6-f9e17f6f8f3f",
      "name": "EventBrite Logo",
      "version": "",
      "resource_type": "image/png",
      "also_known_as": [
        {
          "uri": "did:cheqd:mainnet:c82f2b02-bdab-4dd7-b833-3e143745d612/resources/c8ef6d88-ee0c-4ca4-9fd6-f9e17f6f8f3f",
          "description": "did-url"
        }
      ],
      "media_type": "image/svg+xml",
      "created": "2022-11-17T10:35:23Z",
      "checksum": "a95380f460e63ad939541a57aecbfd795fcd37c6d78ee86c885340e33a91b559",
      "previous_version_id": "3e6bd814-6851-4c8a-b114-c64f035ef590",
      "next_version_id": ""
    }
  }
}