diff --git a/status-spec.md b/status-spec.md index 221facc..808224c 100644 --- a/status-spec.md +++ b/status-spec.md @@ -42,6 +42,18 @@ in a command line client 2 and a mobile app 3. This document consists of two parts. The first outlines the specifications that have to be implemented in order to be a full Status client. The second gives a design rationale and answers some common questions. +## Protocol layers + +Implementing a Status clients means implementing the following layers. Additionally, there are separate specifications for things like key management and account lifecycle. + +| Layer | Purpose | Technology | +|-------------------|---------------------------------|------------------------------| +| Data and payloads | End user functionality | 1:1, group chat, public chat | +| Data sync | Data consistency | MVDS Ratchet | +| Secure transport | Confidentiality, PFS, etc | Double Ratchet | +| Transport privacy | Routing, Metadata protection | Whisper | +| P2P Overlay | Overlay routing, NAT traversal | devp2p | + ## P2P Overlay Status clients run on the public Ethereum network, as specified by the devP2P diff --git a/x4.md b/x4.md index e476561..ea6ee7d 100644 --- a/x4.md +++ b/x4.md @@ -1,19 +1,5 @@ - -# Protocol Layers - -The Status Protocol stack consists of multiple protocols. In this document, we give a brief overview of each layer and what they provide. We also note any specific considerations when it comes to using these components together. - -| Layer | Purpose | Technology | -|-------------------|---------------------------------|------------------------------| -| Data | End user functionality | 1:1, group chat, public chat | -| Security | Confidentiality, PFS | Double Ratchet | -| Privacy | Metadata protection | Whisper | -| P2P | Overlay routing, NAT traversal | devp2p | - -> Note that the Status Protocol was documented after the fact, which might lead to some inconsistencies or questionable design choices. - -# Data Sync Clients + Data Sync Clients Data Sync Clients specify a format of payloads exchanged between clients communicating using the Status Protocol. The robust and well-defined format is required in order to provide some security guarantees, for example, clients should not display messages that do not conform to the format, and allow the clients to upgrade the protocol safely in the future.