My Journey into ZK: From HTML to a Verifiable High Score



I coded my first website when I was 12. Since then, I have only done small HTML+CSS stuff websites here and there - nothing complicated.
But everything changed with the AI boom. I was motivated to personally try out using zkVerify.io - the product I’ve been speaking out with potential partners and in conferences. How best to really understand one’s own product than to actually use it?
So I gathered together my 18 years of scuba diving experience, my Rescue Diver certification knowledge, and the endless hours I’ve spent playing casual strategy games - to vibe code something super simple, with the main aim of dealing with Circom, handling a ptau ceremony, and integrating zkVerify from scratch. (I used the simplest version of zkVerify by using the API.)

👆 Asking for help in our internal Slack channel.
My first time sitting down doing this, I spent 10 hours on downloading all the necessary files in Terminal (I figured out the ptau file), and yet I kept getting stuck with the same error: “snarkjs or groth16 not loaded. Please check your internet connection or snarkjs version."
Unsatisfied, I went to sleep. The next day, the wonderful zkVerify DevRel, Arman, spent an hour with me troubleshooting, and voilà! We finally had the first successful test proof sent from Dive for Atlantis:

👆 The first proof sent from Dive for Atlantis. 🔱
Fast forward to today, the game is now live on the zkVerify ProofPoints dashboard.

👆 Early version of the game.

👆 How the game looks like now.
Why are zero-knowledge proofs useful here? On the ProofPoints platform, quests have real value, and therefore we must answer the question of trust. How do we prove a high score is legitimate?
Simply put, zero-knowledge proofs use mathematics to prove a certain computation happened correctly, letting you trust the result of an action. We can thus verify a high score is legitimate without needing to see the gameplay that produced it. In Dive for Atlantis, you could have had 15 bar of air left or zero - it doesn’t matter. What matters is that you played the game, and there is an onchain proof of it.
This makes the Leaderboard verifiable and cheat-proof. No one — not even the creator of the game (in this case, me) — can hack the database and input an artificial high score.

👆 Leaderboard

👆 Proof of score.
While this game is a casual one, you can imagine extending this concept to higher-stakes environments from competitive esports tournaments to verifiable online voting.
While I’m still not entirely sure I can explain to you how a Powers of Tau ceremony works, I’m pleased at where my vibe coding journey has taken me. It was a fairly steep learning curve, but the power to build applications with mathematical trust is no longer limited to seasoned cryptographers. It’s for the everyday builder who has a provably fair idea that can, with a little persistence, be turned into reality.
I’ve proven that the game is fair — now it’s your turn to prove your chops in learning about zk.
Check out Dive for Atlantis and many other quests on the zkVerify ProofPoints dashboard and beat the high scores!