noir

Build privacy-preserving EVM applications with Noir circuits, Barretenberg proving, and Solidity verifiers.

Updated Sep 9, 2026
One-click install
npx skills add https://github.com/m-faran/genie-markets --skill noir-m-faran
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: noir
Source: https://github.com/m-faran/genie-markets/tree/main/.agent/skills/ethskills/noir
Command: npx skills add https://github.com/m-faran/genie-markets --skill noir-m-faran

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Building zero-knowledge privacy apps on EVM chains involves a fragile toolchain where outdated commands, wrong hash functions, and mismatched serialization silently break proofs. This Skill provides corrected, current guidance for the Noir/Barretenberg stack so circuits, verifiers, and frontends actually work together. ## Core Features & Use Cases - Corrected Toolchain Guidance: Covers the current nargo/bb build pipeline, Poseidon as an external dependency, Noir 1.0 syntax changes, and HonkVerifier deployment requirements including the 24KB contract size limit. - Commitment-Nullifier Architecture: Provides complete circuit, Solidity contract, LeanIMT tree, and NoirJS frontend patterns for anonymous voting, private withdrawals, and airdrops, including domain separation and nullifier scoping. - Use Case: A developer building an anonymous voting dApp uses this Skill to write the membership-proof circuit, deploy the generated HonkVerifier, mirror the Merkle tree offchain from insert events, and generate browser proofs with matching keccak serialization. ## Quick Start Ask the AI to scaffold a Noir commitment-nullifier privacy app with a circuit, Solidity verifier integration, and a NoirJS frontend proof flow.

Frequently Asked Questions about noir

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I generate and verify a Noir proof for an EVM contract?▼

Compile with nargo compile, execute the witness with nargo execute, then run bb write_vk with --oracle_hash keccak and bb write_solidity_verifier to produce the verifier contract. The old nargo prove and nargo verify commands were removed; proving and verification use the bb CLI directly.

How do I use Poseidon hashing in a Noir circuit?▼

Poseidon was removed from the Noir standard library, so add the noir-lang/poseidon git dependency to Nargo.toml and import poseidon::poseidon::bn254::hash_2. Never use SHA256 in-circuit since it costs roughly 30,000 gates versus about 600 for Poseidon.

Which EVM chains support Noir proof verification?▼

Noir/Barretenberg proofs verify on any EVM chain with BN254 precompiles, including Ethereum mainnet, Optimism, Arbitrum, Base, Scroll, and Polygon PoS. zkSync ERA works but with higher gas costs, while Polygon zkEVM is being shut down and should be avoided.

Why does my onchain proof verification fail even though the circuit compiles?▼

Failures usually come from serialization mismatches: the circuit pub parameter order, NoirJS proof.publicInputs order, and Solidity verify input order must match exactly. Also ensure --oracle_hash keccak on CLI commands and { keccak: true } in generateProof, and that the @aztec/bb.js version matches your bb CLI version.

When should I use a commitment-nullifier pattern versus a simple private proof?▼

Use a simple private proof when proving a fact about private data like age or balance without needing anonymity. Use commitment-nullifier only when participants must act anonymously from a shared set, such as voting or withdrawals, since it requires a Merkle tree, nullifiers, and a separate acting wallet.

Why is my privacy app still linkable onchain despite using ZK proofs?▼

The ZK proof hides the commitment-nullifier link, but msg.sender is public, so acting from the same wallet that deposited reveals the connection. Users must act from a fresh burner wallet funded through a relayer or ERC-4337 paymaster to preserve unlinkability.