Solution: LP-0002 - Private M-of-N Multisig (v0.2.4) - #133
Conversation
Addresses the review of logos-co#97: the demo entrypoint now really runs at RISC0_DEV_MODE=0 (verified green from a fresh clone with real STARKs), CI is green on the default branch, and the whole solution is ported to LEZ v0.2.4 with a fresh chain-verified ledger plus committed raw JSON-RPC captures so the evidence survives the next testnet wipe.
✅ Validation passedA reviewer will assess against the prize criteria. Automated check. See solution template and TERMS. |
…ble repo URL, licence The bot reported 'Checking repo: logos-co/lambda-prize', i.e. it never extracted our repository link, so every 'missing in linked repo' error cascaded from that: the Repo line was inline code rather than a URL. Also renamed two headings to the template's exact wording (## Repository, ## Success Criteria Checklist) and added the licence (MIT, inherited from the upstream LEZ fork) plus explicit pointers to demo.sh, the SPEL IDL and basecamp/module.json.
The validator pipes the solution file into grep -qF per required section. grep -q exits at the first match and closes the pipe, so on a large file the feeding echo dies with SIGPIPE and the check misreads as 'section missing' -- visible in the job log as 'line 158: echo: write error: Broken pipe', and it hit exactly the three earliest sections (Summary/Repository/Approach at lines 37/80/141) while the later ones passed. The 50 KB file was also simply too long for a submission entry; passing submissions are 18-27 KB. This keeps Summary, Repository, a condensed Approach (with why-Logos and the alternatives//what-failed narrative), the success-criteria checklist, the FURPS assessment and Terms, and points at docs/LP-0002-solution.md in the linked repo for the full technical write-up. Verified against the validator's exact checks locally before pushing.
|
Hi @jeefxM ! I really like your demo video and submission overall looks not bad. However there are some things I believe need to be addressed or clarified:
Looking forward to your re-submission! |
|
Thanks for the review, and you are right on all three points. Resubmitted with the release path fixed, tested in-process and on-chain, and re-proven on the live testnet. 1. 2. Tests. Seven in-process state tests in 3. Solution doc. The checklist item now states what is enforced and where; the "known limitation" block is replaced by the fixed-in-this-rev description with the test list; the error-string list includes the new release-gate rejections. Because the guest changed, the program id changed; the Supporting Materials are a fresh live 2-of-3 run on the new program id ( |
|
Reopening with the resubmission, per the review above. This supersedes my comment from yesterday: two things happened after it. 1. The testnet was reset (2026-09-08, ~13:32 UTC), which orphaned yesterday's ledger. The whole 2-of-3 flow was re-run on the new chain generation and re-captured; every hash in the updated 2. A second audit pass on the release path found one more gap, now closed. What the reviewed points look like now, on commit
Program id |
|
GitHub would not reopen this PR (HTTP 422 on both the web and REST paths, even with the branch restored to the closed head), so the resubmission described above is open as #143 — same submission continued, this branch left as the reviewed record. |
LP-0002 — Private M-of-N Multisig (third submission, ported to LEZ v0.2.4)
Thanks for the review on #97. Each point is addressed below, with the artifact that backs it.
1. "
demoscript is not actually doingRISC0_DEV_MODE=0since it is a hardcoded value in the internal script"Correct.
scripts/lp0002-demo.shdidexport RISC0_DEV_MODE=1, which clobbered the value the rootdemo.shexported. The inner script now honours an inherited value,./demo.shis the documented entrypoint everywhere (the docs previously pointed at the inner script — that was the same defect in prose), and it defaults to0.Verified from a fresh clone on a clean host with real STARKs:
DEMO_EXIT=0in 2 h 01 m, two genuine anonymous approvals with ~261 KB succinct receipts. The verbatim trace — including the boot line reading(RISC0_DEV_MODE=0)— is committed atevidence/demo-realproof-v024.txt.2. "CI on default branch must be green"
It is: run 33169435466 —
ci-image,msig-tests(13 tests + runner build) andmsig-e2e-devmode(the full 2-of-3 against a standalone sequencer) all green onmain. The fork ships only the LP-0002 workflow plus the ci-image machinery it depends on, so upstream suites this work does not touch cannot red the branch.3. "main part - there are not transactions that I could verify"
The testnet was wiped and redeployed between submission and review (v0.2.0-rc5 → v0.2.4), which retroactively orphaned every hash — the submission was unverifiable through no action of yours. Fixed twice over:
4tvD5XPFc4ofgN3YV4ymZ1nWqn3iUwB9tucesYzBKJB9, deploy tx047668a5…, two anonymous real-STARK approvalsf86ffd5d…/2ae72df7…with distinct proposal-bound nullifiers, executeded1cec1…, treasury 100 → 0, recipient 0 → 100,approval_count == 2.evidence/, and the entire flow regenerates on the current chain with one script (seeevidence/README.md).Also worth your attention
Executeis not authorization-gated on this rev, and I am disclosing it rather than letting you find it. The guest readsthresholdfrom the caller's instruction and only assertscount >= threshold; it does not bind the proposal/treasury/recipient accounts to one another. SoExecute { threshold: 0 }can release a msig treasury with no approvals. The properties this prize targets — in-circuit membership, proposal-bound nullifiers, double-vote rejection, the live-account binding from review item #6 — are unaffected; the gap is in the release path. The fix is mechanical but changes the guest image id and would invalidate the on-chain evidence above, so it is the immediate follow-up rather than a silent patch here. Details in Security assumptions.The round-1 items remain closed and re-verified on v0.2.4: CU cost is measured (
evidence/measure-v024.txt), partial-approval restart-resume is demonstrated green, the sequencer e2e is in CI, the README carries the full CLI + Basecamp walkthrough, the Basecamp module is hosted as a signed downloadable (with its provenance stated — it is the first-round artifact and has not been rebuilt for v0.2.4), and the approval binding is an in-circuit live-account proof.Links
RISC0_DEV_MODE=0): https://www.youtube.com/watch?v=CXzqWLvBY0A — recorded for the first submission; the flow, CLI surface and assertions it shows are unchanged. The v0.2.4 equivalent in text form isevidence/demo-realproof-v024.txt..lgx): https://github.com/jeefxM/logos-lp0002-msig-module/releases/tag/v0.1.0 — first-round artifact, provenance stated in the docs (not rebuilt for v0.2.4).evidence/measure-v024.txtdocs/LP-0002-solution.md