- Avg
- β
- Peak sec
- β
- Fees
- 0.0003 BSV
- Bots
- 1
- Fan-outs
- 1
- Median
- β
Fan-out only: checked the split lands before any shots.


BSV stress test Β· Halloween Β· 31 October 2026
The night the bots stormed the node
transactions fired at the Bitcoin SV network by 20 TERRORNODE bots in one day, every one a real, signed, fee-paying transaction.
Run 3. The busiest full minute averaged 1,599 tx/s.
Run 6: 1 h 25 min non-stop, 851 tx/s on average.
About $59 at $17.19/BSV: 37.6 sats a transaction, fan-outs included.
Median from send to accepted in the big runs; 95% inside about 2.5 s. Run 7: 0.33 s.
Bytes sent to the network: shots of about 300 to 390 bytes each.
Each one split a coin into 10,000 to 15,430 lanes for the bots to fire down.
Shots whose status we asked for after sending. 89,243 were already seen by the network; 0 rejected, 0 orphaned.
First shot 04:33 UTC, last 18:25 UTC. The heavy runs went from 12:47 to 18:25.
Minute by minute
Accepted transactions a second, averaged over each minute, from the bots' own logs. The gaps are the pauses between runs, while we fixed whatever the last run had found.
Run by run
Each run ended on purpose: a safety stop, a budget, or a finish. When broadcast errors passed 5% of the last 5,000 sends, the runner stopped itself. Those errors were timeouts it retried, not rejections. There is no gap in the numbering: run 2 was stopped before it fired a shot.
Fan-out only: checked the split lands before any shots.
Finished: all 10,000 shots accepted.
Safety stop: broadcast errors passed 5% of the last 5,000 sends.
Stopped by hand before any shots: 20 fan-outs sent at once timed out at the broadcaster. Fixed in #208 (fan-out cap and stagger).
Safety stop: broadcast errors passed 5% of the last 5,000 sends.
Safety stop: broadcast errors passed 5% of the last 5,000 sends.
Safety stop: broadcast errors passed 5% of the last 5,000 sends.
The biggest run. It wrote no summary; these figures are its last log line.
Finished at its 1 BSV budget (the fees set aside for the shots it had planned). Not one broadcast error.
What one shot looks like
Every shot is a tiny transaction: one input, two outputs, about 260 to 390 bytes. It spends the shot before it in its lane, pays a fee of about 27 to 36 sats, passes the rest on, and shouts a message in an OP_RETURN.
The OP_RETURN, push by push
tokenblaster.lolWho fired it: the site tag every TokenBlaster shot carries.(ammo)A short binary field: the kind of round fired.148489The shot's number in that bot's run.terrornodeThe game.ππ»π PLAY TERRORNODE Β· tokenblaster.lol/arcade/terrornode ππ»πThe flag. From run 4 on, each bot rotated through 16 flags, one per shot.Outputs: the OP_RETURN (0 sats) and the lane's change, which the next shot spends.
terrornode-bot03
ππΉπΊπβ οΈπ₯ππ» PLAY TERRORNODE Β· tokenblaster.lol/arcade/terrornode πΉπ§π·οΈπ¦πππ»π
ππ»πππ¦π·οΈπ§πΉ bWalletX Β· bwalletx.com πΉπ§π·οΈπ¦πππ»π
How it ran
Each bot splits one coin into a fan-out of 10,000 to 15,430 small outputs, its lanes. Only a few fan-outs go out at a time and the bots start a few seconds apart, so the broadcaster isn't swamped with half-megabyte transactions.
Once a fan-out is seen by the network, the bot fires down every lane: each shot spends the last one, so one lane is a chain of shots. Signing runs on one Mac mini, about 850 a second in the big runs.
Shots go out in batches to GorillaPool's Arcade broadcaster, at 100 sats per kB. About 1 in 100 shots is checked again afterwards, to catch rejections and orphans.
Spending caps per bot and per run, a kill switch, an automatic stop at 5% broadcast errors, and a journal of spent coins on disk, so a coin is never spent twice, even after a restart.
On chain
Blocks 973,462 to 973,488 were mined while our runs were landing. The whole network was stress testing that day, so these counts include every team's traffic, not just ours. Two blocks topped 3 million transactions: 973,465 (3,184,172, mined during run 3) and 973,479 (4,014,228).
| Block | Mined (UTC) | Miner | Transactions | Size | |
|---|---|---|---|---|---|
| 973,462 | 12:40 | TAAL | 136,071 | 59 MB | |
| 973,463 | 12:50 | Kryptex | 27 | 10 kB | |
| 973,464 | 12:55 | GorillaPool | 279,038 | 99 MB | |
| 973,465 | 13:56 | SA100 | 3,184,172 | 911 MB | |
| 973,466 | 14:01 | CUVVE | 257,465 | 70 MB | |
| 973,467 | 14:02 | TAAL | 13,721 | 3 MB | |
| 973,468 | 14:05 | SA100 | 112,751 | 36 MB | |
| 973,469 | 14:46 | GorillaPool | 1,440,309 | 500 MB | |
| 973,470 | 14:48 | CUVVE | 372,078 | 131 MB | |
| 973,471 | 14:58 | qdlnk | 628,866 | 228 MB | |
| 973,472 | 15:09 | CUVVE | 930,983 | 316 MB | |
| 973,473 | 15:46 | CUVVE | 2,319,048 | 826 MB | |
| 973,474 | 15:49 | KardanPool | 101,332 | 28 MB | |
| 973,475 | 16:00 | CUVVE | 557,146 | 282 MB | |
| 973,476 | 16:17 | KardanPool | 898,384 | 202 MB | |
| 973,477 | 16:23 | qdlnk | 356,035 | 121 MB | |
| 973,478 | 16:49 | Kryptex | 84 | 25 kB | |
| 973,479 | 17:11 | CUVVE | 4,014,228 | 898 MB | |
| 973,480 | 17:30 | Kryptex | 9,569 | 2 MB | |
| 973,481 | 17:31 | SA100 | 916,160 | 194 MB | |
| 973,482 | 17:31 | qdlnk | 24,182 | 5 MB | |
| 973,483 | 18:04 | Kryptex | 318 | 84 kB | |
| 973,484 | 18:16 | GorillaPool | 1,052,750 | 251 MB | |
| 973,485 | 18:44 | Mining-Dutch | 1 | 0 kB | |
| 973,486 | 18:51 | Kryptex | 51 | 18 kB | |
| 973,487 | 18:56 | Kryptex | 5 | 3 kB | |
| 973,488 | 19:07 | TAAL | 371,164 | 129 MB |
Morning after
When the runs stopped, thousands of lanes still held a few sats each. On 1 November, 1,800 sweep transactions (320 + 1,480) gathered them up. The leftover, 0.69793933 BSV, went home in a single transaction with 1,801 inputs.
Don't trust, verify
All 990 fan-out transactions, with run and bot, as a text file. Each fan-out's outputs lead to the lanes of shots that spent them.
bsv.lol shows BSV transactions live and files every shot under its game, "terrornode". For one transaction or block, its links go to BananaBlocks, and so do the links on this page.
The small print