Proof of Play
Every scorecomes with proof.
That's what POP stands for. Before a run counts, our server replays it, checks that it was played live, and looks at how every tap was made. Every run gets its own public proof.
- Runs replayed
- –
- Taps checked
- –
- Runs thrown out
- –
- Sent to a person
- –
What every run goes through
Seven checks, in three groups. Holding a token never skips one.
Thrown out if it fails
These are hard proof. A run that fails one never reaches the board.
Replayed on our server
Your browser only sends the moments you tapped. The server replays them on the same level and works out the score itself.
Played live, at real speed
Every run starts with a signed ticket and checks in every 5 seconds. Slow motion, pausing and rewinding all show up.
One of a kind
Each ticket counts once, and a run that copies someone else's taps is refused.
Sent to a person if it trips
These look for a machine at the controls. A run that trips one stays on the board, but nothing is paid until a person has looked.
Real taps
Every tap has to come from a real touchscreen, mouse, pen or key. Taps made by a script don't count as real.
Human touch
A finger holds a tap for 50 to 150 ms, never the same twice, and never lands on the same spot. Automation tools press for 0 ms, or for exactly the same time, every time. It takes 8 taps to judge.
Human timing
People hit the exact frame sometimes and slip by a frame or two often. A run that hits the exact frame on 80% of its hardest taps, or goes 30 hard taps without a single slip of 2 frames, gets a second look.
Before any money moves
The last check is a person.
Watched by a person
The top 3 replays of every pot are watched before payout. Cheating disqualifies a run, and the next player moves up.
We attack it ourselves
We built 14 ways to cheat and ran each one 200 times through the same checks a real run goes through. Here's what happened, including what got through.
| Attack | What happened | Caught | Caught by |
|---|---|---|---|
| Edited game that sends a fake scoreChanges the game in the browser so it reports a score 10 times higher. | Fake score ignored | 100% | Replayed on our server |
| Made-up inputsSends taps the game could never have produced: out of order, too fast, or after the tower fell. | Thrown out | 100% | Replayed on our server |
| Slow motionRuns the game 25% slower to make the timing easier. | Thrown out | 100% | Played live, at real speed |
| Pausing mid-runFreezes the game for 20 seconds to rest, then carries on. | Thrown out | 100% | Played live, at real speed |
| RewindingSaves the game, and replays a bad drop until it lands (a save-state retry). | Thrown out | 100% | Played live, at real speed |
| Copying a top runResubmits another player's run under a new name, as is or with small edits. | Thrown out | 100% | One of a kind, Replayed on our server |
| Bot that posts straight to our APISkips the browser: works out the taps and sends them with the right check-ins. | Sent to a person | 100% | Real taps |
| Script that fakes taps in the pageA browser extension or console script that triggers the game's tap events itself. | Sent to a person | 100% | Real taps |
| Browser automationPlaywright, Puppeteer or Selenium clicking the game, with default settings. | Sent to a person | 100% | Human touch |
| Macro toolAutoHotkey-style key presses, each held for a set time. | Sent to a person | 100% | Human touch |
| Frame-perfect botReads the game and drops every block on the exact frame, with human-looking taps. | Sent to a person | 100% | Human timing |
| Near-perfect botHits the exact frame 70% of the time and is never more than a frame off. | Sent to a person | 100% | Human timing |
| Bot with fake small errorsFrame-perfect, but nudged a frame early or late at random so it doesn't look perfect. | Sent to a person | 95% | Human timing |
| Bot built to copy a personCopies human timing (slips included) and human-looking taps. Our own dev bot works this way. | Got through | 0% | Nothing automatic. A typical run beats 97% of players' runs. |
Run on 2026-10-16 on Candle Stack, Moon Tower, Brick by Brick. The same checks sent 0% of 2,000 simulated players to review by mistake, and 5% of the very best ones. Simulated players aren't real ones, so we'll retune on real runs after launch.
Timing fingerprints
Every run has one: each judged tap, by how early or late it was. Here's what three of our bots look like. Every run's proof page shows its own.
Frame-perfect bot
Sent to a person: too precise
- On the exact frame80
- 1 frame off0
- 2 or more off0
Bot with fake small errors
Sent to a person: never slips
- On the exact frame8
- 1 frame off29
- 2 or more off0
Bot built to copy a person
Got through: looks like a person
- On the exact frame14
- 1 frame off13
- 2 or more off9
What we can't catch yet
A bot built to copy a person, slips and all, passes every automatic check. No check that only sees taps can tell a perfect imitation from a person. Our own dev bot works this way, and it passes too.
What such a bot can't do is play much better than people without tripping the timing checks. The closer it gets to perfect, the more of them it trips. Every top 3 run is watched by a person before payout, and paid pots cost money for every try.
We keep the checks honest by publishing this page, and we retune them on real runs. Holding $POP never changes any of it.