The problem Pictionary Proof solves
We (partially, doesn't 100% work) implemented a game that works as follows:
- Users join, set start time
- The smart contract randomly and secretly picks 1 out of 10 cathegories
- Each user submits a drawing via the webapp
- A neural network (CNN classifier for Imagenette, a 10-classes version of Imagenet, only about 10^6 parameters) classifies the user submission. We compute a proof of the forward pass of the neural network.
- A Risc0 zkVM compares the evaluation of the submisssion (a vector with 10 entries) against the secretly picked class and computes a score.
- whoever has the best score wins, I.e. whoever submitted the drawing that the classifier thought was closest to the secretly picked class.
Challenges we ran into
-
We had to find a neural network that was viable for snarking. Originially we tried the smaller versions of MobileNet (ultra-small classifiers for Imagenet), but gave up on that because the RAM requrements were to big to deploy that anywere.
-
We found and error in out original design: In the original verision, the secret pick by the game contract would have been visible to the players in the zkVM journal for the scoring of the frst round.