From 03c22ad0b8af339f645fb3a42df0c94b5595e3b7 Mon Sep 17 00:00:00 2001 From: Oskar Thoren Date: Thu, 29 Aug 2019 12:49:20 +0200 Subject: [PATCH] fmt --- status-whisper-usage-spec.md | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/status-whisper-usage-spec.md b/status-whisper-usage-spec.md index 99be8ba..57d18c1 100644 --- a/status-whisper-usage-spec.md +++ b/status-whisper-usage-spec.md @@ -4,6 +4,10 @@ > > Authors: Adam Babik , Corey Petty , Oskar Thorén (alphabetical order) +## Abstract + +TBD. + ## Table of Contents - [Abstract](#abstract) @@ -32,8 +36,14 @@ - [New RPC methods](#new-rpc-methods) +## Introduction + +TBD. + ## Requirements +TBD. + ## Design goals @@ -41,11 +51,7 @@ Provide routing, metadata protection, topic-based multicasting and basic encryption properties to support asynchronous chat. -# Abstract - -Ethereum empowers users and developers to interact with totally new kind of applications called Dapps (Decentralized applications). These application allows to interact with the blockchain on a completely new level which is not only about exchanging values but also executing arbitrary logic. This logic can form very sophisticated programs like DAOs (Decentralized autonomous organizations). The missing part here is how users of Dapps can communicate securely and in a decentralized way with each other. Communication is an essential part of any activity. In this document, we specify a secure and decentralized messaging protocol that is capable of running on the Ethereum network. - -# Terminology +## Terminology * *Client*: a Whisper node implementing the protocol * *Whisper node*: an Ethereum node with Whisper V6 enabled (in the case of geth, it's `--shh` option) @@ -56,14 +62,14 @@ Ethereum empowers users and developers to interact with totally new kind of appl * *Envelope*: encrypted message with some metadata like topic and TTL sent between Whisper nodes; a symmetric or asymmetric key is needed to decrypt it and read the payload * *Offline message*: an expired envelope stored by a Whisper node permanently -# Basic Assumption +## Basic Assumption This protocol assumes the following: 1. There MUST be an Ethereum node that is capable of discovering peers and implements Whisper V6 specification. 2. Participants of a given Whisper network in order to communicate with each other MUST accept messages with lowered PoW value. More in (Whisper node configuration)(#whisper-node-configuration). 3. Time MUST be synced between all nodes participating in the given network (this is intrinsic requirement of the Whisper specification as well). A clock drift between two peers larger than 20 seconds MAY result in discarding incoming messages. -# Protocol Overview +## Protocol Overview Notice: this protocol is documented post factum. The goal of it is to clearly present the current design and prepare the ground for its second version. @@ -86,7 +92,7 @@ Offline messaging describes how the protocol handles delivering messages when on The protocol does not specify additional things like peers discovery, running Whisper nodes, underlying p2p protocols etc. -# Whisper adapter +## Whisper adapter Whisper in version 6 has been chosen as an messages exchange protocol because it was designed as an off-chain communication layer for the Ethereum nodes. It supports e2e encryption and uses epidemic spread to route data to all members of the network. It also provides [darkness to some extent](https://github.com/ethereum/go-ethereum/wiki/Achieving-Darkness). @@ -305,3 +311,7 @@ In order to use a mail server, a given node needs to connect to it directly, i.e Outside of Whisper v6, there are some extensions, message codes and RPC methods that MAY be useful for client implementers. An implementation of this can be found in a fork of Whisper [here](https://github.com/status-im/whisper). + +## Security concerns + +TBD.