Currently, developers using the Noir/Nargo stack with the UltraPlonk backend face a critical limitation: the lack of tools to convert zk-SNARK proofs generated via CLI (bb) into a format compatible with ZKVerify. This prevents direct frontend integrations with modern verifiers.
I have developed a functional Proof of Concept (PoC/MVP) that performs this conversion natively in JavaScript and in the browser, allowing proofs to be submitted directly to ZKVerify without manual CLI steps. I am now seeking funding to turn this PoC into a complete, community-maintained tool.
Developers working with UltraPlonk face the following barriers:
- Proofs generated by
bb proveare binary (.bin) and incompatible with ZKVerify. - Conversion to hex format is only possible via CLI, preventing frontend/browser usage.
- There is no official solution for runtime conversion via JavaScript.
Creation of an open-source JavaScript/TypeScript library that:
- Converts proofs and
Uint8Arraykeys generated by@aztec/bb.jstohexin Node.js or browser environments. - Generates the proof format accepted by ZKVerify from the UltraPlonk structure.
- Provides a user-friendly API for Web3 developers, DApps, and ZK tools.
This library is already functional as a PoC, with successful proof submissions to ZKVerify.
The developed PoC already demonstrates that:
- Conversion can be done entirely in Node.js without CLI.
- The converted format is accepted by ZKVerify's API.
- It can run in Node.js backend.
- 📦 Public NPM library (or update within
zkverify.js) - 📘 Documentation with 2 usage examples for direct submission to ZKVerify: frontend-only and frontend + backend.
- 🔬 Automated tests.
- 🌐 Video demo for both examples.
- 🧪 Benchmark scripts for conversion time and weight.
| Week | Activity |
|---|---|
| 1 | PoC refactoring, public interface definition |
| 2 | Implementation of proof and key conversion |
| 3 | Frontend support (browser-friendly) |
| 4 | Automated tests and documentation |
| 5 | Integration with ZKVerify + real-world example |
| 6 | Optimizations and official NPM + GitHub publication |
- Enables new frontend integrations with UltraPlonk.
- Encourages the use of the Noir/Nargo stack in real-world products.
- Strengthens the ZK ecosystem and interoperability with ZKVerify.

