This project is an in-depth exploration of sugin zk technologies linke to a zkSafe modules. We create a Poseidon merkle tree to minimize the contrainst of the circuit and aims to be able to be executed easily from the browser from a usual computer, making very easy to plug-in and use this module to add privacy to any gnosis Safe
Multisignature setups present challenges. Not only can individuals be exposed during voting, but they may also face physical threats or theft, potentially compromising an entire DAO or even a Layer 2 network. This is not without precedent; the largest theft in history occurred due to a breach of a 5-out-of-9 multisig.
Our project ensures complete user privacy, as the actual owners of the Safe remain undisclosed.
Our project makes the user (safe signers/owners) completely private: no one sees the actual owners of the Safe.
The following application uses zkVerify to verify a proof generated by UltraPlonk verifier. The proof is done with zkSafe. zkSafe uses gnosis safe multisig wallet but with some additional features, it can hide who signed a particular transaction, but doesn't hide who are the Safe owners. With our approach we have implemented a feature to hide those owners.
The main challenges have been integrating the following technollgies.
Noir:
zkVerify:
With the proof, we followed the the instructions at
https://docs.zkverify.io/tutorials/submit-proofs/noir-ultraplonk-example
noir-cli key --input ./contract/hello_world/plonk_vk.sol --output ./target/vk.bin
Error: CLI Error: Failed to parse Solidity file: CliError("Failed to parse verification key: InvalidCommitmentKey { offset: 20 }")
ultraplonk_verifier
repo, it was fixed at branch `fix/noir-cli-key``When running
nargo prove
its taking a lot of time, we think is because the usage of keccak is generating too many constrains. For the scope of this hackathon and with our laptop hardware has been impossible for us to generate the proof so we will use a simple proof got from noir's hello world to continue with the verification process of zkVerify and for the sake of simplicity. We added all the necessary files at/circuits/helloWorld
Tracks Applied (3)
zkVerify
1k(x)
1k(x)
Discussion