nim-chat-poc/README.md

62 lines
1.5 KiB
Markdown
Raw Normal View History

2025-07-07 16:03:16 -07:00
# Nim Chat POC
2025-07-04 22:17:31 -07:00
2025-09-27 07:16:16 -07:00
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)
2025-08-24 22:28:26 -07:00
2025-09-26 19:09:19 -07:00
See [EchoBot](./examples/bot_echo.nim) for a minimal client side usage example.
2025-08-24 22:28:26 -07:00
## Quick Start
```
# Build Dependencies and link libraries
2025-09-26 19:09:19 -07:00
make update
2025-08-24 22:28:26 -07:00
2025-09-26 19:09:19 -07:00
# Build executables
make all
# Run the Text Interface
2025-09-28 14:45:02 -07:00
./build/tui --name=<unique_id>
2025-08-24 22:28:26 -07:00
```
## Details
### Message Flow
2025-07-04 22:17:31 -07:00
2025-07-07 16:03:16 -07:00
To establish a secure conversation, Saro and Raya need to:
2025-09-27 07:16:16 -07:00
1. Find each others identityKeys
2025-07-07 16:03:16 -07:00
2. Agree on a secret key, and location to communicate
2025-07-04 22:17:31 -07:00
2025-09-27 07:16:16 -07:00
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. ..
2025-07-04 22:17:31 -07:00
2025-07-07 16:03:16 -07:00
```mermaid
sequenceDiagram
2025-09-27 07:16:16 -07:00
participant S as Saro
participant R as Raya
Note over R,S: Discovery
R -->> S: Send Invite Link via established channel
Note over R,S: Initialization
S ->> R: PrivateV1 Invite
Note over R,S: Operation
loop
par
R->> S: Send Message
and
S->> R: Send Message
end
end
2025-07-07 16:03:16 -07:00
```
## 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.
2025-09-27 07:16:16 -07:00
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.
2025-07-07 16:03:16 -07:00
## License
[MIT](https://choosealicense.com/licenses/mit/)