--- title: Waku version: 2.0.0-beta1 status: Draft authors: Oskar Thorén , Dean Eigenmann --- # Table of Contents - [Abstract](#abstract) - [Wire Specification](#wire-specification) * [Protobuf](#protobuf) - [Changelog](#changelog) - [Copyright](#copyright) # Abstract `WakuStore` is a protocol to enable querying of messages received through relay protocol and stored by other nodes. **Protocol identifier***: `/vac/waku/store/2.0.0-beta1` # Wire Specification Peers communicate with each other using a request / response API. The messages sent are Protobuf RPC messages. ## Protobuf ```protobuf message HistoryQuery { repeated string topics = 2; } message HistoryResponse { repeated WakuMessage messages = 2; } message HistoryRPC { string request_id = 1; HistoryQuery query = 2; HistoryResponse response = 3; } ``` ##### HistoryRPC A node MUST send all History messages (`HistoryQuery`, `HistoryResponse`) wrapped inside a `HistoryRPC`. The `request_id` MUST be a uniquely generated string, the `HistoryResponse` and `HistoryQuery` `request_id` MUST match. The `HistoryResponse` message SHOULD contain any messages found whose `topic` can be found in the `HistoryQuery` `topics` array. Any message whose `topic` does not match MUST NOT be included. ##### HistoryQuery RPC call to query historical messages. The `topics` field MUST indicate the list of topics to query. ##### HistoryResponse RPC call to respond to a HistoryQuery call. The `messages` field MUST contain the messages found, these are [`WakuMessage`] types as defined in the corresponding [specification](./waku-message.md). # Changelog 2.0.0-beta1 Initial draft version. Released [2020-10-06](https://github.com/vacp2p/specs/commit/75b4c39e7945eb71ad3f9a0a62b99cff5dac42cf) # Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).