diff --git a/content/docs/rfcs/64/README.md b/content/docs/rfcs/64/README.md index e43c98d1..5ba2f03c 100644 --- a/content/docs/rfcs/64/README.md +++ b/content/docs/rfcs/64/README.md @@ -88,10 +88,17 @@ A node MAY choose to ignore discovered peers that do not support any of the shar For each supported shard, each relay node SHOULD enable and support the following protocols as a service node: 1. [12/WAKU2-FILTER](https://rfc.vac.dev/spec/12/) to allow resource-restricted peers to subscribe to messages matching a specific content filter. -2. [13/WAKU2-STORE](https://rfc.vac.dev/spec/13/) to allow other peers to request historical messages from this node. The store SHOULD be configured to retain at least `12` hours of messages per supported shard. +2. [13/WAKU2-STORE](https://rfc.vac.dev/spec/13/) to allow other peers to request historical messages from this node. 3. [19/WAKU2-LIGHTPUSH](https://rfc.vac.dev/spec/19/) to allow resource-restricted peers to request publishing a message to the network on their behalf. 4. [34/WAKU2-PEER-EXCHANGE](https://rfc.vac.dev/spec/34/) to allow resource-restricted peers to discover more peers in a resource efficient way. +#### Store service nodes + +Each relay node SHOULD support [13/WAKU2-STORE](https://rfc.vac.dev/spec/13/) as a store service node, +for each supported shard. +The store SHOULD be configured to retain at least `12` hours of messages per supported shard. +Store service nodes SHOULD only store messages with a valid [`rate_limit_proof`](#message-attributes) attribute. + #### Non-relay nodes Nodes MAY opt out of relay functionality on any network shard @@ -102,6 +109,13 @@ using any of the defined service protocols: 3. [19/WAKU2-LIGHTPUSH](https://rfc.vac.dev/spec/19/) to request publishing a message to the network. 4. [34/WAKU2-PEER-EXCHANGE](https://rfc.vac.dev/spec/34/) to discover more peers in a resource efficient way. +#### Store client nodes + +Nodes MAY request historical messages from [13/WAKU2-STORE](https://rfc.vac.dev/spec/13/) service nodes as store clients. +A store client SHOULD discard any messages retrieved from a store service node that do not contain a valid [`rate_limit_proof`](#message-attributes) attribute. +The client MAY consider service nodes returning messages without a valid [`rate_limit_proof`](#message-attributes) attribute as untrustworthy. +The mechanism by which this may happen is currently underdefined. + ### Applications Applications are the higher-layer projects or platforms that make use of the generalized messaging capability of the network. @@ -168,7 +182,7 @@ according to the rules discussed under [message validation](#message-validation) - The optional `version` attribute SHOULD be set to `0`. It MUST be interpreted as `0` if not present. - The mandatory `timestamp` attribute MUST contain the Unix epoch time at which the message was generated by the application. The value MUST be in nanoseconds. It MAY contain a fudge factor of up to 1 seconds in either direction to improve resistance to timing attacks. - The optional `ephemeral` attribute MUST be set to `true` if the message should not be persisted by the Waku Network. -- The optional `rate_limit_proof` attribute SHOULD be populated with the RLN proof as set out in [RLN Proofs](#rln-proofs). Messages with this field unpopulated MAY be discarded from the network by relayers. +- The optional `rate_limit_proof` attribute SHOULD be populated with the RLN proof as set out in [RLN Proofs](#rln-proofs). Messages with this field unpopulated MAY be discarded from the network by relayers. This field MUST be populated if the message should be persisted by the Waku Network. ### Message Size