Private M-of-N Multisig: Difference between revisions

From Local Area Network
New tool page, source-checked against the project README
 
Plainer prose: fewer quotes, project claims attributed, glosses folded in
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
| build      = https://github.com/pramadanif/lp-0002-private-multisig#quickstart
| build      = https://github.com/pramadanif/lp-0002-private-multisig#quickstart
| verified_on = 4 November 2026
| verified_on = 4 November 2026
| verified_against = README and commit of 10 September 2026
| verified_against = README and commit of 9 September 2026
}}
}}
'''Private M-of-N Multisig''' is a multisig wallet in which shielded members approve without revealing who voted, and it runs on the Logos Execution Zone (LEZ) 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 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.
* On-chain state records a threshold and nullifiers, never member identities.
* 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, never public re-execution.
* 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 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 status table marks the public testnet lifecycle as "Done", with a full 2-of-3 run on the LEZ testnet. 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 ==
* Build the guests with <code>./scripts/build-guests.sh --docker</code>. The README says this is required before deploying.
* <code>./scripts/build-guests.sh --docker</code> builds the guests, a step required before deploying.
* Build the Basecamp package with <code>./scripts/build-basecamp.sh</code>.
* <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 ==
Line 49: Line 49:


== Sources ==
== Sources ==
* [https://github.com/pramadanif/lp-0002-private-multisig lp-0002-private-multisig README], GitHub, last commit 10 September 2026
* [https://github.com/pramadanif/lp-0002-private-multisig lp-0002-private-multisig README], GitHub, last commit 9 September 2026 (UTC)
* [https://github.com/pramadanif/lp-0002-private-multisig/blob/main/app/metadata.json app/metadata.json], GitHub
* [https://github.com/pramadanif/lp-0002-private-multisig/blob/main/app/metadata.json app/metadata.json], GitHub
* [https://github.com/pramadanif/lp-0002-private-multisig/blob/main/docs/VERSIONS.md docs/VERSIONS.md], GitHub
* [https://github.com/pramadanif/lp-0002-private-multisig/releases releases], GitHub


{{Page status|Stub}}
{{Page status|Stub}}

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.