chat is just one example

this is a generic "group events" system
This commit is contained in:
earonesty 2023-06-05 13:29:24 -07:00 committed by GitHub
parent e84206b60c
commit 10aa362edc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

16
112.md
View File

@ -1,12 +1,12 @@
NIP-112
=======
Encrypted Group Chat
--------------------
Encrypted Group Events
----------------------
`draft` `optional` `author:earonesty`
This NIP defines new event kinds for encrypted group chat with optional forward secrecy guidelines.
This NIP defines new event kinds for encrypted group events, with chat as the primary example, and with optional forward secrecy guidelines.
This NIP builds on the encryption from NIP-44, the gift-wrap of NIP-59 and the distributed chat channel management of NIP-28. It is similar to NIP38, with the exception that gift-wrap is used on every message, and issues like metadata leakage and optional forward secrecy are addressed.
@ -18,7 +18,7 @@ It reserves 8 event kinds (1059, 400-406) for immediate use.
- `400` - wrapped kind: create encrypted channel
- `401` - wrapped kind: invite to encrypted channel
- `402` - wrapped kind: change channel metadata
- `403` - wrapped kind: send encrypted message
- `403` - wrapped kind: send encrypted chat message
- `404` - wrapped kind: moved to new channel
- `405` - wrapped kind: delegate new owner
- `406` - wrapped kind: accept owner delegation
@ -36,7 +36,7 @@ All events called "wrapped-kind XX" refer to these kind 1059 gift wrapped events
## Wrapped Kind 400: Create Encrypted channel
Create a Encrypted chat channel.
Create a Encrypted event channel.
In the channel creation `content` field, Client SHOULD include basic channel metadata (`name`, `about` and `picture`).
@ -102,7 +102,7 @@ Clients MUST specify an "e" tag to identify the channel id.
Clients SHOULD mark the "e" tag to recommend a relay where the original event can be found.
Clients MAY replace the "r" tag set with a full list of new relays.
There need be no overlap between the "e" relay and the "r" list. For example, if a chat channel is moving its relay set to a new set.
There need be no overlap between the "e" relay and the "r" list. For example, if a group's channel is moving its relay set to a new set.
```json
{
@ -208,11 +208,11 @@ For [NIP-10](10.md) relay recommendations on replies and on channel creation inf
Future extensibility
--------------------
We reserve wrapped-event kinds 407-419 for other events related to chat, to potentially include new types of media (photo/video), delegation, moderation, mute, hide, etc.
We reserve wrapped-event kinds 407-419 for other wrapped group events, such as delegation, moderation, mute, hide, etc.
Motivation
----------
This is the easiest way to allow the use of group chat with select group of people, while hiding metadata.
This is the easiest way to allow the use of group events with select group of people, while hiding metadata, and preserving nostr's censorship resistence
Optional Forward Secrecy
------------------------