Zero Knowledge Development Kit #8472
Replies: 2 comments 1 reply
-
Hi @chancehudson, thank you for submitting the proposal! Re your questions: Not for Noir programs, but we have started inline documenting Noir itself (e.g. ACIR, Brillig, compiler): https://noir-lang.github.io/noir/docs/acir/index.html. We don't have grammar for ACIR and Brillig, but see if the docs above is helpful and feel free to open Issues for things unclear / under-explained! |
Beta Was this translation helpful? Give feedback.
-
Re the project itself: Am I understanding it correctly that the project would be a suite of developer tooling that includes:
which works both in a web browser and on CLI? If yes:
That should help sharpen up the proposal further! |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
ZKDK (Zero Knowledge Development Kit)
Summary
This proposal describes a development kit for analyzing and optimizing Noir programs. It includes editing, compilation, analysis, deployment, and instructional/learning features. It's designed to make the Noir/ACIR/Brillig/witness systems more transparent.
Motivation
Zero knowledge programs, similarly to smart contracts, are difficult to intuitively understand and build. This is because zk programs don't execute like traditional programs and must generally be used as components in a larger structure. This is not helped by the complex nature of setting up build tools, compiling circuits/witnesses, and generating/verifying resulting proofs. Further, optimizing circuits can be extremely unintuitive depending on the underlying arithmetization.
The Remix IDE does a good job of simplifying smart contract development and providing high value tools such as a debugger, gas estimator, transaction analyzer, etc.
A similar piece of software specifically for zero knowledge programs could introduce new developers to Noir, as well as act as a debugging/optimization tool for existing developers.
Prospective users
As someone who initially learned ZK development using Circom, I find languages like Noir confusing because it's unclear what is being constrained. I understand that everything is being constrained - that's the whole idea. But this abstraction can in some cases be offputting to the security/vulnerability minded Circom developer. My biggest complaint is the lack of transparency in Noir compilation, which seems to purely be an issue of tooling. I need to see the constraints to believe they are there.
Cryptographers that are implementing new proving systems need tools for working with ACIR. Having a playground, and possibly a grammar, for the IR may help develop mental models and make integrating Noir with emerging proof systems more approachable.
Methodology
This project will be authored in Rust using the Dioxus framework. It will target web and all desktop platforms.
ZKDK aims to be a development kit, not an IDE. We want developers to learn, debug, and optimize using ZKDK, but author their code in a separate, proper, editor. ZKDK will have rudimentary editing abilities, but will NOT focus significant effort to become an IDE.
Instead this project aims to be a collection of developer tools which should include, but not be limited to:
The project will include a file tree that can be loaded from a git url. On desktop this file tree may be bridged to the local system for direct file editing/observation.
All software will be licensed as either MIT or Apache-2.0. Independent modules will be broken out into reusable packages wherever possible.
Business Model
The web implementation will be hosted as a purely static website using Cloudflare workers. This should scale to > 10,000 daily active users without additional cost.
This project could be built into a SaaS CI integration that runs tests, generates documentation, ACIR, dependency analysis, etc. specifically for Noir. ZK packages may be complex/niche enough to justify having a CI service specifically for them. Customers would pay for the CI execution and storage/hosting of artifacts.
Timeline & Deliverables
All deliverables are assumed to be for all platforms (web and desktop) unless otherwise stated.
Month 1
Month 2
Month 3
Month 4
This is designed as a prelude to a proper package manager.
Month 5
Month 6
Team
Chance Hudson - former PSE engineer
Relevant experience: ashlang-ide, a web editor for a custom DSL (ashlang) designed to express R1CS programs. This implementation uses egui for rendering which I suspect will be inferior to Dioxus (for this particular use case).
Start Date
June 1, 2025
Questions
Are there any existing thoughts about inline documentation in Noir programs? e.g. for constructing something like docs.rs?
Is there an existing syntax/grammar for ACIR (e.g. assembly-ish)? Similar question for Brillig? It may be helpful to define a grammar that can be used to parse the IR/opcodes for external execution engines/provers.
Beta Was this translation helpful? Give feedback.
All reactions