← Back to home

Guessᶻᵏ Who?

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

Screenshots

Guessᶻᵏ Who? screenshot 1
Guessᶻᵏ Who? screenshot 2
Guessᶻᵏ Who? screenshot 3
Guessᶻᵏ Who? screenshot 4
Guessᶻᵏ Who? screenshot 5
Guessᶻᵏ Who? screenshot 6

Problem Statement

"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.

Solution

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:Gasless TransactionsSession KeysOn Chain MatchmakingZk circuit based logicToken bridging between Mina and ProtokitRealtime listening to the chain for game eventsFair and Transparent environmentTech Stack for the project:ZkNoido1jsMinaProtokitNextJsNodeJSMongoDBGraphQL

Hackathon

ETHOnline 2024

2024

Prizes

  • 🏆

    zkGaming on Mina3rd place

    Mina Protocol

Contributors