diff --git a/informational/22/toy-chat.md b/informational/22/toy-chat.md new file mode 100644 index 0000000..168809c --- /dev/null +++ b/informational/22/toy-chat.md @@ -0,0 +1,53 @@ +--- +slug: 22 +title: 22/TOY-CHAT +name: Waku v2 Toy Chat +status: draft +tags: waku/application +editor: Franck Royer +contributors: + - Hanno Cornelius +--- + +**Content Topic**: `/toy-chat/2/huilong/proto`. + +This specification explains a toy chat example using Waku v2. +This protocol is mainly used to: + +1. Dogfood Waku v2, +2. Show an example of how to use Waku v2. + +Currently, all main Waku v2 implementations support the toy chat protocol: +[nim-waku](https://github.com/status-im/nim-waku/blob/master/examples/v2/chat2.nim), +js-waku ([NodeJS](https://github.com/status-im/js-waku/tree/main/examples/cli-chat) and [web](https://github.com/status-im/js-waku/tree/main/examples/web-chat)) +and [go-waku](https://github.com/status-im/go-waku/tree/master/examples/chat2). + +Note that this is completely separate from the protocol the Status app is using for its chat functionality. + +# Design + +The chat protocol enables sending and receiving messages in a chat room. +There is currently only one chat room, which is tied to the content topic. +The messages SHOULD NOT be encrypted. + +The `contentTopic` MUST be set to `/toy-chat/2/huilong/proto`. + +# Payloads + +```protobuf +syntax = "proto3"; + +message Chat2Message { + uint64 timestamp = 1; + string nick = 2; + bytes payload = 3; +} +``` + +- `timestamp`: The time at which the message was sent, in Unix Epoch seconds, +- `nick`: The nickname of the user sending the message, +- `payload`: The text of the messages, UTF-8 encoded. + +# Copyright + +Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).