Mechanism

Anti-fraud is the product

A location pin and a photo are cheap to fake. Parallax stacks a live code, a second camera, web reverse-search, and staked dispute so the cheap fake dies on-chain.

01

Code, not a watermark you typed

request_proof_code hashes the caller, quest, time, nonce, and contract address into an 8-character code with a 90-second TTL. Another address cannot spend it. The vision model is not told the value — it must transcribe what is in the frame. On-chain comparison fails a gallery photo, a digital overlay, or a screenshot.

02

One block per dispute stage

evaluate_submission is a single write. Inside it, the leader fetches the image over the live web, reverse-searches it, geocodes the claimed GPS, and runs a vision prompt. Validators re-run the same work and accept only when decision fields match (booleans exact, scores ±10). This is not three transactions and not strict equality on LLM prose. Each consensus-producing function holds exactly one gl.vm.run_nondet_unsafe block (web + vision): resolve_challenge (disputed path) and escalate_final each run one additional independent block.

03

Money moves after the window

Accepted proofs enter a 24-hour challenge window. Unchallenged, anyone can finalize and release. Disputes re-run the same block. Escalation is the last on-chain round. False witnesses are auto-slashed; leftovers can be swept after a day so stake never sits.

04

Admin is pause-only

pause_contract blocks new quests, codes, and submissions. It cannot change scores, pick a winner, drain escrow, or skip the challenge window. There is no set_owner and no upgrade hook.