Sep 24, 2025

How We Brought zk-Proofs to Stylus with Noir

What happens when you combine Noir circuits, UltraHonk zk-proofs, and the WASM-powered flexibility of Arbitrum Stylus? You don’t just write code, you expand the design space for zk-dApps: from private governance to onchain games and privacy-preserving DeFi.



Over the past months, we’ve been working on one clear goal: enabling Noir zk-proofs to run natively in Arbitrum Stylus. Today, that’s not just possible, it’s practical. Here’s how we made it real, across three main fronts.

1. Core Technology

We started by adapting UltraHonk, a performant verifier for Noir’s Barretenberg backend. By refactoring its Rust implementation and wiring in Stylus-native precompiles, we produced a lean WASM-compatible verifier.

This laid the technical foundation: zk-proofs could now be verified directly inside Stylus smart contracts.

2. Security & Reliability

Trust is essential for zk systems. Since UltraHonk itself hasn’t yet been audited, we performed a deep internal review: improving error handling, resolving edge cases, and strengthening documentation.

The outcome was a more reliable, developer-ready codebase.

📄 Review Report

3. Developer Experience

Once the verifier was functional and reliable, we focused on usability:

  • Built a CLI tool that automates the entire Noir → Stylus pipeline, reducing setup to a handful of commands.

  • Developed two example dApps, zk-Voting and zk-Battleship, to showcase real-world zk workflows.

🎥 Here’s zk-Battleship in action: 

🎥 And here’s the Voting App! 

👉 Want to build it yourself?  Find all the docs here:
🌐 nsv.wakeuplabs.link

Why This Matters

This project makes zk-proofs a first-class feature of Stylus.

By combining Noir circuits with UltraHonk inside Stylus, developers now have:

  • A performant verifier running natively in WASM.

  • A CLI that lowers the barrier to entry.

  • Reference apps that show real-world zk workflows.

  • Documentation to accelerate adoption.

The result: zk isn’t just theory on Stylus anymore, it’s running code, ready to fork and build on.

Completion & Next Steps

With all five milestones delivered, this project is officially complete ✅

We now have:
✔️ A Stylus-compatible UltraHonk verifier
✔️ CLI tooling
✔️ Public documentation
✔️ Example dApps (Voting + Battleship)

Everything is open-source and live. We invite developers to experiment, contribute, and help shape the next wave of zk-dApps on Arbitrum.

👉 Full repo: github.com/wakeuplabs-io/noir-stylus-verifier

We want to thank the Arbitrum DAO and community for supporting this work. Now comes the exciting part: seeing what you’ll build with zk on Stylus.

🔁 Follow us on X, GitHub, and LinkedIn for more updates.


Over the past months, we’ve been working on one clear goal: enabling Noir zk-proofs to run natively in Arbitrum Stylus. Today, that’s not just possible, it’s practical. Here’s how we made it real, across three main fronts.

1. Core Technology

We started by adapting UltraHonk, a performant verifier for Noir’s Barretenberg backend. By refactoring its Rust implementation and wiring in Stylus-native precompiles, we produced a lean WASM-compatible verifier.

This laid the technical foundation: zk-proofs could now be verified directly inside Stylus smart contracts.

2. Security & Reliability

Trust is essential for zk systems. Since UltraHonk itself hasn’t yet been audited, we performed a deep internal review: improving error handling, resolving edge cases, and strengthening documentation.

The outcome was a more reliable, developer-ready codebase.

📄 Review Report

3. Developer Experience

Once the verifier was functional and reliable, we focused on usability:

  • Built a CLI tool that automates the entire Noir → Stylus pipeline, reducing setup to a handful of commands.

  • Developed two example dApps, zk-Voting and zk-Battleship, to showcase real-world zk workflows.

🎥 Here’s zk-Battleship in action: 

🎥 And here’s the Voting App! 

👉 Want to build it yourself?  Find all the docs here:
🌐 nsv.wakeuplabs.link

Why This Matters

This project makes zk-proofs a first-class feature of Stylus.

By combining Noir circuits with UltraHonk inside Stylus, developers now have:

  • A performant verifier running natively in WASM.

  • A CLI that lowers the barrier to entry.

  • Reference apps that show real-world zk workflows.

  • Documentation to accelerate adoption.

The result: zk isn’t just theory on Stylus anymore, it’s running code, ready to fork and build on.

Completion & Next Steps

With all five milestones delivered, this project is officially complete ✅

We now have:
✔️ A Stylus-compatible UltraHonk verifier
✔️ CLI tooling
✔️ Public documentation
✔️ Example dApps (Voting + Battleship)

Everything is open-source and live. We invite developers to experiment, contribute, and help shape the next wave of zk-dApps on Arbitrum.

👉 Full repo: github.com/wakeuplabs-io/noir-stylus-verifier

We want to thank the Arbitrum DAO and community for supporting this work. Now comes the exciting part: seeing what you’ll build with zk on Stylus.

🔁 Follow us on X, GitHub, and LinkedIn for more updates.


Our latest stories:

See all posts

LogoWakeup

© 2025 - WakeUp Inc. All Rights reserved.