mirror of
https://github.com/logos-messaging/nim-chat-poc.git
synced 2026-01-03 22:53:08 +00:00
Update Readme
This commit is contained in:
parent
858862a432
commit
f0821d55e0
54
README.md
54
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user