From f0821d55e0046682dd7123eed3e93f36a8db4b39 Mon Sep 17 00:00:00 2001 From: Jazz Turner-Baggs <473256+jazzz@users.noreply.github.com> Date: Sat, 27 Sep 2025 07:16:16 -0700 Subject: [PATCH] Update Readme --- README.md | 54 ++++++++++++++++++------------------------------------ 1 file changed, 18 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 1e653eb..c18511d 100644 --- a/README.md +++ b/README.md @@ -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