Skip to content

Solution: LP-0016 — Anonymous Forum with Threshold Moderation and Membership Revocation#53

Open
syafiqeil wants to merge 14 commits into
logos-co:masterfrom
syafiqeil:master
Open

Solution: LP-0016 — Anonymous Forum with Threshold Moderation and Membership Revocation#53
syafiqeil wants to merge 14 commits into
logos-co:masterfrom
syafiqeil:master

Conversation

@syafiqeil
Copy link
Copy Markdown

@syafiqeil syafiqeil commented May 15, 2026

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

  • LEZ Programmembership_registry via SPEL framework with per-instance forum_id
    PDA, supporting multiple independent forum instances from a single deployment
  • ZK Circuitforum_membership_proof proving inclusion, non-revocation, and tracing
    tag integrity without revealing the poster's identity
  • Moderation Librarylogos_moderation_sdk: forum-agnostic, operates on abstract
    byte identifiers, compiled as both WASM (browser) and C-ABI shared library (Basecamp native)
  • FFI Layerliblogos_moderation_sdk.so + cbindgen-generated C header enabling
    cross-language interop from Rust to C++
  • Basecamp Core Moduleanonymous_forum_core: C++ Qt plugin built with
    logos-module-builder, wraps Rust FFI as Q_INVOKABLE methods published via Logos IPC
  • Basecamp UI Moduleanonymous_forum_ui: QML 3-view interface (Register, Post,
    Moderate) built with mkLogosQmlModule, communicates with core via logos.callModule()
  • Two Forum Instances — K=2/N=2-of-3 and K=3/N=3-of-5, independently parameterised
  • Protocol Specdocs/protocol.md: formal unlinkability proofs, retroactive
    deanonymization analysis, N-of-M trust model, Basecamp integration architecture, and threat model
  • IDL — Generated via SPEL CLI, machine-readable interface for all 4 instructions

Build & Run

# Standalone (logos-anonymous-forum repo)
git clone https://github.com/syafiqeil/logos-anonymous-forum
cd logos-anonymous-forum
./demo.sh                    # Build + SDK tests + program verification

# Full E2E test (requires LEZ workspace)
# See README.md for instructions on running within the LEZ environment

# Basecamp standalone app (clone both module repos side-by-side)
cd anonymous_forum_ui
nix run --impure

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 15, 2026

⚠️ Warnings

Warnings (non-blocking):

  • ⚠️ Prize references a Logos mini-app; no module.json found.

ℹ️ Solution submission for LP-0016.
ℹ️ Checking repo: https://github.com/syafiqeil/logos-anonymous-forum


Automated check. See solution template and TERMS.

Comment thread solutions/LP-0016.md

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
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.

Copy link
Copy Markdown
Author

@syafiqeil syafiqeil May 15, 2026

Choose a reason for hiding this comment

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

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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

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 --impure

This 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

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

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

The metadata.json module configs are in their respective repos:

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.

2 participants