mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-24 09:25:52 -05:00
Updates motivation to clarify the need and goals.
This commit is contained in:
parent
5bd1cfb676
commit
30d784663e
21
29.md
21
29.md
|
@ -6,13 +6,17 @@ Shared Event Ownership Through Trusted DVMs
|
||||||
|
|
||||||
`draft` `optional`
|
`draft` `optional`
|
||||||
|
|
||||||
This NIP proposes a standardized way that 2+ pubkeys unilaterally control a single replaceable event. The managing keys choose a trustworthy [DVM](90.md) to own and update the event. Such actions are performed via the usual Job Request and Responses of [DVMs](90.md).
|
This NIP proposes a standardized way that 2+ pubkeys can unilaterally control a replaceable event. The managing keys choose a trustworthy [DVM](90.md) to own and update the event. Event updates are performed via Job Requests and Responses of [DVMs](90.md).
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
Some applications require the ability for several pubkeys to be able to change a single replaceable event. Collaborative document writing tools, for instance, generally allow several users to change the same document. Group metadata events, for instance, must be updated by a set of admins to include and remove people from the group. The current Nostr proposals require sharing a private key between several individuals, which creates potential security issues.
|
Some applications require a shared control of a single replaceable event. Some cases include:
|
||||||
|
- Collaborative document writing tools allow several users to update the `.content` of an event.
|
||||||
|
- Group metadata events that must be updated by a set of admins, including adding and removing people from the group.
|
||||||
|
|
||||||
This NIP creates a simple event changing protocol to be run by DVMs. The private key that controls the event is owned by the DVM. Authorized pubkeys request the DVM to make the changes for them.
|
Current Nostr proposals require creating schemes to share private keys or secrets among several individuals to support the same behaviour, which creates potential security issues.
|
||||||
|
|
||||||
|
This NIP creates a replaceable event updating protocol with straightforward access controls to be run by DVMs. The private key that controls the event is owned by the DVM. Authorized pubkeys request the DVM to make the changes for them.
|
||||||
|
|
||||||
## Access controls
|
## Access controls
|
||||||
|
|
||||||
|
@ -22,9 +26,11 @@ The DVM will add and update `admin` tags in the replaceable event. Any request c
|
||||||
{
|
{
|
||||||
...
|
...
|
||||||
"tags": [
|
"tags": [
|
||||||
[ "admin", "<pubkey>" ]
|
[ "admin", "<pubkey1>" ],
|
||||||
|
[ "admin", "<pubkey2>" ]
|
||||||
|
// ...
|
||||||
],
|
],
|
||||||
...
|
// ...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -42,10 +48,11 @@ Before applying the modification, the DVM MUST verify the signature of the strin
|
||||||
"tags": [
|
"tags": [
|
||||||
[ "p", "<dvm-pubkey>" ]
|
[ "p", "<dvm-pubkey>" ]
|
||||||
],
|
],
|
||||||
"content": nip04_encrypt(JSON.stringify(
|
"content": nip44Encrypt(JSON.stringify(
|
||||||
[ "i", "<stringified-signed-event>", "text" ]
|
[ "i", "<stringified-signed-event>", "text" ]
|
||||||
[ "param", "relays", "wss://nos.lol", "wss://nostr.mom" ]
|
[ "param", "relays", "wss://nos.lol", "wss://nostr.mom" ]
|
||||||
))
|
), "<dvm-pubkey>")
|
||||||
|
// ...
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user