radicle-heartwood-lfs/radicle-cli/examples/rad-id.md

402 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

At some point in the lifetime of a Radicle project you may want to
collaborate with someone else allowing them to become a project
maintainer. This requires adding them as a `delegate` and possibly
editing the `threshold` for passing new changes to the identity of the
project.
For cases where `threshold = 1`, it is enough to use the `rad
delegate` command. For cases where `threshold > 1`, it is necessary to
gather a quorum of signatures to update the Radicle identity. To do
this, we use the `rad id` command.
Let's add Bob as a delegate using their DID
`did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn`.
```
$ rad id edit --title "Add Bob" --description "Add Bob as a delegate" --delegates did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn --no-confirm
✓ Identity proposal 'c2fe23ff387d5e040d0ed8eb2651942f5d0c2aa5' created
title: Add Bob
description: Add Bob as a delegate
status: open
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
+ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
+ "did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
"threshold": 1
}
Accepted
total: 0
keys: []
Rejected
total: 0
keys: []
Quorum Reached
👎 no
```
Before moving on, let's take a few notes on this output. The first
thing we'll notice is that the difference between the current identity
document and the proposed changes are shown. Specifically, we changed
the delegates:
"delegates": [
- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
+ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
+ "did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
Next we have the number of `Accepted` reviews from delegates, starting
off with none:
Accepted
total: 0
keys: []
The same with `Rejected` reviews:
Rejected
total: 0
keys: []
Finally, we can see whether the `Quorum` was reached:
Quorum Reached
👎 no
Let's see what happens when we reject the change:
```
$ rad id reject c2fe23ff387d5e040d0ed8eb2651942f5d0c2aa5 --no-confirm
✓ Rejected proposal 👎
title: Add Bob
description: Add Bob as a delegate
status: open
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
+ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
+ "did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
"threshold": 1
}
Accepted
total: 0
keys: []
Rejected
total: 1
keys: [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
]
Quorum Reached
👎 no
```
Our key was added to the `Rejected` set of `keys` and the `total`
increased to `1`.
Rejected
total: 1
keys: [
"z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
]
Instead, let's accept the proposal:
```
$ rad id accept c2fe23f --no-confirm
✓ Accepted proposal ✓
title: Add Bob
description: Add Bob as a delegate
status: open
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
+ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
+ "did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
"threshold": 1
}
Accepted
total: 1
keys: [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
]
Rejected
total: 0
keys: []
Quorum Reached
👍 yes
```
Our key has changed from the `Rejected` set to the `Accepted` set
instead:
Accepted
total: 1
keys: [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
]
As well as that, the `Quorum` has now been reached:
Quorum Reached
👍 yes
At this point, we can commit the proposal and update the identity:
```
$ rad id commit c2fe23ff387d5e040d0ed8eb2651942f5d0c2aa5 --no-confirm
✓ Committed new identity 'c96e764965aaeff1c6ea3e5b97e2b9828773c8b0'
title: Add Bob
description: Add Bob as a delegate
status: committed
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
- "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
+ "did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
+ "did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
"threshold": 1
}
Accepted
total: 1
keys: [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi"
]
Rejected
total: 0
keys: []
Quorum Reached
👍 yes
```
Let's say we decide to also change the `threshold`, we can do so using
the `--threshold` option:
```
$ rad id edit --title "Update threshold" --description "Update to safer threshold" --threshold 2 --no-confirm
✓ Identity proposal '27864167e392d63e77df2a7413c988857bd32839' created
title: Update threshold
description: Update to safer threshold
status: open
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
"did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
- "threshold": 1
+ "threshold": 2
}
Accepted
total: 0
keys: []
Rejected
total: 0
keys: []
Quorum Reached
👎 no
```
But we change our minds and decide to close the proposal instead:
```
$ rad id close 27864167e392d63e77df2a7413c988857bd32839 --no-confirm
✓ Closed identity proposal '27864167e392d63e77df2a7413c988857bd32839'
title: Update threshold
description: Update to safer threshold
status: closed
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
"did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
- "threshold": 1
+ "threshold": 2
}
Accepted
total: 0
keys: []
Rejected
total: 0
keys: []
Quorum Reached
👎 no
```
The proposal is now closed and cannot be committed. If at a later date
we want to update the document with the same change we have to open a
new proposal.
If at any time we want to see what proposals have been made to this
Radicle identity, then we can use the list command:
```
$ rad id list
27864167e392d63e77df2a7413c988857bd32839 "Update threshold" closed
c2fe23ff387d5e040d0ed8eb2651942f5d0c2aa5 "Add Bob" committed
```
And if we want to view the latest state of any proposal we can use the
show command:
```
$ rad id show 27864167e392d63e77df2a7413c988857bd32839
title: Update threshold
description: Update to safer threshold
status: closed
author: did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi
Document Diff
{
"payload": {
"xyz.radicle.project": {
"defaultBranch": "master",
"description": "Radicle Heartwood Protocol & Stack",
"name": "heartwood"
}
},
"delegates": [
"did:key:z6MknSLrJoTcukLrE435hVNQT4JUhbvWLX4kUzqkEStBU8Vi",
"did:key:z6MkedTZGJGqgQ2py2b8kGecfxdt2yRdHWF6JpaZC47fovFn"
],
- "threshold": 1
+ "threshold": 2
}
Accepted
total: 0
keys: []
Rejected
total: 0
keys: []
Quorum Reached
👎 no
```
On a final note, these examples used `--no-confirm`. The default mode
for making proposals is to select and confirm any actions being
performed on the proposal.