Solution: LP-0017 — Whistleblower#61
Open
edenbd1 wants to merge 1 commit into
Open
Conversation
✅ Validation passedA reviewer will assess against the prize criteria. Automated check. See solution template and TERMS. |
2c355c0 to
b106e19
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implementation of LP-0017: censorship-resistant document upload and indexing on the Logos stack.
solutions/LP-0017.md✅ Deployed live on the public Logos Execution Zone testnet
https://testnet.lez.logos.cohttps://explorer.testnet.lez.logos.coA9ewyji3THdFGqLAtAd9GkoPX9B9R6yb5LZCfWLxbAeH— holds 51 anchored CIDs in 6583 bytes (Borsh-encoded, exactly4 + 51 × 129)b904baea7e1adc245a6cd0802fb3c016eaf9bbcaec90989a9a51c75ac60642176 public on-chain transactions — each independently verifiable via the public sequencer's
getTransactionJSON-RPC or the explorer link:wallet auth-transfer init(signer account)dd55dd1e…7b97f0wallet pinata claim(faucet → 150 tokens)40b7966d…7476b4wallet deploy-program9e499b12…48c8aspel init-registryae57ff1b…131d9spel index_batchn=1 (real Logos Storage CID)1257c61c…ef55bspel index_batchn=50 (50 CIDs anchored atomically — 5× the spec's ≥10 requirement)2af12289…9d531Full deployment record (with the exact reproduction commands) in
docs/DEPLOYMENT.md.Summary
A Basecamp Qt6/QML plugin uploads a file to Logos Storage, broadcasts the resulting CID over Logos Delivery, and optionally anchors it on-chain via a SPEL LEZ registry program. A permissionless batch-anchor CLI subscribes to the Delivery topic, deduplicates CIDs against the on-chain registry state, and commits batches of up to 50 CIDs in a single transaction.
The whole pipeline runs without mock layers between the application and Logos infrastructure:
batch-anchorrefuses to start without a reachable nwaku endpoint, Codex uploads go through the real REST API, and the e2e CI workflow asserts theRISC0_DEV_MODE=0banner is present in stdout before passing.Highlights vs the spec
https://testnet.lez.logos.co. Anyone cangetTransactionthem or open the explorer link.batch-anchorsubscribes to a live nwaku node via the REST relay + store-protocol catch-up. No mock-delivery shortcuts at any layer.crates/indexing/is a standalone trait crate with zerowhistleblower::imports. Any Logos application can drop it in as a single dep.RISC0_DEV_MODE=0—.github/workflows/e2e.ymlspawns nwaku, Codex storage, and a sequencer, deploys the guest with real proofs, and runs a 50-CID round-trip. Asserts theRISC0_DEV_MODE=0banner is in stdout before passing.scripts/demo.shexportsRISC0_DEV_MODE=0as its first non-comment line, runs in under 30 seconds from a clean clone against the public testnet, requires onlycurl,python3,jq, andcargo.init_registry3.30 ms, n=1 4.12 ms, n=50 36.27 ms (0.73 ms/CID amortised — 5.6× win over serial). Seedocs/BENCHMARKS.md..lgxplugin published — v0.1.0-rc1 release, 489 KB, built against the reallogos-cpp-sdk(not stubbed).Per-criterion compliance map
See
docs/SPEC_COMPLIANCE.mdfor the row-by-row mapping. Headline: Functionality 6/6, Usability 3/3, Reliability 3/3, Performance 1/1, Supportability 6/6, Submission requirements 9/9.Architecture
LEZ registry as a SPEL program (justified vs zone-SDK in ADR-004): single PDA holding a Borsh
Registry { entries: BTreeMap<String, CidRecord> }.index_batchaccepts three parallel vectors (cids, metadata_hashes, anchor_timestamps), in-guest dedup viacontains_key,MAX_BATCH = 50. Storage layout write-up: ADR-001.Envelope schema locked at
v=1withcid,metadata_hash: "v1:<hex>",timestamp, plus optional discovery metadata. Hash is over the canonical (fixed key order) discovery-metadata JSON, so any two implementations produce byte-identical hashes for identical inputs. Decision: ADR-002.CI strategy: fast tier on every push (<4 min), e2e tier on schedule + dispatch with the full sequencer + nwaku + storage stack and the real-proofs assertion. Decision: ADR-003.