Update qaku.md

This commit is contained in:
Jimmy Debe 2025-08-26 15:41:36 -04:00 committed by GitHub
parent d578604fed
commit 532b9071ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -33,20 +33,30 @@ The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “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). “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`. A client creating a new Q&A board is identitied as the `owner`.
At the time of creation, the `owner` creates a `ControlMessage` to configure the board. The `owner` MAY share the `content-topic` with other clients,
This message contains all the settings of the board and is published to the Waku network. 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: The `ControlMessage` is a JSON object:
- It MUST include a title name - It MUST include a title name
- It MAY include a list of admin identities. - It MAY include a list of client public addresses identified as `admin`.
- It SHOULD include the identity of the `owner`, idenities explianed [below](#Identity). - 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. - It SHOULD include the start and end date for clients to publish a new post.
-
```js ```js
{ {
@ -55,7 +65,7 @@ The `ControlMessage` is a JSON object:
id: string, id: string,
enabled: boolean, enabled: boolean,
timestamp: number, // time the ControlMessage is created 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 admins: string[], // a list of addresses
moderation: boolean, // moderation: boolean, //
description: string, description: string,
@ -70,39 +80,28 @@ The `ControlMessage` is a JSON object:
``` ```
`id`: `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. Clients subscribed to the Q&A board `content-topic`, using the [12/WAKU2-FILTER](),
Only clients subscribed to the `content-topic` can view the `ControlMessage`. MUST be able to view the `ControlMessage`.
### Identity ### Identity
The `identity` of a client is a public address identifier in the form of a hexadecimal string. All clients MUST have `identity` consisting of a public address identifier in the form of a hexadecimal string.
Clients SHOULD generate a private key on a local machine and Clients generate cryptographic key pair, public and private keys, and
MAY encrypt the keys with a password. the private key MAY be encrypt a password.
Public addresses are then generated with the private keys. 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. 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 ### Messages
The Waku network processes real-time message updates, which enables new questions and 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 A conec ulti
Messages are sent to a `content_topic` that are identified as a `message_type`. 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. The owner MUST be able to enable and disable questions added to the board.
When a new question is created, the interface SHOULD lis 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
Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/).