nim-chat-poc/README.md

93 lines
3.9 KiB
Markdown
Raw Permalink 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 tests
make tests
2025-09-26 19:09:19 -07:00
# 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
2025-10-10 11:05:58 -07:00
### Features
Current state of the [ChatSDK FURPS](https://github.com/waku-org/pm/blob/master/FURPS/application/chat_sdk.md)
| ID | Feature | Status | Notes |
|-----|----------------------------|--------|---------------------------------------------------------|
| F1 | Permissionless Accounts | ✅ | |
| F2 | 1:1 Messaging | ✅ | |
| F3 | FS + PCS | 🟡 | PCS in place — needs noise implementation |
2025-10-10 11:05:58 -07:00
| F4 | Delivery Receipts | ✅ | |
| F5 | Basic Content Types | ✅ | Types need formal definition; plugin system prototyped |
| F6 | Default Message Store | 🚫 | Wont do - api changed, apps handle message storage |
| F7 | Default Secrets Store | ➡️ | Deferred - Not required for dev api preview |
2025-10-10 11:05:58 -07:00
| U1 | Non-interactive Initiation | ✅ | |
| U2 | Invite Links | ✅ | |
| U3 | 25 Lines of Code | ✅ | |
| R1 | Dropped Message Detection | 🚫 | Wont do - uses reliable channels |
2025-10-10 11:05:58 -07:00
| P1 | 10K Active Clients | ⚪ | |
| S1 | RLN Compatible | 🟡 | RLN supported, but not implemented yet |
| S2 | Future Proof | 🟡 | |
| S3 | Go Bindings | 🚫 | Wont do - Refocus on Logos-core |
| S4 | Rust Bindings | 🚫 | Wont do - Refocus on Logos-core |
| +1 | Sender Privacy | ✅ | Needs verification |
2025-10-10 11:05:58 -07:00
| +2 | Membership Privacy | 🟡 | Needs verification |
| +3 | User Activity Privacy | 🟡 | Needs verification |
| +4 | Nimble Compatible | ⛔ | Blocked — upstream dependency conflicts
2025-08-24 22:28:26 -07:00
### 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/)