Update Readme

This commit is contained in:
Jazz Turner-Baggs 2025-09-27 07:16:16 -07:00 committed by GitHub
parent 858862a432
commit f0821d55e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,13 +1,6 @@
# Nim Chat POC
This is a technical proof of consuming the [chat_proto](https://github.com/waku-org/chat_proto/tree/base_types?tab=readme-ov-file) in nim.
This POC introduces the following Conversation Types:
- Inbox : Asymmetric channel for receiving invites
- PrivateV1: 1:1 private messaing with Forward Secrecy and Post compromise security
Messages are delivered over Waku
This is the technical proof of a modular e2ee chat protocol using Waku. You can find discussion and details [here](https://github.com/waku-org/specs/pull/73)
See [EchoBot](./examples/bot_echo.nim) for a minimal client side usage example.
@ -30,49 +23,38 @@ make all
### Message Flow
To establish a secure conversation, Saro and Raya need to:
1. Exchange key material
1. Find each others identityKeys
2. Agree on a secret key, and location to communicate
For this technical proof, recipient identity keys are exchanged out of bound via an invite link. More complex identity systems will be explored in the future.
Key derivation and message framing is defined by Inbox spec
For this technical proof, recipient identity keys are exchanged out of bound via an invite link. More complex identity systems will be explored in the future. ..
```mermaid
sequenceDiagram
actor S as Saro
participant SI as Saro Inbox
participant C as Convo
participant RI as Raya Inbox
actor R as Raya
participant S as Saro
participant R as Raya
Note over R,S: Discovery
R -->> S: Send Invite Link via established channel
Note over SI,RI: All clients subscribe to their default Inbox
Note over R,S: Initialization
S ->> R: PrivateV1 Invite
SI ->> S: Subscribe
RI ->> R: Subscribe
Note over R: Key Information is exchanged OOB
Note over S: Conversation is created
C ->> S : Subscribe
S ->> RI : Send Invite `I1`
S ->> C : Send Message `M1`
RI --) R : Recv `I1`
Note over R: Conversation is joined
C ->> R : Subscribe
C --) R: Recv `M1`
R ->> C: Send M2
C -->> S: Recv M2
Note over R,S: Operation
loop
par
R->> S: Send Message
and
S->> R: Send Message
end
end
```
## Limitations
1. `.proto` files are included in this repo due to complications in importing nested packages using `?subdir=`. Once resolved there will be a single definition of protocol types.
1. Currently messages are not sent over the wire. They are simulated using a `TransportMessage`.
1. Messages are sent using waku, however wakunode discovery has not been implemented. As a stopgap a manual discovery process based on staticpeers is used.
## License