
dragonfly-multisig
A zk multisig where the signer's address is hidden in the smart contract
About
A zero-knowledge multi-signature wallet that preserves owner privacy while maintaining the security guarantees of traditional multisig wallets. The wallet uses zk-SNARKs (Groth16) to prove ownership without revealing the actual owners' addresses. This implementation combines: - Zero-knowledge proofs for owner privacy - Multi-signature functionality for enhanced security - On-chain transaction management - Replay attack prevention through attestations - **Privacy**: Owner addresses are never revealed on-chain - **Security**: Requires M-of-N signatures to execute transactions - **Flexibility**: Supports arbitrary ETH transfers and contract interactions - **Replay Protection**: Uses unique attestations for each signature
How it's made
## Overview This implementation combines: - Zero-knowledge proofs for owner privacy - Multi-signature functionality for enhanced security - On-chain transaction management - Replay attack prevention through attestations ### Key Features - **Privacy**: Owner addresses are never revealed on-chain - **Security**: Requires M-of-N signatures to execute transactions - **Flexibility**: Supports arbitrary ETH transfers and contract interactions - **Replay Protection**: Uses unique attestations for each signature ## Technical Architecture ### Smart Contracts 1. **MultiSigWallet.sol** - Manages transaction lifecycle - Stores hashed owner identities - Verifies zk-proofs for ownership - Handles transaction execution 2. **Groth16Verifier.sol** - Verifies zero-knowledge proofs - Integrated with the main wallet contract ### Circuits The zero-knowledge circuit (`multisig.circom`) proves: - Ownership: The prover knows a private key corresponding to one of the registered owner hashes - Message Attestation: The prover has signed the transaction data