mirror of
https://github.com/logos-co/lambda-prize.git
synced 2026-08-30 19:11:06 +00:00
Introduce programme-wide evaluation policies to raise the bar for submissions: - Max 3 submissions per prize per builder, one submission/review per week - Pass/fail feedback only; detailed guidance via Discord - Demos must be narrated video walkthroughs covering architecture, decisions, and full end-to-end flow — silent screencasts rejected Policies are defined in README (Evaluation Policies section) and replicated in every non-closed LP's Evaluation Process for self-contained readability. Demo specifics are tailored per prize in each LP's Submission Requirements. Also renames "Logos mini-app" → "Logos Basecamp app" throughout all prizes and the template. Made-with: Cursor
134 lines
9.2 KiB
Markdown
134 lines
9.2 KiB
Markdown
# LP-0017: Whistleblower — censorship-resistant document upload and indexing Basecamp app [OPEN]
|
|
|
|
**`Status: Open`**
|
|
**`Logos Circle: N/A`**
|
|
|
|
## Overview
|
|
|
|
This prize funds **Whistleblower**, a Logos Basecamp app that lets anyone upload a document and make it permanently discoverable — without relying on any centralised server, without requiring the publisher to hold tokens, and without a single point of censorship.
|
|
|
|
A user selects a file, adds optional metadata, and submits. The app uploads the file to Logos Storage, broadcasts the resulting content identifier (CID) and metadata over Logos Delivery so the document is immediately discoverable, and optionally anchors the CID on-chain for long-term indexing. Long-term anchoring can also happen independently: a permissionless batch tool lets any altruistic actor or original uploader gather broadcasted CIDs and commit them to a LEZ program or the consensus layer in a single transaction — no coordination with the original publisher required.
|
|
|
|
The submission must include a standalone **document-indexing module** extracted from the app logic, making the upload → broadcast → anchor pipeline reusable by other Logos applications.
|
|
|
|
## Motivation
|
|
|
|
Whistleblowers, journalists, and activists need document publication that survives takedowns. Existing tools either require a trusted host, force the publisher to pay on-chain fees up front, or provide no long-term guarantee of discoverability.
|
|
|
|
The Logos stack enables a cleaner model:
|
|
|
|
- **Logos Storage** stores the bytes durably and without identifying the uploader.
|
|
- **Logos Delivery** propagates the CID and metadata peer-to-peer in real time, so the document is immediately findable.
|
|
- **Batch anchoring** decouples publication from on-chain registration: the publisher may anchor their own documents at any time, or simply upload and broadcast — leaving any concerned third party (an NGO, a journalist collective, an automated guardian) to later gather accumulated CIDs and commit them in a single batch transaction, with no coordination required.
|
|
|
|
No sample app in the Logos ecosystem yet demonstrates this full pipeline end-to-end. Whistleblower fills that gap and, as a side-effect, produces a reusable module for any app that needs censorship-resistant content publication.
|
|
|
|
## Success Criteria
|
|
|
|
### Functionality
|
|
|
|
- [ ] **Upload**: the app uploads a user-selected file to Logos Storage and obtains a CID.
|
|
- [ ] **Broadcast**: the app publishes a metadata envelope to a well-defined Logos Delivery topic immediately after upload. The envelope must include at minimum: `cid`, `title`, `description`, `content_type`, `size_bytes`, `timestamp`, and an optional `tags` list.
|
|
- [ ] **On-chain anchoring**: the app offers an optional "anchor on-chain" action (distinct from the basic upload flow) that the publisher may invoke at any time after upload.
|
|
- [ ] **Batch anchor tool**: a standalone CLI tool that any party — the original uploader or an altruistic third party — can run to gather broadcasted CIDs and commit them on-chain in bulk. The tool must:
|
|
- subscribe to the Logos Delivery topic and accumulate `(CID, metadata_hash)` tuples,
|
|
- submit them to the on-chain registry in a single batch transaction,
|
|
- be permissionless — no coordination with the original publisher required,
|
|
- be idempotent — re-submitting an already-registered CID does not fail.
|
|
- [ ] **On-chain registry**: the submitter chooses the anchoring approach — either (a) a LEZ program or (b) a direct submission to the consensus layer via the zone SDK — and provides a brief justification for the choice. Note that decentralised sequencers for zones are not yet shipped: the zone SDK approach requires a single designated actor to perform consensus inscription, which affects the trust model. The registry must:
|
|
- store `(CID, metadata_hash, anchor_timestamp)` per document,
|
|
- be queryable by CID,
|
|
- accept batch submissions of at least 10 CIDs per transaction.
|
|
- [ ] **Document-indexing module**: extract the upload → broadcast → anchor logic into a self-contained module with a documented API, reusable by other Logos apps without depending on the Whistleblower Basecamp app itself.
|
|
|
|
### Usability
|
|
|
|
- [ ] Provide a Logos Basecamp app GUI with local build instructions, downloadable assets, and loadable in Logos app (Basecamp).
|
|
- [ ] Provide the document-indexing module as a library/SDK with a README covering its API and integration steps.
|
|
- [ ] Provide an IDL for the LEZ program (if the LEZ program approach is chosen), using the [SPEL framework](https://github.com/logos-co/spel).
|
|
|
|
### Reliability
|
|
|
|
- [ ] Upload retries on transient Logos Storage failures with exponential back-off and surfaces a clear error after exhausting retries.
|
|
- [ ] Delivery broadcast is deduplicated: re-broadcasting the same CID does not produce duplicate entries visible to subscribers.
|
|
- [ ] The batch anchor tool resumes from the last successfully anchored batch after a network interruption, without re-processing already-registered CIDs.
|
|
|
|
### Performance
|
|
|
|
- [ ] Document and measure the compute unit (CU) cost of a single-CID anchor and a 50-CID batch anchor on LEZ devnet/testnet.
|
|
|
|
### Supportability
|
|
|
|
- [ ] The on-chain registry is deployed and tested on LEZ devnet/testnet.
|
|
- [ ] End-to-end integration tests covering upload → broadcast → batch anchor run against a LEZ sequencer in standalone mode and are included in CI.
|
|
- [ ] CI is green on the default branch.
|
|
- [ ] A README covers: build steps, deployment addresses, running the Basecamp app, running the batch anchor tool, and querying the on-chain registry.
|
|
- [ ] A reproducible end-to-end demo script is provided and works against a real local sequencer with `RISC0_DEV_MODE=0`.
|
|
- [ ] A recorded video demo of the end-to-end flow is included in the submission; the recording must show terminal output (including proof generation) to confirm `RISC0_DEV_MODE=0` was active.
|
|
|
|
## Scope
|
|
|
|
### In Scope
|
|
|
|
- Whistleblower Logos Basecamp app.
|
|
- Document-indexing module extracted from the app, with documented API.
|
|
- On-chain CID registry: LEZ program or zone SDK (submitter chooses and justifies).
|
|
- Permissionless batch anchor CLI tool.
|
|
- Integration tests and CI.
|
|
|
|
### Out of Scope
|
|
|
|
- Content moderation, access control, or blocklists — the registry and delivery topic are permissionless.
|
|
- Full-text search or semantic indexing of document content.
|
|
- End-user authentication or identity binding.
|
|
- Cross-chain anchoring.
|
|
- A hosted relay or backend service — everything runs peer-to-peer on the Logos stack.
|
|
|
|
## Prize Structure
|
|
|
|
- **Total Prize:** $400
|
|
- **Effort:** Medium
|
|
|
|
## Eligibility
|
|
|
|
Open to any individual or team. Submissions must be original work. Teams must hold the rights to all submitted code and agree to license it under MIT or Apache-2.0.
|
|
|
|
## Submission Requirements
|
|
|
|
- Public repository (MIT and Apache-2.0) containing:
|
|
- the Whistleblower Basecamp app,
|
|
- the document-indexing module with API documentation,
|
|
- the on-chain registry program or zone SDK integration,
|
|
- the batch anchor CLI tool,
|
|
- integration tests runnable in CI.
|
|
- Deployed registry on LEZ devnet/testnet with documented program address.
|
|
- A narrated video walkthrough in which the builder explains what they built and why, walks through the architecture and key implementation decisions, and demonstrates (see [demo requirements](../README.md#evaluation-policies)):
|
|
- a file uploaded and immediately findable via the Logos Delivery topic,
|
|
- the batch anchor tool picking up the broadcast CID and anchoring it on-chain,
|
|
- the on-chain registry confirming the CID registration.
|
|
- Compute unit benchmarks for single and 50-CID batch anchor calls.
|
|
- GitHub issues filed for any problems encountered with Logos technology.
|
|
|
|
## Evaluation Process
|
|
|
|
By default, submissions are evaluated first-come-first-served against the success criteria. The first submission that meets **all** criteria wins.
|
|
|
|
Evaluators will independently clone the repository and run the demo script from a clean environment; the script must succeed without modification. Evaluators may also ask technical follow-up questions to verify authorship and understanding of the implementation.
|
|
|
|
The following policies apply to all prizes (see [evaluation policies](../README.md#evaluation-policies)):
|
|
|
|
- **Submissions:** each builder (or team) is allowed a maximum of **3 submissions** per prize, with at most **one submission/review per week**.
|
|
- **Feedback:** initial evaluation feedback is limited to a pass/fail indication against the success criteria.
|
|
|
|
## Resources
|
|
|
|
- [logos-co/ecosystem#88](https://github.com/logos-co/ecosystem/issues/88) — Whistleblower sample app scope issue
|
|
- [LEZ GitHub repository](https://github.com/logos-blockchain/logos-execution-zone)
|
|
- [SPEL framework](https://github.com/logos-co/spel)
|
|
- [LP-0008](./LP-0008.md) — Autonomous AI Module (reference for Logos Core module architecture and storage/delivery patterns)
|
|
- [LP-0012](./LP-0012.md) — Event/Log mechanism (relevant for on-chain event emission from the registry program)
|
|
|
|
## Potential for Subsequent λPrizes
|
|
|
|
This prize targets the current LEZ testnet. Should a future testnet version introduce breaking changes, a subsequent λPrize may be opened to cover the necessary adaptation and redeployment. A follow-up prize may extend the app with search and discoverability features built on top of the document-indexing module.
|