project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Guessᶻᵏ Who?

A zk adaptation of the classic Guess Who game, implemented in Mina protocol using ZKnoid (and Protokit).

Guessᶻᵏ Who?

Created At

ETHOnline 2024

Winner of

trophy

3rd place

Project Description

"Guess Who" is a two-player game where each player tries to guess the identity of the other player's hidden character by asking a series of yes or no questions. By integrating with ZKnoid, the game would offer fast, gasless transactions and secure gameplay where each player's moves are verified without exposing their strategy by creating runtime modules for the game logic.

In this game, each player selects their character, verified using ZK proofs. Players take turns asking yes-or-no questions about the physical characteristics of the hidden character (e.g., "Does your character wear glasses?"). Based on the opponent's answer, players eliminate characters from their board that do not match the description.

GW's runtime module ensures that all questions and answers are processed within a zero-knowledge circuit, meaning that no sensitive information is revealed during gameplay. It also maintains the record for each game, the player's score, and the reproducible state of the game.

How it's Made

In this game, each player selects their character, verified using ZK proofs. Players take turns asking yes-or-no questions about the physical characteristics of the hidden character (e.g., "Does your character wear glasses?"). Based on the opponent's answer, players eliminate characters from their board that do not match the description.

GW's runtime module ensures that all questions and answers are processed within a zero-knowledge circuit, meaning that no sensitive information is revealed during gameplay. It also maintains the record for each game, the player's score, and the reproducible state of the game.

Zk Noid is the framework in use over here. The GuessWhoGame Runtime Module handles all the game logic. And for each move made in the game, it is sent to the chain for verification. Once verified by the ZKCircuits written in o1js, we then continue the game.

Some of the featuers included in the game are:

  1. Gasless Transactions
  2. Session Keys
  3. On Chain Matchmaking
  4. Zk circuit based logic
  5. Token bridging between Mina and Protokit
  6. Realtime listening to the chain for game events
  7. Fair and Transparent environment

Tech Stack for the project:

  1. ZkNoid
  2. o1js
  3. Mina
  4. Protokit
  5. NextJs
  6. NodeJS
  7. MongoDB
  8. GraphQL
background image mobile

Join the mailing list

Get the latest news and updates