Turbo Noir ZK gaming framework #8682
Chomtana
started this conversation in
[NRG#4] Developer Tools
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
Turbo Noir is a framework that lets you add Zero-Knowledge (ZK) proofs to your games or apps — or build new ZK games from scratch — without knowing any cryptography. Just write your game rules once using a simple action → reducer style, and the framework takes care of all the proof and blockchain steps.
Motivation
We have spent the past year trying to make fair peer-to-peer games. The big problem: without a central server, cheating is easy, and even fancy voting systems (BFT consensus) fail if all players cheat. ZK proofs looked like the only real fix.
But building a ZK circuit for even a tiny 2048 game was painful:
Frameworks such as RISC-0 and SP1 let us write circuits in Rust and sped things up, but we still needed an extra Groth16 proof (≈1 minute) for on-chain verification, and those framworks can’t do recursive proofs like Noir can.
Even with Rust or Noir you still face tough chores: checking signatures, hashing moves, keeping data in sync across front end, back end, prover, and smart contract and managing multiplayer sessions.
Moreover, most games require randomness, but secure and fair randomness has never been implemented in any ZK framework.
Turbo Noir solves these problems. It ships with:
And while it’s built for games, you can use the same framework to build any verifiable app (vApp) that needs trust-free proofs.
Methodology
We already have Turbo’s ZK gaming framework running on SP1 and we can port it to Noir, so here’s the developer journey on Turbo SP1:
Clone the boilerplate
(It works, but we admit the flow could be smoother—that’s what the next iteration is for.)
Define your game state
Open
lib/src/state.rs
and define the struct that captures every value your game needs to track.In
lib/src/action.rs
, create anenum
for every kind of move a player can make.Implement how each action updates the state in
lib/src/reducer.rs
. The reducer takes the current state plus an action and returns the next state—nothing else to worry about.Launch the websocket game server
One command boots a local server that automatically handles player connections and pipes every move through the reducer while queuing up the ZK proofs.
Plug in your front-end
Whether you’re using Unity or a browser build, our SDK wires your client to the websocket layer and takes care of all the operations from game start to proof generation.
Deploy to Turbo Cloud
When it all looks good, deploy your module to Turbo Cloud. We scale the websockets and send proof generation request to the prover network for you.
If this grant is approved (or, even better, you back us with investment), we’ll port the entire stack to Noir, build a few example games and help with teams who want to build ZK game on Noir and Aztec
Business Model
TODO
Timeline and Deliverables
Team
Chomtana Chanjaraswichai (Lead)
[email protected]
Alex Westlake
[email protected]
Start Date
1 July 2025
Beta Was this translation helpful? Give feedback.
All reactions