47 lines
3.5 KiB
Markdown
47 lines
3.5 KiB
Markdown
---
|
|
title: Protocols
|
|
---
|
|
|
|
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:
|
|
|
|
## [Relay](https://rfc.vac.dev/spec/11/)
|
|
|
|
`Relay` protocol employs a Pub/Sub architecture to facilitate message routing among peers. It extends the [libp2p GossipSub protocol](https://github.com/libp2p/specs/blob/master/pubsub/gossipsub/README.md) to create a privacy-focused peer-to-peer messaging protocol that enables secure communication channels, encryption, and protection against censorship. It also scales the Waku Network to accommodate many nodes efficiently.
|
|
|
|
## [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).
|
|
|
|
## [Filter](https://rfc.vac.dev/spec/12/)
|
|
|
|
`Filter` protocol allows light nodes to selectively subscribe to specific messages transmitted 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.
|
|
|
|
:::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/)
|
|
|
|
`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.
|
|
|
|
:::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.
|
|
:::
|
|
|
|
## [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 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.
|
|
:::
|
|
|
|
## [Waku Message](https://rfc.vac.dev/spec/14)
|
|
|
|
`Waku Message` specifies the message structure used in the Waku Network. It defines the attributes and metadata fields that accompany a message, including the following:
|
|
|
|
- `content_topic` attribute for [content-based filtering](/overview/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.
|
|
- `ephemeral` attribute specifying whether the network should not persist the message. |