8000 GitHub - kks-code/awesome-noir: A curated list of awesome things related to learning and programming in Noir. · GitHub
[go: up one dir, main page]

Skip to content
  • About

    A curated list of awesome things related to learning and programming in Noir.

    Resources

    Contributing

    Stars

    0 stars

    Watchers

    0 watching

    Forks

     
     

    Latest commit

     

    History

    239 Commits

    Folders and files

    NameName
    Last commit message
    Last commit date
     
     
     
     
     
     

    Repository files navigation

    Awesome Noir

    A curated list of resources for learning and programming in Noir.

    Click the hamburger button slightly upper-right from here to access the table of content: Screenshot of hamburger button's location

    ⚠️ This repository or the contained links are not endorsed as safe and secure by Aztec Labs or the Noir team. Users are advised to exercise caution before utilizing any content or code provided herein.

    Awesome X (formerly Twitter) Follow Discord


    Useful Resources

    Projects

    General

    • AnonRadar - registry of Noir projects
    • ZK Email - privacy-preserving proof of emails

    Authentication

    • Safe modules for privacy-preserving multi-sig
    • zkLogin - Apple/Google account based authentication for EVM smart accounts

    Commercial

    • GitClaim - privacy-preserving airdrop claims through proof of GitHub contributions
    • z-imburse - automated and privacy-preserving expense reimbursements

    DeFi

    • Mezcal - a cutting edge on-chain limit order book dark pool.

    Gaming

    • BattleZips - on-chain Battleship
    • Dappicom - Nintendo Entertainment System (NES) emulator in Noir for proofs of gameplays / speedruns
    • zk-hangman-noir - end-to-end zkDApp demo showcasing the Hangman circuit, EVM contract, and WASM frontend

    Governance

    Identity

    • Anon-Aadhaar - privacy-preserving verification of Aadhaar (Indian residence ID) through proofs revealing only selected identity information
    • Self - identity wallet supporting privacy-preserving proofs of government-issued IDs
    • ZKPassport - privacy-preserving proofs of national passports

    Social

    • anon.world - social media with optional anonymity
    • Rate Limiting Nullifiers - spam regulation/rate-limiting in anonymous environments
    • StealthNote - message board for people in an organization to anonymously broadcast messages

    Benchmarks

    Learning

    Interactive Tutorials

    • Noirlings - A hands-on, interactive way to learn Noir programming language through practical exercises.
    • Noirlings.app - Learn Noirlings on your browser, no setup needed.
    • Glass Bridge With Noir – A browser-based game that demonstrates Zero-Knowledge Proofs using Noir. Learn by proving a secret path without revealing it.

    Educational Curriculums

    • ZKCamp's Open Source Noir course
      • 6 lectures to give participants the knowledge and skills necessary to build decentralized applications based on ZKPs using Noir
      • Lessons include ZKP Fundamentals; An Introduction to Aztec Ecosystem; Noir Basics; Building a Noir Application; and Advanced Noir
    • [Video Series] BattleZips-Noir (Source Code)
      • Walkthrough of building an on-chain Battleships game using zero-knowledge
      • Follow along and build your own game using Noir

    Examples

    • Noir Examples - reference examples of zero-knowledge applications in Noir
    • Circuit Examples - demonstration implementation of dot products & Merkle proofs in Noir, Circom and RISC0

    Talks & Workshops

    Blog Posts & Articles

    International Resources

    Boilerplates

    Libraries

    For package management (e.g. library registry, CLI manager), refer to the package management tooling section.

    For library tooling (e.g. input generators, TypeScript implementations), refer to the library-related tooling section.

    General

    • Standard Library - standard library that ships with all Noir releases
    • ZK Kit Noir - collection of algorithm and utility libraries from Privacy & Scaling Explorations

    Data Types

    Numerics

    • BigNum - a library for arithmetic computations of large unsigned integers of any length
    • Fraction - a library for accessing fractional number data type in Noir, allowing results that aren't whole numbers
    • ZKFloat - a floating point library for Noir
    • Complex Numbers - This library offers a comprehensive suite of operations for complex numbers
    • Fixed Point Library - The FixedPoint library offers precise fixed-point arithmetic operations tailored for Noir
    • Fixed Point Library for scale 2^-16 - an optimized fixed point arithmetic library designed for scale 2^-16.

    Dates & Times

    • Noir Dates - A Noir library to parse and abstract away Dates
    • DateTimeNr - A Noir library to parse and abstract away DateTime objects

    Data Type Manipulation

    General

    • nodash - utility library for working with various data types, inspired by Lodash

    Numerics

    • Matrix Operations - a library for matrix operations provides functionality for performing various matrix operations
    • Statistical Library - Noir Statistical Library is a comprehensive library for statistical computations in the Noir language
    • Quantized arithmetic - a library for quantized value operations of zero-point quantization

    Bytes

    Texts

    • Base64 - a library for base64 encoding
    • Noir Base64 Library - extension of noir_base64 with support for Vectors and Base64 URL encoding and decoding
    • JSON parser - JSON string parsing, adheres to IETF RFC 8259
    • String Utils - wrapper for String in Noir adding methods for common string operations
    • String Search - proof of substring existence within a larger string
    • zkRegEx - proof of Regular Expression (RegEx) verification

    Collections

    • Sort - efficient sorting of fixed-sized arrays
    • Sparse Array - efficient immutable and mutable sparse arrays
    • Lib_LinkList - A memory-efficient doubly-linked list implementation for Noir that supports constant-time operations at both ends

    Cryptography

    Elliptic Curves

    Hashes

    Encryption

    • AES - a (naive) implementation of AES encryption and decryption
    • ChaCha20 Implementation - a Noir implementation of ChaCha20 as defined by RFC7539
    • ElGamal Encryption - Exponential ElGamal Encryption on the Baby Jubjub curve
    • Hydra for BN254 - symmetric encryption and decryption
    • ECIES - simple implementation of ECIES on the Baby Jubjub curve
    • ECDH - simple implementation of ECDH on the Baby Jubjub curve

    Signatures

    Merkle Trees

    • ZK-Kit: Merkle Trees - verification of (non-)membership proofs and add/update/delete leaves
    • Indexed Merkle Tree - Generate and verify proofs of inclusion, exclusion, or insert transition, includes complementary NPM package

    Message Authentication Code

    • Noir HMAC - hash-based message authentication code

    Randomness

    Blockchain Specifics

    Aztec

    • Aztec Storage proofs - proving Aztec note inclusion in plain Noir, with verification in JavaScript or Solidity

    Ethereum

    • ECrecover - ECDSA signature verification and return of source Ethereum address
    • Ethereum Storage Proof - proving and verifying historical Ethereum / EVM accounts, storage, logs, receipts & transactions

    Social

    • Noir Social Verify - zkEmail based proof of GitHub, Google, LinkedIn and X accounts and account details
    • Noir Semaphore - Semaphore Protocol adapted to use Noir.

    Machine Learning

    • Convolution - Convolutional Neural Network (CNN) library, including Convolutional layers, Pooling layers, and Linear (fully connected) layers
    • ML - neural networks
    • SKProof - Scikit-learn compatible Python library for generating ZK proofs of execution
    • zkML-Noir - Python ML model Noir transcoding, including various algorithms such as Decision tree, K-Means, XGBoost, FNN, CNN

    Developer Tools

    Package Management

    Library Registry

    CLI Manager

    • noir-libs by Walnut
    • noirupi - Interactive noirup and bbup. Update noir and bb interactively using noirupi and bbupi

    IDE

    Linting

    Performance

    Cross-platform

    Browser development

    • NoirJS - compile and execute Noir programs in JavaScript / TypeScript
    • Noir Codegen for TypeScript - generate TypeScript bindings for computing Noir program outputs in TS

    Mobile development

    • MoPro by PSE - prove and verify Noir programs on mobile (Android and iOS)
    • Noir.rs by ZKPassport - prove and verify Noir programs with Rust
    • Swoir by ZKPassport - prove and verify Noir programs with Swift on iOS and MacOS
    • Noir Android by ZKPassport - prove and verify Noir programs with Kotlin on Android

    EVM

    Private shared states

    • coSNARKs - generate witness and prove Noir programs in a Multi-Party Computation network
    • Kalypso - generate witness and prove Noir programs in Trusted Execution Environments

    Library-related

    • Merkle Tree Generator - generate Noir-library-friendly Pedersen based Merkle trees
    • Safecat - generate Noir-library-friendly EdDSA Baby Jubjub Elliptic Curve signatures
    • Poseidon2 in TypeScript - a Poseidon2 library in pure TypeScript with support for the implementation used by Noir (over BN254)

    Security

    • rocq-of-noir - formal verification of Noir programs with Rocq
    • lampe - formal verification of Noir programs with Lean
    • hunter - mutation-testing of Noir programs

    Proving Backends

    Contribute

    Propose link additions by visiting README.md and click the "pen" icon in the top right corner. Make changes to the file and follow the instructions to create a pull request.

    License

    CC0

    About

    A curated list of awesome things related to learning and programming in Noir.

    Resources

    Contributing

    Stars

    0 stars

    Watchers

    0 watching

    Forks

    Releases

    Packages

    Contributors

    0