โ All Use Cases
๐
Private Distribution
Stealth Airdrop Claims
Let eligible wallets redeem rewards without revealing which address qualified or which retention tier they belong to. The claim contract only learns the tier and campaign.
The distributor verifies Merkle membership and a campaign-scoped nullifier, so each eligible claimant redeems once without linking the payout to their source wallet.
Proof System
Groth16 / BN254
Nullifier Scope
Per wallet, per campaign
On-Chain Action
Release tiered rewards
Verifier Path
Solidity -> PVM Rust
1
2
3
4
Step 1: Connect Eligible Identity
Connect a wallet, then generate a proof that you belong to the right allowlist without revealing which address qualified.
Prove the claimant belongs to the allowlist Merkle root.
Bind redemption to a campaign-specific nullifier so it can only happen once.
Reveal the reward tier without revealing the qualifying wallet identity.
Current Signal Preview
publicSignals[0] ยท merkleRoot
0xdb81ba21b0531325699d0079b2e0a3019eeebc3927b5390d486458399cf2d939publicSignals[1] ยท nullifier
0x263e9c26b83c666df57df04c1d15f117792bccea81234bf132b3527863d09213publicSignals[2] ยท campaignId
41publicSignals[3] ยท claimTier
0Execution Path
Frontend builds witness + proof in browser
โ PrivateAirdrop.claim
Consumer contract validates context + nullifier
โ verifyProof(proof, publicSignals)
ZKNativeVerifier dispatches to PolkaVM precompile
โ native arkworks Groth16
170,510 gas ยท 1257ms
Why This Fits ZKNative
Reward programs can stay private even when the drop logic settles fully on-chain.
Tiered claims reuse the same verifier and only change the consumer contract logic.
PolkaVM avoids the gas spikes that make recurring Groth16 claims expensive on EVM-only paths.