Skip to content

waku-org/nim-chat-poc

Repository files navigation

Nim Chat POC

This is the technical proof of a modular e2ee chat protocol using Waku. You can find discussion and details here

See EchoBot for a minimal client side usage example.

Quick Start

# Build Dependencies and link libraries
make update

# Build executables
make all

# Run the Text Interface
./build/tui --name=<unique_id>

Details

Features

Current state of the ChatSDK FURPS

ID Feature Status Notes
F1 Permissionless Accounts
F2 1:1 Messaging
F3 FS + PCS 🟡 PCS in place — strong FS needs initial key exchange
F4 Delivery Receipts
F5 Basic Content Types Types need formal definition; plugin system prototyped
F6 Default Message Store
F7 Default Secrets Store
U1 Non-interactive Initiation
U2 Invite Links
U3 25 Lines of Code 🟡
R1 Dropped Message Detection
P1 10K Active Clients
S1 RLN Compatible 🟡 RLN supported, but not implemented yet
S2 Future Proof 🟡
S3 Go Bindings
S4 Rust Bindings
+1 Sender Privacy 🟡 Needs verification
+2 Membership Privacy 🟡 Needs verification
+3 User Activity Privacy 🟡 Needs verification
+4 Nimble Compatible Blocked — upstream dependency conflicts

Message Flow

To establish a secure conversation, Saro and Raya need to:

  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. ..

sequenceDiagram
   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
Loading

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.
  2. 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

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published