ZKNativePVM ร— ZK
โ† 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
connect

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

0xdb81ba21b0531325699d0079b2e0a3019eeebc3927b5390d486458399cf2d939

publicSignals[1] ยท nullifier

0x263e9c26b83c666df57df04c1d15f117792bccea81234bf132b3527863d09213

publicSignals[2] ยท campaignId

41

publicSignals[3] ยท claimTier

0

Execution 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.