---
# System prepended metadata

title: 'DID Rotation did:cheqd'
tags: [im4dec]

---

## DID Rotation from `did:oyd` to `did:cheqd`

### Summary

DID Rotation refers to the process of updating or changing a Decentralized Identifier (DID) while maintaining the continuity and integrity of the digital identity it signifies. This procedure is essential for various reasons, including enhancing security, adhering to emerging standards, or transitioning to a more sophisticated infrastructure. This practice fosters convergence among available DID methods by promoting interoperability and compatibility, making it a common feature in advanced DID methods.

Using the [credential service](https://credential-service.cheqd.net/swagger/#/) it was easy to create and update DID documents for `did:cheqd` and manage the lifecycle of digital identities including DID Rotation.


### Overview
```plantuml
@startuml
hide empty description

[*] -right-> v1
state "original\nDID" as v1
v1: version: 1
note top of v1
  Step 0:
  existing DID with
  method: did:oyd
end note

v1 -down-> v2
state "new DID" as v2
v2: version: 2
note left of v2
  Step 1:
  create new DID with
  method: did:cheqd
end note

v1 -right[dotted]-> v1a
v2 -up-> v1a
state "updated\noriginal DID" as v1a
v1a: version: 1'
note top of v1a
  Step 2:
  update original DID with
  alsoKnownAs from new DID v2
end note
note right of v1a
  Step 3:
  deactivate updated
  original DID
end note

v1a -down-> v2a
v2 -right[dotted]-> v2a
state "updated\nnew DID" as v2a
v2a: version: 2'
note right of v2a
  Step 4:
  update new DID with
  alsoKnownAs from original DID
end note

v2a -right-> [*]

@enduml
```

#### Links
https://cheqd.io/
https://credential-service.cheqd.net/swagger/#/ 

### Prerequisites

<details><summary>Token to access Cheqd testnet</summary>
  
```bash=
# open
```

</details>

<details><summary>Delete previous <code>did:oyd</code></summary>
  
```bash=
oydid delete did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6 \
   --doc-pwd doc-cheqd2 --rev-pwd rev-cheqd2
oydid delete did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h \
   --doc-pwd doc-cheqd  --rev-pwd rev-cheqd
```

</details>

## Step 0: Create original DID
DID: [`did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h`](https://dev.uniresolver.io/#did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h)

<details><summary>Command line</summary>

```bash=
echo '' | oydid create --doc-pwd doc-cheqd --rev-pwd rev-cheqd -z 1
```
</details>

<details><summary>Details</summary>

* DID: `did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h`
* Doc:
  ```json
  {"doc":null,"key":"z6MuxxXDKWcc4QAFNWopmnAKqa1tLwM9tnZ1ZpGXPc1Ca1XM:z6Mv4n4ZhEo1sfSqjduR8YNNP8HwEQguu4fyaYSwhsHECYPF","log":"zQmPKmQaWGjALxspEJNLsjLoRy2oXY6kE5nMTHTohrvrAhe"}
  ```
* W3C DID Document: 
  ```jsonld=
  {
    "@context": [
      "https://www.w3.org/ns/did/v1",
      "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "id": "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h",
    "verificationMethod": [
      {
        "id": "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h#key-doc",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h",
        "publicKeyMultibase": "z6MuxxXDKWcc4QAFNWopmnAKqa1tLwM9tnZ1ZpGXPc1Ca1XM"
      },
      {
        "id": "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h#key-rev",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h",
        "publicKeyMultibase": "z6Mv4n4ZhEo1sfSqjduR8YNNP8HwEQguu4fyaYSwhsHECYPF"
      }
    ]
  }
  ```
* private doc-key: `z1S5YjUL6friSuHE6sDQ91GjrKYoMKhWBTD1R2AjgG8HpJLX`
* private rev-key: `z1S5cZrAozgVmetTVXbbG5UGLdAR8NQcNV5sM1orypXPvEKy` 
* Revocation log entry:
  ```json
  {"ts":1,"op":1,"doc":"zQmURi7YkUyjMt9eJyAhsHbJ1Pnh68AF2K1Ec57p2WdTvVv","sig":"z3wG1nGRo7iHKbJQc8dkaNqJ6wDjqk7y5b8MckaAz6DBksLNXinfvUpZWfeT5QzChk1uTMLMwvkiTBwxFttNchb7K"}
  ```

</details>


## Step 1: Create new `did:cheqd` (for rotation)

DID: [`did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008`](https://dev.uniresolver.io/#did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008)
<details><summary>Commands</summary>

* access via https://credential-service.cheqd.net/swagger/#/DID/post_did_create
  
</details>

<details><summary>Details</summary>

* DID: `did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008`
* W3C DID Document: 
  ```jsonld=
  {
    "@context": [
      "https://www.w3.org/ns/did/v1",
      "https://w3id.org/security/suites/ed25519-2018/v1"
    ],
    "id": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008",
    "controller": [
      "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008"
    ],
    "verificationMethod": [
      {
        "id": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008#key-1",
        "type": "Ed25519VerificationKey2018",
        "controller": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008",
        "publicKeyBase58": "fNBb5bEHLSAoCwTVetMBw6itH6W93xc7fTozsZGSZy2"
      }
    ],
    "authentication": [
      "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008#key-1"
    ]
  }
  ```
  * private key: `???`
</details>

## Step 2: Link `did:cheqd` in `did:oyd` with alsoKnownAs

DID: [`did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6`](https://dev.uniresolver.io/#did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6)

<details><summary>Command line</summary>

* set `DID_OYD` and `DID_CHEQD` from above
```bash=
export DID_OYD="did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h"
export DID_CHEQD="did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008"
echo "{\"alsoKnownAs\": \"$DID_CHEQD\"}" | \
oydid update $DID_OYD -z 2 \
    --old-doc-pwd doc-cheqd --doc-pwd doc-cheqd2 \
    --old-rev-pwd rev-cheqd --rev-pwd rev-cheqd2
```

</details>

<details><summary>Details</summary>

* DID: `did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6`
* Doc:
  ```json
  {"doc":{"alsoKnownAs":"did:cheqd:testnet:272f4026-5472-4c19-bde2-f2369d09a754"},"key":"z6Mv4QQcJ3SXmj9z7nT2joMF4PmukVKxkkFhRAMFw9okUCUk:z6MutT4oa4QkJ1AfQtg6ReqMjCpZSCtN9FvHUziraVr36zWK","log":"zQmZ2asRtZTVDcxTz6t9jSjMpn1UvbXzZukSri6g2M9vmDk"}
  ```
* W3C DID Document: 
  ```jsonld=
  {
    "@context": [
      "https://www.w3.org/ns/did/v1",
      "https://w3id.org/security/suites/ed25519-2020/v1"
    ],
    "id": "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6",
    "verificationMethod": [
      {
        "id": "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6#key-doc",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6",
        "publicKeyMultibase": "z6Mv4QQcJ3SXmj9z7nT2joMF4PmukVKxkkFhRAMFw9okUCUk"
      },
      {
        "id": "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6#key-rev",
        "type": "Ed25519VerificationKey2020",
        "controller": "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6",
        "publicKeyMultibase": "z6MutT4oa4QkJ1AfQtg6ReqMjCpZSCtN9FvHUziraVr36zWK"
      }
    ],
    "alsoKnownAs": [
      "did:oyd:zQmdmiLvtVGHqwE55o6j7iEA8ZTPdRFzs8YZwh4n41tK13h",
      "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008"
    ]
  }
  ```
* private doc-key: `z1S5TP5UCh5M9V4GPTd8TV3YSeaA9nCJ7JuuVRURzSoEabEc`
* private rev-key: `z1S5RKw7cNNkeBV8ts4w9CNaGQPWWiWuJLxzTXmt5AyMsEPi` 
* Revocation log entry:
  ```json
  {"ts":2,"op":1,"doc":"zQmdoxrq3nQaqhJoEMNdHG58E2rnSrrNzzHv8E6iwyqmEYU","sig":"zDZPjkpvJS6oD3cbYax49ptNTj2wRLk2gqs2HVZQGgyySfwEkdGEcnn8et7NakHq9y862B57X7RcCD6HKTzvrs9W"}
  ```

</details>

## Step 3: Deactivate `did:oyd`
DID: [`did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6`](https://dev.uniresolver.io/#did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6)

<details><summary>Command line</summary>
  
```bash=
oydid revoke did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6 \
  --doc-pwd doc-cheqd2 --rev-pwd rev-cheqd2
```
</details>

## Step 4: Link `did:oyd` in `did:cheqd` with alsoKnownAs
DID: [`did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008`](https://dev.uniresolver.io/#did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008)
<details><summary>Commands</summary>
  
  * access via https://credential-service.cheqd.net/swagger/#/DID/post_did_create
  
</details>
<details><summary>Details</summary>

* DID: `did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008`
* W3C DID Document: 
  ```jsonld=
  {
    "@context": [
      "https://www.w3.org/ns/did/v1",
      "https://w3id.org/security/suites/ed25519-2018/v1"
    ],
    "id": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008",
    "controller": [
      "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008"
    ],
    "verificationMethod": [
      {
        "id": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008#key-1",
        "type": "Ed25519VerificationKey2018",
        "controller": "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008",
        "publicKeyBase58": "fNBb5bEHLSAoCwTVetMBw6itH6W93xc7fTozsZGSZy2"
      }
    ],
    "authentication": [
      "did:cheqd:testnet:b7c17158-29f3-4ac8-8298-043617c5e008#key-1"
    ],
    "alsoKnownAs": [
      "did:oyd:zQmQsWDGHPLfuLfoB2c4prXCV16PYLZQBsjp4iDxr43p7D6"
    ]
  }
  ```
  * private key: `???`
</details>