From 78f3f71c61df537811a12becd093d62cc089d9de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oskar=20Thor=C3=A9n?= Date: Thu, 8 Apr 2021 13:39:11 +0800 Subject: [PATCH] Add implementation notes (#334) * Add implementation notes - Implementation matrix - Recommendations for client developers * Tweak * Update content/docs/rfcs/10/README.md Co-authored-by: Franck Royer * Update content/docs/rfcs/10/README.md Co-authored-by: Franck Royer Co-authored-by: Franck Royer --- content/docs/rfcs/10/README.md | 42 ++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/content/docs/rfcs/10/README.md b/content/docs/rfcs/10/README.md index 08a337ee..77b1a240 100644 --- a/content/docs/rfcs/10/README.md +++ b/content/docs/rfcs/10/README.md @@ -209,6 +209,48 @@ The accounting model can be used in `13/WAKU2-STORE` and `12/WAKU2-FILTER` to pr Additionally, this gives node operators who provide a useful service to the network an incentive to perform that service. See [18/WAKU2-SWAP](/spec/18) for more details on this piece of work. +## Appendix A: Implementation Notes + +### Implementation Matrix + +There are multiple implementations of Waku v2 and its protocols: + +- [nim-waku (Nim)](https://github.com/status-im/nim-waku/) +- [go-waku (Go)](https://github.com/status-im/go-waku/) +- [js-waku (NodeJS and Browser)](https://github.com/status-im/js-waku/) + +Below you can find an overview of the specs that they implement as they relate to Waku. This includes Waku v1 specs, as they are used for bridging between the two networks. + +| Spec | nim-waku (Nim) | go-waku (Go) | js-waku (Node JS) | js-waku (Browser JS) | +| ---- | -------------- | ------------ | ----------------- | -------------------- | +|[6/WAKU1](/spec/6)|:heavy_check_mark:||| +|[7/WAKU-DATA](/spec/7)|:heavy_check_mark:|:heavy_check_mark:|| +|[8/WAKU-MAIL](/spec/8)|:heavy_check_mark:||| +|[9/WAKU-RPC](/spec/9)|:heavy_check_mark:||| +|[10/WAKU2](/spec/10)|:heavy_check_mark:|:construction:|:construction:|:construction:| +|[11/WAKU2-RELAY](/spec/11)|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:construction:| +|[12/WAKU2-FILTER](/spec/12)|:heavy_check_mark:||| +|[13/WAKU2-STORE](/spec/13)|:heavy_check_mark:|:construction:|:construction:| +|[14/WAKU2-MESSAGE](/spec/14)|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:|:heavy_check_mark:| +|[15/WAKU2-BRIDGE](/spec/15)|:heavy_check_mark:||| +|[16/WAKU2-RPC](/spec/16)|:heavy_check_mark:||| +|[17/WAKU2-RLNRELAY](/spec/17)|:construction:||| +|[18/WAKU2-SWAP](/spec/18)|:construction:||| + +### Recommendations for clients + +To implement a minimal Waku v2 client, we recommend implementing the following subset in the following order: + +- [10/WAKU2](/spec/10) - this spec +- [11/WAKU2-RELAY](/spec/11) - for basic operation +- [14/WAKU2-MESSAGE](/spec/14) - version 0 (unencrypted) +- [13/WAKU2-STORE](/spec/13) - for historical messaging (query mode only) + +To get compatibility with Waku v1: + +- [7/WAKU-DATA](/spec/7) +- [14/WAKU2-MESSAGE](/spec/14) - version 1 (encrypted with `7/WAKU-DATA`) + # Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).