overhaul overview docs
This commit is contained in:
parent
5f62051ae4
commit
27e62e760f
|
@ -1,8 +1,8 @@
|
||||||
# Waku Documentation Portal
|
# Waku Documentation Portal
|
||||||
|
|
||||||
[![Waku Documentation Portal](https://img.shields.io/badge/dev-waku.guide-black)](https://dev.waku.guide/)
|
[![Waku Documentation Portal](https://img.shields.io/badge/waku.guide-black)](https://waku.guide/)
|
||||||
|
|
||||||
The Waku Documentation Portal can be accessed at [dev.waku.guide](https://dev.waku.guide) and was built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
The Waku Documentation Portal can be accessed at [waku.guide](https://waku.guide) and was built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,44 @@
|
||||||
---
|
---
|
||||||
title: History
|
title: History of Waku
|
||||||
---
|
---
|
||||||
|
|
||||||
Waku v1 was a fork of Whisper with some added tweaks for efficiency.
|
Waku v1 was a fork of Whisper with some added tweaks for efficiency. Waku v2 is a completely redesigned suite of protocols designed to address the goals set out [previously](/#motivation-and-goals).
|
||||||
Waku v2 is a completely redesigned suite of protocols designed to address the goals set out [previously](./introduction.md).
|
|
||||||
|
```mermaid
|
||||||
|
%%{init: { 'logLevel': 'debug', 'theme': 'base', 'gitGraph': {'showBranches': true, 'showCommitLabel':true,'mainBranchName': 'HISTORY'}} }%%
|
||||||
|
gitGraph
|
||||||
|
commit id:"2013"
|
||||||
|
commit id:"2015" tag:"R&D"
|
||||||
|
commit id:"2018" tag:"R&D" type: HIGHLIGHT
|
||||||
|
branch v1
|
||||||
|
checkout v1
|
||||||
|
commit id:"2020" tag:"release"
|
||||||
|
checkout HISTORY
|
||||||
|
merge v1
|
||||||
|
branch v2
|
||||||
|
checkout v2
|
||||||
|
commit id:"2021" tag:"release"
|
||||||
|
checkout HISTORY
|
||||||
|
merge v2
|
||||||
|
commit id:"🔥"
|
||||||
|
```
|
||||||
|
|
||||||
### 2013
|
### 2013
|
||||||
|
|
||||||
Ethereum White Paper was introduced with the Holy Trinity,
|
The introduction of the Ethereum White Paper marked the unveiling of the Holy Trinity, which comprises Ethereum for consensus, Swarm for decentralized storage, and Whisper for peer-to-peer messaging.
|
||||||
consisting of Ethereum for consensus, Swarm for decentralized storage, and Whisper for p2p messaging.
|
|
||||||
|
|
||||||
### 2015-2018
|
### 2015-2018
|
||||||
|
|
||||||
R&D of Whisper was slow to follow progress of the Ethereum EVM and Swarm without a dedicated team building out the protocol.
|
The development of the Whisper protocol lagged behind the advancements made by the Ethereum EVM and Swarm, primarily because there was no dedicated team working on building the protocol.
|
||||||
|
|
||||||
### 2018
|
### 2018
|
||||||
|
|
||||||
With little progress made on Whisper and significant scalability concerns growing,
|
Due to the lack of progress made on Whisper and growing concerns around scalability, Vac was established to focus on researching and developing more scalable peer-to-peer messaging solutions.
|
||||||
Vac was formed to conduct R&D on more scalable p2p messaging.
|
|
||||||
|
|
||||||
### 2020
|
### 2020
|
||||||
|
|
||||||
Waku v1 was introduced as the messaging protocol in Status, replacing Whisper.
|
Status introduced Waku v1 as its messaging protocol, which replaced Whisper.
|
||||||
|
|
||||||
### 2021
|
### 2021
|
||||||
|
|
||||||
Waku v2 replaces Waku v1.
|
Waku v2 supersedes Waku v1.
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
title: How does it work?
|
|
||||||
---
|
|
||||||
|
|
||||||
The backbone of Waku Network is the Waku Relay protocol.
|
|
||||||
It is a pubsub protocol based on libp2p gossipsub.
|
|
||||||
Other Waku protocols have been defined to enable capabilities such as:
|
|
||||||
|
|
||||||
1. retrieving **historical messages** for mostly-offline devices
|
|
||||||
2. key turn solution for **encrypted communication** (symmetric encryption, ECIES/asymmetric encryption, noise handshake).
|
|
||||||
3. preserving bandwidth usage for **resource-restricted devices**
|
|
||||||
4. Economic **spam protection** (rate limit) with privacy preserving capabilities
|
|
||||||
5. Mass deanonymization protection (research in progress)
|
|
||||||
|
|
||||||
If you want to learn how Waku works under the hoods, check out the [10/WAKU2](https://rfc.vac.dev/spec/10/) RFC.
|
|
|
@ -1,21 +1,21 @@
|
||||||
---
|
---
|
||||||
title: Implementations
|
title: Waku Implementations
|
||||||
---
|
---
|
||||||
|
|
||||||
Waku has been implemented in multiple languages to cater to a variety of unique use-cases:
|
Waku has been implemented in multiple languages to cater to a variety of unique use-cases:
|
||||||
|
|
||||||
#### [nwaku](https://github.com/status-im/nwaku)
|
### [nwaku](https://github.com/status-im/nwaku)
|
||||||
|
|
||||||
A nim implementation of the Waku v2 protocol. The reference implementation, recommended to deploy a node in the cloud or at home.
|
The Nim implementation of the Waku protocol is the reference implementation recommended for deploying a node in the cloud or at home.
|
||||||
|
|
||||||
#### [js-waku](https://github.com/waku-org/js-waku/)
|
### [js-waku](https://github.com/waku-org/js-waku/)
|
||||||
|
|
||||||
A JavaScript/TypeScript implementation for browser environments.
|
The JavaScript/TypeScript implementation of the Waku protocol designed for use in browser environments.
|
||||||
|
|
||||||
#### [go-waku](https://github.com/status-im/go-waku)
|
### [go-waku](https://github.com/status-im/go-waku)
|
||||||
|
|
||||||
A Go implementation for native integration in go applications, C-Bindings are also available with C#, Swift and Kotlin examples.
|
The Golang implementation of the Waku protocol designed for native integration in Golang applications, includes C bindings with examples available in C#, Swift, and Kotlin.
|
||||||
|
|
||||||
#### [@waku/react-native](https://github.com/waku-org/waku-react-native)
|
### [@waku/react-native](https://github.com/waku-org/waku-react-native)
|
||||||
|
|
||||||
Integrate Waku in your React Native app using go-waku for mobile.
|
Use [go-waku](https://github.com/status-im/go-waku) for mobile to integrate Waku into your React Native application.
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
---
|
|
||||||
title: Introduction
|
|
||||||
slug: /
|
|
||||||
---
|
|
||||||
|
|
||||||
Waku (v2) is family of modular peer-to-peer protocols for **secure communication**. The protocols are designed to be secure, privacy-preserving, censorship-resistant and able to run in resource restricted environments.
|
|
||||||
|
|
||||||
It enables you to **add communication features** to your dApp in a **decentralized manner**,
|
|
||||||
ensuring to your users that they will not be censored or de-platformed.
|
|
||||||
|
|
||||||
- **removes centralized third parties from messaging**: enabling private, secure, censorship-free communication with no single point of failure.
|
|
||||||
- provides **privacy-preserving capabilities**: sender anonymity, metadata protection and unlinkability to personally identifiable information.
|
|
||||||
- designed for **generalized messaging**: enables human-to-human, machine-to-machine or hybrid communication.
|
|
||||||
- **runs everywhere**: desktop, server, including resource-restricted devices, such as mobile devices and browsers.
|
|
|
@ -1,46 +0,0 @@
|
||||||
---
|
|
||||||
title: Motivation and goals
|
|
||||||
---
|
|
||||||
|
|
||||||
Waku as a family of protocols is designed to have a set of properties that are useful for many applications:
|
|
||||||
|
|
||||||
1. **Generalized messaging.**
|
|
||||||
|
|
||||||
Many applications require some form of messaging protocol to communicate between different subsystems or different nodes.
|
|
||||||
This messaging can be human-to-human or machine-to-machine or a mix.
|
|
||||||
Waku is designed to work for all these scenarios.
|
|
||||||
|
|
||||||
2. **Peer-to-peer.**
|
|
||||||
|
|
||||||
Applications sometimes have requirements that make them suitable for peer-to-peer solutions:
|
|
||||||
|
|
||||||
- Censorship-resistant with no single point of failure
|
|
||||||
- Adaptive and scalable network
|
|
||||||
- Shared infrastructure/service network
|
|
||||||
|
|
||||||
3. **Runs anywhere.**
|
|
||||||
|
|
||||||
Applications often run in restricted environments, where resources or the environment is restricted in some fashion.
|
|
||||||
For example:
|
|
||||||
|
|
||||||
- Limited bandwidth, CPU, memory, disk, battery, etc
|
|
||||||
- Not being publicly connectable
|
|
||||||
- Only being intermittently connected; mostly-offline
|
|
||||||
|
|
||||||
4. **Privacy-preserving.**
|
|
||||||
|
|
||||||
Applications often have a desire for some privacy guarantees, such as:
|
|
||||||
|
|
||||||
- Pseudonymity and not being tied to any personally identifiable information (PII)
|
|
||||||
- Metadata protection in transit
|
|
||||||
- Various forms of unlinkability, etc
|
|
||||||
|
|
||||||
5. **Modular design.**
|
|
||||||
|
|
||||||
Waku nodes are [adaptive](https://rfc.vac.dev/spec/30/): you can turn several dials depending on your use case and environment.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
|
|
||||||
- Low privacy/low resource usage vs high privacy/increased latency + bandwidth usage
|
|
||||||
- Providing resources to the network vs consuming resources
|
|
||||||
- Stronger guarantees for spam protection vs economic registration cost
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
title: What is Waku?
|
||||||
|
slug: /
|
||||||
|
---
|
||||||
|
|
||||||
|
Waku is a family of peer-to-peer protocols that provide **secure and private communication** in a decentralized environment. It is designed to operate in **resource-limited environments**, making it suitable for various decentralized applications (dApps).
|
||||||
|
|
||||||
|
Waku protocols ensure that users communication remains **censorship-resistant and privacy-preserving**, giving them complete control over their data. By incorporating Waku into your dApp, you can add decentralized communication features to your application **without compromising security or privacy**.
|
||||||
|
|
||||||
|
## Motivation and Goals
|
||||||
|
|
||||||
|
The Waku family of protocols is designed for diverse applications due to their properties, such as:
|
||||||
|
|
||||||
|
### Generalized Messaging
|
||||||
|
|
||||||
|
Many applications require some form of messaging protocol to facilitate communication between different subsystems or nodes. Waku is flexible and can be used for human-to-human and machine-to-machine messaging scenarios.
|
||||||
|
|
||||||
|
### Peer-to-Peer
|
||||||
|
|
||||||
|
Waku is suitable for applications that require a peer-to-peer approach, as it offers the following advantages:
|
||||||
|
|
||||||
|
- Censorship resistance with no single point of failure.
|
||||||
|
- Adaptive and scalable network.
|
||||||
|
- Shared infrastructure/service network.
|
||||||
|
|
||||||
|
### Platform Agnostic
|
||||||
|
|
||||||
|
Waku can run on any platform or environment, even in restricted settings with limited resources like bandwidth, CPU, memory, disk, battery, etc. It can also function when the nodes are not publicly connected or are primarily offline.
|
||||||
|
|
||||||
|
### Privacy-Preserving
|
||||||
|
|
||||||
|
Waku can cater to applications that require privacy guarantees, such as:
|
||||||
|
|
||||||
|
- Pseudonymity and not being tied to any personally identifiable information (PII).
|
||||||
|
- Metadata protection in transit.
|
||||||
|
- Various forms of unlinkability.
|
||||||
|
|
||||||
|
### Modular Design
|
||||||
|
|
||||||
|
Waku nodes are adaptive and can be customized based on the application's requirements and environment. Users can adjust several parameters, including:
|
||||||
|
|
||||||
|
- Low privacy/low resource usage vs. high privacy/increased latency + bandwidth usage.
|
||||||
|
- Providing resources to the network vs. consuming resources.
|
||||||
|
- Stronger guarantees for spam protection vs. economic registration cost.
|
||||||
|
|
||||||
|
## How Does Waku Work?
|
||||||
|
|
||||||
|
The Waku Relay protocol is the foundation of the Waku Network, which employs a `pubsub` architecture built on the `libp2p gossipsub` protocol. In addition to this, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to:
|
||||||
|
|
||||||
|
1. Facilitating the retrieval of **historical messages** for primarily offline devices.
|
||||||
|
2. Providing solutions for **encrypted communication**, such as symmetric encryption, ECIES/asymmetric encryption, and noise handshake-based key turns.
|
||||||
|
3. Preserve bandwidth usage for **resource-limited environments**.
|
||||||
|
4. Implementing economic **spam protection** (rate limits) while ensuring privacy.
|
||||||
|
5. Developing methods to protect against mass deanonymization (currently being researched).
|
||||||
|
|
||||||
|
If you want to learn more about how Waku operates, the [10/WAKU2](https://rfc.vac.dev/spec/10/) RFC provides an in-depth look under the hood.
|
|
@ -1,5 +1,5 @@
|
||||||
---
|
---
|
||||||
title: Who is using Waku?
|
title: Who is Using Waku?
|
||||||
---
|
---
|
||||||
|
|
||||||
### Status
|
### Status
|
||||||
|
@ -8,8 +8,8 @@ title: Who is using Waku?
|
||||||
|
|
||||||
### XMTP
|
### XMTP
|
||||||
|
|
||||||
[XMTP](https://xmtp.org/) is using Waku v2 for their open protocol and network for secure web3 messaging.
|
[XMTP](https://xmtp.org/) is using Waku v2 for their open protocol and network for secure Web3 messaging.
|
||||||
|
|
||||||
### RAILGUN
|
### RAILGUN
|
||||||
|
|
||||||
[RAILGUN](https://railgun.org/) is a privacy system for Ethereum that shields your assets in your own smart contract wallet. RAILGUN uses Waku when offering the ETH gas payments to other users, privately signaling fees and offers for gas payment relayers to keep the privacy & anonymity of your stablecoin & token transactions.
|
[RAILGUN](https://railgun.org/) is a privacy-focused system for Ethereum that secures your assets in a smart contract wallet while using Waku to offer private ETH gas payments to other users, ensuring anonymity and privacy for your stablecoin and token transactions.
|
||||||
|
|
|
@ -2,31 +2,28 @@
|
||||||
title: Why Waku?
|
title: Why Waku?
|
||||||
---
|
---
|
||||||
|
|
||||||
Communication today is rife with third party interference.
|
Communication in the present day is heavily influenced by third-party intervention, ranging from censorship and de-platforming to intermediaries that seek to profit from rent and the misuse of data in the surveillance economy.
|
||||||
From censorship and deplatforming, to rent seeking intermediaries, to the misuse of data in the surveillance economy.
|
|
||||||
|
|
||||||
Waku is designed to place control of communication back into the hands of the individual.
|
Waku is intended to empower individuals by returning control of communication to them. It is the go-to standard for Web3 communication, offering a **scalable decentralized communication** solution.
|
||||||
|
|
||||||
It is the communication layer for Web3 -- **decentralized communication that scales**.
|
- Waku improves upon Whisper's capabilities by overcoming limitations and addressing functional gaps.
|
||||||
|
|
||||||
- Waku fills the void left by Whisper.
|
- It provides a public infrastructure for the Ethereum and multi-chain ecosystem, serving as a common good.
|
||||||
|
|
||||||
- We are building Waku as a public good for the Ethereum and multi-chain ecosystem.
|
- It is not confined to a particular blockchain.
|
||||||
|
|
||||||
- It is not tied to a specific chain.
|
- It is modular, adaptable, and can cater to various use cases.
|
||||||
|
|
||||||
- It is modular and adaptive, enabling various use cases.
|
- It allows developers to decentralize communication in their dApps or move actions off-chain while maintaining decentralization.
|
||||||
|
|
||||||
- It enables developers to decentralize communication in their dApps or move actions off-chain without compromising decentralization.
|
- It can run on various platforms, including mobile devices, cloud environments, web browsers, native desktop apps, or even dappnodes!
|
||||||
|
|
||||||
- It aims to run anywhere, in the cloud and browser alike.
|
## Whisper vs. Waku
|
||||||
|
|
||||||
Private. Secure. Runs anywhere.
|
|
||||||
|
|
||||||
| | Whisper | Waku |
|
| | Whisper | Waku |
|
||||||
| -------------------------------------- | ------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------: |
|
| - | - | - |
|
||||||
| **Scalability** | Whisper doesn't scale very well, specifically when it comes to bandwidth usage on mobile devices. | Uses gossipsub and content topics. |
|
| **Scalability** | Whisper doesn't scale very well, specifically when it comes to bandwidth usage on mobile devices. | Uses sharding to partition the network into separate gossipsub networks, while maintaining a shared discovery network for peer location. |
|
||||||
| **Spam Resistance** | Proof of work requires too much battery and compute power making it a poor mechanism for heterogeneous nodes. | Uses innovative p2p economic spam protection mechanism RLN Relay |
|
| **Spam Resistance** | Proof of work requires too much battery and compute power making it a poor mechanism for heterogeneous nodes. | Uses innovative p2p economic spam protection mechanism RLN Relay |
|
||||||
| **No incentivized infrastructure** | There is no incentive to run a Whisper node | Research in progress to design incentivization for node operators. |
|
| **Incentivization Infrastructure** | There is no incentive to run a Whisper node | Research in progress to design incentivization for node operators. |
|
||||||
| **Formal Specification/Documentation** | Lack of formal and unambiguous specification | Open source specs & docs and available for anyone to read or improve. |
|
| **Formal Specification/Documentation** | Lack of formal and unambiguous specification | The specs and docs are open-source and licensed under CC0, making them freely available for anyone to read, modify and improve without restrictions. |
|
||||||
| **Portability** | Runs over devp2p which limits where Whisper can run and how | Waku is built using libp2p, making it easy to run Waku anywhere. |
|
| **Portability** | Runs over devp2p which limits where Whisper can run and how | Waku is built using libp2p, making it easy to run Waku anywhere. |
|
||||||
|
|
|
@ -4,7 +4,7 @@ require("dotenv").config();
|
||||||
|
|
||||||
/** @type {import('@docusaurus/types').Config} */
|
/** @type {import('@docusaurus/types').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
title: "Waku Guides",
|
title: "Waku Documentation Portal",
|
||||||
url: "https://waku.guide/",
|
url: "https://waku.guide/",
|
||||||
baseUrl: "/",
|
baseUrl: "/",
|
||||||
onBrokenLinks: "throw",
|
onBrokenLinks: "throw",
|
||||||
|
@ -43,10 +43,6 @@ const config = {
|
||||||
themeConfig:
|
themeConfig:
|
||||||
/** @type {import('@acid-info/logos-docusaurus-preset').ThemeConfig} */
|
/** @type {import('@acid-info/logos-docusaurus-preset').ThemeConfig} */
|
||||||
({
|
({
|
||||||
colorMode: {
|
|
||||||
defaultMode: "light",
|
|
||||||
disableSwitch: false,
|
|
||||||
},
|
|
||||||
navbar: {
|
navbar: {
|
||||||
title: "Waku",
|
title: "Waku",
|
||||||
logo: {
|
logo: {
|
||||||
|
|
|
@ -4,13 +4,11 @@
|
||||||
|
|
||||||
const sidebars = {
|
const sidebars = {
|
||||||
main: [
|
main: [
|
||||||
"overview/introduction",
|
"overview/what-is-waku",
|
||||||
"overview/history",
|
"overview/history",
|
||||||
"overview/motivation-and-goals",
|
|
||||||
"overview/why-waku",
|
"overview/why-waku",
|
||||||
"overview/who-is-using-waku",
|
"overview/who-is-using-waku",
|
||||||
"overview/implementations",
|
"overview/implementations",
|
||||||
"overview/how-does-it-work",
|
|
||||||
{
|
{
|
||||||
type: "category",
|
type: "category",
|
||||||
label: "Concepts",
|
label: "Concepts",
|
||||||
|
|
Loading…
Reference in New Issue