From 1973a5791b58dd7eed370e56111a8b98ebe35933 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Thu, 8 Jun 2023 13:28:25 +0100 Subject: [PATCH 1/2] add run nwaku outline --- docs/contribute.md | 4 ++-- .../{sdks-and-nodes.md => nodes-and-sdks.md} | 11 ++++++++--- docs/guides/run-nwaku-node.md | 17 +++++++++++++++++ docs/overview/concepts/peer-discovery.md | 2 +- docs/overview/reference/glossary.md | 2 +- docs/overview/reference/waku-vs-libp2p.md | 2 +- docs/presentations.md | 2 +- docusaurus.config.js | 16 ++++++++++++---- sidebars.js | 5 +++-- 9 files changed, 46 insertions(+), 15 deletions(-) rename docs/guides/{sdks-and-nodes.md => nodes-and-sdks.md} (73%) create mode 100644 docs/guides/run-nwaku-node.md diff --git a/docs/contribute.md b/docs/contribute.md index 2cba857..bc9263b 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -4,11 +4,11 @@ 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: -- [Operating a node](/guides/sdks-and-nodes#operate-a-waku-node) within your application. +- [Operating a node](/guides/nodes-and-sdks#operate-a-waku-node) within your application. - [Reporting bugs](#report-a-bug) and [suggesting missing features](#suggest-a-feature) to the development team. - Inspiring other developers to explore and use Waku for [various use cases](/overview/use-cases). -Begin your journey by visiting the [SDKs and Nodes](/guides/sdks-and-nodes) guide and start building on Waku today! +Begin your journey by visiting the [Nodes and SDKs](/guides/nodes-and-sdks) guide and start building on Waku today! ## Report a Bug diff --git a/docs/guides/sdks-and-nodes.md b/docs/guides/nodes-and-sdks.md similarity index 73% rename from docs/guides/sdks-and-nodes.md rename to docs/guides/nodes-and-sdks.md index b226caa..644863c 100644 --- a/docs/guides/sdks-and-nodes.md +++ b/docs/guides/nodes-and-sdks.md @@ -1,5 +1,5 @@ --- -title: SDKs and Nodes +title: Nodes and SDKs --- :::caution @@ -10,7 +10,12 @@ Ready to integrate Waku into your application for private, secure, censorship-fr ## Operate a Waku Node -The Waku Network is permissionless and decentralized, consisting of nodes. It is open for anyone to run a node, use the network, and contribute to its support. Please visit the [nwaku guide](https://github.com/waku-org/nwaku/tree/master/docs/operators) (recommended) or [go-waku guide](https://github.com/waku-org/go-waku/tree/master/docs/operators) for operators to learn more. +The Waku Network is a decentralized, permissionless system where anyone can run nodes, use the network, and contribute to its support. + +| Client | Description | Documentation | +| - | - | - | +| [nwaku](https://github.com/waku-org/nwaku) | Nim-based Waku implementation to run a standalone node and access the network (recommended) | [Run Nwaku Node](/guides/run-nwaku-node) | +| [go-waku](https://github.com/waku-org/go-waku) | Golang-based Waku implementation to run a standalone node and access the network | [Run Go-Waku Node](https://github.com/waku-org/go-waku/tree/master/docs/operators) | ## Integrate Using SDKs @@ -19,7 +24,7 @@ Waku is implemented in multiple SDKs, allowing it to easily integrate with diffe | SDK | Description | Documentation | | - | - | - | | [js-waku](https://github.com/waku-org/js-waku) | JavaScript/TypeScript SDK designed for browser environments | | -| [nwaku](https://github.com/waku-org/nwaku) | Nim SDK for running a standalone node and accessing the Waku Network | | +| [nwaku](https://github.com/waku-org/nwaku) | Nim SDK designed for integration with native Nim applications | | | [go-waku](https://github.com/waku-org/go-waku) | Golang SDK designed for integration with Golang applications, includes C bindings for usage in C/C++, C#/Unity, Swift, and Kotlin | | | [waku-rust-bindings](https://github.com/waku-org/waku-rust-bindings) | Rust wrapper using `go-waku` bindings designed for integration in Rust applications | | diff --git a/docs/guides/run-nwaku-node.md b/docs/guides/run-nwaku-node.md new file mode 100644 index 0000000..967bb08 --- /dev/null +++ b/docs/guides/run-nwaku-node.md @@ -0,0 +1,17 @@ +--- +title: Run Nwaku Node +--- + +Nwaku (formerly `nim-waku`) 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 wish to support based on their needs, motivations, and available resources. + +This guide provides detailed steps to build, configure, and connect a `nwaku` node to the Waku Network. It also covers using existing tools to monitor and maintain the node. + +## Build the Node + +## Configure the Node + +## Connect the Node + +## Interact with the Node + +## Monitor the Node \ No newline at end of file diff --git a/docs/overview/concepts/peer-discovery.md b/docs/overview/concepts/peer-discovery.md index d084407..47ed50c 100644 --- a/docs/overview/concepts/peer-discovery.md +++ b/docs/overview/concepts/peer-discovery.md @@ -12,7 +12,7 @@ Once a connection is established, the node must actively seek out additional pee ## Predefined Nodes -Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to use either the [predefined nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [operate a node](/guides/sdks-and-nodes#operate-a-waku-node) per their preference. +Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to use either the [predefined nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [operate a node](/guides/nodes-and-sdks#operate-a-waku-node) per their preference. #### Pros diff --git a/docs/overview/reference/glossary.md b/docs/overview/reference/glossary.md index 7c6281d..aaad140 100644 --- a/docs/overview/reference/glossary.md +++ b/docs/overview/reference/glossary.md @@ -98,7 +98,7 @@ Resource-limited refers to environments or devices restricting available resourc 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. -### [SDK](/guides/sdks-and-nodes) +### [SDK](/guides/nodes-and-sdks) SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications. diff --git a/docs/overview/reference/waku-vs-libp2p.md b/docs/overview/reference/waku-vs-libp2p.md index 7d9735e..7327d29 100644 --- a/docs/overview/reference/waku-vs-libp2p.md +++ b/docs/overview/reference/waku-vs-libp2p.md @@ -6,7 +6,7 @@ Since Waku is built on top of libp2p, they share a lot of concepts and terminolo ## Waku as a Service Network -Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. However, you are encouraged to [operate a node](/guides/sdks-and-nodes#operate-a-waku-node) to support and decentralize the network. +Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. However, you are encouraged to [operate a node](/guides/nodes-and-sdks#operate-a-waku-node) to support and decentralize the network. ## Waku as a Keyturn Solution diff --git a/docs/presentations.md b/docs/presentations.md index 5b3cff6..52af9f6 100644 --- a/docs/presentations.md +++ b/docs/presentations.md @@ -2,7 +2,7 @@ title: Watch Our Presentations --- -## Using ZKP for Better p2p Messaging With Waku +## Using ZKP for Better p2p Messaging with Waku diff --git a/docusaurus.config.js b/docusaurus.config.js index e4f1f76..6033967 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -63,8 +63,12 @@ const config = { position: "right", items: [ { - label: "SDKs and Nodes", - to: "/guides/sdks-and-nodes" + label: "Nodes and SDKs", + to: "/guides/nodes-and-sdks" + }, + { + label: "Run Nwaku Node", + to: "guides/run-nwaku-node" } ] }, @@ -110,8 +114,12 @@ const config = { title: "Guides", items: [ { - to: "/guides/sdks-and-nodes", - label: "SDKs and Nodes" + to: "/guides/nodes-and-sdks", + label: "Nodes and SDKs" + }, + { + label: "Run Nwaku Node", + to: "guides/run-nwaku-node" } ] }, diff --git a/sidebars.js b/sidebars.js index d07d7ca..b17d39c 100644 --- a/sidebars.js +++ b/sidebars.js @@ -14,7 +14,7 @@ const sidebars = { "overview/use-cases", { type: "html", - value: "SDKs and Nodes " + value: "Nodes and SDKs " }, { type: "html", @@ -51,7 +51,8 @@ const sidebars = { label: "Guides", collapsible: false, items: [ - "guides/sdks-and-nodes" + "guides/nodes-and-sdks", + "guides/run-nwaku-node" ] } ], From 64e5c2136676a8ab411c068c4950709027393bb6 Mon Sep 17 00:00:00 2001 From: LordGhostX Date: Fri, 9 Jun 2023 20:32:04 +0100 Subject: [PATCH 2/2] add run nwaku guide --- .cspell.json | 7 +- docs/clients/js-waku/index.md | 2 +- docs/community.md | 2 +- docs/contribute.md | 2 +- docs/guides/nodes-and-sdks.md | 18 ++--- docs/guides/run-nwaku-node.md | 73 +++++++++++++++++++- docs/overview/concepts/network-domains.md | 2 +- docs/overview/concepts/peer-discovery.md | 4 +- docs/overview/concepts/protocols.md | 4 +- docs/overview/index.md | 6 +- docs/overview/reference/security-features.md | 2 +- docs/overview/reference/waku-vs-libp2p.md | 2 +- docs/overview/use-cases.md | 2 +- docs/overview/why-waku.md | 2 +- docusaurus.config.js | 4 +- 15 files changed, 102 insertions(+), 30 deletions(-) diff --git a/.cspell.json b/.cspell.json index 0eab76b..0f4b045 100644 --- a/.cspell.json +++ b/.cspell.json @@ -38,6 +38,7 @@ "Secureum", "Oskar", "Thorén", + "wakunode", "autoplay" ], "flagWords": [], @@ -64,7 +65,11 @@ { "name": "youtube-link", "pattern": "/< youtube.*/" + }, + { + "name": "enrUri", + "pattern": "/enr:-.*/" } ], - "ignoreRegExpList": ["multiaddr", "dnsMultiaddr", "wss", "youtube-link"] + "ignoreRegExpList": ["multiaddr", "dnsMultiaddr", "wss", "youtube-link", "enrUri"] } diff --git a/docs/clients/js-waku/index.md b/docs/clients/js-waku/index.md index e5762b4..124e9fe 100644 --- a/docs/clients/js-waku/index.md +++ b/docs/clients/js-waku/index.md @@ -30,7 +30,7 @@ You can also interact with these examples live: an economic spam protection protocol that rate limit using zero-knowledge for privacy preserving purposes. To gain a deeper understanding of Waku, visit the [overview documentation](/). -If you're interested in learning how Waku works under the hood, check out the specs at [rfc.vac.dev](https://rfc.vac.dev/). +If you are interested in learning how Waku works under the hood, check out the specs at [rfc.vac.dev](https://rfc.vac.dev/). ## Bugs, Questions & Support diff --git a/docs/community.md b/docs/community.md index c2b7b38..c126c18 100644 --- a/docs/community.md +++ b/docs/community.md @@ -2,7 +2,7 @@ title: Join Our Community --- -Welcome to the Waku Community! Whether you're interested in building with Waku, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone. +Welcome to the Waku Community! Whether you are interested in building with Waku, contributing to the network, expanding your knowledge, or staying up-to-date with our progress, we have something for everyone. ## [Discord](https://discord.waku.org/) diff --git a/docs/contribute.md b/docs/contribute.md index bc9263b..507a7c7 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -4,7 +4,7 @@ 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: -- [Operating a node](/guides/nodes-and-sdks#operate-a-waku-node) within your application. +- [Operating 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. - Inspiring other developers to explore and use Waku for [various use cases](/overview/use-cases). diff --git a/docs/guides/nodes-and-sdks.md b/docs/guides/nodes-and-sdks.md index 644863c..54242c5 100644 --- a/docs/guides/nodes-and-sdks.md +++ b/docs/guides/nodes-and-sdks.md @@ -8,20 +8,20 @@ Waku has risks and limitations as it is still developing and preparing for exten Ready to integrate Waku into your application for private, secure, censorship-free communication? Explore the available SDKs and contribute by operating a node. -## Operate a Waku Node +## Run a Waku Node The Waku Network is a decentralized, permissionless system where anyone can run nodes, use the network, and contribute to its support. -| Client | Description | Documentation | +| | Description | Documentation | | - | - | - | -| [nwaku](https://github.com/waku-org/nwaku) | Nim-based Waku implementation to run a standalone node and access the network (recommended) | [Run Nwaku Node](/guides/run-nwaku-node) | -| [go-waku](https://github.com/waku-org/go-waku) | Golang-based Waku implementation to run a standalone node and access the network | [Run Go-Waku Node](https://github.com/waku-org/go-waku/tree/master/docs/operators) | +| [nwaku](https://github.com/waku-org/nwaku) | Nim-based Waku implementation to run a standalone node and access the network (recommended) | [Run a Nwaku Node](/guides/run-nwaku-node) | +| [go-waku](https://github.com/waku-org/go-waku) | Golang-based Waku implementation to run a standalone node and access the network | [Run a Go-Waku Node](https://github.com/waku-org/go-waku/tree/master/docs/operators) | ## Integrate Using SDKs -Waku is implemented in multiple SDKs, allowing it to easily integrate with different languages and address various use cases. +Waku is implemented in multiple SDKs, allowing it to integrate with different languages and address various use cases efficiently. -| SDK | Description | Documentation | +| | Description | Documentation | | - | - | - | | [js-waku](https://github.com/waku-org/js-waku) | JavaScript/TypeScript SDK designed for browser environments | | | [nwaku](https://github.com/waku-org/nwaku) | Nim SDK designed for integration with native Nim applications | | @@ -30,9 +30,9 @@ Waku is implemented in multiple SDKs, allowing it to easily integrate with diffe ## Run on Mobile Devices -Waku provides integrations tailored for mobile applications, enabling Waku to operate efficiently on mobile devices. +Waku provides integrations tailored for mobile applications, enabling Waku to run efficiently on mobile devices. -| Language | Description | Documentation | +| | Description | Documentation | | - | - | - | | [React Native](https://github.com/waku-org/waku-react-native) | React Native wrapper using `go-waku` bindings designed for native mobile integration | | | Swift (iOS) | `go-waku` bindings for Swift applications to seamlessly integrate Waku | | @@ -40,7 +40,7 @@ Waku provides integrations tailored for mobile applications, enabling Waku to op ## More Integrations -| Implementation | Description | Documentation | +| | Description | Documentation | | - | - | - | | [@waku/react](https://www.npmjs.com/package/@waku/react) | React components and UI adapters designed for seamless integration with `js-waku` | | | [@waku/create-app](https://www.npmjs.com/package/@waku/create-app) | Starter kit to bootstrap your next `js-waku` project from various example templates | | diff --git a/docs/guides/run-nwaku-node.md b/docs/guides/run-nwaku-node.md index 967bb08..181e093 100644 --- a/docs/guides/run-nwaku-node.md +++ b/docs/guides/run-nwaku-node.md @@ -1,5 +1,5 @@ --- -title: Run Nwaku Node +title: Run a Nwaku Node --- Nwaku (formerly `nim-waku`) 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 wish to support based on their needs, motivations, and available resources. @@ -8,10 +8,77 @@ This guide provides detailed steps to build, configure, and connect a `nwaku` no ## Build the Node -## Configure the Node +Before running a Nwaku node, it is necessary to build it. Nwaku provides multiple options for building a node: + +| | Description | Documentation | +| - | - | - | +| Source Code | Build a `nwaku` node directly from the source code | [Build Nwaku from Source](https://github.com/waku-org/nwaku/blob/master/docs/operators/how-to/build.md) | +| Precompiled Binary | Download a precompiled binary of the `nwaku` node | [Download Nwaku Binary](https://github.com/waku-org/nwaku/tags) | +| Nightly Release | Try out the latest `nwaku` updates without compiling the binaries | [Download Nightly Release](https://github.com/waku-org/nwaku/releases/tag/nightly) | +| Docker Container | Build and run a `nwaku` node in a Docker Container | [Build Nwaku in Docker Container](https://github.com/waku-org/nwaku/blob/master/docs/operators/docker-quickstart.md) | +| DigitalOcean Droplet | Build and run a `nwaku` node on a DigitalOcean Droplet | [Build Nwaku on DigitalOcean Droplet](https://github.com/waku-org/nwaku/blob/master/docs/operators/droplet-quickstart.md) | + +:::info +Nwaku can be built and run on Linux and macOS, while Windows support is currently experimental. +::: + +## Run the Node + +Once you have built the `nwaku` node, run it using the default configuration: + +```bash +# Run with default configuration +./build/wakunode2 + +# See available command line options +./build/wakunode2 --help +``` + +By default, a `nwaku` node is configured to do the following: + +- Generate a new private key and libp2p identity. +- Listen for incoming libp2p connections on the default TCP port (`60000`). +- Subscribe to the default Pub/Sub topic (`/waku/2/default-waku/proto`). +- Enable the `Relay` protocol for relaying messages. +- Enable the `Store` protocol as a client, allowing it to query peers for historical messages but not persist any message itself. + +:::info +For more advanced configurations like enabling other protocols or maintaining a consistent libp2p identity, please refer to the [Node Configuration Methods](https://github.com/waku-org/nwaku/blob/master/docs/operators/how-to/configure.md) guide. +::: ## Connect the Node +To join the Waku Network, nodes must connect with peers. Nwaku provides multiple [peer discovery](/overview/concepts/peer-discovery) mechanisms for locating other peers: + +| | Description | Documentation | +| - | - | - | +| Predefined Nodes | Configure the bootstrap nodes that `nwaku` should establish connections upon startup | [Configure Predefined Nodes](https://github.com/waku-org/nwaku/blob/master/docs/operators/how-to/connect.md#option-1-configure-peers-statically) | +| DNS Discovery | Enable `nwaku` to locate peers to connect to using the `DNS Discovery` mechanism | [Discover Peers Using DNS Discovery](https://github.com/waku-org/nwaku/blob/master/docs/operators/how-to/configure-dns-disc.md) | +| Discv5 | Enable `nwaku` to locate peers to connect to using the `Discv5` mechanism | [Discover Peers Using Discv5](https://github.com/waku-org/nwaku/blob/master/docs/operators/how-to/connect.md#option-3-discover-peers-using-waku-discovery-v5) | + +:::info +You can configure a `nwaku` node to use multiple peer discovery mechanisms simultaneously. +::: + ## Interact with the Node -## Monitor the Node \ No newline at end of file +You can interact with a running `nwaku` node through the [JSON RPC API](https://rfc.vac.dev/spec/16/), such as querying the node information using the `get_waku_v2_debug_v1_info` method: + +```bash +curl -d '{"jsonrpc":"2.0","id":"id","method":"get_waku_v2_debug_v1_info", "params":[]}' --header "Content-Type: application/json" http://localhost:8545 +``` + +You will get a response similar to: + +```json +{ + "jsonrpc":"2.0", + "id":"id", + "result":{ + "listenAddresses":[ + "/ip4/0.0.0.0/tcp/60000/p2p/16Uiu2HAmLU5Nwng9dWFZwM2DgJ5QGcUuDnefJyHJiXUCVaprhgL4" + ], + "enrUri":"enr:-IO4QDxToTg86pPCK2KvMeVCXC2ADVZWrxXSvNZeaoa0JhShbM5qed69RQz1s1mWEEqJ3aoklo_7EU9iIBcPMVeKlCQBgmlkgnY0iXNlY3AyNTZrMaEDdBHK1Gx6y_zv5DVw5Qb3DtSOMmVHTZO1WSORrF2loL2DdWRwgiMohXdha3UyAw" + } +} +``` \ No newline at end of file diff --git a/docs/overview/concepts/network-domains.md b/docs/overview/concepts/network-domains.md index b6266e4..1cb0166 100644 --- a/docs/overview/concepts/network-domains.md +++ b/docs/overview/concepts/network-domains.md @@ -24,7 +24,7 @@ Waku provides a set of protocols to optimize its performance in resource-limited ## Overview of Protocol Interaction -Here's a diagram illustrating the interaction between different protocols within the Waku Network. +Here is a diagram illustrating the interaction between different protocols within the Waku Network. ```mermaid sequenceDiagram diff --git a/docs/overview/concepts/peer-discovery.md b/docs/overview/concepts/peer-discovery.md index 47ed50c..ac223e4 100644 --- a/docs/overview/concepts/peer-discovery.md +++ b/docs/overview/concepts/peer-discovery.md @@ -12,7 +12,7 @@ Once a connection is established, the node must actively seek out additional pee ## Predefined Nodes -Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to use either the [predefined nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [operate a node](/guides/nodes-and-sdks#operate-a-waku-node) per their preference. +Waku applications have the flexibility to embed bootstrap node addresses directly into their codebase. Developers can opt to use either the [predefined nodes by Status](https://github.com/waku-org/js-waku/blob/master/packages/core/src/lib/predefined_bootstrap_nodes.ts#L45) or [run a node](/guides/nodes-and-sdks#run-a-waku-node) per their preference. #### Pros @@ -29,7 +29,7 @@ Waku applications have the flexibility to embed bootstrap node addresses directl 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 standardized [ENR format](https://rfc.vac.dev/spec/31/). -This bootstrapping method allows anyone to register and publish a domain name for the network, fostering increased decentralization. +This bootstrapping method allows anyone to register and publish a domain name for the network, promoting increased decentralization. #### Pros diff --git a/docs/overview/concepts/protocols.md b/docs/overview/concepts/protocols.md index ff78fa8..e946059 100644 --- a/docs/overview/concepts/protocols.md +++ b/docs/overview/concepts/protocols.md @@ -10,7 +10,7 @@ Waku takes a modular approach, providing a range of protocols that enable applic ## [RLN Relay](https://rfc.vac.dev/spec/17/) -`RLN Relay` protocol extends the `Relay` protocol by using [Rate Limit Nullifiers (RLN)](https://rfc.vac.dev/spec/32/) to provide efficient and economic spam prevention. It enforces a rate limit on messages over time for all peers on the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the [RLN Relay blog post](https://vac.dev/rln-relay). +`RLN Relay` protocol extends the `Relay` protocol by using [Rate Limit Nullifiers (RLN)](https://rfc.vac.dev/spec/32/) to provide efficient and economic spam prevention. It enforces a rate limit on messages over time for all peers in the network, economically preventing spam, and imposes financial penalties and network removal for spammers. You can find more details in the [RLN Relay blog post](https://vac.dev/rln-relay). ## [Filter](https://rfc.vac.dev/spec/12/) @@ -22,7 +22,7 @@ Waku takes a modular approach, providing a range of protocols that enable applic ## [Store](https://rfc.vac.dev/spec/13/) -`Store` protocol is responsible for storing messages relayed on the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. +`Store` protocol is responsible for storing messages relayed in the network, making it possible to query and retrieve them later. This functionality benefits offline peers by enabling them to retrieve missed messages upon reconnection. :::info Using `Relay` and `Filter` protocols is recommended when a node is online, as `Store` does not guarantee data availability. The `Store` protocol is suitable for retrieving messages when connecting to the network, like when a dApp starts. diff --git a/docs/overview/index.md b/docs/overview/index.md index 1fa427a..cc64bf1 100644 --- a/docs/overview/index.md +++ b/docs/overview/index.md @@ -41,7 +41,7 @@ Waku can cater to applications that require privacy guarantees, such as: ### Modular Design -Waku nodes are adaptive and can be customized based on the application's requirements and environment. Users can adjust several parameters, including: +Waku nodes are adaptive and can be customized based on the application's requirements and environment. Users can adjust multiple parameters, including: - Low privacy/low resource usage vs. high privacy/increased latency + bandwidth usage. - Providing resources to the network vs. consuming resources. @@ -52,7 +52,7 @@ These options are part of the [Anonymity Trilemma](https://eprint.iacr.org/2017/ ### Service Network -Waku provides developers with a convenient solution for building decentralized communication systems, eliminating the need to build a peer-to-peer network from scratch. Node operators can offer several services, such as: +Waku provides developers with a convenient solution for building decentralized 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. @@ -70,4 +70,4 @@ The [Relay](/overview/concepts/protocols#relay) protocol is the foundation of th 5. Developing methods to protect against mass deanonymization (currently being researched). 6. Designing strategies to scale `Relay/GossipSub` securely. -If you want to learn more about how Waku operates, the [WAKU2 RFC](https://rfc.vac.dev/spec/10/) provides an in-depth look under the hood. +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. diff --git a/docs/overview/reference/security-features.md b/docs/overview/reference/security-features.md index 5c1d048..c638767 100644 --- a/docs/overview/reference/security-features.md +++ b/docs/overview/reference/security-features.md @@ -8,7 +8,7 @@ Some of the Waku's security features include the following: ## [Pseudonymity](https://rfc.vac.dev/spec/10/#pseudonymity) -Waku ensures pseudonymity across its protocol layers, using libp2p `PeerID` as identifiers instead of disclosing true identities. However, it's important to note that pseudonymity doesn't provide complete anonymity. Actions performed under the same pseudonym (`PeerID`) can be linked, leading to the potential re-identification of the actual actor. +Waku ensures pseudonymity across its protocol layers, using libp2p `PeerID` as identifiers instead of disclosing true identities. However, it is important to note that pseudonymity does not provide complete anonymity. Actions performed under the same pseudonym (`PeerID`) can be linked, leading to the potential re-identification of the actual actor. ## [Anonymity/Unlinkability](https://rfc.vac.dev/spec/10/#anonymity--unlinkability) diff --git a/docs/overview/reference/waku-vs-libp2p.md b/docs/overview/reference/waku-vs-libp2p.md index 7327d29..29e67d6 100644 --- a/docs/overview/reference/waku-vs-libp2p.md +++ b/docs/overview/reference/waku-vs-libp2p.md @@ -6,7 +6,7 @@ Since Waku is built on top of libp2p, they share a lot of concepts and terminolo ## Waku as a Service Network -Waku intends to incentivize mechanisms to run nodes, but it's not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. However, you are encouraged to [operate a node](/guides/nodes-and-sdks#operate-a-waku-node) to support and decentralize the network. +Waku intends to incentivize mechanisms to run nodes, but it is not part of libp2p's scope. Additionally, users or developers do not have to deploy their infra as a prerequisite to use Waku. It is a service network. However, you are encouraged to [run a node](/guides/nodes-and-sdks#run-a-waku-node) to support and decentralize the network. ## Waku as a Keyturn Solution diff --git a/docs/overview/use-cases.md b/docs/overview/use-cases.md index 31f9272..e4029ba 100644 --- a/docs/overview/use-cases.md +++ b/docs/overview/use-cases.md @@ -14,7 +14,7 @@ Waku can be used as the communication layer when building a private, decentraliz ### Polls -With Waku, you can create, answer, and view censorship-resistant polls, fostering a democratic and transparent voting environment immune to manipulation and censorship. +With Waku, you can create, answer, and view censorship-resistant polls, promoting a democratic and transparent voting environment immune to manipulation and censorship. #### Demos diff --git a/docs/overview/why-waku.md b/docs/overview/why-waku.md index 59cf28b..864afb7 100644 --- a/docs/overview/why-waku.md +++ b/docs/overview/why-waku.md @@ -17,7 +17,7 @@ Waku is intended to empower individuals by returning control of communication to | | 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 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. | | **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. | The specs and docs are open-source and licensed under CC0, making them freely available for anyone to read, modify and improve without restrictions. | diff --git a/docusaurus.config.js b/docusaurus.config.js index 6033967..64925ee 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -67,7 +67,7 @@ const config = { to: "/guides/nodes-and-sdks" }, { - label: "Run Nwaku Node", + label: "Run a Nwaku Node", to: "guides/run-nwaku-node" } ] @@ -118,7 +118,7 @@ const config = { label: "Nodes and SDKs" }, { - label: "Run Nwaku Node", + label: "Run a Nwaku Node", to: "guides/run-nwaku-node" } ]