Github Milestone: https://github.com/waku-org/pm/milestone/40
With this milestone, we establish a foundation for scaling one-to-one and private group chats to support a larger number of users. Additionally, we will harden the underlying protocols by studying and refining the current specifications, as well as isolating user traffic from other features.
Our approach to RLN integration will involve two initial steps. First, we will implement a low rate limit and collaborate with the Status team to address the user experience challenges that arise. By combining this with clear specifications, we will be able to better understand scalability for one-to-one chats, including the relationships between user count, usage, and bandwidth/resource utilization.
Furthermore, the enhanced specifications will enable the Vac-QA team to expand test coverage, increasing confidence in reliability and facilitating any future refactoring efforts.
To achieve this milestone successfully, it is essential that one-to-one chats are isolated from other features using Waku, such as Communities, user settings backup, and device pairing/synchronization. Ideally, these features should be either removed or disabled by default to ensure accurate testing and evaluation.
Private chats refers to both one-to-one and private group chats.
Deliverables
Isolate private chat traffic
Dedicate a shard for private chat traffic, so that users are not impacted by other features (Communities, settings backup, pair/sync) that may be enabled by other features.
Ensure that features other than private chats can be disabled in status-go. Removed those for which consensus was reached.
Specify private chat protocol
Understand and document the current Status private chats protocol stack. This includes encryption, usage of content topics, message flows, control message - size, frequency and purpose, MVDS usage. This acts as the basis for future work, to modify the one-to-one chat protocol to stabilize, secure and scale it.
Private chat rate limit PoC
Rate limits the messages generated by Status private chat protocols. The rate should be low enough to protect the network, if applied with RLN. Targeting 100 messages per 10 minutes at first; Specifications and product goals will help us decide on the best limit. This proof of concept helps understand what would be an acceptable rate, and what control messages would prevent such a mechanism. This deliverable includes discussions with the Status team to design a UI to inform the user, and enable extending the message rate. As per all PoC, specifications are expected.
Baseline benchmarks
Work with the Vac-DST team to set up baseline benchmarks for chat protocols and ensure status-backend can be used for those benchmarks. Then, coordinate with the Status and Vac-DST team to run those benchmarks as non-regression performance testing prior to major Status app releases.
Status-cli-tests to simulate mobile environment
Work with the Vac-QA team and Status Core Mobile team to improve the variety of environments status-cli-tests are run through, and simulate what can happen to an application running on iOS and Android, such as network loss, ipv6, network switch, app in background, app killed due to battery saving, etc.
Global network metrics
Provide network metrics to assist measuring Status product metrics such as traffic, number of nodes (edge and relay), version, etc. Deploy the same software on other known network fleets to have a global view of Waku usage (RAILGUN, TheGraph).