Solution: LP-0016 — Anonymous Forum with Threshold Moderation and Membership Revocation#53
Solution: LP-0016 — Anonymous Forum with Threshold Moderation and Membership Revocation#53syafiqeil wants to merge 14 commits into
Conversation
Updated video demonstration links and added a note about upcoming content.
|
|
|
||
| A privacy-preserving forum protocol built on the Logos Execution Zone (LEZ) where members post anonymously via ZK proofs, moderators issue strikes through N-of-M threshold consensus, and K accumulated strikes cryptographically reconstruct the offender's secret key — enabling on-chain slashing and retroactive deanonymization. The deliverable includes a forum-agnostic moderation library (standalone SDK) and a working Logos Basecamp app demonstrating the full lifecycle. | ||
|
|
||
| ## Repository |
There was a problem hiding this comment.
Implementation PR: logos-blockchain/logos-execution-zone#465
This PR adds to the LEZ repo. Lamda prize submissions are expected to use the LEZ, not necessarily modify it.
There was a problem hiding this comment.
Thanks for the feedback @jzaki! You're right. The initial submission incorrectly added code directly to the LEZ repo. I initially structured it within the LEZ workspace assuming that was the expected approach for SPEL-base programs.
I've since decoupled the project into a standalone repository (logos-anonymous-forum: https://github.com/syafiqeil/logos-anonymous-forum), which references LEZ as a git dependency rather than modifying it. The ## Repository section has been updated accordingly.
The standalone repo contains:
- On-chain program (programs/membership_registry/) — SPEL framework guest program
- Off-chain SDK (logos_moderation_sdk/) — forum-agnostic moderation library with FFI
- ZK circuit (program_methods/guest/) — membership proof
- demo.sh, membership_registry.idl.json, and CI workflow
The original LEZ PR (#465) is kept for reference but is no longer the primary implementation link.
There was a problem hiding this comment.
Can you explain if this is/isn't a logos module? How can a user use this within Logos Basecamp, and via what qt ui plugin/module?
There was a problem hiding this comment.
Yes, this is a Logos module, split into two Basecamp modules following the core/UI architecture:
- Core module (anonymous_forum_core (https://github.com/syafiqeil/anonymous_forum_core)): A C++ Qt plugin built with logos-module-builder. It wraps the Rust SDK (liblogos_moderation_sdk.so) via C-ABI FFI and exposes 12 Q_INVOKABLE methods (member, moderator, and aggregator operations) over Logos IPC (Qt RemoteObjects).
- UI module (anonymous_forum_ui (https://github.com/syafiqeil/anonymous_forum_ui)): A QML interface built with mkLogosQmlModule providing three views: Register, Post, and Moderate.
To run within Basecamp:
cd anonymous_forum_ui
nix run --impureThis launches a standalone Basecamp app with both modules loaded, demonstrating the full moderation lifecycle.
Video demo of the Basecamp integration: https://youtu.be/_9RvF-oS7jM
There was a problem hiding this comment.
The metadata.json module configs are in their respective repos:
- anonymous_forum_core/metadata.json (https://github.com/syafiqeil/anonymous_forum_core/blob/main/metadata.json) (type: core)
- anonymous_forum_ui/metadata.json (https://github.com/syafiqeil/anonymous_forum_ui/blob/main/metadata.json) (type: ui_qml).
There was a problem hiding this comment.
@syafiqeil Does the video have audio? I can't here anything. Please msg me on the discord, might be easier to cover some points on a call
There was a problem hiding this comment.
I appreciate the offer @jzaki. But as a non native english speaker (indonesian), I'm much more effective communicating in writing than speaking. I hope that's okay.
Apologies about the audio, if narration text is not enough, I'll check and fix that.
If there are specific points that need clarification or anything misaligned with lp-0016 requirements, I'm happy to address them in detail here. Please let me know what needs attention and I'll respond thoroughly.
Submission: LP-0016 — Anonymous Forum with Threshold Moderation and Membership Revocation
Submitted by: Syafiq (Evice Labs)
Main Implementation (On-Chain + SDK): https://github.com/syafiqeil/logos-anonymous-forum
Implementation PR: logos-blockchain/logos-execution-zone#465
Basecamp Core Module: https://github.com/syafiqeil/anonymous_forum_core
Basecamp UI Module: https://github.com/syafiqeil/anonymous_forum_ui
Video Demo (SDK + On-Chain): https://youtu.be/Bj0GwITfYwM
Video Demo (Basecamp Integration): https://youtu.be/_9RvF-oS7jM
Summary
A complete implementation of the LP-0016 protocol built on the Logos Execution Zone (LEZ).
Members post anonymously via ZK proofs, moderators issue strikes through N-of-M threshold
consensus, and K accumulated strikes cryptographically reconstruct the member's Nullifier
Secret Key — enabling on-chain slashing and retroactive deanonymization of all prior posts.
The system spans three repositories: on-chain programs + Rust SDK
(logos-anonymous-forum),
a native Logos Basecamp core module (C++ Qt plugin via FFI), and a QML UI module — all
integrated end-to-end through Logos IPC.
Deliverables
membership_registryvia SPEL framework with per-instanceforum_idPDA, supporting multiple independent forum instances from a single deployment
forum_membership_proofproving inclusion, non-revocation, and tracingtag integrity without revealing the poster's identity
logos_moderation_sdk: forum-agnostic, operates on abstractbyte identifiers, compiled as both WASM (browser) and C-ABI shared library (Basecamp native)
liblogos_moderation_sdk.so+cbindgen-generated C header enablingcross-language interop from Rust to C++
anonymous_forum_core: C++ Qt plugin built withlogos-module-builder, wraps Rust FFI asQ_INVOKABLEmethods published via Logos IPCanonymous_forum_ui: QML 3-view interface (Register, Post,Moderate) built with
mkLogosQmlModule, communicates with core vialogos.callModule()docs/protocol.md: formal unlinkability proofs, retroactivedeanonymization analysis, N-of-M trust model, Basecamp integration architecture, and threat model
Build & Run