diff --git a/docs/community.md b/docs/community.md index 37ba2bb..c2b7b38 100644 --- a/docs/community.md +++ b/docs/community.md @@ -18,4 +18,4 @@ Join the [Waku Telegram Group](https://t.me/waku_org) now and become part of the ## [Vac Forum](https://forum.vac.dev/) -Have you got questions, or are you eager to discuss Waku? Head to the [Vac Forum](https://forum.vac.dev/) and join the conversation! \ No newline at end of file +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. \ No newline at end of file diff --git a/docs/contribute.md b/docs/contribute.md index 01cc3f4..e3411de 100644 --- a/docs/contribute.md +++ b/docs/contribute.md @@ -2,30 +2,26 @@ title: Contribute to Waku --- -Get involved in Waku's open-source initiatives to improve the protocols, SDKs, developer tools and examples, and documentation. - -## Build a Waku Application - -By integrating Waku into your application, you can contribute by: +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. -- Reporting bugs and suggesting missing features to the development team. -- Inspiring other developers to explore and utilize Waku for [various use cases](/getting-started/use-cases). +- [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](/getting-started/use-cases). -Begin your journey by visiting the [SDKs and Nodes](/guides/sdks-and-nodes) guide and start building today! +Begin your journey by visiting the [SDKs and Nodes](/guides/sdks-and-nodes) 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. -## Request a Feature +## Suggest a Feature -To request 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 prioritize accordingly. +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 prioritize accordingly. ## Make Pull Requests -Community pull requests (PRs) are highly encouraged, but we recommend beginning with a feature request or posting on the [Waku Discord](https://discord.waku.org/) to gauge interest and gather feedback before proceeding with a PR. +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. ## Contribute to Waku Research -[Vac](https://vac.dev/) drives Waku research, advancing through ongoing R&D. Vac is dedicated to developing modular p2p protocols for private, secure, and censorship-resistant communication. Explore Vac's open problems at . \ No newline at end of file +Waku Research is an innovative R&D project dedicated to developing modular peer-to-peer protocols for communication that prioritize privacy, security, and censorship resistance. Explore Waku's ongoing challenges and experimental code at . \ No newline at end of file diff --git a/docs/getting-started/concepts/content-topics.md b/docs/getting-started/concepts/content-topics.md index 10de916..d083f75 100644 --- a/docs/getting-started/concepts/content-topics.md +++ b/docs/getting-started/concepts/content-topics.md @@ -11,15 +11,27 @@ Here is the recommended format for content topics: `/{application-name}/{version}/{content-topic-name}/{encoding}` - `application-name`: This is the unique name of your decentralized application (dApp) to prevent conflicts with other dApps. -- `version`: Typically starting at 1, this field helps track breaking changes in your messages. -- `content-topic-name`: The specific name of the content topic used for filtering. If your dApp utilizes Waku for multiple features, it is advisable to have a separate content topic for each feature. -- `encoding`: The message serialization/encoding format, with [Protocol Buffers](https://protobuf.dev/) (`proto`) being the commonly used choice. +- `version`: Typically starting at `1`, this field helps track breaking changes in your messages. +- `content-topic-name`: The specific name of the content topic used for filtering. +- `encoding`: The message serialization/encoding format, with [Protocol Buffers](https://protobuf.dev/) (`proto`) being the recommended choice. -For instance, if your dApp is called `SuperCrypto` and it allows users to receive notifications and send private messages, you can consider utilizing the following content topics: +For instance, if your dApp is called `SuperCrypto` and it allows users to receive notifications and send private messages, you can consider using the following content topics: - `/supercrypto/1/notification/proto` - `/supercrypto/1/private-message/proto` :::info -While you can choose any encoding format for your `Content Topic`, we highly recommend using [Protocol Buffers](https://protobuf.dev/) (`proto`) because of its efficiency. Choosing a lightweight format ensures optimal performance of your dApp. -::: \ No newline at end of file +While you can choose any encoding format for your `Content Topic`, we highly recommend using Protocol Buffers (`proto`) because of its efficiency. Choosing a lightweight format ensures optimal performance of your dApp. +::: + +## Naming Considerations + +When choosing a content topic, it is crucial to consider privacy implications. The `Filter` protocol discloses content topics to peers, and the `Store` protocol can link them with a light node, allowing nodes providing these services to access message content topics, posing potential privacy risks. + +:::info +Waku is developing privacy-preserving features like [Anonymous Filter Subscription](https://rfc.vac.dev/spec/12/#future-work) for the `Filter` protocol and [Anonymous Query](https://rfc.vac.dev/spec/13/#future-work) for the `Store` protocol to hide content topics from potential adversaries. +::: + +You can preserve the anonymity of individual identities by increasing [k-anonymity](https://www.privitar.com/blog/k-anonymity-an-introduction/), where k is proportional to the network size (number of subscribers). This involves using a single content topic across the entire application or specific features such as notifications or private messages, allowing multiple users to share it. + +However, maintaining functionality with a single content topic can introduce complexity. We recommend switching functionality using the Protocol Buffer message format or the [Waku Message](/getting-started/concepts/protocols#waku-message) `meta` attribute. By doing so, applications can retain a high granularity and functionality while using a single content topic, preserving user privacy. \ No newline at end of file diff --git a/docs/getting-started/concepts/network-domains.md b/docs/getting-started/concepts/network-domains.md index acea4b2..8038ab9 100644 --- a/docs/getting-started/concepts/network-domains.md +++ b/docs/getting-started/concepts/network-domains.md @@ -6,17 +6,17 @@ Waku is a unified and cohesive entity that offers a rich ecosystem with three di ## Discovery Domain -Peer discovery in Waku facilitates locating other peers within the network. As a modular protocol, Waku incorporates various discovery mechanisms, such as [Discv5](/getting-started/concepts/peer-discovery#discv5) and [Peer Exchange](/getting-started/concepts/peer-discovery#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](/getting-started/concepts/peer-discovery#discv5) and [Peer Exchange](/getting-started/concepts/peer-discovery#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. +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](/getting-started/concepts/protocols#relay) to distribute messages across the network. Additionally, Waku introduces [RLN Relay](/getting-started/concepts/protocols#rln-relay), an experimental mechanism that combines privacy preservation and economic spam protection. -## Request/Reply Domain +## Request/Response Domain -Waku provides a set of protocols to optimize its performance in resource-limited environments like low bandwidth or offline scenarios for multiple purposes. +Waku provides a set of protocols to optimize its performance in resource-limited environments like low bandwidth or mostly offline scenarios for multiple purposes. - [Store](/getting-started/concepts/protocols#store) enables the retrieval of historical messages. - [Filter](/getting-started/concepts/protocols#filter) efficiently retrieves a subset of messages to conserve bandwidth. @@ -48,10 +48,10 @@ E ->> D: HistoryQuery(pubtopic1, contentTopic1) (6) D ->> E: HistoryResponse(msg1, ...) (6) ``` -The Pub/Sub topic `pubtopic1` serves as a means of routing messages (the network employs a default pubsub 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. +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 a [ContentTopic](/getting-started/concepts/content-topics) `contentTopic1`. -2. Node F requests to get messages filtered by Pub/Sub topic `pubtopic1` and ContentTopic `contentTopic1`. Node D subscribes F to this filter and will forward messages that match that filter in the future. +1. Node A creates a WakuMessage `msg1` with [Content Topic](/getting-started/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` both stores the message for future retrieval by other nodes and forwards it to Node C. 5. Node D also pushes `msg1` to Node F, informing it about the arrival of a new message. diff --git a/docs/getting-started/concepts/peer-discovery.md b/docs/getting-started/concepts/peer-discovery.md index cc51234..ccf48bf 100644 --- a/docs/getting-started/concepts/peer-discovery.md +++ b/docs/getting-started/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 utilize 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/sdks-and-nodes#operate-a-waku-node) per their preference. #### Pros @@ -27,7 +27,7 @@ Waku applications have the flexibility to embed bootstrap node addresses directl ## [DNS Discovery](https://rfc.vac.dev/spec/31/) -Built upon the foundation of [EIP-1459: Node Discovery via DNS](https://eips.ethereum.org/EIPS/eip-1459), DNS Discovery allows for registering an `ENR` tree in the `TXT` field of a domain name. This innovative approach enables the storage of essential node connection details, including IP, port, and multiaddr, utilizing the standardized [ENR format](https://rfc.vac.dev/spec/31/). +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. @@ -44,7 +44,7 @@ This bootstrapping method allows anyone to register and publish a domain name fo ## [Discv5](https://rfc.vac.dev/spec/33/) -`Discv5` is a decentralized and efficient peer discovery method for the Waku network. It utilizes 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 randomized sets of nodes for mesh expansion. This enhances resilience, load balancing, and security in the Waku network. +`Discv5` is a decentralized and efficient peer discovery method 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 randomized sets of nodes for mesh expansion. This enhances resilience, load balancing, and security in the Waku network. #### Pros diff --git a/docs/getting-started/concepts/protocols.md b/docs/getting-started/concepts/protocols.md index 9b5ba55..0fbe32e 100644 --- a/docs/getting-started/concepts/protocols.md +++ b/docs/getting-started/concepts/protocols.md @@ -14,7 +14,11 @@ 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 transmitted by other peers. It is designed to be a lightweight alternative to the `Relay` protocol, particularly tailored for devices with limited bandwidth. +`Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted by other peers using [content topics](/getting-started/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 optimize bandwidth usage, but it has fewer privacy guarantees as it must disclose the content topic to its peers to retrieve messages. +::: ## [Store](https://rfc.vac.dev/spec/13/) @@ -26,7 +30,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/Reply](/getting-started/concepts/network-domains#requestreply-domain) protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgment when sending messages, indicating that at least one peer has received them. +`Light Push` is a [Request/Response](/getting-started/concepts/network-domains#requestresponse-domain) protocol for nodes with limited bandwidth and short connection windows. It allows a client to receive an acknowledgment 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. diff --git a/docs/getting-started/concepts/transports.md b/docs/getting-started/concepts/transports.md index 3959e4d..4b3ae06 100644 --- a/docs/getting-started/concepts/transports.md +++ b/docs/getting-started/concepts/transports.md @@ -2,11 +2,11 @@ title: Transports --- -Transports help move data packets across a network by establishing connections between members. They define the rules and protocols to ensure efficient network transmission, routing, and data delivery. +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. Waku is a transport-agnostic framework that allows developers to choose and support multiple protocols according to their requirements. For Waku nodes, the following transports are recommended: -- **TCP:** By default, Waku nodes utilize TCP for communication. Service nodes should employ TCP for listening to and connecting with other peers. +- **TCP:** By default, Waku nodes use TCP for communication. Service nodes should employ TCP for listening to and connecting with other nodes. - **Secure WebSocket:** In browser environments, secure WebSocket is used. Service nodes are encouraged to set up SSL certificates to enable incoming connections from browsers and serve them securely. - Other protocols like [WebRTC](https://github.com/waku-org/js-waku/issues/20), [WebTransport](https://github.com/waku-org/js-waku/issues/697), and QUIC have been researched and studied for potential integration. diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 584966b..009e3c5 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -29,7 +29,7 @@ Waku is suitable for applications that require a peer-to-peer approach, offering ### 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 primarily offline. +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 @@ -49,11 +49,21 @@ Waku nodes are adaptive and can be customized based on the application's require 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 decentralized communication systems, eliminating the need to start from scratch or depend on centralized systems. Node operators can offer several services, such as: + +- Storing messages for offline devices. +- Enabling bandwidth-saving access to the [Relay](/getting-started/concepts/protocols#relay) network through [Light Push](/getting-started/concepts/protocols#light-push) and [Filter](/getting-started/concepts/protocols#filter) protocols. +- Implementing spam prevention and DoS mitigation features. +- Providing a resilient and shared [Relay](/getting-started/concepts/protocols#relay) infrastructure that applications can leverage to enhance reliability and efficiency. + ## How Does Waku Work? The [Relay](/getting-started/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 primarily offline devices. +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. diff --git a/docs/getting-started/reference/glossary.md b/docs/getting-started/reference/glossary.md index 3bd3fac..1d3c901 100644 --- a/docs/getting-started/reference/glossary.md +++ b/docs/getting-started/reference/glossary.md @@ -4,4 +4,124 @@ title: Glossary # Waku Docs Glossary -Definitions and usage of the terminology used in the Waku ecosystem. \ No newline at end of file +Definitions and usage of the terminology used in the Waku ecosystem. + +### Bootstrapping + +Bootstrapping is the initial entry point of a [node](#node) to the [Waku network](#waku). Once connected, other [peer discovery](#peer-discovery) methods can be employed to establish connections with fellow peers. + +### [Content Topic](/getting-started/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. + +### [Dappnode](https://dappnode.com/) + +Dappnode is an open-source platform that simplifies the hosting and management of decentralized applications and blockchain nodes, including [Waku](#waku). + +### [Discv5](/getting-started/concepts/peer-discovery#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](/getting-started/concepts/peer-discovery#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 decentralization. + +### [ENR](https://rfc.vac.dev/spec/31/) + +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, `Waku ENR` also includes node configuration information like enabled protocol and shards. + +### [Filter](/getting-started/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](/getting-started/concepts/network-domains#gossip-domain) + +GossipSub is a [protocol](#protocol) for efficient and scalable information dissemination in decentralized networks commonly used in blockchain systems. + +### Light Node + +A light node is a [resource-limited](#resource-limited) device or client that leverages service nodes to access the [Relay](#relay) network. + +### [Light Push](/getting-started/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 acknowledgments confirming that a [peer](#peer) has received them. + +### Mostly Offline + +Mostly offline devices refer to clients who spend most of their time offline or disconnected from the network but occasionally connect for certain reasons. Examples include browsers and mobile phones. + +### Node + +A node is a device or client that implements Waku [protocols](#protocol) and leverages the [Waku network](#waku) to enable secure and private peer-to-peer Web3 communication. + +### Payload + +The payload field in a [Waku Message](#waku-message) contains the application data, serving as the business logic message transmitted between clients over Waku. Applications can encrypt the payload or employ encryption methods specified in [Waku Message Payload Encryption](#waku-message-payload-encryption). + +### Peer + +A peer refers to other [nodes](#node) and participants of the [Waku network](#waku) with whom communication and interaction are possible. + +### [Peer Discovery](/getting-started/concepts/peer-discovery) + +Peer discovery is the process where a [node](#node) locates and connects with [peers](#peer) to establish communication and exchange information. + +### [Peer Exchange](/getting-started/concepts/peer-discovery#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). + +### [Protocol](/getting-started/concepts/protocols) + +A protocol is a set of rules that enables [nodes](#node) within the [Waku network](#waku) to perform various functionalities such as message sending, relaying, filtering, storing, retrieving, and more. + +### Pub/Sub + +Publish/Subscribe (Pub/Sub) is an asynchronous messaging pattern where publishers send messages to topics, and subscribers receive messages from topics of interest, allowing efficient one-to-many communication. + +### Pub/Sub Topic + +A Pub/Sub topic is a string that serves as an identifier for the topic of interest among [GossipSub](#gossipsub) peers. Peers interested in the same topic are likely to maintain a connection and forward messages received on that topic. + +### [Rate Limit Nullifiers](https://rfc.vac.dev/spec/32/) + +Rate Limit Nullifiers (RLN) are a construct based on zero-knowledge proofs that provide an anonymous rate-limited messaging framework, preserving message owner anonymity while preventing spam or DoS attacks. + +### [Relay](/getting-started/concepts/protocols#relay) + +Relay is a [protocol](#protocol) that extends the [GossipSub protocol](#gossipsub) to enable secure and censorship-resistant [message](#waku-message) dissemination among [peers](#peer) while preserving privacy. + +### Resource-Limited + +Resource-limited refers to environments or devices restricting available resources, including bandwidth, CPU, memory, disk, and battery power. + +### [RLN Relay](/getting-started/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 bandwidth caps, imposing penalties, and facilitating network removal for spammers. + +### [SDK](/guides/sdks-and-nodes) + +SDKs are tools, libraries, and resources to integrate Waku's private, secure, and censorship-free communication features into various applications. + +### [Store](/getting-started/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](/getting-started/concepts/transports) + +A transport is a network mechanism that establishes connections between [peers](#peer) and enables efficient transmission, routing, and delivery of data packets. + +### Waku + +Waku is a family of private, secure, decentralized, 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 Message](/getting-started/concepts/protocols#waku-message) + +Waku Message defines the structure of messages in the [Waku network](#waku), including the [content topic](#content-topic), [payload](#payload), and metadata for application-specific processing. + +### [Waku Message Payload Encryption](https://rfc.vac.dev/spec/26/) + +Waku Message Payload Encryption provides guidelines for implementing secure and private communication in the [Waku network](#waku). It covers encryption, decryption, and signing methods for message [payloads](#payload), focusing on confidentiality, authenticity, integrity, and unlinkability. + +### [Waku Noise](https://rfc.vac.dev/spec/35/) + +Waku Noise is a specified way to use the [Noise Protocol Framework](http://noiseprotocol.org/) to build protocols that enable secure key-exchange mechanisms for encrypted communication with confidentiality, authenticity, integrity, strong forward secrecy, and identity-hiding properties. \ No newline at end of file diff --git a/docs/getting-started/reference/research-in-progress.md b/docs/getting-started/reference/research-in-progress.md index 8b23ad5..fc3ba41 100644 --- a/docs/getting-started/reference/research-in-progress.md +++ b/docs/getting-started/reference/research-in-progress.md @@ -12,10 +12,10 @@ We have prepared a PoC implementation of this method in JS: . +Denial of service signifies the case where an adversarial peer exhausts another node's service capacity (e.g., by making a large number of requests) and makes it unavailable to the rest of the system. RnD on DoS attack mitigation can tracked from here: . In a nutshell, peers have to pay for the service they obtain from each other. In addition to incentivizing the service provider, accounting also makes DoS attacks costly for malicious peers. The accounting model can be used in `Store` and `Filter` to protect against DoS attacks. Additionally, along with RLN, this gives node operators who provide a useful service to the network an incentive to perform that service. Read more here: -You can also read more about the current open problems the Vac/Waku team is working on here: +You can also read more about the ongoing challenges the Waku team is working on here: diff --git a/docs/guides/sdks-and-nodes.md b/docs/guides/sdks-and-nodes.md index 5587e86..993f386 100644 --- a/docs/guides/sdks-and-nodes.md +++ b/docs/guides/sdks-and-nodes.md @@ -10,7 +10,7 @@ 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) or [go-waku guide](https://github.com/waku-org/go-waku/tree/master/docs/operators) for operators to learn more. +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. ## Integrate Using SDKs @@ -19,10 +19,9 @@ 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 recommended for operating a node and interacting with Waku | | -| [go-waku](https://github.com/waku-org/go-waku) | Golang SDK designed for integration in Golang applications, includes C bindings for usage in C/C++, C#/Unity, Swift, and Kotlin | | +| [nwaku](https://github.com/waku-org/nwaku) | Nim SDK for running a standalone node and accessing the Waku network | | +| [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 | | -| [waku-ui](https://github.com/waku-org/waku-ui) | React components and UI adapters designed for seamless integration with `js-waku` | | ## Run on Mobile Devices @@ -36,7 +35,8 @@ Waku provides integrations tailored for mobile applications, enabling Waku to op ## More Integrations -| Platform | Description | Documentation | +| Implementation | Description | Documentation | | - | - | - | -| JSON-RPC API | `JSON-RPC` API interface provided by nodes for seamless integration with Waku | | -| [@waku/create-app](https://www.npmjs.com/package/@waku/create-app) | Starter kit to bootstrap your next Waku project from various example templates | | \ No newline at end of file +| [@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 | | +| JSON-RPC API | `JSON-RPC` API interface provided by `nwaku` and `go-waku` to access the Waku network | | \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index 10886e8..f711f58 100644 --- a/sidebars.js +++ b/sidebars.js @@ -8,14 +8,12 @@ const sidebars = { "getting-started/why-waku", "getting-started/use-cases", { - type: "link", - label: "SDKs and Nodes", - href: "/guides/sdks-and-nodes" + type: "html", + value: "SDKs and Nodes " }, { - type: "link", - label: "Video Presentations", - href: "/presentations" + type: "html", + value: "Presentations " }, { type: "category", @@ -24,9 +22,9 @@ const sidebars = { collapsible: true, items: [ "getting-started/concepts/protocols", - "getting-started/concepts/peer-discovery", - "getting-started/concepts/network-domains", "getting-started/concepts/content-topics", + "getting-started/concepts/network-domains", + "getting-started/concepts/peer-discovery", "getting-started/concepts/transports" ] }, diff --git a/static/custom.css b/static/custom.css index 4fa2003..3ed53b6 100644 --- a/static/custom.css +++ b/static/custom.css @@ -38,4 +38,14 @@ html[data-theme='dark'] .header-github-link:before { max-width: 100%; width: 640px; height: 360px; +} + +.external-link { + margin-top: 0.25rem; +} + +.external-link svg { + width: 13.5px; + height: 13.5px; + margin-left: 0.3rem; } \ No newline at end of file