Web3 & AI Sept 2026
Olympus
A browser game whose score the server recomputes by replaying the climb, because the player's own machine can't be taken at its word.
A climb the server can't see
Olympus is a 30-floor tower you climb in the browser, and how high you get is your score. The browser is the player's own machine, so nobody else could take its word for the score.
A secret level can't be played
The first plan kept the level's seed secret on the server, sent only its hash, and checked the score at the end. That cannot work: the browser has to build the same tower to let you climb it, and the first prototype also moved by frame time and used unseeded randomness for the lightning, so the same seed and the same key presses could play out differently on two machines.
Replay the climb instead of trusting it
I rejected both a trusted score and a secret level. The browser sends which button was held on each frame, two bits per frame, with the state hash at each stop, and the server re-runs the climb with the same engine; the replay is the result. The map is public on purpose because the challenge is playing it. What each pickup turns out to be comes from a second seed, locked in by its hash before the climb and revealed only in the response that ends the run.
Changing the rules without breaking old climbs
When we changed how pickups are chosen and made planks break on the third landing in a row, we hit the catch in our own design: any rule change changes the state hash, so a climb recorded under the old rules no longer replays under the new ones. The fix: each run pins its engine build and its rules, the old build is kept byte for byte, and the new pickup roll still draws exactly one random number per floor at the same point as before, so a seed builds the same tower under both rule sets.
Change one key press and the check fails
The physics uses whole numbers only (positions in 1/256 of a pixel), runs at a fixed 60 steps a second with seeded random streams, and hashes the full state at every rooftop stop. In a recorded test climb that reaches floor 15, we changed one frame out of 4,490 from right to left: the replay falls on floor 4 instead of reaching the floor-5 rooftop, and the check fails.
The score is recomputed, not trusted
The server no longer decides how high a climb got. It recomputes it from the inputs, and the same replay can be run again from the same inputs. Every number below comes from a command that can be run again at the commit named under the numbers.
As of commit 5f70ddf, 22 Oct 2026.
10of 10
recorded test climbs replay to the exact recorded state hash at every stop (4 under the old rules, 6 under the new)
0
mismatches between the archived old engine build and the new code on the old rules, over 597 climb segments from 300 seeds (plus 300 random-input climbs)
800
automated tests passing: 41 engine, 759 Worker (26 of them on run start, replay and reveal)
28,106bytes
the whole engine, one file with no runtime dependencies; rebuilding it gives the same bytes
Sources: the replay tool run on each of the 10 recorded test climbs, a comparison of the archived old engine build with the new code (node --experimental-strip-types showcase/proof/difffuzz.mjs "$PWD", committed in Olympus commit 865d594), the engine and Worker test suites (pinned at commit 5f70ddf), and a rebuild of the engine file. Test climbs were played by the autopilot.
Replay proves the moves, not the hands
A replay proves that these inputs reach this floor. It cannot prove a person pressed them, so a bot that plays in real time would pass it. Climbs are checked against real time and summit climbs are looked at by a person, but I won't call it bot-proof. The next gap to close is a recorded test climb that reaches the summit: as of 22 Oct, the deepest one ends on floor 15.