mirror of
https://github.com/logos-messaging/specs.git
synced 2026-01-02 14:13:06 +00:00
Update2
This commit is contained in:
parent
4ed8bf79e1
commit
d578604fed
@ -10,18 +10,22 @@ contributors:
|
||||
|
||||
## Abstract
|
||||
|
||||
The document describes the functions of a Waku Web application Qaku.
|
||||
The use of Waku protocols in the Qaku questions and
|
||||
answers web application allow for a secure , trustless environment.
|
||||
The document describes the different components of the Qaku web application.
|
||||
Qaku is a Waku web applications that utilizes some Waku protocols to provide a private and
|
||||
censorship-resistent question and answer service.
|
||||
|
||||
## Background
|
||||
|
||||
Waku is a family of robust,
|
||||
censorship-resistant communication protocols designed to enable privacy-focused messaging for web3 apps.
|
||||
Qaku is a questions and answers Waku web application.
|
||||
It allows the user to create a Q&A board,
|
||||
share a link and let users post questions.
|
||||
Users can upvote questions which move to the top of the list on the board.
|
||||
censorship-resistant communication protocols designed to enable privacy-focused messaging for the decentralized web.
|
||||
Current Q&A platforms are controlled by centralized organizations who have the ability to remove,
|
||||
block and censor content published by any user.
|
||||
This could cause a user to not express their ideas or ask reall questions with fear of prosecution by a thrid party.
|
||||
|
||||
Qaku aims to solve this by utilizing a few [10/WAKU]() protocols to create a Q&A forum.
|
||||
The user can create a Q&A board with a wallet address,
|
||||
send questions or answers directly to other peers without the need of storing and/or retrieving the content from a centralized server/domain.
|
||||
Familiar features like upvoting, sharable links, and board moderation are also capable.
|
||||
|
||||
## Specification
|
||||
|
||||
@ -29,22 +33,59 @@ 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).
|
||||
|
||||
The Q&A board is created and maintained by an owner,
|
||||
who SHOULD support an accessible interface for its users.
|
||||
|
||||
### Control Message
|
||||
|
||||
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.
|
||||
|
||||
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 SHOULD include the start and end date for clients to publish a new post.
|
||||
-
|
||||
|
||||
```js
|
||||
{
|
||||
"ControlMessage" : [
|
||||
title: string,
|
||||
id: string,
|
||||
enabled: boolean,
|
||||
timestamp: number, // time the ControlMessage is created
|
||||
owner: string, // the address of the owner
|
||||
admins: string[], // a list of addresses
|
||||
moderation: boolean, //
|
||||
description: string,
|
||||
updated: number,
|
||||
startDate: number,
|
||||
endDate?: number,
|
||||
allowsParticipantsReplies: number,
|
||||
delegationInfo?: DelegationInfo
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
`id`:
|
||||
- SHOULD be generated from the `title` value, `timestamp` value, and the `owner` address value.
|
||||
|
||||
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`.
|
||||
|
||||
### Identity
|
||||
|
||||
- Users and an owner MUST generate a private key
|
||||
- The owner MUST generate a private key to before becoming the owner of the Q&A board.
|
||||
- The owner address, derived from the public key, SHOULD be made public as the owner of Qaku.
|
||||
- A `paasword` SHOULD be used to encrypt the private key
|
||||
|
||||
The public key is used to sign and verify messages.
|
||||
The owner MUST be able to enable and disable questions added to the board.
|
||||
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.
|
||||
The address SHOULD be used to sign and verify messages.
|
||||
|
||||
### Node
|
||||
|
||||
The Qaku application SHOULD connect to the default Waku `pubsub_topic`.
|
||||
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,
|
||||
@ -71,10 +112,9 @@ The following `message_type`s used in Qaku include:
|
||||
|
||||
- Question Message
|
||||
- Answered Message
|
||||
- Control Message
|
||||
- Upvote Message
|
||||
- Moderation Message
|
||||
- Poll messag
|
||||
- Poll Message
|
||||
|
||||
#### Question Message
|
||||
|
||||
@ -112,28 +152,6 @@ The `AnswerMessage` type is generated by any sending an answer to the Qaku board
|
||||
|
||||
```
|
||||
|
||||
#### Control Message
|
||||
|
||||
```js
|
||||
{
|
||||
"ControlMessage" : [
|
||||
title: string,
|
||||
id: string,
|
||||
enabled: boolean,
|
||||
timestamp: number,
|
||||
owner: string,
|
||||
admins: string[],
|
||||
moderation: boolean,
|
||||
description: string,
|
||||
updated: number,
|
||||
startDate: number,
|
||||
endDate?: number,
|
||||
allowsParticipantsReplies: number,
|
||||
delegationInfo?: DelegationInfo
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
#### Upvote Message
|
||||
|
||||
```js
|
||||
@ -148,6 +166,7 @@ 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
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user