Noir
What is Noir
Zero-knowledge proofs (ZKP) have been gaining tremendous traction in the blockchain space, came up first as a privacy solution and increasingly as a scaling solution.
Noir is a Domain Specific Language for developing ZK-provable programs. The execution of Noir programs can be proved and verified without revealing all information involved in the process (e.g. program inputs), offering privacy benefits. It can also be verified with asymmetrically-less computation power on the verifier's end, offering scaling benefits.
Noir is designed for accessible and flexible development of provable programs. It abstracts away the need for developers to handcraft low-level circuits and aims at supporting different proving backends for different development needs.
Circuits: Source code of ZK programs are sometimes referred to as circuits due to the underlying design and working principles of ZKP systems. For development purposes, you may consider the two terms interchangeable.
Noir is a public good for developing ZK-provable programs and is independent from building products on the existing Aztec network.
Who is Noir for?
Application Developers
Noir's intuitive syntax and workflow opens up the possibility for application developers to take advantage of ZKPs' privacy and scalability benefits.
Noir also offers one-click generation of a verifier smart contract for every Noir program, enables easy access to dApp development that utilizes ZKP.
Protocol / Blockchain Developers
Noir is designed to be compilable into different arithmetic schemes of choice, hence it is capable of supporting different proving backends. It could be a great choice for infrastructural development that has to adopt alternative proving backends in addition to the default Plonk-based proving system due to specific limitations or requirements.
Resources
To learn more about Noir:
📓 The Noir Book
The go-to Noir documentation.
⭐️ Awesome Noir
A curated list of Noir resources.
👨💻 Noir Repo
The main repository of Noir development.