project screenshot 1
project screenshot 2
project screenshot 3

ZK-Nullifier Snap

Using MetaMask snaps to generate ZK nullifier in privacy-preserving way

ZK-Nullifier Snap

Created At

ETHBogotá

Winner of

🥇 Metamask — Best Metamask Snap

Project Description

This project is a MetaMask snap that exposes a method for constructing a novel ZK-nullifier scheme. This scheme takes advantage of a secure execution environment and access to private key entropy provided by MetaMask snaps API. Thanks to those features we are able to derive a ZK-nullifier without leaking sensitive outputs to the browser.

Read more about the ZK-nullifier scheme used here: https://docs.google.com/presentation/d/1mKtOI4XgKrWBEPpKFAYkRjxZsBomwhy6Cc2Ia87hAnY/edit?usp=sharing

How it's Made

This project takes advantage of MetaMask's snap API in order to access private key entropy and use it to generate a ZK-nullifier. The snap itself is partly in TypeScript, and partly in WASM. The WASM component was compiled from Rust sources that implement said ZK-nullifier.

The project also implements a ZK proof-verification component on the frontend. This component would be used to verify the integrity of the nullifier produced by the snap. This component is implemented with snarkjs Groth16 prover, but because the nullifier implementation is incomplete (the circuits are missing), proving is not yet possible.

background image mobile

Join the mailing list

Get the latest news and updates