Zair offers privacy-preserving tools for Zcash airdrops by allowing users to prove they own eligible notes on Zcash while preserving the privacy of the notes owned and the amounts claimed.
This project has not been audited.
An organizer publishes a snapshot of the Zcash chain at a given height. Claimants scan for their eligible notes, then generate a ZK proof per note that demonstrates note ownership and unspentness without revealing the Zcash nullifier. Each proof instead exposes a domain-separated airdrop nullifier for double-claim prevention and is signed with a spend-authorizing key bound to a target-chain message. Verifiers then check the proofs against the snapshot and de-duplicate by airdrop nullifier.
See the Introduction for more details.
| Crate | Description |
|---|---|
zair-cli |
Primary zair CLI binary tool |
zair-sdk |
The SDK and entrypoint for zair airdrops, used by the CLI |
zair-core |
Core crate with shared types, config and schemas |
zair-nonmembership |
Non-membership Merkle-tree primitive |
zair-scan |
Lightwalletd gRPC client and chain scanning |
zair-sapling-proofs |
Sapling proving and verification |
zair-sapling-circuit |
Sapling claim circuit (Bellman/Groth16) |
zair-orchard-proofs |
Orchard proving and verification |
zair-orchard-circuit |
Orchard claim circuit (Halo2) |
See Getting Started for build instructions and setup. The quickest path is using Nix:
nix develop
cargo build --releaseBelow is a minimal example workflow. See the CLI Reference for details or check zair --help for command options.
Extract the seed from your wallet mnemonic:
zair key derive-seed --mnemonic-file mnemonic.txt --no-passphraseGenerate the trusted Sapling setup (required once):
zair setup saplingBuild the airdrop snapshot against a chain height:
zair config build --network testnet --height <SNAPSHOT_HEIGHT>Run the full claim pipeline (prepare, prove, sign) in one step:
zair claim run \
--config config.json \
--seed seed.txt \
--birthday <WALLET_BIRTHDAY> \
--message claim-message.binVerify the submission (proofs and signatures):
zair verify run \
--config config.json \
--message claim-message.binReleased under the MIT License.
