awesome-noir
A curated list of awesome things related to learning and programming in Noir.
https://github.com/noir-lang/awesome-noir
Last synced: 6 days ago
JSON representation
-
Official Resources
-
Learning
-
Interactive Tutorials
- NoirGuardians
- Zeronaut
- Noirlings - A hands-on, interactive way to learn Noir programming language through practical exercises.
- Glass Bridge With Noir - based game that demonstrates Zero-Knowledge Proofs using Noir. Learn by proving a secret path without revealing it.
-
Learning By Doing
-
Talks & Workshops
-
International Resources
-
Blog Posts & Articles
-
Educational Curriculums
-
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
-
-
Get Coding
-
Dev Tools
- play.noir-lang.org - Client-side Noir Playground. [Source Code](https://github.com/signorecello/noir-playground)
- hardhat-noir - Hardhat plugin ([Source Code](https://github.com/spalladino/hardhat-noir))
- Kalypso - generate witness and prove Noir programs in Trusted Execution Environments
- Noir Playground - The Noir Playground
- noir_rs - Proving and verifying Noir programs in Rust
- noir_java - Proving and verifying Noir programs in Java (and by extension Android)
- noir_swift - Proving and verifying Noir programs in Swift (and by extension macOS, IOS and watchOS)
- merkle tree generator - A tool to help generate Noir-optimized merkle trees
- play.noir-lang.org - Client-side Noir Playground. [Source Code](https://github.com/signorecello/noir-playground)
-
Libraries
- U(int)2B(ytes) - a library for converting `u8`->`u120`s to `[u8]` array
- Sparse Merkle Tree Verifier - a library for verification of sparse Merkle trees
- Sparse Merkle Tree Verify/Add/Update/Delete - a Noir library to verify (non-)membership proofs and add/update/delete leafs with accompanying [JS implementation](https://github.com/privacy-scaling-explorations/zk-kit/tree/main/packages/smt)
- ECrecover - a library to verify an ECDSA signature and return the source Ethereum address
- 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
- DateTimeNr - A Noir library to parse and abstract away DateTime objects
- Statistical Library - Noir Statistical Library is a comprehensive library for statistical computations in the Noir language
- JSON parser - This library adheres to the revered [IETF RFC 8259](https://datatracker.ietf.org/doc/html/rfc8259) specifications, ensuring precise interpretation of JSON-friendly strings
- Poseidon{2} - an improved implementation of Poseidon and its successor Poseidon2
- ElGamal Encryption - Exponential ElGamal Encryption on the Baby Jubjub curve
- Cryptographically Secure Pseudo-Random Number Generator
- Noir Directory - A directory of Noir libraries.
-
Boilerplates
- noir-starter - Template repository containing example projects using Noir (Vite + Hardhat, Foundry, etc.)
-
Proving Backends
-
-
Dev Tools
-
IDE
- VS Code Extension - Syntax highlight, error highlight, codelens, etc. ([Source Code](https://github.com/noir-lang/vscode-noir))
- Neovim Plugin - Syntax highlight, error highlight, etc.
- Zed Plugin - Syntax highlight, LSP support
- Tree-sitter-noir - Tree-sitter grammar for Noir language
- Emacs Tree-sitter Plugin - Syntax highlight ([Source Code](https://github.com/hhamud/noir-ts-mode))
-
Library-related
- 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)
-
Proving Backends
-
Cross-language
- noir_js - compiling and executing Noir programs in JavaScript / TypeScript
- Python2Noir - Python to Noir transpiler
- Noir.rs - Proving and verifying Noir programs in Rust (compatible with mobile architectures such as iOS and Android)
- Swoir - Proving and verifying Noir programs in Swift on iOS and MacOS
- Noirandroid - Proving and verifying Noir programs in Kotlin on Android
-
Package Management
-
Security
- rocq-of-noir - formal verification of Noir programs with Rocq
- hunter - mutation-testing of Noir programs
- coq-of-noir - formal verification of Noir programs with Coq
- lampe - formal verification of Noir programs with Lean
-
EVM
- hardhat-noir - Hardhat plugin ([Source Code](https://github.com/olehmisar/hardhat-noir))
- foundry-noir-helper - helper library for working with Noir circuits within Foundry.
-
Linting
-
Private shared states
- Kalypso - generate witness and prove Noir programs in Trusted Execution Environments
-
Performance
- Noir + Barretenberg Profiler - Opcode, execution and proving costs flamegraphing tool
-
-
Libraries
-
General
- Standard Library - standard library that ships with all Noir releases
- ZK Kit Noir - collection of algorithm and utility libraries from Privacy & Scaling Explorations
-
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
-
Data Type Manipulation
- String Search - proof of substring existence within a larger string
- zkRegEx - proof of Regular Expression (RegEx) verification
- Sort - efficient sorting of fixed-sized arrays
- Sparse Array - efficient immutable and mutable sparse arrays
- nodash - utility library for working with various data types, inspired by Lodash
- JSON parser - JSON string parsing, adheres to [IETF RFC 8259](https://datatracker.ietf.org/doc/html/rfc8259)
- Matrix Operations - a library for matrix operations provides functionality for performing various matrix operations
- Quantized arithmetic - a library for quantized value operations of zero-point quantization
- U(int)2B(ytes) - a library for converting `u8`->`u120`s to `[u8]` array
- Base64 - a library for base64 encoding
- String Utils - wrapper for String in Noir adding methods for common string operations
- Noir Base64 Library - extension of `noir_base64` with support for Vectors and Base64 URL encoding and decoding
- Lib_LinkList - A memory-efficient doubly-linked list implementation for Noir that supports constant-time operations at both ends
-
Cryptography
- JWT - Verification of JSON Web Tokens (JWTs) and prove claims
- Merkle Root - calculating Merkle root from given inputs of a Poseidon based Merkle tree
- Sparse Merkle Tree Implementation - TypesSript library to generate optimized sparse merkle trees
- Griffin for BN254 - zk-friendly Griffin hashes
- Hash to curve - hashing to bigger curves
- SHA1 - SHA1 hashes
- SHA-2 - SHA-2 hashes
- AES - a (naive) implementation of AES encryption and decryption
- ChaCha20 Implementation - a Noir implementation of ChaCha20 as defined by [RFC7539](https://www.rfc-editor.org/rfc/rfc7539)
- Hydra for BN254 - symmetric encryption and decryption
- ECIES - simple implementation of ECIES on the Baby Jubjub curve
- RSA - RSA signature verification
- BLS12_381 Elliptic Curve Pairing and Signature Verification Library
- PLUME - Noir implementation of the https://blog.aayushg.com/nullifier/ library for zk-signatures
- Poseidon - Poseidon hashes
- Noir HMAC - hash-based message authentication code
- ECDH - simple implementation of ECDH on the Baby Jubjub curve
- BigCurve - operations over elliptic curves instantiated with an arbitrary prime field
- Pairing over BLS12-381 - Pairing over BLS12-381
- Sparse Merkle Tree Verifier - verification of sparse Merkle trees
- ZK-Kit: Merkle Trees - verification of (non-)membership proofs and add/update/delete leaves
- WebAuthn/Passkeys - Verification of WebAuthn/Passkeys signatures; verifies signatures produced by `credentials.get`
- RIPEMD160 - RIPEMD160 hashes
- Keccak256 - Keccak256 hashes
- MiMC - MiMC hashes
- SHA256 - SHA256 hashes
- SHA512 - SHA512 and SHA384 hashes
- EdDSA - EdDSA signature verification
- PLUME - ECDSA-based nullifiers
- Schnorr - Schnorr signature verification
- noir-hashes - variable length SHA512 and SHA384 hashes
-
Ethereum
- ECrecover - ECDSA signature verification and return of source Ethereum address
- Ethereum Storage Proof Verification - 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)
- Ethereum Storage Proof - proving and verifying historical Ethereum / EVM accounts, storage, logs, receipts & transactions
-
Data Types
- Fixed Point Library for scale 2^-16 - an optimized fixed point arithmetic library designed for scale 2^-16.
- BigNum - a library for arithmetic computations of large unsigned integers of any length
- ZKFloat - a floating point library for Noir
- Fraction - a library for accessing fractional number data type in Noir, allowing results that aren't whole numbers
- Noir Dates - A Noir library to parse and abstract away Dates
- 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
- DateTimeNr - A Noir library to parse and abstract away DateTime objects
-
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.
-
-
Projects
-
Authentication
-
Gaming
- BattleZips - Noir)) - on-chain Battleship
- Dappicom - Nintendo Entertainment System (NES) emulator in Noir for proofs of gameplays / speedruns
- Dappicom - zk Nintendo Entertainment System (NES) emulation
- Sudoku, Wordle, and Trivia - Sudoku, Wordle, and Trivia games in Aleo and Noir
- Dappicom - zk Nintendo Entertainment System (NES) emulation
-
Governance
- MeloCafe - Anonymous on-chain voting
- Nouns Anonymous Voting - privacy-preserving voting research project for NounsDAO
-
Miscellaneous
- Winning projects from Aztec-sponsored hackathons
- Graphite - Python tool for proving graph algorithms
- zkVRF - Provable random number generation service
-
Social
- anoncast - anonymous Tweets and Casts
- Rate Limiting Nullifiers - spam regulation in anonymous environments
- FruityFriends - Various circuits (Proof of Intersection, Proof of Proximity, Proof of Proper Secret) to be used in social applications
- Rate Limiting Nullifiers - spam regulation/rate-limiting in anonymous environments
- StealthNote - message board for people in an organization to anonymously broadcast messages
- anon.world - social media with optional anonymity
-
Identity
- Anon-Aadhaar - privacy-preserving verification of Aadhaar (Indian residence ID) through proofs revealing only selected identity information
- OpenPassport - identity wallet supporting privacy-preserving proofs of goverment-issued IDs
- zkPassport - privacy-preserving proofs of national passports
-
General
-
Commercial
-
KYC
- Educational zk-KYC app - NoirJS app to check age, country and recent salaries.
-
DeFi
- Mezcal - a cutting edge on-chain limit order book dark pool.
-
Benchmarks
- Noir Development Bench - Compilation and execution memory and time benchmarks of latest Noir GitHub commits
-
-
Boilerplates
- noir-react-native-starter - mobile development template using React Native
- hardhat-noir-starter - project template with seamless Hardhat integration
- noir-library-starter - library template
- noir-recursive - recursion circuit template with UltraHonk in javascript
- nargo binary examples - barebones use of nargo binary (and a proving backend) from: simple prove/verify, codegen, to recursion
- noir-starter - project template containing examples using Noir with Vite + Hardhat and Foundry
Programming Languages
Categories
Sub Categories
Cryptography
31
Talks & Workshops
15
Data Type Manipulation
13
Libraries
13
Proving Backends
12
Dev Tools
9
Data Types
8
Authentication
8
Social
8
Package Management
6
International Resources
5
Gaming
5
IDE
5
Cross-language
5
Blog Posts & Articles
5
General
4
Interactive Tutorials
4
Learning By Doing
4
Machine Learning
4
Security
4
Identity
3
Miscellaneous
3
Ethereum
3
Examples
2
Educational Curriculums
2
Commercial
2
EVM
2
Governance
2
Library-related
2
KYC
1
Performance
1
Benchmarks
1
Private shared states
1
DeFi
1
Boilerplates
1
Linting
1
Keywords
noir
11
noir-lang
7
zero-knowledge
5
zk-snarks
3
zksnarks
3
zk
2
ethereum
2
solidity
2
rust
2
hashing-library
1
field
1
curve
1
swift
1
java
1
android
1
programming-language
1
cryptography
1
compiler
1
noir-language
1
blockchain
1
aztec-network
1
secp256k1
1
ecrecover
1
semaphore
1
snarks
1
gnark
1
theorem-proving
1
program-extraction
1
lean4
1
aztec
1
wagmi
1
viem
1
typescript
1
tailwindcss
1
starter-kit
1
rainbowkit
1
nextjs
1
hardhat
1
ethersjs
1
dapp
1
daisyui
1
utility
1
library
1
zkp
1
signature
1
plume
1
antispam
1