de-mls with Waku (#29)

* start building waku for group_chat

* replace test

* replace test

* fix building issue on m2

* continue waku integration

* add admin trait

* update cfg

* update code

* replace cli to ws

* add docker for each instance

* fully working process for joining to the group

* update readme

* Add Waku and WebSocket actors for message processing and group management

- Introduced `WakuActor` for handling message sending and group subscriptions using Waku protocol.
- Implemented `Group` actor for managing group creation, member addition/removal, and message processing.
- Added `WsActor` for WebSocket communication, enabling user connections and message handling.
- Defined message structures for processing and sending messages within the Waku and WebSocket contexts.
- Enhanced error handling and logging for message operations.

* Refactor Waku and WebSocket integration for improved message handling

- Updated `WakuActor` to return a vector of `WakuContentTopic` upon subscription, enhancing group topic management.
- Introduced `AppState` struct to centralize application state, including Waku actor reference and content topics.
- Refactored main loop to utilize `AppState`, improving message flow between Waku and WebSocket actors.
- Enhanced message handling in `WsActor` to support `MessageToPrint`, allowing for structured message sending.
- Improved error handling and logging throughout the message processing pipeline.

* Refactor Waku message handling and clean up unused code

* Refactor and remove unused components from the project

- Deleted the `sc_key_store` module and its associated files, streamlining the codebase.
- Removed unused Docker and Git configuration files, enhancing project clarity.
- Cleaned up `.gitignore` and `.dockerignore` to reflect current project structure.
- Updated `Cargo.toml` files to remove references to deleted modules and dependencies.
- Refactored Waku and WebSocket actors to improve message handling and group management.
- Enhanced error handling and logging throughout the message processing pipeline.
- Adjusted frontend input styling for better user experience.

* Update CI workflow to use 'main' branch and add support for manual triggers

* Enhance Waku integration and documentation

- Added instructions for running a test Waku node in the README.
- Refactored Waku message handling in `ds_waku.rs` to improve content topic management and error handling.
- Updated `Cargo.toml` dependencies for better compatibility and removed unused entries.
- Improved error handling in `DeliveryServiceError` for Waku node operations.
- Cleaned up CI workflow by commenting out unused test jobs.
- Enhanced logging in tests for better traceability of message flows.

* Update CI workflow to include Go setup for testing

- Added steps to the CI configuration to set up Go version 1.20.x for user tests.
- Ensured consistent environment setup across different jobs in the CI pipeline.

* Update package versions to 1.0.0 in Cargo.toml files for the main project and 'ds' module

* Update README to include note on frontend implementation based on Chatr
This commit is contained in:
Ekaterina Broslavskaya
2024-12-25 15:06:31 +07:00
committed by GitHub
parent 49ab2b4aaa
commit c99eadb302
91 changed files with 5420 additions and 28088 deletions

View File

@@ -1,17 +1,30 @@
# de-mls
Decentralized MLS PoC using a smart contract for group coordination
## Run Redis Server
> Note: The frontend implementation is based on [chatr](https://github.com/0xLaurens/chatr), a real-time chat application built with Rust and SvelteKit
`docker-compose up`
## Run Test Waku Node
## Install deps
```bash
docker run -p 8645:8645 -p 60000:60000 wakuorg/nwaku:v0.33.1 --cluster-id=15 --rest --relay --rln-relay=false --pubsub-topic=/waku/2/rs/15/0
```
1. `Foundry`
2. `make deps`
## Run User Instance
## Scaffold Environment
Create a `.env` file in the `.env` folder for each client containing the following variables:
1. `make start`: This command will start the docker compose instance, and deploy the smart contract to the local network.
```text
NAME=client1
BACKEND_PORT=3000
FRONTEND_PORT=4000
NODE_NAME=<waku-node-ip>
```
2. `make stop`: This command will stop the docker compose instance.
Run docker compose up for the user instance
```bash
docker-compose --env-file ./.env/client1.env up --build
```
For each client, run the following command to start the frontend on the local host with the port specified in the `.env` file