Update Group chat feature (design draft)

This commit is contained in:
Sébastien Blin 2020-11-16 12:21:39 -05:00
parent 70a4080e59
commit e057afc232
1 changed files with 7 additions and 4 deletions

View File

@ -6,7 +6,7 @@ A *swarm* is a group able to discuss without any central authority in a resilien
So, the *swarm* is defined by:
1. Ability to split and merge following the connectivity.
2. Syncing of the hitory. Anyone must be able to send a message to the whole group.
2. Syncing of the history. Anyone must be able to send a message to the whole group.
3. No central authority. Can't rely on any server.
4. Non-repudiation. Devices must be able to verify old messages validity and to replay the whole history.
5. PFS on the transport. Storage is managed by the device.
@ -31,17 +31,20 @@ Main idea is to get a synchronized merkle tree with the participants.
*Alice adds Bob*
TODO
1. Alice adds Bob to the repo:
+ Adds the public key in `/invited`
+ Adds the CRL into `/crls`
2. Alice sends a request on the DHT
## Receiving an invite
*Alice gets the invite to join the previously create swarm*
1. She accepts the invite
1. She accepts the invite (if decline, do nothing, it will just stay into invited and Alice will never receives any message)
2. A peer to peer connection between Alice and Bob is done.
3. Alice pull the git repo of Bob. **WARNING this means that messages needs a connection, not from the DHT like today**
4. Alice validates commits from Bob
5. To validate that Alice is a member, she removes the invite from invited directory, then adds her certificate into the members directory
5. To validate that Alice is a member, she removes the invite from `/invited` directory, then adds her certificate into the `/members` directory
6. Once all commits validated and on her device, other members of the group are discovered by Alice. with these peers, she will construct the **DRT** (explained below) with Bob as a bootstrap.
## Sending a message