Noirdle is a privacy-preserving word guessing game built using Noir and React. It combines the fun of Wordle with the power of zero-knowledge proofs, ensuring that your guesses remain private while still verifying their correctness.
- Overview
- Prerequisites
- Installation
- Running the Game
- How to Play
- Project Structure
- Technical Stack
- Acknowledgments
In Noirdle, players attempt to guess a 5-letter word within 6 attempts. After each guess, the game provides feedback using colors:
- Green: Letter is correct and in the right position
- Yellow: Letter is in the word but in the wrong position
- Gray: Letter is not in the word
What makes Noirdle special is that it uses zero-knowledge proofs to verify guesses without revealing the solution, providing a unique blend of gaming and cryptographic privacy.
- Node.js (v18 or higher)
- Rust (latest stable version)
- Nargo (Noir's package manager) v0.36.0
- Clone the repository:
git clone [https://github.com/ximon-x/noirdle](https://github.com/ximon-x/noirdle)
cd noirdle
- Install the circuit dependencies:
cd noirdle
nargo check
- Install the client dependencies:
cd ../client
npm install
- First, compile the Noir circuit:
cd circuit
nargo compile
- Start the development server:
cd ../client
npm run dev
- Open your browser and navigate to
http://localhost:5173
- Type any 5-letter word and press ENTER
- The game will generate a zero-knowledge proof to verify your guess
- Color-coded feedback will show how close your guess was
- Continue guessing until you find the word or run out of attempts
- Frontend: React with TypeScript
- Styling: Tailwind CSS
- Zero-Knowledge Proofs: Noir
- Proof Generation: Barretenberg
- Build Tool: Vite
/circuit
: Contains the Noir circuit implementation/client
: React frontend application/client/src/components
: React components/client/src/lib
: Utility functions and types
- Built during the ZK Encode 2024 Q4 Bootcamp
- Powered by Aztec Noir