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