Awesome Noir

repository·main·Indexed 20 days ago

https://github.com/noir-lang/awesome-noir

A curated collection of resources, libraries, applications, and developer tools for the Noir programming language used for writing zero-knowledge (ZK) circuits. Includes links to official documentation, IDE extensions, proving backends like Barretenberg, and libraries for cryptography, Ethereum integration, and cross-platform development.

Tokens
1.1K
Snippets
0
Records
8
Agent score
20%

What's inside Awesome Noir

  1. Explore Noir resources and benchmarks

    main

    Access official Noir documentation, the GitHub repository, and the community Discord to stay updated. For performance evaluation, refer to:

    • Ethproofs' Benchmarks: Benchmarks for hashes and signature verifications in Noir using Barretenberg.
    • tsujp's Hash Benchmarks: Benchmarks for Poseidon2, Keccak256, and SHA256 across various input sizes and iterations.
  2. Use Noir libraries for General, Data Types, and Cryptography

    main

    A wide range of libraries are available to extend Noir functionality:

    General & Data Types

    • Standard Library: The core library shipped with Noir.
    • ZK Kit Noir: Algorithm and utility libraries from Privacy & Scaling Explorations.
    • nodash: Lodash-inspired utility library.
    • BigNum: Large unsigned integer arithmetic.
    • IEEE754 Floating-point: Single and double precision floating-point arithmetic.
    • wad.nr Fixed-point: 18-decimal fixed-point arithmetic.
    • Noir Dates: Date parsing and abstraction.

    Text & Encoding

    • Base64: Base64 encoding.
    • JSON parser: RFC 8259 compliant JSON parsing.
    • String Search: Substring existence proofs.
    • XPath 2.0 Functions: XPath operations for strings, numbers, dates, and booleans.

    Collections

    • Sort: Efficient sorting for fixed-sized arrays.
    • Sparse Array: Immutable and mutable sparse arrays.

    Cryptography

    • Elliptic Curves: BigCurve for operations over arbitrary prime fields.
    • Hashes: Implementations for Keccak256, MiMC, Poseidon/Poseidon2, RIPEMD160, SHA256, and SHA512/SHA384.
    • Encryption: ECDH (Baby Jubjub curve) and RLWE Gadgets (verifiable lattice-based cryptography).
    • Signatures: EdDSA, ECDSA (NIST/Brainpool), RSA, Schnorr, and zkQES (PDF/XML).
    • Merkle Trees: ZK-Kit: Merkle Trees for membership proofs and leaf management.
  3. Integrate Noir with Ethereum

    main

    Specific libraries exist for Ethereum-related proofs and operations:

    • ECrecover: ECDSA signature verification returning the Ethereum address.
    • EIP-712: Typed data hashing.
    • Ethereum MPT Proof: Proving Merkle Patricia Tries with recursive aggregation.
    • Ethereum Storage Proof: Proving/verifying historical Ethereum accounts, storage, logs, receipts, and transactions.
  4. Find Noir applications in Finance, Social, and Infrastructure

    main

    Noir is used in several production-grade and experimental applications:

    Finance

    • Payy: Private stablecoin payments.
    • Stellar Confidential Tokens: Stellar token standard with private balances and transfer amounts.
    • Zerosats: Private Bitcoin payments.

    Social

    • anoncast: Anonymous posting on X and Farcaster.

    Infrastructure

    • Aztec: Privacy-first blockchain supporting smart contracts in Noir.
    • Interfold: Private shared state protocol.
  5. Develop with Noir using SDKs and Cross-platform tools

    main

    Browser Development

    • NoirJS: Compile and execute Noir programs in JavaScript/TypeScript.
    • Noir Codegen for TypeScript: Generate TypeScript bindings for Noir program outputs.

    Mobile Development

    • MoPro: Prove and verify Noir programs on Android and iOS.
    • Noir.rs: Rust bindings for proving/verifying.
    • Swoir: Swift bindings for iOS and MacOS.
    • Noir Android: Kotlin bindings for Android.

    SDKs

    • ZKPassport: National passport information proving.
    • ZKProofport: Proving Coinbase, Google Workspace, and Microsoft 365 memberships.
    • ZK Email: Proving email senders and contents.
  6. Set up Noir IDEs and Developer Tools

    main

    IDE Support

    • Noir Playground: In-browser development environment.
    • VS Code Extension: Official extension for VS Code.
    • Neovim Plugin: Support for Neovim.
    • Zed Plugin: Support for Zed editor.
    • Emacs Tree-sitter Plugin: Support for Emacs.

    Linting & Debugging

    • aztec-lint: Static analyzer for Aztec.nr and vanilla Noir.
    • VS Code Debugger: Official debugger support.
    • CodeTracer: Time-travelling debugger.

    Performance & Security

    • Noir + Barretenberg Profiler: Flamegraphs for opcode, execution, and proving costs.
    • Lampe: Formal verification of Noir programs using Lean.
  7. Use specialized Proving Backends and Private State tools

    main

    Proving Backends

    • Barretenberg (UltraHonk / MegaHonk): Primary backend by Aztec Foundation. Includes Solidity and Rust verifiers.
    • ProveKit: Spartan + WHIR backend.
    • Sonobe: Nova and HyperNova backend.
    • Sunspot: Groth16 backend.

    Private Shared States

    • coSNARKs: Generate witness and prove Noir programs in an MPC network.
    • Kalypso: Generate witness and prove Noir programs in Trusted Execution Environments (TEEs).