Private M-of-N Multisig: Difference between revisions
Eleutherious (talk | contribs) Second check: fixes to facts, dates (UTC), glosses and attribution |
Eleutherious (talk | contribs) Plainer prose: fewer quotes, project claims attributed, glosses folded in |
||
| Line 10: | Line 10: | ||
| verified_against = README and commit of 9 September 2026 | | verified_against = README and commit of 9 September 2026 | ||
}} | }} | ||
'''Private M-of-N Multisig''' is a multisig wallet in which shielded (private) members approve without revealing who voted. It runs on the Logos Execution Zone (LEZ), the Logos layer that runs on-chain programs, with a Basecamp app | '''Private M-of-N Multisig''' is a multisig wallet by the GitHub account pramadanif in which shielded (private) members approve without revealing who voted. It runs on the Logos Execution Zone (LEZ), the Logos layer that runs on-chain programs, with a Basecamp app. The README does not say whether it is an official Logos project. | ||
== What it does == | == What it does == | ||
* | * M of N shielded members, for example 2 of 3, approve a proposal without showing which members approved. | ||
* The README says on-chain state records a threshold and nullifiers, never member identities. A nullifier is a one-time tag that marks an approval as used without saying who gave it. | * The README says on-chain state records a threshold and nullifiers, never member identities. A nullifier is a one-time tag that marks an approval as used without saying who gave it. | ||
* Approvals use privacy-preserving execution, in which the approval is proved privately and the chain checks the proof. | * Approvals use privacy-preserving execution, in which the approval is proved privately and the chain checks the proof. | ||
* | * One nullifier per member and proposal stops a member approving twice. | ||
* Execution is public and permissionless, | * Execution is public and permissionless, with the recipient and amount fixed in the proposal. | ||
* A CLI named pmsig covers create, propose, approve, execute and status | * A CLI named pmsig covers create, propose, approve, execute and status, and status prints the count and the nullifiers, never who approved. | ||
* A Basecamp app reads the deployed multisig. The README says its Approve page does not submit approvals | * A Basecamp app reads the deployed multisig. The README says its Approve page deliberately does not submit approvals, so approvals go through the CLI or SDK. | ||
Stage: Prototype. The README, last changed on 9 September 2026, marks the public testnet lifecycle as "Done" in its status table, with a full 2-of-3 run on the LEZ testnet. It says the multisig was | Stage: Prototype. The README, last changed on 9 September 2026, marks the public testnet lifecycle as "Done" in its status table, with a full 2-of-3 run on the LEZ testnet. It says the multisig was redeployed on 8 September 2026 after a testnet reset. The version in metadata.json is 0.1.0. | ||
It was built for λPrize LP-0002. | |||
== Use it == | == Use it == | ||
# Install the toolchain: Rust 1.94 or later and risc0 r0vm, as listed in docs/VERSIONS.md. On Linux, also install pkg-config and libpcsclite-dev. | # Install the toolchain: Rust 1.94 or later and risc0 r0vm, as listed in docs/VERSIONS.md. On Linux, also install pkg-config and libpcsclite-dev. | ||
# Build the guests with <code>./scripts/build-guests.sh --docker</code>. | # Build the guests with <code>./scripts/build-guests.sh --docker</code>. | ||
# Run the local demo with <code>./demo.sh</code>. | # Run the local demo with <code>./demo.sh</code>. It takes about 40 to 50 minutes or more and needs about 9 GB of free RAM for each approval. | ||
# For the public testnet, run the fund, deploy and verify scripts listed in the README. | # For the public testnet, run the fund, deploy and verify scripts listed in the README. | ||
# Use the CLI with <code>cargo run -p pmsig-cli --bin pmsig -- --help</code>. | # Use the CLI with <code>cargo run -p pmsig-cli --bin pmsig -- --help</code>. | ||
# For Basecamp, run <code>./scripts/build-basecamp.sh</code>, then use Install Local Package with <code>app/private_multisig.lgx</code>. The package is for darwin-arm64 only | # For Basecamp, run <code>./scripts/build-basecamp.sh</code>, then use Install Local Package with <code>app/private_multisig.lgx</code>. The package is for darwin-arm64 only, and Basecamp should be started with <code>QT_ENABLE_REGEXP_JIT=0</code>. | ||
== Build it == | == Build it == | ||
* <code>./scripts/build-guests.sh --docker</code> builds the guests | * <code>./scripts/build-guests.sh --docker</code> builds the guests, a step required before deploying. | ||
* <code>./scripts/build-basecamp.sh</code> builds the Basecamp package. | * <code>./scripts/build-basecamp.sh</code> builds the Basecamp package. | ||
* The | * The pinned versions are LEZ v0.2.4, Rust 1.94.0 and risc0 3.0.6. | ||
== Releases == | == Releases == | ||
Latest revision as of 23:27, 4 November 2026
Private M-of-N Multisig
What it does: A private M-of-N multisig for the Logos Execution Zone where shielded members approve without revealing who voted
Stage: Prototype
Licence: MIT OR Apache-2.0
Verified on 4 November 2026 against README and commit of 9 September 2026.
Private M-of-N Multisig is a multisig wallet by the GitHub account pramadanif in which shielded (private) members approve without revealing who voted. It runs on the Logos Execution Zone (LEZ), the Logos layer that runs on-chain programs, with a Basecamp app. The README does not say whether it is an official Logos project.
What it does
- M of N shielded members, for example 2 of 3, approve a proposal without showing which members approved.
- The README says on-chain state records a threshold and nullifiers, never member identities. A nullifier is a one-time tag that marks an approval as used without saying who gave it.
- Approvals use privacy-preserving execution, in which the approval is proved privately and the chain checks the proof.
- One nullifier per member and proposal stops a member approving twice.
- Execution is public and permissionless, with the recipient and amount fixed in the proposal.
- A CLI named pmsig covers create, propose, approve, execute and status, and status prints the count and the nullifiers, never who approved.
- A Basecamp app reads the deployed multisig. The README says its Approve page deliberately does not submit approvals, so approvals go through the CLI or SDK.
Stage: Prototype. The README, last changed on 9 September 2026, marks the public testnet lifecycle as "Done" in its status table, with a full 2-of-3 run on the LEZ testnet. It says the multisig was redeployed on 8 September 2026 after a testnet reset. The version in metadata.json is 0.1.0.
It was built for λPrize LP-0002.
Use it
- Install the toolchain: Rust 1.94 or later and risc0 r0vm, as listed in docs/VERSIONS.md. On Linux, also install pkg-config and libpcsclite-dev.
- Build the guests with
./scripts/build-guests.sh --docker. - Run the local demo with
./demo.sh. It takes about 40 to 50 minutes or more and needs about 9 GB of free RAM for each approval. - For the public testnet, run the fund, deploy and verify scripts listed in the README.
- Use the CLI with
cargo run -p pmsig-cli --bin pmsig -- --help. - For Basecamp, run
./scripts/build-basecamp.sh, then use Install Local Package withapp/private_multisig.lgx. The package is for darwin-arm64 only, and Basecamp should be started withQT_ENABLE_REGEXP_JIT=0.
Build it
./scripts/build-guests.sh --dockerbuilds the guests, a step required before deploying../scripts/build-basecamp.shbuilds the Basecamp package.- The pinned versions are LEZ v0.2.4, Rust 1.94.0 and risc0 3.0.6.
Releases
- The repository has no tags and GitHub lists no releases.
- Version in app/metadata.json: 0.1.0 (module name private_multisig).
See also
Sources
- lp-0002-private-multisig README, GitHub, last commit 9 September 2026 (UTC)
- app/metadata.json, GitHub
- docs/VERSIONS.md, GitHub
- releases, GitHub
Page status: Stub. Stub · Outline · Usable · Guide · Star. Anyone can improve this page and change its status.