Private M-of-N Multisig: Difference between revisions

From Local Area Network
Second check: fixes to facts, dates (UTC), glosses and attribution
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. The code is published by the GitHub account pramadanif. The README does not say whether it is an official Logos project.
'''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 ==
* It lets M of N shielded members (for example 2 of 3) approve a proposal without showing which members approved.
* 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.
* It keeps one nullifier per member and proposal, so a member cannot approve twice.
* One nullifier per member and proposal stops a member approving twice.
* Execution is public and permissionless, and the recipient and amount are fixed in the proposal.
* 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. Status prints the count and the nullifiers, never who approved.
* 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 on purpose, so approvals go through the CLI or SDK.
* 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 2026-09-08 after a testnet reset". The version in metadata.json is 0.1.0.
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.


The README says it was "Built for λPrize LP-0002".
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>. The README says it takes about 40 to 50 minutes or more and needs about 9 GB of free RAM for each approval.
# 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. The README says to start Basecamp with <code>QT_ENABLE_REGEXP_JIT=0</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, 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. The README says this is required before deploying.
* <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 README pins LEZ v0.2.4, Rust 1.94.0 and risc0 3.0.6.
* 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

  1. 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.
  2. Build the guests with ./scripts/build-guests.sh --docker.
  3. 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.
  4. For the public testnet, run the fund, deploy and verify scripts listed in the README.
  5. Use the CLI with cargo run -p pmsig-cli --bin pmsig -- --help.
  6. For Basecamp, run ./scripts/build-basecamp.sh, then use Install Local Package with app/private_multisig.lgx. The package is for darwin-arm64 only, and Basecamp should be started with QT_ENABLE_REGEXP_JIT=0.

Build it

  • ./scripts/build-guests.sh --docker builds the guests, a step required before deploying.
  • ./scripts/build-basecamp.sh builds 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

Page status: Stub. Stub · Outline · Usable · Guide · Star. Anyone can improve this page and change its status.