Milestone End-to-end reliability protocol

Estimated Date of Completion: 2024-11-25

To solve reliability is to solve two problems:

  1. High heuristic that messages are received and sent
  2. Ability to know whether messages are received or sent

Problem (1) can never be 100% reliable in a network environment. The previous milestones focused on it.

To solve (2), is to create an end-to-end protocol, sender to recipient, that enables the ability to know whether recipient(s) have received messages.

With this milestone, we design and deliver a first PoC for an end-to-end reliability protocol. This protocol will be specified and implemented in the Status app for Status Communities chat rooms.

Deliverable: End-to-end reliability protocol - PoC

Design a protocol that enables end-to-end reliability for Status Communities channels.

The output is an agnostic RFC and a reference implementation in Golang (similar to MVDS library). However, it should take in account the context of Status Communities and leverage related properties (e.g. mostly online community owner nodes).

This deliverable does not include the integration in status-go, but it should provide enough information to then review with the Status app team how this protocol should be used in Status Communities. Parameters such as bandwidth usage and reliability level (e.g. N% of users acks) can then be discussed with the app team before implementation, as well as the type of messages that need such functionality (e.g. status update vs chat message in channel).

Deliverable: End-to-end reliability protocol - Status integration

Integrate the previously designed protocol in status-go with parameters agreed with the Status product team. Provide the right REST API (if needed) to ensure this is tested by Vac/QA. Harden the library as needed.