Skip to main content
The nullifier program utility solves this for you.
  1. It derives PDA from ["nullifier", id] seeds (where id is your unique identifier, e.g. a nonce, uuid, hash of signature, etc.)
  2. Creates an empty rent-free PDA at that address
  3. If the address exists, the whole transaction fails
  4. Prepend or append this instruction to your transaction.
We also deployed a reference implementation to public networks so you can get started quickly:
Example source code: TypeScript | Rust

Dependencies

Using the Helper

Manually Fetching Proof

Check If Nullifier Exists


Note that this is a reference implementation. Feel free to fork the program as you see fit.
Questions or need support? Telegram | email | Discord