50 lines
2.1 KiB
Markdown
50 lines
2.1 KiB
Markdown
---
|
|
title: Protocols Overview by Example
|
|
---
|
|
|
|
We have six nodes, A-F.
|
|
|
|
The protocols initially mounted are indicated as such.
|
|
|
|
```mermaid
|
|
sequenceDiagram
|
|
participant A as A relay(0)
|
|
participant B as B relay(pubtopic1)(0)
|
|
participant C as C relay(pubtopic1)(0)
|
|
participant D as D relay(pubtopic1), store(pubtopic1), filter(0)
|
|
participant E as E relay, store(0)
|
|
participant F as F relay, filter(0)
|
|
|
|
A ->> A: msg1=WakuMessage(contentTopic1, data) [14/WAKU2-MESSAGE] (1)
|
|
Note right of A: If version=1, encrypt data per [7/WAKU-DATA] (1)
|
|
|
|
F ->> D: FilterRequest(pubtopic1, contentTopic1) [12/WAKU2-FILTER] (2)
|
|
D ->> D: Subscribe F to filter [12/WAKU2-FILTER] (2)
|
|
|
|
A ->> B: Publish msg1 on pubtopic1 [11/WAKU2-RELAY] (3)
|
|
B ->> D: relay msg1 on pubtopic1 [11/WAKU2-RELAY] (3)
|
|
|
|
D ->> D: store: saves msg1 [13/WAKU2-STORE] (4)
|
|
|
|
D ->> F: MessagePush(msg1)[12/WAKU2-FILTER] (5)
|
|
|
|
E ->> E: E comes online (6)
|
|
E ->> D: HistoryQuery(pubtopic1, contentTopic1) [13/WAKU2-STORE] (6)
|
|
D ->> E: HistoryResponse(msg1, ...) [13/WAKU2-STORE] (6)
|
|
|
|
```
|
|
|
|
The PubSub topic `pubtopic1` is used for routing (the network uses a default pubsub topic) and indicates that it is subscribed to messages on that topic for relay.Ditto for Waku Store where it indicates that these messages are persisted on that node.
|
|
|
|
1. Node A creates a WakuMessage `msg1` with a ContentTopic `/my-dapp/0/notifications/proto`.
|
|
|
|
2. Node F requests to get messages filtered by PubSub topic `pubtopic1` and ContentTopic `contentTopic1`. Node D subscribes F to this filter and will in the future forward messages that match that filter.
|
|
|
|
3. Node A publishes `msg1` on `pubtopic1` and subscribes to that relay topic pick it up. It then gets relayed further from B to D, but not C since it doesn't subscribe to that topic.
|
|
|
|
4. Node D saves `msg1` for possible later retrieval by other nodes.
|
|
|
|
5. Node D also pushes `msg1` to F, as it has previously subscribed F to this filter.
|
|
|
|
6. At a later time, Node E comes online. It then requests messages matching `pubtopic1` and `contentTopic1` from Node D. Node D responds with messages meeting this (and possibly other) criteria.
|