mirror of
https://github.com/logos-messaging/docs.waku.org.git
synced 2026-01-03 21:33:05 +00:00
restructure learn section
This commit is contained in:
parent
3de936c928
commit
47a27b1abe
@ -22,7 +22,7 @@ sequenceDiagram
|
||||
|
||||
The Pub/Sub topic `pubtopic1` serves as a means of routing messages (the network employs a default Pub/Sub topic) and indicates that it is subscribed to messages on that topic for a relay. Node D serves as a `Store` and is responsible for persisting messages.
|
||||
|
||||
1. Node A creates a WakuMessage `msg1` with [Content Topic](/overview/concepts/content-topics) `contentTopic1`.
|
||||
1. Node A creates a WakuMessage `msg1` with [Content Topic](/learn/concepts/content-topics) `contentTopic1`.
|
||||
2. Node F requests to get messages filtered by Pub/Sub topic `pubtopic1` and Content Topic `contentTopic1`. Node D subscribes F to this filter and will forward messages that match that filter in the future.
|
||||
3. Node A publishes `msg1` on `pubtopic1`. The message is sent from Node A to Node B and then forwarded to Node D.
|
||||
4. Node D, upon receiving `msg1`, stores the message for future retrieval by other nodes and forwards it to Node C.
|
||||
|
||||
@ -1,21 +0,0 @@
|
||||
---
|
||||
title: Join Our Community
|
||||
---
|
||||
|
||||
Welcome to the Waku Community! Whether you are interested in building with Waku, contributing to the network, expanding your knowledge, or staying abreast of our progress, we have something for everyone.
|
||||
|
||||
## [Discord](https://discord.waku.org/)
|
||||
|
||||
Connect with like-minded individuals in the Waku ecosystem! Introduce yourself, join developer conversations, or seek assistance. Join the [Waku Discord](https://discord.waku.org/) today!
|
||||
|
||||
## [Twitter](https://twitter.com/waku_org)
|
||||
|
||||
Stay informed and updated with the latest news and insights from Waku. [Follow us on Twitter](https://twitter.com/waku_org) now for all the thrilling updates!
|
||||
|
||||
## [Telegram](https://t.me/waku_org)
|
||||
|
||||
Join the [Waku Telegram Group](https://t.me/waku_org) now and become part of the thriving community! Stay informed, share ideas, and connect with fellow enthusiasts.
|
||||
|
||||
## [Vac Forum](https://forum.vac.dev/)
|
||||
|
||||
Are you seeking answers or looking forward to engaging in in-depth discussions about Waku? Join the conversation on the [Vac Forum](https://forum.vac.dev/), where you can participate in research-related and other insightful talks.
|
||||
@ -1,37 +0,0 @@
|
||||
---
|
||||
title: Contribute to Waku
|
||||
---
|
||||
|
||||
Get involved in Waku's open-source initiatives to improve the protocols, SDKs, developer tools and examples, and documentation. You can contribute by:
|
||||
|
||||
- [Running a node](/guides/nodes-and-sdks#run-a-waku-node) within your application.
|
||||
- [Reporting bugs](#report-a-bug) and [suggesting missing features](#suggest-a-feature) to the development team.
|
||||
- Completing [Waku Bounties](#complete-waku-bounties) and participating in our [Bug Bounty Programme](#submit-security-bug-reports).
|
||||
- Inspiring other developers to explore and use Waku for [various use cases](/overview/use-cases).
|
||||
|
||||
Begin your journey by visiting the [Nodes and SDKs](/guides/nodes-and-sdks) guide and start building on Waku today!
|
||||
|
||||
## Report a Bug
|
||||
|
||||
To report a bug, create an issue in the appropriate [GitHub repository](https://github.com/waku-org). Ensure no issue exists about the bug and include detailed steps to reproduce the bug.
|
||||
|
||||
## Suggest a Feature
|
||||
|
||||
To suggest a new feature, create an issue in the appropriate [GitHub repository](https://github.com/waku-org). Ensure no issue exists about the feature and specify the use cases the feature can enable, allowing us to investigate and prioritise accordingly.
|
||||
|
||||
## Make Pull Requests
|
||||
|
||||
Community pull requests (PRs) are highly encouraged, but we recommend [suggesting a feature](#suggest-a-feature) first to gauge interest and gather feedback before proceeding with a PR.
|
||||
|
||||
## Complete Waku Bounties
|
||||
|
||||
To promote community contributions, we encourage members to complete bounties that benefit Waku and earn rewards while positively impacting the network. Join the bounty programme at: <https://github.com/waku-org/bounties>.
|
||||
|
||||
|
||||
## Submit Security Bug Reports
|
||||
|
||||
To improve Waku's security, we invite researchers to collaborate in identifying and resolving potential vulnerabilities and earn rewards for their efforts. To participate, please review our bug bounty programme's details and submit your reports at: <https://hackenproof.com/status-dot-im/waku>.
|
||||
|
||||
## Contribute to Waku Research
|
||||
|
||||
Waku Research is an innovative R&D project dedicated to developing modular peer-to-peer protocols for communication that prioritise privacy, security, and censorship resistance. Explore Waku's ongoing challenges and experimental code at <https://github.com/waku-org/research>.
|
||||
@ -2,15 +2,15 @@
|
||||
title: Bootstrap Nodes and Discover Peers
|
||||
---
|
||||
|
||||
This guide provides detailed steps to bootstrap your your node using [Static Peers](/overview/concepts/static-peers) and discover peers in the Waku Network using [DNS Discovery](/overview/concepts/dns-discovery).
|
||||
This guide provides detailed steps to bootstrap your your node using [Static Peers](/learn/concepts/static-peers) and discover peers in the Waku Network using [DNS Discovery](/learn/concepts/dns-discovery).
|
||||
|
||||
:::tip
|
||||
Until [node incentivisation](/overview/reference/research-in-progress#prevention-of-denial-of-service-dos-and-node-incentivisation) is in place, you should [operate extra nodes](/guides/nodes-and-sdks#run-a-waku-node) alongside the ones provided by the Waku Network. When running a node, we recommend using the [DNS Discovery and Static Peers](#configure-dns-discovery-and-static-peers) configuration to connect to both the Waku Network and your node.
|
||||
Until [node incentivisation](/learn/research-in-progress#prevention-of-denial-of-service-dos-and-node-incentivisation) is in place, you should [operate extra nodes](/guides/nodes-and-sdks#run-a-waku-node) alongside the ones provided by the Waku Network. When running a node, we recommend using the [DNS Discovery and Static Peers](#configure-dns-discovery-and-static-peers) configuration to connect to both the Waku Network and your node.
|
||||
:::
|
||||
|
||||
## Default Bootstrap Method
|
||||
|
||||
The `@waku/sdk` package provides a built-in bootstrapping method that uses [DNS Discovery](/overview/concepts/dns-discovery) to locate peers from the `waku v2.prod` `ENR` tree.
|
||||
The `@waku/sdk` package provides a built-in bootstrapping method that uses [DNS Discovery](/learn/concepts/dns-discovery) to locate peers from the `waku v2.prod` `ENR` tree.
|
||||
|
||||
```js
|
||||
import { createLightNode } from "@waku/sdk";
|
||||
@ -21,7 +21,7 @@ const node = await createLightNode({ defaultBootstrap: true });
|
||||
|
||||
## Configure Static Peers
|
||||
|
||||
To bootstrap a node using [static peers](/overview/concepts/static-peers), first install the `@libp2p/bootstrap` package:
|
||||
To bootstrap a node using [static peers](/learn/concepts/static-peers), first install the `@libp2p/bootstrap` package:
|
||||
|
||||
```mdx-code-block
|
||||
import Tabs from '@theme/Tabs';
|
||||
@ -86,7 +86,7 @@ For local development using a `nwaku` node, use a `ws` address instead of `wss`.
|
||||
|
||||
## Configure DNS Discovery
|
||||
|
||||
To bootstrap a node using [DNS Discovery](/overview/concepts/dns-discovery), first install the `@waku/dns-discovery` package:
|
||||
To bootstrap a node using [DNS Discovery](/learn/concepts/dns-discovery), first install the `@waku/dns-discovery` package:
|
||||
|
||||
<Tabs groupId="package-manager">
|
||||
<TabItem value="npm" label="NPM">
|
||||
@ -154,7 +154,7 @@ const node = await createLightNode({
|
||||
|
||||
## Configure DNS Discovery and Static Peers
|
||||
|
||||
You can also bootstrap your node using [DNS Discovery](/overview/concepts/dns-discovery) and [Static Peers](/overview/concepts/static-peers) simultaneously:
|
||||
You can also bootstrap your node using [DNS Discovery](/learn/concepts/dns-discovery) and [Static Peers](/learn/concepts/static-peers) simultaneously:
|
||||
|
||||
```js
|
||||
import { createLightNode } from "@waku/sdk";
|
||||
|
||||
@ -44,7 +44,7 @@ To view debug logs in your browser's console, modify the local storage and add t
|
||||
|
||||
## Checking WebSocket Setup
|
||||
|
||||
[Nwaku](/guides/run-nwaku-node) provides native support for WebSocket (`ws`) and WebSocket Secure (`wss`) protocols. These are the only [transports](/overview/concepts/transports) supported for connecting to the Waku Network via browsers.
|
||||
[Nwaku](/guides/run-nwaku-node) provides native support for WebSocket (`ws`) and WebSocket Secure (`wss`) protocols. These are the only [transports](/learn/concepts/transports) supported for connecting to the Waku Network via browsers.
|
||||
|
||||
It's important to note that browsers impose certain limitations on WebSocket usage:
|
||||
|
||||
|
||||
@ -82,17 +82,17 @@ Have a look at the quick start guide and comprehensive tutorials to learn how to
|
||||
|
||||
| Guide | Description |
|
||||
| - | - |
|
||||
| [Send and Receive Messages Using Light Push and Filter](/guides/js-waku/light-send-receive) | Learn how to send and receive messages on light nodes using the [Light Push](/overview/concepts/protocols#light-push) and [Filter](/overview/concepts/protocols#filter) protocols |
|
||||
| [Retrieve Messages Using Store Protocol](/guides/js-waku/store-retrieve-messages) | Learn how to retrieve and filter historical messages on light nodes using the [Store protocol](/overview/concepts/protocols#store) |
|
||||
| [Send and Receive Messages Using Light Push and Filter](/guides/js-waku/light-send-receive) | Learn how to send and receive messages on light nodes using the [Light Push](/learn/concepts/protocols#light-push) and [Filter](/learn/concepts/protocols#filter) protocols |
|
||||
| [Retrieve Messages Using Store Protocol](/guides/js-waku/store-retrieve-messages) | Learn how to retrieve and filter historical messages on light nodes using the [Store protocol](/learn/concepts/protocols#store) |
|
||||
| [Build React DApps Using @waku/react](/guides/js-waku/use-waku-react) | Learn how to use the [@waku/react](https://www.npmjs.com/package/@waku/react) package seamlessly integrate `@waku/sdk` into a React application |
|
||||
| [Scaffold DApps Using @waku/create-app](/guides/js-waku/use-waku-create-app) | Learn how to use the [@waku/create-app](https://www.npmjs.com/package/@waku/create-app) package to bootstrap your next `@waku/sdk` project from various example templates |
|
||||
| [Bootstrap Nodes and Discover Peers](/guides/js-waku/configure-discovery) | Learn how to bootstrap your node using [Static Peers](/overview/concepts/static-peers) and discover peers using [DNS Discovery](/overview/concepts/dns-discovery) |
|
||||
| [Bootstrap Nodes and Discover Peers](/guides/js-waku/configure-discovery) | Learn how to bootstrap your node using [Static Peers](/learn/concepts/static-peers) and discover peers using [DNS Discovery](/learn/concepts/dns-discovery) |
|
||||
| [Run @waku/sdk in a NodeJS Application](/guides/js-waku/run-waku-nodejs) | Learn our suggested approach for using the `@waku/sdk` package within a NodeJS application |
|
||||
| [Debug Your Waku DApp and WebSocket](/guides/js-waku/debug-waku-dapp) | Learn how to troubleshoot your Waku DApp using debug logs and check [WebSocket](/overview/concepts/transports) connections in [nwaku](/guides/run-nwaku-node) |
|
||||
| [Manage Your Filter Subscriptions](/guides/js-waku/manage-filter) | Learn how to manage [filter subscriptions](/overview/concepts/protocols#filter) and handle node disconnections in your application |
|
||||
| [Debug Your Waku DApp and WebSocket](/guides/js-waku/debug-waku-dapp) | Learn how to troubleshoot your Waku DApp using debug logs and check [WebSocket](/learn/concepts/transports) connections in [nwaku](/guides/run-nwaku-node) |
|
||||
| [Manage Your Filter Subscriptions](/guides/js-waku/manage-filter) | Learn how to manage [filter subscriptions](/learn/concepts/protocols#filter) and handle node disconnections in your application |
|
||||
|
||||
:::tip
|
||||
Until [node incentivisation](/overview/reference/research-in-progress#prevention-of-denial-of-service-dos-and-node-incentivisation) is in place, you should [operate extra nodes](/guides/nodes-and-sdks#run-a-waku-node) alongside the ones provided by the Waku Network. When running a node, we recommend using the [DNS Discovery and Static Peers](/guides/js-waku/configure-discovery#configure-dns-discovery-and-static-peers) configuration to connect to both the Waku Network and your node.
|
||||
Until [node incentivisation](/learn/research-in-progress#prevention-of-denial-of-service-dos-and-node-incentivisation) is in place, you should [operate extra nodes](/guides/nodes-and-sdks#run-a-waku-node) alongside the ones provided by the Waku Network. When running a node, we recommend using the [DNS Discovery and Static Peers](/guides/js-waku/configure-discovery#configure-dns-discovery-and-static-peers) configuration to connect to both the Waku Network and your node.
|
||||
:::
|
||||
|
||||
## Get Help and Report Issues
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
title: Send and Receive Messages Using Light Push and Filter
|
||||
---
|
||||
|
||||
This guide provides detailed steps to start using the `@waku/sdk` package by setting up a [Light Node](/overview/reference/glossary#light-node) to send messages using the [Light Push protocol](/overview/concepts/protocols#light-push), and receive messages using the [Filter protocol](/overview/concepts/protocols#filter). Have a look at the [installation guide](/guides/js-waku/#installation) for steps on adding `@waku/sdk` to your project.
|
||||
This guide provides detailed steps to start using the `@waku/sdk` package by setting up a [Light Node](/learn/glossary#light-node) to send messages using the [Light Push protocol](/learn/concepts/protocols#light-push), and receive messages using the [Filter protocol](/learn/concepts/protocols#filter). Have a look at the [installation guide](/guides/js-waku/#installation) for steps on adding `@waku/sdk` to your project.
|
||||
|
||||
## Create a Light Node
|
||||
|
||||
Use the `createLightNode()` function to create a [Light Node](/overview/reference/glossary#light-node) and interact with the Waku Network:
|
||||
Use the `createLightNode()` function to create a [Light Node](/learn/glossary#light-node) and interact with the Waku Network:
|
||||
|
||||
```js
|
||||
import { createLightNode } from "@waku/sdk";
|
||||
@ -34,7 +34,7 @@ import { waitForRemotePeer } from "@waku/sdk";
|
||||
await waitForRemotePeer(node);
|
||||
```
|
||||
|
||||
The `protocols` option allows you to specify the [protocols](/overview/concepts/protocols) that the remote peers should have enabled:
|
||||
The `protocols` option allows you to specify the [protocols](/learn/concepts/protocols) that the remote peers should have enabled:
|
||||
|
||||
```js
|
||||
import { waitForRemotePeer, Protocols } from "@waku/sdk";
|
||||
@ -48,7 +48,7 @@ await waitForRemotePeer(node, [
|
||||
|
||||
## Choose a Content Topic
|
||||
|
||||
[Choose a content topic](/overview/concepts/content-topics) for your application and create a message `encoder` and `decoder`:
|
||||
[Choose a content topic](/learn/concepts/content-topics) for your application and create a message `encoder` and `decoder`:
|
||||
|
||||
```js
|
||||
import { createEncoder, createDecoder } from "@waku/sdk";
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
title: Manage Your Filter Subscriptions
|
||||
---
|
||||
|
||||
This guide provides detailed steps to manage [Filter](/overview/concepts/protocols#filter) subscriptions and handle node disconnections in your application. Have a look at the [Filter guide](/guides/js-waku/light-send-receive) for receiving messages with the `Light Push` and `Filter` protocol.
|
||||
This guide provides detailed steps to manage [Filter](/learn/concepts/protocols#filter) subscriptions and handle node disconnections in your application. Have a look at the [Filter guide](/guides/js-waku/light-send-receive) for receiving messages with the `Light Push` and `Filter` protocol.
|
||||
|
||||
## Overview
|
||||
|
||||
@ -51,6 +51,10 @@ const pingAndReinitiateSubscription = async () => {
|
||||
await pingAndReinitiateSubscription();
|
||||
```
|
||||
|
||||
:::info
|
||||
Pings will fail when there are temporary network degradations or reachability issues. This does not mean that the underlying connection has been closed.
|
||||
:::
|
||||
|
||||
:::success Congratulations!
|
||||
You have successfully managed your `Filter` subscriptions to handle node disconnections in your application.
|
||||
:::
|
||||
@ -12,7 +12,7 @@ While the `@waku/sdk` package is primarily designed for browser environments, yo
|
||||
|
||||
### Protocol Implementation
|
||||
|
||||
`@waku/sdk` focuses on the client side of the [Request/Response protocol](/overview/concepts/network-domains#requestresponse-domain). We'll have to replicate all the functionalities added to [nwaku](/guides/run-nwaku-node) to implement extra features.
|
||||
`@waku/sdk` focuses on the client side of the [Request/Response protocol](/learn/concepts/network-domains#requestresponse-domain). We'll have to replicate all the functionalities added to [nwaku](/guides/run-nwaku-node) to implement extra features.
|
||||
|
||||
### Codebase Complexity
|
||||
|
||||
@ -20,9 +20,9 @@ While the `@waku/sdk` package is primarily designed for browser environments, yo
|
||||
|
||||
### Browser-Specific Protocols
|
||||
|
||||
Certain features in `@waku/sdk` are tailored for browsers and might not translate seamlessly to NodeJS. For example, only `WebSocket` is supported in the browser, whereas a NodeJS application can benefit from using [transport methods](/overview/concepts/transports) like `TCP`.
|
||||
Certain features in `@waku/sdk` are tailored for browsers and might not translate seamlessly to NodeJS. For example, only `WebSocket` is supported in the browser, whereas a NodeJS application can benefit from using [transport methods](/learn/concepts/transports) like `TCP`.
|
||||
|
||||
`@waku/sdk` default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why [DNS Discovery](/overview/concepts/dns-discovery) and [Peer Exchange](/overview/concepts/peer-exchange) are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.
|
||||
`@waku/sdk` default peer management caters to the browser's ephemeral nature, which is different for NodeJS. This is why [DNS Discovery](/learn/concepts/dns-discovery) and [Peer Exchange](/learn/concepts/peer-exchange) are the default discovery mechanisms for the browser but not for NodeJS and desktop applications.
|
||||
|
||||
## Recommendations
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
title: Retrieve Messages Using Store Protocol
|
||||
---
|
||||
|
||||
This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the [Store protocol](/overview/concepts/protocols#store).
|
||||
This guide provides detailed steps to create a Light Node for retrieving and filtering historical messages using the [Store protocol](/learn/concepts/protocols#store).
|
||||
|
||||
## Create a Light Node
|
||||
|
||||
@ -29,7 +29,7 @@ await waitForRemotePeer(node, [Protocols.Store]);
|
||||
|
||||
## Choose a Content Topic
|
||||
|
||||
[Choose a content topic](/overview/concepts/content-topics) for filtering the messages to retrieve and create a message `decoder`:
|
||||
[Choose a content topic](/learn/concepts/content-topics) for filtering the messages to retrieve and create a message `decoder`:
|
||||
|
||||
```js
|
||||
import { createDecoder } from "@waku/sdk";
|
||||
|
||||
@ -69,7 +69,7 @@ ReactDOM.createRoot(document.getElementById('root')).render(
|
||||
)
|
||||
```
|
||||
|
||||
Next, create and start a [Light Node](/overview/reference/glossary#light-node) using the `useWaku()` function within the `App.jsx` file:
|
||||
Next, create and start a [Light Node](/learn/glossary#light-node) using the `useWaku()` function within the `App.jsx` file:
|
||||
|
||||
```js title="src/App.jsx"
|
||||
import { useWaku } from "@waku/react";
|
||||
|
||||
@ -34,7 +34,6 @@ Waku provides integrations tailored for mobile applications, enabling Waku to ru
|
||||
|
||||
| | Description | Documentation |
|
||||
| - | - | - |
|
||||
| [React Native](https://github.com/waku-org/waku-react-native) | React Native wrapper using `go-waku` bindings designed for native mobile integration | COMING SOON |
|
||||
| Swift (iOS) | `go-waku` bindings for Swift applications to seamlessly integrate Waku | COMING SOON |
|
||||
| Kotlin (Android) | `go-waku` bindings for Kotlin applications to seamlessly integrate Waku | COMING SOON |
|
||||
|
||||
|
||||
@ -10,7 +10,7 @@ You can configure a `nwaku` node to use multiple peer discovery mechanisms simul
|
||||
|
||||
## Configure Static Peers
|
||||
|
||||
You can provide [static peers](/overview/concepts/static-peers) to a `nwaku` node during startup using the `staticnode` configuration option. To connect to multiple peers on startup, repeat the `staticnode` option:
|
||||
You can provide [static peers](/learn/concepts/static-peers) to a `nwaku` node during startup using the `staticnode` configuration option. To connect to multiple peers on startup, repeat the `staticnode` option:
|
||||
|
||||
```bash
|
||||
./build/wakunode2 \
|
||||
@ -28,7 +28,7 @@ For example, consider a `nwaku` node that connects to two static peers on the sa
|
||||
|
||||
## Configure DNS Discovery
|
||||
|
||||
To enable [DNS Discovery](/overview/concepts/dns-discovery) in a `nwaku` node, use the following configuration options:
|
||||
To enable [DNS Discovery](/learn/concepts/dns-discovery) in a `nwaku` node, use the following configuration options:
|
||||
|
||||
- `dns-discovery`: Enables `DNS Discovery` on the node (disabled by default).
|
||||
- `dns-discovery-url`: URL for DNS node list in the format `enrtree://<key>@<fqdn>` where `<fqdn>` is the fully qualified domain name and `<key>` is the base32 encoding of the compressed 32-byte public key that signed the list at that location.
|
||||
@ -57,7 +57,7 @@ For example, consider a `nwaku` node that enables `DNS Discovery`, connects to a
|
||||
|
||||
## Configure Discv5
|
||||
|
||||
To enable [Discv5](/overview/concepts/discv5) in a `nwaku` node, use the following configuration options:
|
||||
To enable [Discv5](/learn/concepts/discv5) in a `nwaku` node, use the following configuration options:
|
||||
|
||||
- `discv5-discovery`: Enables `Discv5` on the node (disabled by default).
|
||||
- `discv5-bootstrap-node`: ENR for `Discv5` routing table bootstrap node. You can repeat this option to provide multiple bootstrap entries.
|
||||
@ -83,7 +83,7 @@ When Discv5 is enabled and used with [DNS Discovery](#configure-dns-discovery),
|
||||
|
||||
## Configure Peer Exchange
|
||||
|
||||
To enable [Peer Exchange](/overview/concepts/peer-exchange) in a `nwaku` node, use the following configuration options:
|
||||
To enable [Peer Exchange](/learn/concepts/peer-exchange) in a `nwaku` node, use the following configuration options:
|
||||
|
||||
- `peer-exchange`: Enables `Peer Exchange` on the node as a responder (disabled by default).
|
||||
- `peer-exchange-node` (optional): Multiaddr for bootstrap node with the peer exchange protocol enabled.
|
||||
|
||||
@ -6,7 +6,7 @@ This guide provides detailed steps to configure a `nwaku` node for different use
|
||||
|
||||
## Connect to Other Peers
|
||||
|
||||
To join the Waku Network, nodes must [bootstrap](/overview/reference/glossary#bootstrapping) for an entry point before discovering more peers. Nwaku provides multiple [peer discovery](/overview/concepts/peer-discovery) mechanisms:
|
||||
To join the Waku Network, nodes must [bootstrap](/learn/glossary#bootstrapping) for an entry point before discovering more peers. Nwaku provides multiple [peer discovery](/learn/concepts/peer-discovery) mechanisms:
|
||||
|
||||
- [Configure Static Peers](/guides/nwaku/configure-discovery#configure-static-peers)
|
||||
- [Configure DNS Discovery](/guides/nwaku/configure-discovery#configure-dns-discovery)
|
||||
@ -30,12 +30,12 @@ For example, consider the domain name `nwakunode.com`, which resolves to a `nwak
|
||||
Browser nodes can only connect to nodes with a domain name and secure WebSocket (`wss`) configured. These nodes will generate a discoverable ENR with `/wss` as the multiaddr and `/dns4` as the domain name. This configuration is essential for verifying domain certificates when establishing a secure connection.
|
||||
|
||||
:::info
|
||||
This example describes configuring a domain name that resolves to your node's IP address and is unrelated to [DNS Discovery](/overview/concepts/dns-discovery).
|
||||
This example describes configuring a domain name that resolves to your node's IP address and is unrelated to [DNS Discovery](/learn/concepts/dns-discovery).
|
||||
:::
|
||||
|
||||
## Configure Store Protocol and Message Store
|
||||
|
||||
To enable message caching and serve them to network peers, enable the [Store protocol](/overview/concepts/protocols#store) using the following configuration options:
|
||||
To enable message caching and serve them to network peers, enable the [Store protocol](/learn/concepts/protocols#store) using the following configuration options:
|
||||
|
||||
- `store`: Enables storing messages to serve them to peers (disabled by default).
|
||||
- `store-message-retention-policy`: Retention policy of the store node (how long messages will be persisted). Three different retention policies are supported:
|
||||
@ -75,7 +75,7 @@ For example, consider a `nwaku` node that does not persist messages but can quer
|
||||
|
||||
## Generate and Configure a Node Key
|
||||
|
||||
Nodes generate [new random key pairs](/overview/reference/glossary#node-key) at each boot, leading to different `multiaddrs`. To maintain consistency, you can use a pre-generated private key with the `nodekey` option:
|
||||
Nodes generate [new random key pairs](/learn/glossary#node-key) at each boot, leading to different `multiaddrs`. To maintain consistency, you can use a pre-generated private key with the `nodekey` option:
|
||||
|
||||
```bash
|
||||
./build/wakunode2 --nodekey=[NODE PRIVATE KEY]
|
||||
@ -111,7 +111,7 @@ You can use the output `286cae9f2990bfc49dafdd3a9e737f56ddba3656e5e427108cef456f
|
||||
|
||||
## Configure WebSocket Transport
|
||||
|
||||
WebSocket is the only [transport method](/overview/concepts/transports) browser nodes support using [@waku/sdk](/guides/js-waku/). To enable WebSocket in `nwaku` to serve browser peers, use the following configuration options:
|
||||
WebSocket is the only [transport method](/learn/concepts/transports) browser nodes support using [@waku/sdk](/guides/js-waku/). To enable WebSocket in `nwaku` to serve browser peers, use the following configuration options:
|
||||
|
||||
- `websocket-support`: Enables WebSocket (`ws`) on the node (disabled by default).
|
||||
- `websocket-port` (optional): WebSocket listening port. If you omit this option, it will default to `8000`.
|
||||
@ -196,7 +196,7 @@ Consider a `nwaku` node that enabled the REST `admin` and `private` API with a m
|
||||
|
||||
## Configure Filter Protocol
|
||||
|
||||
To enable `nwaku` to serve light clients, enable the [Filter protocol](/overview/concepts/protocols#filter) using `filter` option:
|
||||
To enable `nwaku` to serve light clients, enable the [Filter protocol](/learn/concepts/protocols#filter) using `filter` option:
|
||||
|
||||
```bash
|
||||
./build/wakunode2 --filter=true
|
||||
@ -224,7 +224,7 @@ If you omit the `filter-timeout` option, it will default to `14400` seconds (4 h
|
||||
|
||||
## Configure Light Push Protocol
|
||||
|
||||
To enable `nwaku` to serve light clients, enable the [Light Push protocol](/overview/concepts/protocols#light-push) using the `lightpush` option:
|
||||
To enable `nwaku` to serve light clients, enable the [Light Push protocol](/learn/concepts/protocols#light-push) using the `lightpush` option:
|
||||
|
||||
```bash
|
||||
./build/wakunode2 --lightpush=true
|
||||
|
||||
@ -4,7 +4,7 @@ title: Run Nwaku with Docker Compose
|
||||
|
||||
`nwaku-compose` is a ready-to-use Docker Compose setup that runs the following:
|
||||
|
||||
- `nwaku` node running [Relay](/overview/concepts/protocols#relay) and [Store](/overview/concepts/protocols#store) protocols with [RLN](/overview/concepts/protocols#rln-relay) enabled.
|
||||
- `nwaku` node running [Relay](/learn/concepts/protocols#relay) and [Store](/learn/concepts/protocols#store) protocols with [RLN](/learn/concepts/protocols#rln-relay) enabled.
|
||||
- Simple frontend to interact with your node and the network to send and receive messages.
|
||||
- [Grafana](https://grafana.com/) metrics dashboard for advanced users or node operators.
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
title: Run a Nwaku Node
|
||||
---
|
||||
|
||||
Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the [protocols](/overview/concepts/protocols) they want to support based on their needs, motivations, and available resources.
|
||||
Nwaku is a lightweight and robust Nim client for running a Waku node, equipped with tools to monitor and maintain a running node. Nwaku is highly configurable, enabling operators to select the [protocols](/learn/concepts/protocols) they want to support based on their needs, motivations, and available resources.
|
||||
|
||||
This guide provides detailed steps to download, build, configure, and connect a `nwaku` node to the Waku Network. It also includes interacting with the node and finding its addresses.
|
||||
|
||||
@ -54,14 +54,14 @@ To learn how to customise the configuration of a `nwaku` node, have a look at th
|
||||
|
||||
## Bootstrap the Node
|
||||
|
||||
To join the Waku Network, nodes must [bootstrap](/overview/reference/glossary#bootstrapping) for an entry point before discovering more peers. Nwaku provides multiple [peer discovery](/overview/concepts/peer-discovery) mechanisms:
|
||||
To join the Waku Network, nodes must [bootstrap](/learn/glossary#bootstrapping) for an entry point before discovering more peers. Nwaku provides multiple [peer discovery](/learn/concepts/peer-discovery) mechanisms:
|
||||
|
||||
| | Description | Documentation |
|
||||
| - | - | - |
|
||||
| Static Peers | Configure the bootstrap nodes that `nwaku` should establish connections upon startup | [Configure Static Peers](/guides/nwaku/configure-discovery#configure-static-peers) |
|
||||
| DNS Discovery | Enable `nwaku` to bootstrap nodes using the [DNS Discovery](/overview/concepts/dns-discovery) mechanism | [Configure DNS Discovery](/guides/nwaku/configure-discovery#configure-dns-discovery) |
|
||||
| Discv5 | Enable `nwaku` to discover peers using the [Discv5](/overview/concepts/discv5) mechanism | [Configure Discv5](/guides/nwaku/configure-discovery#configure-discv5) |
|
||||
| Peer Exchange | Enable [Peer Exchange](/overview/concepts/peer-exchange) protocol for light nodes to request peers from your `nwaku` node | [Configure Peer Exchange](/guides/nwaku/configure-discovery#configure-peer-exchange) |
|
||||
| DNS Discovery | Enable `nwaku` to bootstrap nodes using the [DNS Discovery](/learn/concepts/dns-discovery) mechanism | [Configure DNS Discovery](/guides/nwaku/configure-discovery#configure-dns-discovery) |
|
||||
| Discv5 | Enable `nwaku` to discover peers using the [Discv5](/learn/concepts/discv5) mechanism | [Configure Discv5](/guides/nwaku/configure-discovery#configure-discv5) |
|
||||
| Peer Exchange | Enable [Peer Exchange](/learn/concepts/peer-exchange) protocol for light nodes to request peers from your `nwaku` node | [Configure Peer Exchange](/guides/nwaku/configure-discovery#configure-peer-exchange) |
|
||||
|
||||
:::info
|
||||
You can configure a `nwaku` node to use multiple peer discovery mechanisms simultaneously.
|
||||
|
||||
@ -1,8 +1,9 @@
|
||||
---
|
||||
title: Content Topics
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
`Content Topics` are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages ([Relay](/overview/concepts/protocols#relay) or [Filter](/overview/concepts/protocols#filter)) and retrieving historical messages ([Store](/overview/concepts/protocols#store)) that meet specific filtering criteria. Have a look at the [WAKU2-TOPICS](https://rfc.vac.dev/spec/23/#content-topics) specification to learn more.
|
||||
`Content Topics` are metadata strings set by developers on outgoing messages to facilitate protocol-level features like selectively processing incoming messages ([Relay](/learn/concepts/protocols#relay) or [Filter](/learn/concepts/protocols#filter)) and retrieving historical messages ([Store](/learn/concepts/protocols#store)) that meet specific filtering criteria. Have a look at the [WAKU2-TOPICS](https://rfc.vac.dev/spec/23/#content-topics) specification to learn more.
|
||||
|
||||
## Naming Format
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Discv5
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
`Discv5` is a decentralised and efficient peer discovery mechanism for the Waku Network. It uses a [Distributed Hash Table (DHT)](https://en.wikipedia.org/wiki/Distributed_hash_table) for storing `ENR` records, providing resistance to censorship. `Discv5` offers a global view of participating nodes, enabling random sampling for load distribution. It uses bootstrap nodes as an entry point to the network, providing randomised sets of nodes for mesh expansion. Have a look at the [Discv5](https://rfc.vac.dev/spec/33/) specification to learn more.
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: DNS Discovery
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Built upon the foundation of [EIP-1459: Node Discovery via DNS](https://eips.ethereum.org/EIPS/eip-1459), DNS Discovery allows the retrieval of an `ENR` tree from the `TXT` field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, using the standardised [ENR format](https://rfc.vac.dev/spec/31/).
|
||||
@ -1,26 +1,27 @@
|
||||
---
|
||||
title: Network Domains
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Waku is a unified and cohesive entity that offers a rich ecosystem with three distinct network interaction domains. These domains serve specialised purposes and contribute to the robust functionality of Waku, forming its foundation.
|
||||
|
||||
## Discovery Domain
|
||||
|
||||
Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [Discv5](/overview/concepts/discv5) and [Peer Exchange](/overview/concepts/peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.
|
||||
Peer discovery in Waku facilitates locating other nodes within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [Discv5](/learn/concepts/discv5) and [Peer Exchange](/learn/concepts/peer-exchange). These mechanisms allow developers to choose the most suitable option(s) for their specific use cases and user environments, including mobile phones, desktop browsers, servers, and more.
|
||||
|
||||
## Gossip Domain
|
||||
|
||||
GossipSub derives its name from the practice within Pub/Sub networks where peers gossip about the messages they have encountered, thus establishing a message delivery network.
|
||||
|
||||
Waku employs gossiping through [Relay](/overview/concepts/protocols#relay) to distribute messages across the network. Additionally, Waku introduces [RLN Relay](/overview/concepts/protocols#rln-relay), an experimental mechanism that combines privacy preservation and economic spam protection.
|
||||
Waku employs gossiping through [Relay](/learn/concepts/protocols#relay) to distribute messages across the network. Additionally, Waku introduces [RLN Relay](/learn/concepts/protocols#rln-relay), an experimental mechanism that combines privacy preservation and economic spam protection.
|
||||
|
||||
## Request/Response Domain
|
||||
|
||||
Waku provides a set of protocols to optimise its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes.
|
||||
|
||||
- [Store](/overview/concepts/protocols#store) enables the retrieval of historical messages.
|
||||
- [Filter](/overview/concepts/protocols#filter) efficiently retrieves a subset of messages to conserve bandwidth.
|
||||
- [Light Push](/overview/concepts/protocols#light-push) facilitates message publication for nodes with limited bandwidth and short connection windows.
|
||||
- [Store](/learn/concepts/protocols#store) enables the retrieval of historical messages.
|
||||
- [Filter](/learn/concepts/protocols#filter) efficiently retrieves a subset of messages to conserve bandwidth.
|
||||
- [Light Push](/learn/concepts/protocols#light-push) facilitates message publication for nodes with limited bandwidth and short connection windows.
|
||||
|
||||
## Overview of Protocol Interaction
|
||||
|
||||
19
docs/learn/concepts/peer-discovery.md
Normal file
19
docs/learn/concepts/peer-discovery.md
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Peer Discovery
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.
|
||||
|
||||
Once a connection is established, the node must actively seek out additional peers to have:
|
||||
|
||||
- Sufficient peers in the [Relay](/learn/concepts/protocols#relay) mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed.
|
||||
- Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections.
|
||||
- Peers with specific capabilities: The node seeks out peers with specific capabilities, such as [Store](/learn/concepts/protocols#store), [Light Push](/learn/concepts/protocols#light-push), or [Filter](/learn/concepts/protocols#filter). This allows for targeted interactions and enhanced functionality based on the desired capabilities.
|
||||
|
||||
Waku supports multiple peer discovery mechanisms, such as:
|
||||
|
||||
- [Configuring Static Peers](/learn/concepts/static-peers)
|
||||
- [Peer Discovery via DNS](/learn/concepts/dns-discovery)
|
||||
- [Discv5 Ambient Peer Discovery](/learn/concepts/discv5)
|
||||
- [Peer Exchange](/learn/concepts/peer-exchange)
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Peer Exchange
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
The primary objective of this protocol is to facilitate peer connectivity for resource-limited devices without relying on `Discv5`. The peer exchange protocol enables light nodes to request peers from other nodes within the network. Have a look at the [Peer Exchange](https://rfc.vac.dev/spec/34/) specification to learn more.
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Protocols
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Waku takes a modular approach, providing a range of protocols that enable applications to control the trade-offs involved in the [Anonymity Trilemma](https://eprint.iacr.org/2017/954.pdf). This flexibility empowers applications to make informed choices regarding the desired balance between anonymity, scalability, and latency. Here are the main protocols provided by Waku:
|
||||
@ -14,7 +15,7 @@ Waku takes a modular approach, providing a range of protocols that enable applic
|
||||
|
||||
## [Filter](https://rfc.vac.dev/spec/12/)
|
||||
|
||||
`Filter` protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using [content topics](/overview/concepts/content-topics). It is designed to be a lightweight alternative for accessing the `Relay` network, particularly tailored for devices with limited bandwidth.
|
||||
`Filter` protocol allows light nodes to selectively subscribe to specific messages relayed by other peers using [content topics](/learn/concepts/content-topics). It is designed to be a lightweight alternative for accessing the `Relay` network, particularly tailored for devices with limited bandwidth.
|
||||
|
||||
:::info
|
||||
`Filter` protocol helps optimise bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages.
|
||||
@ -30,7 +31,7 @@ Using `Relay` and `Filter` protocols is recommended when a node is online, as `S
|
||||
|
||||
## [Light Push](https://rfc.vac.dev/spec/19/)
|
||||
|
||||
`Light Push` is a [Request/Response](/overview/concepts/network-domains#requestresponse-domain) protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the `Relay` network.
|
||||
`Light Push` is a [Request/Response](/learn/concepts/network-domains#requestresponse-domain) protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgement when sending messages, indicating that at least one peer has received them. Subsequently, the remote peer forwards these messages to the `Relay` network.
|
||||
|
||||
:::info
|
||||
While the `Light Push` protocol acknowledges the receipt by the remote peer, it does not guarantee network-wide propagation.
|
||||
@ -40,7 +41,7 @@ While the `Light Push` protocol acknowledges the receipt by the remote peer, it
|
||||
|
||||
`Waku Message` specifies the structure and format of messages in the Waku Network. It includes the following attributes:
|
||||
|
||||
- `content_topic` attribute for [content-based filtering](/overview/concepts/content-topics).
|
||||
- `content_topic` attribute for [content-based filtering](/learn/concepts/content-topics).
|
||||
- `payload` attribute containing the message data payload to be sent.
|
||||
- `meta` attribute for conveying additional details to various protocols for application-specific processing.
|
||||
- `timestamp` attribute signifying the time at which the message was generated by its sender.
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Static Peers
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can either use static peers operated by Status or [run a node](/guides/nodes-and-sdks#run-a-waku-node).
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Transports
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Transports help move data packets across a network by establishing connections between peers. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery.
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Glossary
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Waku Docs Glossary
|
||||
@ -10,7 +11,7 @@ Definitions and usage of the terminology used in the Waku ecosystem.
|
||||
|
||||
Bootstrapping is the initial entry point of a [node](#node) to the [Waku Network](#waku-network). Once connected, other [peer discovery](#peer-discovery) methods can be employed to locate other [peers](#peer) in the network.
|
||||
|
||||
### [Content Topic](/overview/concepts/content-topics)
|
||||
### [Content Topic](/learn/concepts/content-topics)
|
||||
|
||||
A content topic is a string attached to [messages](#waku-message) to enable [protocol-level](#protocol) features like selective message processing and retrieval based on specific criteria.
|
||||
|
||||
@ -18,11 +19,11 @@ A content topic is a string attached to [messages](#waku-message) to enable [pro
|
||||
|
||||
Dappnode is an open-source platform that simplifies the hosting and management of decentralised applications and blockchain nodes, including [Waku](#waku).
|
||||
|
||||
### [Discv5](/overview/concepts/discv5)
|
||||
### [Discv5](/learn/concepts/discv5)
|
||||
|
||||
Discv5 is a [peer discovery](#peer-discovery) mechanism using a Distributed Hash Table (DHT) to store [ENR](#enr) records, providing censorship resistance, load distribution, and enhanced network resilience.
|
||||
|
||||
### [DNS Discovery](/overview/concepts/dns-discovery)
|
||||
### [DNS Discovery](/learn/concepts/dns-discovery)
|
||||
|
||||
DNS discovery is a [peer discovery](#peer-discovery) mechanism that allows the retrieval of an [ENR](#enr) tree from the TXT field of a domain name, enabling the storage of [node](#node) connection details and promoting decentralisation.
|
||||
|
||||
@ -30,11 +31,11 @@ DNS discovery is a [peer discovery](#peer-discovery) mechanism that allows the r
|
||||
|
||||
Ethereum Node Record (ENR) is a specification used to represent and identify [nodes](#node), facilitating [discovery](#peer-discovery) and communication within the network. Besides connection details, `ENR` also includes node configuration information like enabled protocol and shards.
|
||||
|
||||
### [Filter](/overview/concepts/protocols#filter)
|
||||
### [Filter](/learn/concepts/protocols#filter)
|
||||
|
||||
Filter is a [protocol](#protocol) that enables [light nodes](#light-node) to selectively subscribe to specific [messages](#waku-message) transmitted by [peers](#peer) using [content topics](#content-topic). It is designed to be a lightweight alternative for accessing the [Relay](#relay) network.
|
||||
|
||||
### [GossipSub](/overview/concepts/network-domains#gossip-domain)
|
||||
### [GossipSub](/learn/concepts/network-domains#gossip-domain)
|
||||
|
||||
GossipSub is a [protocol](#protocol) for efficient and scalable information dissemination in decentralised networks commonly used in blockchain systems.
|
||||
|
||||
@ -46,7 +47,7 @@ Libp2p is a modular network stack and protocol suite that allows developers to b
|
||||
|
||||
A light node is a [resource-limited](#resource-limited) device or client that leverages service nodes to access the [Relay](#relay) network.
|
||||
|
||||
### [Light Push](/overview/concepts/protocols#light-push)
|
||||
### [Light Push](/learn/concepts/protocols#light-push)
|
||||
|
||||
Light push is a protocol enabling [light nodes](#light-node) to send [messages](#waku-message) to the [Relay](#relay) network and receive acknowledgements confirming that a [peer](#peer) has received them.
|
||||
|
||||
@ -70,11 +71,11 @@ The payload field in a [Waku Message](#waku-message) contains the application da
|
||||
|
||||
A peer refers to other [nodes](#node) and participants of the [Waku Network](#waku-network) with whom communication and interaction are possible.
|
||||
|
||||
### [Peer Discovery](/overview/concepts/peer-discovery)
|
||||
### [Peer Discovery](/learn/concepts/peer-discovery)
|
||||
|
||||
Peer discovery is when a [node](#node) locates and gets information about other [peers](#peer) in the [Waku Network](#waku-network).
|
||||
|
||||
### [Peer Exchange](/overview/concepts/peer-exchange)
|
||||
### [Peer Exchange](/learn/concepts/peer-exchange)
|
||||
|
||||
Peer exchange is a [peer discovery](#peer-discovery) mechanism that enables [light nodes](#light-node) to request and receive peers from other nodes in the network, allowing them to bootstrap and expand their connections without depending on [Discv5](#discv5).
|
||||
|
||||
@ -82,7 +83,7 @@ Peer exchange is a [peer discovery](#peer-discovery) mechanism that enables [lig
|
||||
|
||||
`PeerID` is the unique identifier of a [node](#node) in the [Waku Network](#waku-network) generated from the cryptographic hash of the node's public key.
|
||||
|
||||
### [Protocol](/overview/concepts/protocols)
|
||||
### [Protocol](/learn/concepts/protocols)
|
||||
|
||||
A protocol is a set of rules that enables [nodes](#node) within the [Waku Network](#waku-network) to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more.
|
||||
|
||||
@ -98,7 +99,7 @@ A Pub/Sub topic is a string that serves as an identifier for the topic of intere
|
||||
|
||||
Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that enables rate limiting functionality while preserving the users's anonymity.
|
||||
|
||||
### [Relay](/overview/concepts/protocols#relay)
|
||||
### [Relay](/learn/concepts/protocols#relay)
|
||||
|
||||
Relay is a [protocol](#protocol) that extends the [GossipSub protocol](#gossipsub) to enable secure and censorship resistant [message](#waku-message) sending and receiving among [peers](#peer) while preserving privacy. It also scales the [Waku Network](#waku-network) to accommodate many nodes efficiently.
|
||||
|
||||
@ -106,7 +107,7 @@ Relay is a [protocol](#protocol) that extends the [GossipSub protocol](#gossipsu
|
||||
|
||||
Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power.
|
||||
|
||||
### [RLN Relay](/overview/concepts/protocols#rln-relay)
|
||||
### [RLN Relay](/learn/concepts/protocols#rln-relay)
|
||||
|
||||
RLN Relay is an extension of the [Relay protocol](#relay) that uses [Rate Limit Nullifiers (RLN)](#rate-limit-nullifiers) to prevent spam economically by enforcing a rate limit on messages over time, imposing penalties, and facilitating network removal for spammers.
|
||||
|
||||
@ -114,11 +115,11 @@ RLN Relay is an extension of the [Relay protocol](#relay) that uses [Rate Limit
|
||||
|
||||
SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications.
|
||||
|
||||
### [Store](/overview/concepts/protocols#store)
|
||||
### [Store](/learn/concepts/protocols#store)
|
||||
|
||||
Store is a [protocol](#protocol) that enables the storage of relayed [messages](#waku-message) in the network, allowing offline peers to retrieve missed messages upon reconnecting to the network.
|
||||
|
||||
### [Transport](/overview/concepts/transports)
|
||||
### [Transport](/learn/concepts/transports)
|
||||
|
||||
A transport is a network mechanism that establishes connections between [peers](#peer) and enables efficient transmission, routing, and delivery of data packets.
|
||||
|
||||
@ -126,7 +127,7 @@ A transport is a network mechanism that establishes connections between [peers](
|
||||
|
||||
Waku is a family of private, secure, decentralised, and peer-to-peer web3 communication [protocols](#protocol) designed to operate in [resource-limited](#resource-limited) environments and suitable for [node](#node) or desktop application use. Additionally, these protocols collectively form the [Waku Network](#waku-network).
|
||||
|
||||
### [Waku Message](/overview/concepts/protocols#waku-message)
|
||||
### [Waku Message](/learn/concepts/protocols#waku-message)
|
||||
|
||||
Waku Message defines the structure of messages in the [Waku Network](#waku-network), including the [content topic](#content-topic), [payload](#payload), and metadata for application-specific processing.
|
||||
|
||||
@ -134,7 +135,7 @@ Waku Message defines the structure of messages in the [Waku Network](#waku-netwo
|
||||
|
||||
Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the [Waku Network](#waku-network). It covers encryption, decryption, and signing methods for message [payloads](#payload), focusing on confidentiality, authenticity, integrity, and unlinkability.
|
||||
|
||||
### [Waku Network](/overview/waku-network)
|
||||
### [Waku Network](/learn/waku-network)
|
||||
|
||||
The Waku Network is an open-access, scalable peer-to-peer messaging network emphasizing privacy protection and accessibility to [resource limited](#resource-limited) devices.
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Research in Progress
|
||||
title: Research
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
The following features are currently experimental and under research and initial implementation:
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Security Features
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Waku's protocol layers offer different services and security considerations, shaping the overall security of Waku. We document the security models in the [RFCs of the protocols](https://rfc.vac.dev/), aiming to provide transparent and open-source references. This empowers Waku users to understand each protocol's security guarantees and limitations.
|
||||
@ -21,7 +22,7 @@ Anonymity means an adversary cannot connect an actor to their actions or data. T
|
||||
|
||||
The spam protection feature in `Relay` ensures that no adversary can flood the system with many messages, intentionally or not, regardless of the content's validity or usefulness. This protection is achieved through the [scoring mechanism](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/gossipsub-v1.1.md#spam-protection-measures) of `GossipSub v1.1`. Peers assign scores to their connections based on their behaviour and remove peers with low scores.
|
||||
|
||||
Ongoing research is being conducted, including developing [Rate Limit Nullifiers (RLN)](/overview/concepts/protocols#rln-relay), which can be explored further at: <https://github.com/vacp2p/research/issues/148>.
|
||||
Ongoing research is being conducted, including developing [Rate Limit Nullifiers (RLN)](/learn/concepts/protocols#rln-relay), which can be explored further at: <https://github.com/vacp2p/research/issues/148>.
|
||||
|
||||
## [Data Confidentiality, Integrity, and Authenticity](https://rfc.vac.dev/spec/10/#data-confidentiality-integrity-and-authenticity)
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: The Waku Network
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
:::info
|
||||
@ -1,5 +1,6 @@
|
||||
---
|
||||
title: Comparing Waku and libp2p
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
Since Waku is built on top of libp2p, they share a lot of concepts and terminologies between them. However, there are key differences between them that are worth noting.
|
||||
@ -12,8 +13,8 @@ Waku intends to incentivise mechanisms to run nodes, but it is not part of libp2
|
||||
|
||||
Waku includes various protocols covering the following domains: privacy preservation, censorship resistance, and platform agnosticism, allowing it to run on any platform or environment.
|
||||
|
||||
Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, [Store](/overview/concepts/protocols#store)/[Light Push](/overview/concepts/protocols#light-push)/[Filter](/overview/concepts/protocols#filter) caters to those use cases.
|
||||
Waku provides out-of-the-box protocols to enable mostly offline/resource-limited devices, [Store](/learn/concepts/protocols#store)/[Light Push](/learn/concepts/protocols#light-push)/[Filter](/learn/concepts/protocols#filter) caters to those use cases.
|
||||
|
||||
## Economic Spam Protection
|
||||
|
||||
libp2p does not have strong spam protection guarantees, [RLN Relay](/overview/concepts/protocols#rln-relay) is a protocol being developed by the Waku team towards this goal.
|
||||
libp2p does not have strong spam protection guarantees, [RLN Relay](/learn/concepts/protocols#rln-relay) is a protocol being developed by the Waku team towards this goal.
|
||||
@ -1,18 +0,0 @@
|
||||
---
|
||||
title: Peer Discovery
|
||||
---
|
||||
|
||||
When initialising a Waku node, it must connect with other peers to enable message sending, receiving, and retrieval. To achieve this, a discovery mechanism is employed to locate other peers in the network. This process is known as bootstrapping.
|
||||
|
||||
Once a connection is established, the node must actively seek out additional peers to have:
|
||||
|
||||
- Sufficient peers in the [Relay](/overview/concepts/protocols#relay) mesh: The goal is to have at least 6 peers in the mesh. This ensures a robust network where messages can be efficiently relayed.
|
||||
- Reserve peers for backup: It is essential to have a surplus of peers available as reserves. These reserves are backups when the current peers become overloaded or experience unexpected disconnections.
|
||||
- Peers with specific capabilities: The node seeks out peers with specific capabilities, such as [Store](/overview/concepts/protocols#store), [Light Push](/overview/concepts/protocols#light-push), or [Filter](/overview/concepts/protocols#filter). This allows for targeted interactions and enhanced functionality based on the desired capabilities.
|
||||
|
||||
Waku supports multiple peer discovery mechanisms, such as:
|
||||
|
||||
- [Configuring Static Peers](/overview/concepts/static-peers)
|
||||
- [Peer Discovery via DNS](/overview/concepts/dns-discovery)
|
||||
- [Discv5 Ambient Peer Discovery](/overview/concepts/discv5)
|
||||
- [Peer Exchange](/overview/concepts/peer-exchange)
|
||||
@ -1,44 +0,0 @@
|
||||
---
|
||||
title: History of Waku
|
||||
---
|
||||
|
||||
`Waku v1` was a fork of Whisper with some added tweaks for efficiency. `Waku v2` introduces a fully revamped suite of protocols designed to address the goals set out [previously](/#motivation-and-goals).
|
||||
|
||||
```mdx-code-block
|
||||
import History from "@site/diagrams/_history.md";
|
||||
|
||||
<History />
|
||||
```
|
||||
|
||||
### 2013
|
||||
|
||||
The Ethereum White Paper was published, unveiling the holy trinity of web3, comprising:
|
||||
|
||||
- Ethereum for consensus.
|
||||
- Swarm for decentralised storage.
|
||||
- Whisper for peer-to-peer messaging.
|
||||
|
||||
### 2015-2018
|
||||
|
||||
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
|
||||
|
||||
Owing to the lack of progress made on Whisper and growing concerns around scalability, [Vac](https://vac.dev/) was established to focus on researching and developing more scalable peer-to-peer messaging solutions.
|
||||
|
||||
### 2020
|
||||
|
||||
`Waku v1` replaces Whisper as the messaging protocol in Status, resulting in the following:
|
||||
|
||||
- Enhanced performance.
|
||||
- Better scalability.
|
||||
- Capability to work in resource-limited environments.
|
||||
- And many more.
|
||||
|
||||
### 2021
|
||||
|
||||
`Waku v2` releases with a fully revamped suite of protocols that not only supersedes but also surpasses the performance of `Waku v1`.
|
||||
|
||||
### Present Day
|
||||
|
||||
Waku has continued to evolve and enhance itself, enabling privacy-focused and uncompromised web3 communication at scale.
|
||||
@ -1,73 +0,0 @@
|
||||
---
|
||||
title: Introduction to Waku
|
||||
slug: /
|
||||
---
|
||||
|
||||
:::caution
|
||||
Waku has risks and limitations as it is still developing and preparing for extensive adoption. However, it is already demonstrating its capabilities by [powering various applications](/powered-by-waku). [Join our community](/community) to stay updated on our progress.
|
||||
:::
|
||||
|
||||
Waku is a family of robust and censorship resistant communication protocols enabling privacy-focused messaging for web3 applications. It is designed to operate in resource-limited environments but can also be used as a node or desktop application.
|
||||
|
||||
Waku protocols ensure that users' communication remains censorship resistant and privacy preserving, giving them complete control over their data. By integrating Waku into your DApp, you can add decentralised 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:
|
||||
|
||||
### Generalised
|
||||
|
||||
Waku aims to solve the problem of ephemeral messaging between subsystems and nodes through a flexible, secure, and private protocol. It supports human-to-human and machine-to-machine messaging scenarios but is not designed for data storage.
|
||||
|
||||
### Peer-to-Peer
|
||||
|
||||
Waku is suitable for applications that require a peer-to-peer approach, offering the following advantages:
|
||||
|
||||
- Censorship resistance with no single point of failure.
|
||||
- Adaptive and scalable network.
|
||||
- Shared infrastructure, leveraging the capabilities of Waku as a service network.
|
||||
|
||||
### Platform Agnostic
|
||||
|
||||
Waku can run on any platform or environment, even settings with limited resources like bandwidth, CPU, memory, disk, battery, etc. It can also function when the nodes are not publicly connected or are mostly 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](/overview/reference/security-features#anonymityunlinkability).
|
||||
|
||||
### Modular Design
|
||||
|
||||
Waku nodes are adaptive and can be customised based on the application's requirements and environment. Users can adjust multiple parameters, such as:
|
||||
|
||||
- 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.
|
||||
|
||||
These options are part of the [Anonymity Trilemma](https://eprint.iacr.org/2017/954.pdf), which Waku addresses through its adjustable protocol.
|
||||
|
||||
|
||||
### Service Network
|
||||
|
||||
Waku provides developers with a convenient solution for building decentralised communication systems, eliminating the need to build a peer-to-peer network from scratch. Node operators can offer multiple services, such as:
|
||||
|
||||
- Storing messages for offline devices.
|
||||
- Enabling bandwidth-saving access to the [Relay](/overview/concepts/protocols#relay) network through [Light Push](/overview/concepts/protocols#light-push) and [Filter](/overview/concepts/protocols#filter) protocols.
|
||||
- Implementing spam-prevention and DoS-mitigation features.
|
||||
- Providing a resilient and shared [Relay](/overview/concepts/protocols#relay) infrastructure that applications can leverage to enhance reliability and efficiency.
|
||||
|
||||
## How Does Waku Work?
|
||||
|
||||
The [Relay](/overview/concepts/protocols#relay) protocol is the foundation of the Waku Network, which employs a Pub/Sub architecture built on the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md). Additionally, various other Waku protocols have been created to facilitate specific functionalities, including but not limited to:
|
||||
|
||||
1. Facilitating the retrieval of historical messages for mostly offline devices.
|
||||
2. Providing solutions for encrypted communication, such as symmetric encryption, ECIES/asymmetric encryption, and noise handshake-based key turns.
|
||||
3. Preserving bandwidth usage for resource-limited environments.
|
||||
4. Implementing economic spam protection (rate limits) while ensuring privacy.
|
||||
5. Developing methods to protect against mass deanonymisation (currently being researched).
|
||||
6. Designing strategies to scale `Relay/GossipSub` securely.
|
||||
|
||||
If you want to learn more about how Waku works, the [WAKU2 RFC](https://rfc.vac.dev/spec/10/) provides an in-depth look under the hood.
|
||||
@ -1,78 +0,0 @@
|
||||
---
|
||||
title: Use Cases
|
||||
---
|
||||
|
||||
Waku is a decentralised communication network, facilitating secure and private person-to-person and machine-to-machine communication without a central authority. It supports various use cases, including but not limited to:
|
||||
|
||||
### Chat Messengers
|
||||
|
||||
Waku can be used as the communication layer when building a private, decentralised, and censorship resistant messenger.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [Status Web](https://github.com/status-im/status-web)
|
||||
|
||||
### Polls
|
||||
|
||||
With Waku, you can create, answer, and view censorship resistant polls, promoting a democratic and transparent voting environment immune to manipulation and censorship.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [Waku Connect Poll SDK](https://github.com/status-im/wakuconnect-vote-poll-sdk)
|
||||
|
||||
### NFT Marketplaces
|
||||
|
||||
Waku can be used to take NFT bids and offers off-chain, enabling gas savings. Additionally, it allows for adding a social media layer, enabling NFT owners to like, comment, and perform other social actions.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [SmolPuddle Marketplace](https://github.com/Agusx1211/smolpuddle-web)
|
||||
|
||||
### State Channels
|
||||
|
||||
Waku can enable two parties to establish and sustain a state channel effortlessly, facilitating message exchange and seamless updates to their shared agreement without direct blockchain involvement.
|
||||
|
||||
### Voting and Proposals
|
||||
|
||||
To save on gas fees, votes for proposals submitted on the blockchain can be exchanged over Waku. These votes can then be aggregated and submitted to the blockchain to commit the result.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [Waku Connect Poll SDK](https://github.com/status-im/wakuconnect-vote-poll-sdk)
|
||||
|
||||
### Signature Exchange for Multi-Signature Wallets
|
||||
|
||||
Waku can enable multiple owners of a given multi-signature wallet to exchange signatures in a decentralised, private, and censorship resistant manner, allowing for the approval of transactions.
|
||||
|
||||
### Game Mechanics Communication
|
||||
|
||||
Waku can be used as the communication layer for a peer-to-peer, decentralised game, eliminating the need for a centralised infrastructure for gameplay communications.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [Super Card Game](https://github.com/fjij/ethonline-2021)
|
||||
|
||||
### DApp to Wallet Communication
|
||||
|
||||
DApp operators can use communication between a user's wallet and their DApp to notify users (e.g., governance token holders can be notified to vote on a proposal) or to request transaction signatures from the wallet.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [WalletConnect 2.0](https://walletconnect.com/)
|
||||
* [HashPack](https://www.hashpack.app/hashconnect)
|
||||
|
||||
### Layer 2 Coordination (Open Market, Spam Protected Mempool)
|
||||
|
||||
Waku can broadcast and aggregate Layer 2 transactions to enhance privacy, anonymity, and resilience. Aggregating transactions reduces network load and improves scalability, ensuring a more robust Layer 2 ecosystem.
|
||||
|
||||
### Generalised Marketplaces
|
||||
|
||||
Waku can enable users to offer, bid, accept, and trade goods and services, making it possible to create ride-sharing or trading apps.
|
||||
|
||||
#### Demos
|
||||
|
||||
* [Waku-Uber](https://github.com/TheBojda/waku-uber)
|
||||
|
||||
### Social Media Platforms
|
||||
|
||||
While chat messengers are a type of social media that can be decentralised and made censorship resistant through Waku, other forms of social media, such as news feeds, blog posts, and audio or video sharing, can also benefit from using Waku.
|
||||
@ -1,24 +0,0 @@
|
||||
---
|
||||
title: Why Waku?
|
||||
---
|
||||
|
||||
Present-day communication is predominantly centralised, enabling significant third-party intervention, with profit motives overshadowing principles and downplaying censorship and privacy concerns. This shift leads to the exploitation and unauthorised use of user data in the surveillance economy, where data ownership is no longer in the hands of individuals.
|
||||
|
||||
Waku transforms how individuals communicate and manage data by offering a scalable, decentralised solution that grants ultimate control.
|
||||
|
||||
- Waku improves upon Whisper's capabilities by overcoming limitations and addressing functional gaps.
|
||||
- Provides a public infrastructure for the Ethereum and multi-chain ecosystem, serving as a common good.
|
||||
- Waku is not confined to a particular blockchain.
|
||||
- Modular, adaptable, configurable, and can cater to various use cases.
|
||||
- Enables developers to decentralise communication in their DApps or move actions off-chain while maintaining decentralisation.
|
||||
- Designed to run on various platforms, including mobile devices, cloud environments, web browsers, desktop apps, or even a [Dappnode](https://dappnode.com/)!
|
||||
|
||||
## Why Waku is Necessary
|
||||
|
||||
| | Whisper | Waku |
|
||||
| - | - | - |
|
||||
| **Scalability** | Whisper does not scale very well, specifically when it comes to bandwidth usage on mobile devices. | Uses GossipSub and Content Topics. |
|
||||
| **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. |
|
||||
| **Incentivisation Infrastructure** | There is no incentive to run a Whisper node. | Research in progress to design incentivisation for node operators. |
|
||||
| **Formal Specification/Documentation** | Lack of formal and unambiguous specification. | The specs and docs are open-source and licenced 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. |
|
||||
@ -1,46 +0,0 @@
|
||||
---
|
||||
title: Powered by Waku
|
||||
---
|
||||
|
||||
import { Grid, AppCard } from "@site/src/components/mdx";
|
||||
|
||||
Leap into the future with Waku! Revolutionise communication, collaboration, and connectivity. Join us and create something extraordinary!
|
||||
|
||||
<Grid xs={{ cols: 1, wrap: true, gap: "0 1rem" }} lg={{ cols: 2 }}>
|
||||
<Grid.Item xs={1}>
|
||||
<AppCard
|
||||
name="Status"
|
||||
description="Waku powers many of the Status super app's features, including its private messaging."
|
||||
logoSrc="/img/status-mark-black.svg"
|
||||
logoSrcDark="/img/status-mark-white.svg"
|
||||
link="https://status.im"
|
||||
/>
|
||||
</Grid.Item>
|
||||
<Grid.Item xs={1}>
|
||||
<AppCard
|
||||
name="RAILGUN"
|
||||
description="The privacy-focused DeFi protocol Railgun anonymises Ethereum transactions with Waku."
|
||||
logoSrc="/img/railgun-mark-black.svg"
|
||||
logoSrcDark="/img/railgun-mark-white.svg"
|
||||
link="https://railgun.org"
|
||||
/>
|
||||
</Grid.Item>
|
||||
<Grid.Item xs={1}>
|
||||
<AppCard
|
||||
name="The Graph"
|
||||
description="Waku powers the Graphcast SDK, enabling the development of gossip-powered applications within The Graph ecosystem."
|
||||
logoSrc="/img/the-graph-mark-black.svg"
|
||||
logoSrcDark="/img/the-graph-mark-white.svg"
|
||||
link="https://thegraph.com/"
|
||||
/>
|
||||
</Grid.Item>
|
||||
<Grid.Item xs={1}>
|
||||
<AppCard
|
||||
name="XMTP"
|
||||
description="Inter-blockchain account messaging protocol XMTP uses Waku to facilitate communication between nodes in its currently permissioned network."
|
||||
logoSrc="/img/xmtp-mark-black.svg"
|
||||
logoSrcDark="/img/xmtp-mark-white.svg"
|
||||
link="https://xmtp.org"
|
||||
/>
|
||||
</Grid.Item>
|
||||
</Grid>
|
||||
@ -1,51 +0,0 @@
|
||||
---
|
||||
title: Watch Our Presentations
|
||||
---
|
||||
|
||||
## Waku Workshop: Running Your Own Waku Node
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/_qjKiy_epSE" title="Waku Workshop: Running Your Own Waku Node by Václav Pavlín" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Waku Workshop: Getting Started with Waku
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/dMxs5GcbgG4" title="Waku Workshop: Getting Started with Waku by Alvaro Revuelta" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Hashing it Out: Decentralised Messaging
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/vmx_oOb2On0" title="Hashing it Out: Decentralised Messaging by Franck Royer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Using ZKP for Better p2p Messaging with Waku
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/eJwX1JpcKQk" title="Using ZKP for better p2p messaging with Waku by Oskar Thorén" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## How to Ethically Build Public Good Infrastructure
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/yi7nS0g0Yno" title="How to Ethically Build Public Good Infrastructure by Corey Petty" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Building Privacy-Protecting Infrastructure
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/CW1DYJifdhs" title="Building Privacy-Protecting Infrastructure by Oskar Thorén" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Secureum TrustX - Waku: Enabling a New Dimension for DApps
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/GXU5Fd6gMVw?start=21700" title="Secureum TrustX - Waku: Enabling a New Dimension for DApps by Corey Petty" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Waku: Enabling a New Dimension for DApps
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/OdXtMD-hgdg" title="Waku: enabling a new dimension for DApps by Corey Petty" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## The Next Level of Decentralisation Messaging in Web3
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/1QjxqrLO8WA" title="The Next Level of Decentralisation Messaging in Web3 by Franck Royer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## Build with Waku & DappConnect
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/ooRyn4aXsrM" title="EthOnline Status Bounty - Build with Waku & DappConnect by Franck Royer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## DappConnect: Enabling Decentralised Communications Using Waku
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/rQOp3qoDF0g" title="DappConnect: Enabling decentralised communications using Waku by Franck Royer" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
|
||||
## DappConnect: Decentralised Communication Using Waku
|
||||
|
||||
<iframe class="yt-video" src="https://www.youtube.com/embed/CBknF-6Z-Ds" title="DappConnect: Decentralised communication using Waku" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
|
||||
@ -1,6 +1,7 @@
|
||||
---
|
||||
displayed_sidebar: null
|
||||
sidebar_class_name: hidden
|
||||
hide_table_of_contents: true
|
||||
---
|
||||
|
||||
# Terms of Use
|
||||
|
||||
@ -65,60 +65,19 @@ const config = {
|
||||
{
|
||||
type: "docSidebar",
|
||||
position: "left",
|
||||
sidebarId: "main",
|
||||
label: "About Waku",
|
||||
},
|
||||
{
|
||||
to: "/presentations",
|
||||
label: "Presentations",
|
||||
position: "left",
|
||||
},
|
||||
{
|
||||
to: "/powered-by-waku",
|
||||
label: "Powered by Waku",
|
||||
position: "left",
|
||||
},
|
||||
{
|
||||
type: "dropdown",
|
||||
sidebarId: "guides",
|
||||
label: "Guides",
|
||||
position: "right",
|
||||
items: [
|
||||
{
|
||||
label: "Nodes and SDKs",
|
||||
to: "/guides/nodes-and-sdks",
|
||||
},
|
||||
{
|
||||
label: "Run a Nwaku Node",
|
||||
to: "/guides/run-nwaku-node",
|
||||
},
|
||||
{
|
||||
label: "JavaScript Waku SDK",
|
||||
to: "/guides/js-waku/",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: "dropdown",
|
||||
label: "Community",
|
||||
position: "right",
|
||||
items: [
|
||||
{
|
||||
label: "Join Our Community",
|
||||
to: "/community",
|
||||
},
|
||||
{
|
||||
label: "Contribute to Waku",
|
||||
to: "/contribute",
|
||||
},
|
||||
{
|
||||
label: "Waku Bounties",
|
||||
to: "https://github.com/waku-org/bounties",
|
||||
},
|
||||
{
|
||||
label: "Bug Bounty Program",
|
||||
to: "https://hackenproof.com/status-dot-im/waku",
|
||||
},
|
||||
],
|
||||
type: "docSidebar",
|
||||
position: "left",
|
||||
sidebarId: "learn",
|
||||
label: "Learn",
|
||||
},
|
||||
{
|
||||
href: "https://discord.waku.org",
|
||||
position: "left",
|
||||
label: "Discord",
|
||||
},
|
||||
{
|
||||
href: "https://github.com/waku-org",
|
||||
@ -151,36 +110,40 @@ const config = {
|
||||
title: "Community",
|
||||
items: [
|
||||
{
|
||||
href: "https://discord.waku.org",
|
||||
href: "https://discord.waku.org/",
|
||||
label: "Discord",
|
||||
},
|
||||
{
|
||||
href: "https://twitter.com/waku_org",
|
||||
label: "Twitter",
|
||||
href: "https://twitter.com/waku_org/",
|
||||
label: "X",
|
||||
},
|
||||
{
|
||||
href: "https://t.me/waku_org",
|
||||
href: "https://t.me/waku_org/",
|
||||
label: "Telegram",
|
||||
},
|
||||
{
|
||||
href: "https://forum.vac.dev",
|
||||
href: "https://forum.vac.dev/",
|
||||
label: "Vac Forum",
|
||||
},
|
||||
{
|
||||
href: "https://github.com/waku-org/bounties/",
|
||||
label: "Bounties",
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: "Resources",
|
||||
items: [
|
||||
{
|
||||
href: "https://github.com/waku-org",
|
||||
href: "https://github.com/waku-org/",
|
||||
label: "GitHub",
|
||||
},
|
||||
{
|
||||
href: "https://vac.dev/research",
|
||||
href: "https://blog.waku.org/",
|
||||
label: "Blog",
|
||||
},
|
||||
{
|
||||
href: "https://rfc.vac.dev",
|
||||
href: "https://rfc.vac.dev/",
|
||||
label: "Vac RFCs",
|
||||
},
|
||||
],
|
||||
|
||||
88
sidebars.js
88
sidebars.js
@ -2,52 +2,6 @@
|
||||
|
||||
/** @type {import("@docusaurus/plugin-content-docs").SidebarsConfig} */
|
||||
const sidebars = {
|
||||
main: [
|
||||
"overview/index",
|
||||
"overview/waku-network",
|
||||
"overview/history",
|
||||
"overview/why-waku",
|
||||
"overview/use-cases",
|
||||
{
|
||||
type: "category",
|
||||
label: "Concepts",
|
||||
items: [
|
||||
"overview/concepts/protocols",
|
||||
"overview/concepts/content-topics",
|
||||
"overview/concepts/network-domains",
|
||||
"overview/concepts/transports",
|
||||
{
|
||||
type: "category",
|
||||
label: "Peer Discovery",
|
||||
link: {
|
||||
type: "doc",
|
||||
id: "overview/concepts/peer-discovery",
|
||||
},
|
||||
items: [
|
||||
"overview/concepts/static-peers",
|
||||
"overview/concepts/dns-discovery",
|
||||
"overview/concepts/discv5",
|
||||
"overview/concepts/peer-exchange",
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
type: "category",
|
||||
label: "Reference",
|
||||
collapsed: false,
|
||||
items: [
|
||||
"overview/reference/glossary",
|
||||
"overview/reference/security-features",
|
||||
"overview/reference/research-in-progress",
|
||||
"overview/reference/waku-vs-libp2p",
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'html',
|
||||
value: '<a href="/guides/nodes-and-sdks" target="_blank" rel="noopener noreferrer" class="menu__link external-link">Nodes and SDKs<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.1918 4H3.42848V2.85715H13.1428V12.5714H11.9999V4.80813L3.83254 12.9755L3.02441 12.1674L11.1918 4Z" fill="white"/></svg>',
|
||||
}
|
||||
],
|
||||
guides: [
|
||||
"guides/nodes-and-sdks",
|
||||
{
|
||||
@ -101,20 +55,38 @@ const sidebars = {
|
||||
]
|
||||
},
|
||||
],
|
||||
community: [
|
||||
"community",
|
||||
"contribute",
|
||||
"presentations",
|
||||
"powered-by-waku",
|
||||
learn: [
|
||||
"learn/waku-network",
|
||||
{
|
||||
type: 'html',
|
||||
value: '<a href="https://github.com/waku-org/bounties" target="_blank" rel="noopener noreferrer" class="menu__link external-link">Waku Bounties<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.1918 4H3.42848V2.85715H13.1428V12.5714H11.9999V4.80813L3.83254 12.9755L3.02441 12.1674L11.1918 4Z" fill="white"/></svg>',
|
||||
type: "category",
|
||||
label: "Concepts",
|
||||
collapsed: false,
|
||||
items: [
|
||||
"learn/concepts/protocols",
|
||||
"learn/concepts/content-topics",
|
||||
"learn/concepts/network-domains",
|
||||
"learn/concepts/transports",
|
||||
{
|
||||
type: "category",
|
||||
label: "Peer Discovery",
|
||||
link: {
|
||||
type: "doc",
|
||||
id: "learn/concepts/peer-discovery",
|
||||
},
|
||||
items: [
|
||||
"learn/concepts/static-peers",
|
||||
"learn/concepts/dns-discovery",
|
||||
"learn/concepts/discv5",
|
||||
"learn/concepts/peer-exchange",
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
type: 'html',
|
||||
value: '<a href="https://hackenproof.com/status-dot-im/waku" target="_blank" rel="noopener noreferrer" class="menu__link external-link">Bug Bounty Program<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.1918 4H3.42848V2.85715H13.1428V12.5714H11.9999V4.80813L3.83254 12.9755L3.02441 12.1674L11.1918 4Z" fill="white"/></svg>',
|
||||
},
|
||||
]
|
||||
"learn/security-features",
|
||||
"learn/research",
|
||||
"learn/waku-vs-libp2p",
|
||||
"learn/glossary",
|
||||
],
|
||||
};
|
||||
|
||||
module.exports = sidebars;
|
||||
Loading…
x
Reference in New Issue
Block a user