---
# System prepended metadata

title: ZK-Nullifier Snap

---

# ZK-Nullifier Snap

![](https://i.imgur.com/sNMiIlW.png)

## Scope

### Minimum

- [x] Adding WASM bindings to https://github.com/zk-nullifier-sig/zk-nullifier-sig/
- [ ] Benchmark (or ask snaps team) the max file size that can be imported into snap -- we think 0.5-1 gb is interesting
- [ ] Loading large zkey files into the snap
- [ ] Generate chunked zkey on 64-core AWS machine using [this fork of snarkjs]( snarkjs@git+https://github.com/vb7401/snarkjs.git#fae4fe381bdad2da13eee71010dfe477fc694ac1) which can be run with `yarn install snarkjs@git+https://github.com/vb7401/snarkjs.git#fae4fe381bdad2da13eee71010dfe477fc694ac1`.
- [ ] Send presentation to Aayush + rehearse
- [x] Use `getFullProof` from [this file](https://github.com/personaelabs/heyanon/blob/main/lib/zkp.ts) with [this snarkjs fork]("snarkjs": "git+https://github.com/vb7401/snarkjs.git#53e86631b5e409e5bd30300611b495ca469503bc") (note that this is a different fork than above) to generate proof in the browser
- [ ] Make inputs for `getFullProof` 
    - https://github.com/geometryresearch/secp256k1_hash_to_curve/blob/main/circuits/ts/generate_inputs.ts
    - 

### Optional

- [ ] Add verification to the demo
- [ ] Replacing `sha256 + sha512` with `poseidon` in Circom
    - r1cs  or ethereum curve; circom implementation is necessary 
- [ ] Replace `sha256` with `posiedon` in Rust signature proof of concept repo
- [ ] Adding an actual use case to the demo (XMTP messaging? heyanon?)
- [ ] Modify [stealthdrop](https://github.com/stealthdrop/stealthdrop) to work with this
- [ ] Add support for vanilla semaphore
