ZKNativePVM ร— ZK

ZKNative

Native Rust ZK verification for private apps on Polkadot,

from voting and claims to access control and custom workflows via PolkaVM.

๐Ÿฆ€

Rust ZK Verifier

Groth16 proof verification via arkworks compiled to PolkaVM โ€” no EVM gas overhead.

๐Ÿ”’

Composable Privacy Apps

Reuse the same verifier across voting, claims, access control, and custom business logic.

โšก

PVM FFI

Solidity calls Rust via PolkaVM's native cross-language FFI. Unique to Polkadot.

Network

Polkadot Hub Testnet

Chain ID 420420417

Live Example Contract

0x4eA0e6Bc7e...3f5a8b43

Private voting is one deployed consumer app on top of the shared verifier

ZKNativeVerifier

0x79a8979b0e...E37913d0

Solidity entrypoint to the PolkaVM Rust verifier

Live Usecases

Three concrete use cases powered by the same verifier

Compare all use cases โ†’
๐Ÿ—ณ๏ธPrivate Governance

Private Voting

Cast governance votes without revealing which eligible wallet participated. The chain only sees the proposal, the vote choice, and a one-time nullifier.

Proof System

Groth16 / BN254

Nullifier Scope

Per voter, per proposal

~10x cheaper Groth16 verification than Solidity-only execution.

Try Flow โ†’
๐ŸŽ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.

Proof System

Groth16 / BN254

Nullifier Scope

Per wallet, per campaign

One verifier powers retroactive rewards, loyalty drops, and claim portals.

Try Flow โ†’
๐ŸŽŸ๏ธPrivate Access Control

Anonymous Access Passes

Mint event or program passes on-chain without leaking the member, contributor, or attendee address behind the proof. The contract learns only the pass type and program.

Proof System

Groth16 / BN254

Nullifier Scope

Per member, per program

Ideal for gated communities, summits, contributor houses, and private check-ins.

Try Flow โ†’

For Builders

Start with a template, then shape your own private flow

The studio and live templates show how one verifier can power multiple consumer contracts. Use the shipped examples as references, then export your own route, config, and integration checklist for a new ZKNative app.

Open ZKNative Studio โ†’

Why Only Possible on Polkadot

FeatureEthereumSolanaPolkadot Hub
Call Rust libs from SolidityโŒโŒโœ…
Native ZK verification in RustโŒโš ๏ธ BPF onlyโœ…
EVM-compatible + Rust FFIโŒโŒโœ…
Cross-parachain privacy app settlementโŒโŒโœ…

Architecture

๐Ÿ–ฅ๏ธ Frontend โ†’ generates Groth16 proof in browser (snarkjs + WASM)
โ†“ executeUseCase(contextId, proof, publicSignals)
๐Ÿ“œ Consumer Contract โ†’ validates nullifier, root, and business logic
โ†“ verifyProof(proof, signals)
๐Ÿ”ฌ ZKNativeVerifier.sol โ†’ dispatches to PVM precompile
โ†“ staticcall(0x0900, abi.encode(proof, signals))
๐Ÿฆ€ PVM Rust Verifier โ†’ arkworks Groth16 on BN254 (native speed)
PrivateVoting.sol for anonymous governance.
PrivateAirdrop.sol pattern for one-time private claims.
PrivacyPassIssuer.sol pattern for gated access and credential minting.