A curated list of resources for learning and programming in Noir.
- [Educational Curriculum] 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
- [Practice Exercises] Noir-by-example
- An introduction to Noir with a bunch of simple examples
- Learn how to organize your Noir logic, write For Loops, and create complex package structures
- [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
- [Practice Exercises] Circuit Examples
- Demonstration of dot products & Merkle proofs in Noir, in comparison to Circom and RISC0
- [10 mins] Writing Circuits with Noir (Source Code)
- Nargo setup
- Basic Noir syntax
- Noir interactions in TypeScript
- [20 mins] Painless Zero-Knowledge Circuitry with Noir at ETHDam
- Introduction to Noir
- Simple demo and test
- [20 mins] Private Value Transfer in 10 Lines (Source Code)
- Tornado-like private asset transfer using Merkle proofs
- [25 mins] Noir as a Smart Contract Language
- Noir as the smart contract language for the Aztec rollup
- Noir smart contracts
- [45 mins] Outlandish Noir Stuff; Workshop at ETHCC
- How to use Noir to build a bunch of outlandish stuff
- [1 hr] Circuit Safety and an Introduction to Noir
- Common circuit bugs
- Proving system vulnerabilities
- Unconstrained functions
- [1 hr] Introduction to Noir in Spanish (Written Tutorial and Code)
- [1.5 hrs] ZK dApps - Why, What and How?
- [1.5 hrs] Sudoku in Noir (Source Code)
- [2 hrs] ZK HACK III - Introduction to Noir (Souce Code)
- Code-together: Quadratic Voting
- Understanding the Technical Aspects of Aztec and Noir
- Noir 101 for Solidity devs in (English) and (Spanish)
- ZK-Bench - Compare Noir to other ZK frameworks (Risc Zero, Leo, Miden, etc)
- Noir Editor - Browser IDE (Souce Code)
- VSCode Extension - Syntax highlight (Source Code)
- Vim Plugin - Syntax highlight
- Emacs Plugin - Syntax highlight (Source Code)
- Tree-sitter-noir - Tree-sitter grammar for Noir language
- Emacs Tree-sitter Plugin - Syntax highlight (Source Code)
- hardhat-noir - Hardhat plugin (Source Code)
- Python2Noir - From Python to Noir language transpiler
- nplate - Minimalist template
- noir-hardhat-template - Hardhat template
- noir-starter - Template repository containing example projects using Noir (Next.js + Hardhat, Foundry, etc.)
- noir-starter-nuxt - Template repository containing example minimal project using Noir, Nuxt and Hardhat
- noir-vite-starter - Template repository contiaining example minimal project using Noir and Vite
- Standard Library - the Noir Standard Library
- BigInt - a library that provides a custom BigUint56 data type, allowing for computations on large unsigned integers
- Signed Int - a library for accessing a custom Signed Integer data type, allowing access to negative numbers on Noir
- Fraction - a library for accessing fractional number data type in Noir, allowing results that aren't whole numbers
- U(int)2B(ytes) - a library for converting
u8
->u120
s to[u8]
array - ZKFloat - a floating point library for Noir
- Sparse Merkle Tree Verifier - a library for verification of sparse Merkle trees
- RSA - this repository contains an implementation of a RSA signature verify for the Noir language
- Merkle Root - a library for calculating Merkle root from given inputs. Using the Poseidon function for hashing
- Quantized arithmetic - a library for quantized value operations of zero-point quantization
- SHA-1 - a library for generating hashes using SHA-1 hashing function
- Ethereum Storage Proof Verification - a library that contains the primitives necessary for RLP decoding (in the form of look-up table construction) and Ethereum state and storage proof verification (or verification of any trie proof involving 32-byte long keys)
- ECrecover - a library to verify an ECDSA signature and return the source Ethereum address
- SKProof - a Scikit-learn compatible Python library for generating ZK proofs of execution
- ML - a library for implementing neural networks in Noir
- zkML-Noir - a library for Python ML model transcoding Noir, including various algorithms such as Decision tree, K-Means, XGBoost, FNN, CNN
- Matrix Operations - a library for matrix operations provides functionality for performing various matrix operations
- Convolution - a library for Convolutional Neural Network (CNN) library in Noir, including Convolutional layers, Pooling layers, and Linear (fully connected) layers.
- Rate Limiting Nullifiers - a zero-knowledge gadget that enables spam prevention in anonymous environments
A curated list of projects powered by Noir.
- Anonymous proof of token ownership on Aztec for token-gated access
- SafeRecover - Recovery of ownership of Gnosis Safe accounts
- Mastermind - Mastermind in Noir
- BattleZips (Source Code) - On-chain Battleship
- Sudoku, Wordle, and Trivia - Sudoku, Wordle, and Trivia games
- ZCaptcha - A ZK version of Captcha
- Hangman - Simple implementation of the Hangman game
- MeloCafe - Anonymous on-chain voting
- Nouns Research Sprint - Anonymous voting research sprint solution with NounsDAO
- FruityFriends - Various circuits (Proof of Intersection, Proof of Proximity, Proof of Proper Secret) to be used in social applications
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.