From 532b9071ad5c4aa8ea421bc4cf8504e2a42e62dd Mon Sep 17 00:00:00 2001 From: Jimmy Debe <91767824+jimstir@users.noreply.github.com> Date: Tue, 26 Aug 2025 15:41:36 -0400 Subject: [PATCH] Update qaku.md --- standards/application/qaku.md | 71 +++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/standards/application/qaku.md b/standards/application/qaku.md index 8134c92..54897a7 100644 --- a/standards/application/qaku.md +++ b/standards/application/qaku.md @@ -33,20 +33,30 @@ The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC 2119](https://www.ietf.org/rfc/rfc2119.txt). +Clients publish questions to a `content-topic` address which is held by the Waku Network. +A collection of questions are owned by the `content-topic`, +while a collection of answers are owned by the questions. +All clients MUST have and identity recognized by the network to publish new content. +More on identity [below](#identity). -### Control Message +### Creating a New Board -New Q&A boards are created by a client who SHOULD be identitfied as the `owner`. -At the time of creation, the `owner` creates a `ControlMessage` to configure the board. -This message contains all the settings of the board and is published to the Waku network. +A client creating a new Q&A board is identitied as the `owner`. +The `owner` MAY share the `content-topic` with other clients, +as the `owner`is the first client to know the `content-topic` for the new board. +At the time of creation, the `owner` SHOULD create a `ControlMessage` to configure a Q&A board +and publish to the Waku network. + +#### Control Message + +This message contains all initial Q&A board. The `ControlMessage` is a JSON object: - It MUST include a title name -- It MAY include a list of admin identities. -- It SHOULD include the identity of the `owner`, idenities explianed [below](#Identity). +- It MAY include a list of client public addresses identified as `admin`. +- It SHOULD include the public address of the `owner`, identity explianed [below](#Identity). - It SHOULD include the start and end date for clients to publish a new post. -- ```js { @@ -55,7 +65,7 @@ The `ControlMessage` is a JSON object: id: string, enabled: boolean, timestamp: number, // time the ControlMessage is created - owner: string, // the address of the owner + owner: string, // the public address of the owner admins: string[], // a list of addresses moderation: boolean, // description: string, @@ -70,39 +80,28 @@ The `ControlMessage` is a JSON object: ``` `id`: -- SHOULD be generated from the `title` value, `timestamp` value, and the `owner` address value. +- MAY be generated from the `title` value, `timestamp` value, and the `owner` public address value. +- MAY be hexadecimal characters of SHA-256*** -The `ControlMessage` is the first message published on the `content-topic` of the Q&A board. -Only clients subscribed to the `content-topic` can view the `ControlMessage`. + Clients subscribed to the Q&A board `content-topic`, using the [12/WAKU2-FILTER](), + MUST be able to view the `ControlMessage`. ### Identity -The `identity` of a client is a public address identifier in the form of a hexadecimal string. -Clients SHOULD generate a private key on a local machine and -MAY encrypt the keys with a password. -Public addresses are then generated with the private keys. +All clients MUST have `identity` consisting of a public address identifier in the form of a hexadecimal string. +Clients generate cryptographic key pair, public and private keys, and +the private key MAY be encrypt a password. +Public addresses are derived from the public keys as a hexadecimal string. +This address SHOULD be recongized by the other clients in the network to idenitify clients. + +Each `identity` SHOULD be stored locally. The address SHOULD be used to sign and verify messages. -### Node - -The Qaku application SHOULD by default connect to The Waku Network. -When a user accesses the Qaku app, -the user joins a new session that SHOULD create a new `content_topic`. -When the user exits the Qaku app, -the session ends but the `content_topic` remians available on the Waku network for other users to connect to. - -Qaku uses the following [10/WAKU]() protocols: - -- the [19/WAKU2-LIGHTPUSH](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/19/lightpush.md) to push a message type to the Waku network. -- the [12/WAKU2-FILTER]() to subscribe to Waku `content_topic` and listen to messages published to that topic. -- the [13/WAKU-STORE]() to query and load old messages from the Waku network for users. -- A new `content_topic` is created when a new Q&A board is created. -- All questions and answer are pushed to the content_topic - ### Messages The Waku network processes real-time message updates, which enables new questions and -answers to be acceisble quickly. +answers to be acceisble quickly. + A conec ulti Messages are sent to a `content_topic` that are identified as a `message_type`. @@ -169,6 +168,14 @@ The `AnswerMessage` type is generated by any sending an answer to the Qaku board The owner MUST be able to enable and disable questions added to the board. When a new question is created, the interface SHOULD lis +Qaku uses the following [10/WAKU]() protocols: + +- the [19/WAKU2-LIGHTPUSH](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/19/lightpush.md) to push a message type to the Waku network. +- the [12/WAKU2-FILTER]() to subscribe to Waku `content_topic` and listen to messages published to that topic. +- the [13/WAKU-STORE]() to query and load old messages from the Waku network for users. +- A new `content_topic` is created when a new Q&A board is created. +- All questions and answer are pushed to the content_topic + ## Copyright Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).