NOTHING ON THIS PAGE IS A SUMMARY
Every number that decides a run is printed here in full. If a number in the game disagrees with a number on this page, the page is the bug report.
1 · THE SAUCER TABLE
The saucer's value is never random. It is a frozen 15-entry table, indexed by a counter that advances on every shot you fire — hit or miss — and resets at the start of each wave. Entry direction is the low bit of the same counter: even enters from the right, odd from the left.
| INDEX | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| POINTS | 100 | 50 | 50 | 100 | 150 | 100 | 100 | 50 | 300 | 100 | 100 | 100 | 50 | 150 | 100 |
Composition: five 50s, eight 100s, two 150s and exactly one 300, at index 8.
THE 23RD-SHOT RULE
Fire 22 shots and the pointer sits at index 8. Shot 23 lands on the 300, and every 15th shot after that does the same — shots 38, 53, 68 and so on. The rhythm a wave gives you is 22 · then 14 · then 14. The counter is drawn live in the HUD as a 15-tick ring with the 300 marked, because a mastery layer that requires a 1980 strategy guide is not a mastery layer.
Every SHOT transaction records the table index it advanced to, so this whole layer is auditable from the chain alone — you do not have to take our word for where the pointer was.
2 · THE SPAWN CYCLE
The formation's starting height steps down on a fixed nine-wave cycle and then repeats from wave 10. It never starts below Y=64. The cap is deliberate: difficulty plateaus, so a run is an endurance test with a knowable ceiling rather than an escalation you already know you cannot win.
| WAVE | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 → |
|---|---|---|---|---|---|---|---|---|---|---|
| SPAWN Y | 120 | 80 | 72 | 72 | 72 | 64 | 64 | 64 | 64 | repeats from 120 |
Bunkers are never rebuilt between waves. Whatever you eroded in wave 1 is still eroded in wave 6, while the rack starts 56 pixels lower. That is the entire difficulty curve, and it has no numbers in it that you did not create yourself.
3 · THE ALIEN RELOAD TABLE
How fast the aliens shoot back is indexed by your score, not by the wave number and not by a clock. A good player reaches their own cliff earlier because they earned it.
| SCORE REACHED | RELOAD DELAY | RELATIVE DENSITY |
|---|---|---|
| 0 – 511 | 48 | ×1.00 |
| 512 – 4,095 | 16 | ×3.00 |
| 4,096 – 8,191 | 11 | ×4.36 |
| 8,192 – 12,287 | 8 | ×6.00 |
| 12,288 and above | 7 | ×6.86 |
There are three alien shot types. Only one of them — the Rolling shot — tracks your column; the other two are pattern noise. Shots step 4 pixels normally and 5 pixels once eight or fewer aliens remain.
THE MARCH
Rack step interval = clamp(917 ms × alive / 55, 33 ms, 1100 ms), driven by a wall-clock
accumulator and never by a frame counter — so a 144 Hz monitor plays the exact same difficulty as a
60 Hz one. Your own kills are what accelerate the thing that is killing you. The rack steps 2 pixels
(the last alien 3 right, 2 left) and drops 8 pixels on the step after it touches an edge.
You lose when the rack reaches the cannon's row, not the bunker line.
4 · SCORING
| TARGET | POINTS | NOTE |
|---|---|---|
| Bottom two ranks (22 aliens) | 10 | closest, fastest to farm |
| Middle two ranks (22 aliens) | 20 | |
| Top rank (11 aliens) | 30 | furthest, slowest — the one bullet is the price |
| Saucer | 50 – 300 | from the published table above |
| Maximum per rack | 990 | (22×10) + (22×20) + (11×30) |
Extra base: exactly one per run, at 1,000 points (operator switch: 1,000 or 1,500). There is no repeating extra-life threshold.
Clean-wave streak: clear a wave without any bunker dropping below 90% integrity and the multiplier climbs ×1.0 → 1.1 → 1.2 → 1.3 → 1.4 → ×1.5. The first breach resets it. It is off in PURE '78.
5 · THE TAPE
Every payload broadcast by a run carries the same header, then a body that depends on the kind:
OP_FALSE OP_RETURN <push N> 'MINV' 4 bytes, ASCII the app tag ver 1 byte 0x01 kind 1 byte see the fee table below seq 2 bytes, big-endian the run's monotonic event counter body kind-specific
THE DIGEST
The closing SEAL carries tapeDigest, computed like this:
tapeDigest = sha256( concat( payloads sorted by ASCENDING seq ) )[0 .. 15]
// 15 bytes = the first 30 hex characters
To verify a run yourself: take the funding txid (the tape root), walk its sub-chains on any
block explorer, decode each OP_RETURN, sort by seq, concatenate, hash, and compare
against the SEAL. A match is VERIFIED. A missing or reordered event breaks the digest.
The replay page does exactly this and nothing more.
seq field and from
the SEAL digest that binds the complete set — not from the spend graph, because a run uses
two parallel sub-chains. We are not claiming wall-clock ordering across chains, and we will not
pretend to.
6 · WHAT EACH TRANSACTION COSTS
Fee formula, identical for every kind:
max(25, ceil((209 + payloadLength) × 0.12)). You pay the miner. The house takes
nothing out of these.
| KIND | BYTE | WHEN | BODY | SATS |
|---|---|---|---|---|
| SHOT | 0x01 | you pull the trigger | 11 B | 27 |
| RESOLVE | 0x02 | that bullet resolves | 13 B | 27 |
| UFO | 0x03 | the saucer is destroyed | 16 B | 27 |
| WAVE | 0x04 | the last alien of a rack dies | 24 B | 28 |
| DEATH | 0x05 | a base is lost | 12 B | 27 |
| CONFIRM | 0x06 | a real block landed — off by default | 15 B | 27 |
| ECHO | 0x07 | THE CHRONICLE's sweep — perk only, batched | 16 B | 27 |
| TURRET | 0x08 | THE MINTER's turrets — perk only, batched | 16 B | 27 |
| WING | 0x09 | THE CYBORG's wingman — perk only, batched | 16 B | 27 |
| SEAL | 0x0A | the closing record | 40 B | 30 |
| SPLIT | — | fan the funding into 2 sub-chains | — | 41 |
| SWEEP | — | return every leftover sat to you | — | 120 |
WHOLE-RUN ARITHMETIC
| RUN | INTERACTIONS | SATS | SUSTAINED |
|---|---|---|---|
| Short — 3 waves, 250 shots | 509 | 13,910 | ~2.8 tx/s |
| Median — 5 waves, 400 shots | 814 | 22,147 | ~3.0 tx/s |
| Long — 8 waves, 620 shots | 1,259 | 34,192 | ~3.2 tx/s |
A default session funds 250,000 sats — about eleven median runs from one wallet popup. Whatever you do not spend is swept back to your own address when the run ends, and a session abandoned by a page reload is swept on your next visit. Nothing is ever stranded.
THE HOUSE CUT
Session rake: 0 basis points. Every money feature in this build ships switched off, and the rake is one of them. If it is ever turned on, the split becomes a visible second output in your own funding transaction — auditable on WhatsOnChain, per transaction — and the exact number replaces this paragraph on this page before it goes live, not after.
7 · THE METERING RULES
These exist so the game can never flood the relay, and they are hard limits in code, not guidelines:
- At most 2 transactions per frame. A third is deferred to the next frame — the alien plays its explosion but is not removed until its emission is reserved, so the deferral is free to look at.
- A global 8 transactions per second token bucket. Refusing a shot shows MEMPOOL FULL.
- Two parallel sub-chains, each sleeping 45 ms after a successful broadcast. Throughput comes from parallel chains, never from removing the throttle.
- The fire governor: you cannot fire while more than 3 events are queued. The depth is on screen at all times, so a blocked trigger is never mysterious.
- There is no screen-clear primitive anywhere in this build. No smart bomb, no nuke, no column laser. Pierce is hard-clamped at 2. Every composed ability is a metered sweep capped at one removal per 60 ms.
8 · WHAT RANKED REFUSES
Ships are cosmetic in RANKED, and it is enforced in four independent places rather than promised in one:
- Perk resolution returns an empty set whenever the mode says so, whatever hull is selected.
- Casual-only hulls are refused outright and fall back to the stock cannon.
- The server rejects any submission whose perk hash is not the hash of the empty set, or whose seed is not today's daily seed.
- The strongest one: autonomous perks emit their own transaction kinds. An ECHO can only exist if THE CHRONICLE was flying. The verifier rejects any ranked tape containing a perk-only kind — so fairness is not a promise, it is an audit anyone can run.