Skip to content

New RFC: OpChan#98

Open
jimstir wants to merge 4 commits intomasterfrom
op-chanA
Open

New RFC: OpChan#98
jimstir wants to merge 4 commits intomasterfrom
op-chanA

Conversation

@jimstir
Copy link
Contributor

@jimstir jimstir commented Dec 11, 2025

An rfc for the OpChan Waku web application.

@jimstir jimstir marked this pull request as draft December 11, 2025 23:16
@jimstir jimstir marked this pull request as ready for review December 19, 2025 00:51
The content being published by users is not stored by the server,
but by distributing the messages peer to peer.
OpChan supports ephemeral anonymous web sessions,
supporting a locally generated ED25519 key pair for identity and
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should ED25519 also be a reference link? I seem to recall we had it in one of the previous RFCs.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yea I remember this I want to keep the same reference for the Ed25519 through all our specs. I just can't remember what spec had this reference. When I find it, I will update this later. 👍

Content messages are user-generated content on the forum.
The message types include the following:

- Channel: Metadata information like name, description, and admins of a forum feed.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Be wary of ambiguity - I think we used "channel" somewhere before, when explaining the cell and here it is mentioned as a standalone subject. Cell and channel should be differentiated.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This was an error, in the codebase a cell is used to define a feed of posts. I decided it would better to name it channel. A cell and channel are the same. I removed any mention of cell now. 👍

"type": "CELL_CREATED | POST_CREATED | COMMENT_CREATED | VOTE | BOOKMARK | MODERATION | DELEGATION",
"timestamp": "uint64"
"author": "string" // author public key or wallet address
"signature": "bytes" // ed25519 signature of the canonical serialized body
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does signature cover the entire signing flow? Here it mentions just body, but below in line 106 it mentions that constructing signing bytes with 4 different fields.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is explained in the next statement (updated to be more clear):
"Every message SHOULD be signed using signature owned by the publishing user."
In the signing flow, step 3 creates the signature.

2. Construct signing bytes with: `type`, `timestamp`, `author` and `body`.
3. Sign with the user's cryptographic keys for the session.

- channel admin
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be under 4? Looks like there is some missing info.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed 👍

- `PIN` : To pin a post to the top of a channel feed or pin a comment to the top of a thread.
- `UNPIN` : To remove a `PIN` from a post feed or comment thread.
- `CHANGE_OWNERSHIP` : Change the `author` of a post or comment.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I saw FLAGGED mentioned as well, should it be listed here?

Copy link
Contributor Author

@jimstir jimstir Dec 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, FLAGGED is used by any user identity. I will update this to not confuse a FLAGGED event with a moderation event.

@Cofson
Copy link
Collaborator

Cofson commented Dec 22, 2025

Added some review points - also maybe to think about adding Security Considerations and Error Handling. After fixing the above even without those, if we all agree, it can go as a first RAW version.

@Cofson
Copy link
Collaborator

Cofson commented Jan 5, 2026

I see the changes - after the spellchecker workflow is fixed (not sure where it fails), I will approve this one @jimstir .

@jm-clius
Copy link
Contributor

jm-clius commented Jan 6, 2026

FYI, it probably doesn't make much sense for me to review this, so I'm trying to get clarity on who to add here: https://discord.com/channels/973324189794697286/1419640127025840219/1458062964752912397 :)

@jm-clius jm-clius requested review from danisharora099 and removed request for jm-clius January 8, 2026 16:12
@fbarbu15
Copy link

hi, @danisharora099 can you please have a look at this or recommend another reviewer ?
thanks

@danisharora099
Copy link
Contributor

danisharora099 commented Feb 4, 2026

Apologies for the delay here. The web implementation for OpChan was deemed deprecated, considering the macro deprecation and reprioritisation of browser platform, org-wide.
There are plans to have a Forum platform for Logos (OpChan) in the future, however, it would be implemented as a Logos Module, instead of a web-based application.
Specifications from this RFC could definitely be reused, but we'd have to update the implementation details from web to Logos Modules.
Implementation details for Waku Logos Messaging might also require changes. Example: we'll probably now use C-bindings, and design decisions around if the Logos Module would use LightPush instead of Relay still makes sense.

CC @fryorcraken who might have better visibility into how to move forward.

Copy link
Contributor

@fryorcraken fryorcraken left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it mostly Waku agnostic - apart from content topic usage - and clarify content toic usage.

“SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and
“OPTIONAL” in this document are to be interpreted as described in [2119](https://www.ietf.org/rfc/rfc2119.txt).

OpChan uses the [10/WAKU2](https://github.com/vacp2p/rfc-index/blob/main/waku/standards/core/10/waku2.md)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This spec can and hence should be Waku agnostic.


Message routing and
discovery are handled by [23/WAKU2-TOPICS](https://github.com/vacp2p/rfc-index/blob/main/waku/informational/23/topics.md).
Each content is assigned a `pubsub_topic` that clients MUST subscribe to discovery messages from the channel.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Make it mostly Waku agnostic.

Just have a small section "Waku as delivery" and specify how content topics are formed when Waku is used for transport.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, even content topic definition can be agnostic to Waku, and can be framed as "how to identify messages on the delivery provider".

Users own their post data, so data cannot be removed by a third party,
and forum boards will not rely on moderators remaining active.

OpChan is a web application hosted by some party through a web server.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The browser/web platform is irrelevant to the spec which should be agnostic to the platform.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants