Files
server/Discreetly.md
AtHeartEngineer a8e8e78edb repo work
2023-07-12 00:30:44 -04:00

41 lines
2.2 KiB
Markdown

## Overview
Discreetly is an open protocol anonymous chat system.
The example scenario I am going to use throughout this document is a chat room for Steam games, where the barrier to entry for a room is a certain threshold of achievments accomplished in the game (20% by default?)
## Rooms
A room can be created by the server owner/admin, with certain criteria/barrier to entry.
### Karma Culling
In an anonmyous chat, it is (basically) impossible to know who said something the large majority didn't agree with, but you can prove that you _didn't_ say something. So we can use this to exclude very bad actors using a karma system where users can upvote or downvote messages, which under the hood are non-inclusion proofs, essentially saying "i didn't create this post, and I did or didn't like this".
> This non-inclusion proof includes a new "transiition identity commitment".
After a certain trigger (maybe a certain amount of time like 1 day to start and over time move to every 30 days? or after a certain action on chain), the group can choose to transition, where the server would generate a new version of the room, and everyone would have to make a new semaphore proof with either their old identity commitment or a new one, and everyone who wants to participate in the room would have to make a non-inclusion proof for any of the messages that broke some UPVOTE/DOWNVOTE threshold (configurable by the server, something like 2x more downvotes than upvotes, and [over 20 votes total] | [10% of the room] | [the lowest voted post]).
This would result in multiple iterations of a room, one for each transition, and the rate limit would change per iteration.
- Most Recent Room (T)
- 1s
- T-1
- 10s
- T-2
- 100s // 1:40
- T-3
- 1000s // 16:40
- T-4
- 10000s // 2:46:40
- T-5
- 100000s // 27:46:40 // 1 day 3 hours 46 minutes 40 seconds
- T-6
- 1000000s // 11:13:46:40 // 11 days 13 hours 46 minutes 40 seconds
- T-7
- 10000000s // 1:03:13:46:40 // 1 month 3 days 13 hours 46 minutes 40 seconds
- T-8
- 100000000s // 11:09:03:13:46:40 // 11 months 9 days 3 hours 13 minutes 46 seconds 40 milliseconds
- T-9
- 1000000000s // 3:01:09:03:13:46:40 // 3 years 1 month 9 days 3 hours 13 minutes 46 seconds 40 milliseconds