cd .. postmortem/
backtrace.
Postmortem

Der Off-by-One, der eine Chain forkte

one character, ninety minutes, two truths

autorElias Brandt
datum2026-08-30
lesezeit7 min
postmortem/off-by-one-chain-fork · session.log

diff client_a client_b

- if (ops.length > MAX_OPS) reject(); + if (ops.length >= MAX_OPS) reject();

git log --oneline -- validation.rs

4.811.999 Blöcke lang egal: kein Block hatte je exakt MAX_OPS Operationen. Block 4.812.003: exakt MAX_OPS. Zwei Drittel der Validatoren: gültig. Ein Drittel, ~40% der Chain-Power: ungültig.

echo $STATUS

Fork für ~90 Minuten. Beide Zweige intern konsistent, beide falsch im Vergleich zueinander. Tests deckten "zu viel" und "zu wenig" ab, nie den exakten Grenzwert selbst.

fix --apply

Ein Zeichen geändert. Zweig mit kleinerer Wirtschaftsgewichtung verworfen. Neue Regel: jeder MAX_*-Vergleich braucht einen Testfall exakt an der Grenze, nicht nur knapp drüber und drunter.

Ein Grenzwert, der nur einmal in Millionen Blöcken erreicht wird, ist kein Randfall. Er ist ein Termin, der noch nicht stattgefunden hat.

Postmortem-Report, intern