specs/docs/stable/11-waku-mailserver.md

130 lines
6.5 KiB
Markdown
Raw Normal View History

Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
---
permalink: /spec/11
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
parent: Stable specs
title: 11/WAKU-MAILSERVER
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
---
# 11/WAKU-MAILSERVER
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
> Version: 0.1
>
> Status: Stable
>
> Authors: Adam Babik <adam@status.im>, Oskar Thorén <oskar@status.im>, Samuel Hawksby-Robinson <samuel@status.im> (alphabetical order)
- [Status Waku Mailserver Specification](#11waku-mailserver)
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
- [Abstract](#abstract)
- [`Mailserver`](#mailserver)
- [Archiving messages](#archiving-messages)
- [Requesting messages](#requesting-messages)
- [Receiving historic messages](#receiving-historic-messages)
- [Security considerations](#security-considerations)
- [Confidentiality](#confidentiality)
- [Altruistic and centralized operator risk](#altruistic-and-centralized-operator-risk)
- [Privacy concerns](#privacy-concerns)
- [Denial-of-service](#denial-of-service)
- [Changelog](#changelog)
- [Version 0.1](#version-01)
## Abstract
Being mostly offline is an intrinsic property of mobile clients. They need to save network transfer and battery consumption to avoid spending too much money or constant charging. Waku protocol, on the other hand, is an online protocol. Messages are available in the Waku network only for short period of time calculate in seconds.
Waku Mailserver is a specification that allows messages to be stored permanently and to allows the stored messages to be delivered to requesting client nodes, regardless if the messages are not available in the network due to the message TTL expiring.
## `Mailserver`
From the network perspective, a `Mailserver` is just like any other Waku node. The only difference is that a `Mailserver` has the capability of archiving messages and delivering them to its peers on-demand.
It is important to notice that a `Mailserver` will only handle requests from its direct peers and exchanged packets between a `Mailserver` and a peer are p2p messages.
### Archiving messages
A node which wants to provide `Mailserver` functionality MUST store envelopes from
incoming message packets (Waku packet-code `0x01`). The envelopes can be stored in any
format, however they MUST be serialized and deserialized to the Waku envelope format.
A `Mailserver` SHOULD store envelopes for all topics to be generally useful for any peer, however for specific use cases it MAY store envelopes for a subset of topics.
### Requesting messages
In order to request historic messages, a node MUST send a packet P2P Request (`0x7e`) to a peer providing `Mailserver` functionality. This packet requires one argument which MUST be a Waku envelope.
In the Waku envelope's payload section, there MUST be RLP-encoded information about the details of the request:
```
[ Lower, Upper, Bloom, Limit, Cursor ]
```
`Lower`: 4-byte wide unsigned integer (UNIX time in seconds; oldest requested envelope's creation time)
`Upper`: 4-byte wide unsigned integer (UNIX time in seconds; newest requested envelope's creation time)
`Bloom`: 64-byte wide array of Waku topics encoded in a bloom filter to filter envelopes
`Limit`: 4-byte wide unsigned integer limiting the number of returned envelopes
`Cursor`: an array of a cursor returned from the previous request (optional)
The `Cursor` field SHOULD be filled in if a number of envelopes between `Lower` and `Upper` is greater than `Limit` so that the requester can send another request using the obtained `Cursor` value. What exactly is in the `Cursor` is up to the implementation. The requester SHOULD NOT use a `Cursor` obtained from one `Mailserver` in a request to another `Mailserver` because the format or the result MAY be different.
The envelope MUST be encrypted with a symmetric key agreed between the requester and the `Mailserver`.
### Receiving historic messages
Historic messages MUST be sent to a peer as a packet with a P2P Message code (`0x7f`) followed by an array of Waku envelopes.
Remove personal pronouns (#132) Resolves #115 * Rewrote 'you' and 'your' personal pronouns Additionally I've made related sentences more concise. NOTE I've ignored usages of you and your in comments and in links and section titles * Rewrote 'we' personal pronouns Again not changing usages in comments * Removed 'passive' and/or ambiguous language * Added README information about language mode * Added prepend to word list * Update README.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Added missing 'a's * Moved style related README info into STYLE-GUIDELINE.md * Added reference to Google Technical Writing * Tweaks to maintain consistency of changes across related specs * Addressed spelling and added link to the Discord server * Update docs/draft/12-sticker-pack.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/stable/11-waku-mailserver.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Addressed feedback Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2020-06-03 22:02:45 +00:00
In order to receive historic messages from a `Mailserver`, a node MUST trust the selected `Mailserver`, that is allowed to send packets with the P2P Message code. By default, the node discards such packets.
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
Received envelopes MUST be passed through the Waku envelope pipelines so that they are picked up by registered filters and passed to subscribers.
For a requester, to know that all messages have been sent by a `Mailserver`, it SHOULD handle P2P Request Complete code (`0x7d`). This code is followed by the following parameters:
```
[ RequestID, LastEnvelopeHash, Cursor ]
```
- `RequestID`: 32-byte wide array with a Keccak-256 hash of the envelope containing the original request
- `LastEnvelopeHash`: 32-byte wide array with a Keccak-256 hash of the last sent envelope for the request
- `Cursor`: an array of a cursor returned from the previous request (optional)
If `Cursor` is not empty, it means that not all messages were sent due to the set `Limit` in the request. One or more consecutive requests MAY be sent with `Cursor` field filled in order to receive the rest of the messages.
## Security considerations
### Confidentiality
Remove personal pronouns (#132) Resolves #115 * Rewrote 'you' and 'your' personal pronouns Additionally I've made related sentences more concise. NOTE I've ignored usages of you and your in comments and in links and section titles * Rewrote 'we' personal pronouns Again not changing usages in comments * Removed 'passive' and/or ambiguous language * Added README information about language mode * Added prepend to word list * Update README.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Added missing 'a's * Moved style related README info into STYLE-GUIDELINE.md * Added reference to Google Technical Writing * Tweaks to maintain consistency of changes across related specs * Addressed spelling and added link to the Discord server * Update docs/draft/12-sticker-pack.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/stable/11-waku-mailserver.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Addressed feedback Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2020-06-03 22:02:45 +00:00
The node encrypts all Waku envelopes. A `Mailserver` node can not inspect their contents.
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
### Altruistic and centralized operator risk
In order to be useful, a `Mailserver` SHOULD be online most of time. That means
users either have to be a bit tech-savvy to run their own node, or rely on someone
else to run it for them.
Remove personal pronouns (#132) Resolves #115 * Rewrote 'you' and 'your' personal pronouns Additionally I've made related sentences more concise. NOTE I've ignored usages of you and your in comments and in links and section titles * Rewrote 'we' personal pronouns Again not changing usages in comments * Removed 'passive' and/or ambiguous language * Added README information about language mode * Added prepend to word list * Update README.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/draft/3-whisper-usage.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Added missing 'a's * Moved style related README info into STYLE-GUIDELINE.md * Added reference to Google Technical Writing * Tweaks to maintain consistency of changes across related specs * Addressed spelling and added link to the Discord server * Update docs/draft/12-sticker-pack.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/draft/13-3rd-party.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Update docs/stable/11-waku-mailserver.md Co-authored-by: Kim De Mey <kim.demey@gmail.com> * Addressed feedback Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Kim De Mey <kim.demey@gmail.com>
2020-06-03 22:02:45 +00:00
Currently, one of Status's legal entities provides `Mailservers` in an altruistic manner, but this is
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
suboptimal from a decentralization, continuance and risk point of view. Coming
up with a better system for this is ongoing research.
A Status client SHOULD allow the `Mailserver` selection to be customizable.
### Privacy concerns
In order to use a `Mailserver`, a given node needs to connect to it directly,
i.e. add the `Mailserver` as its peer and mark it as trusted. This means that the
`Mailserver` is able to send direct p2p messages to the node instead of
broadcasting them. Effectively, it will have access to the bloom filter of
topics that the user is interested in, when it is online as well as many
metadata like IP address.
### Denial-of-service
Since a `Mailserver` is delivering expired envelopes and has a direct TCP connection with the recipient, the recipient is vulnerable to DoS attacks from a malicious `Mailserver` node.
## Changelog
### Version 0.1
Released [May 22, 2020](https://github.com/status-im/specs/commit/664dd1c9df6ad409e4c007fefc8c8945b8d324e8)
Update/waku replace (#114) Introduces Waku in to the relevant places in the specs. * First draft changes to 1-client.md * initial waku replace work on 2-account.md * Rename 3-whisper-usage to waku There may be broken links after this change * Initial update for 3-waku-usage.md * Adjustment to use WHISPER concurrently with WAKU * Converting 'moving away from whisper' section to `why use waku` * Added clarification about Open Whisper Systems X3DH usage * Updated transport privacy, include both whisper and waku * Updated 1-client, language supports concurrent whisper and waku * Updated 2-account.md to be whisper/waku concurrent * Reverted 3-whisper-usage changes, added 9-waku-usage * Complete revert of 3-whisper-usage * revert 3-whisper-usage.md * Fix to 3-whisper-usage.md links * Update docs/stable/1-client.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Removal of personal pronouns from 1-client.md * Update to 5-secure-transport.md * Implemented combined 'whispe/ waku relayer' role * Addressed ambiguous and stale links in 6-payloads * Updated 6-payloads * Fix broken / stale links in 7-group-chat.md * Fixed stale link 8-eips * link fix and todo resolved for 1-client.md * Added 10-waku-mailserver document * Added gitignore * Minor tweaks and fixes * Added Whisper / Waku briding section to 3-whisper-usage * Updated 10-waku-mailserver * Updated 9-waku-usage.md * Made changes to keep Mailserver term consistent * Removed some redundant comments * Removed seemingly vistigual '???' * Including large payload PoW See https://github.com/status-im/status-go/blob/7b6af0a7ccb8e39eeb2ab71ccca9841d75d57416/protocol/message_processor.go#L25-L35 * Changed 'mail server' to 'Mailserver' * Added details about status-options * Implemented final changes before review * Tpyo fix * Removed incorrect reference to topic-interest * removed .gitignore, defer to global_gitignore * Addressing feedback * Revert draft/7 link fix Readdressed in GH-120 * Reverted link fixes for stable/5 Addressing in GH-120 * Revert tpyo fix Addressed in GH-119 * Reverted stable/6 link fixes Addressed in GH-120 * Missed a minor link change * Revert link fix in stable/1 Addressed in GH-120 * Revert tpyo fix in stable/1 Addressed in GH-119 * Revert stable/1 link fix Addressed in GH-120 * Revert stable/2 link fix Addressed in GH-120 * Revert link fix to stable/2 * Revert stable/3 link fixes Addressed in GH-120 * Revert adding missing topic link Addressed in GH-120 * Revert stable/4 link fix Addressed in GH-120 * Revert stable/5 link fix Addressed in GH-120 * Revert stable/8 link fix Addressed in GH-120 * Partial revert of stable/1 node roles * Resolved whispermail reference query See GH-125 * Added changelog and version bump ... Added my name where appropriate and addressed some minor issues * Added consistent capitalisation to 'Whisper' * Resolved jRPC call issue for waku * Updated spelling * Addressing minor feedback issues * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> * Update docs/stable/10-waku-mailserver.md Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com> Co-authored-by: Dean Eigenmann <7621705+decanus@users.noreply.github.com>
2020-05-22 14:05:21 +00:00
- Created document
- Forked from [4-whisper-mailserver](4-whisper-mailserver.md)
- Change to keep `Mailserver` term consistent
- Replaced Whisper references with Waku