Bitcoin Core Tests prüfen jede Änderung an der Referenzsoftware. Doch wer prüft die Tests selbst? Mutationstests bauen absichtlich Fehler ein und zeigen so, wo die Prüfung Lücken hat.
Bitcoin Core Tests als Sicherheitsnetz
Bitcoin Core Tests sollen sicherstellen, dass keine Änderung an der Referenzsoftware das Netzwerk beschädigt. Doch ein Test ist selbst nur Code und kann Fehler übersehen. Dem Bitcoin-Entwickler Greg Maxwell wird dazu ein zugespitzter Gedanke zugeschrieben: Die Software prüft den Test, und wer den Test prüfen will, muss die Software absichtlich kaputt machen.
Bitcoin Core arbeitet mit mehreren Prüfebenen. Unit-Tests kontrollieren einzelne Funktionen isoliert. Funktionale Tests starten echte Knoten und sprechen sie über RPC- und P2P-Schnittstellen an. Sie prüfen, ob mehrere Knoten untereinander korrekt Blöcke und Transaktionen austauschen.
Hinzu kommt Fuzzing, bei dem Programme mit zufällig erzeugten Eingaben beschossen werden. Diese Schichten fangen viele Fehler ab, bevor Code in eine Version gelangt. Ob sie wirklich alles Wichtige abdecken, lässt sich aus ihnen selbst aber nicht ablesen.
Mutationstests prüfen die Prüfer
Genau hier setzt der Test des Tests an. Beim Mutationstest werden gezielt kleine Fehler in den Quellcode eingebaut, etwa ein vertauschtes Vergleichszeichen oder eine gelöschte Bedingung. Schlagen die Tests danach fehl, haben sie den sogenannten Mutanten erkannt. Laufen sie trotzdem fehlerfrei durch, ist eine Lücke gefunden.
Eine Studie aus dem Jahr 2023 hat dieses Verfahren auf Bitcoin Core angewendet. Ergebnis: Fuzzing und funktionale Tests ersetzen einander nicht, sie decken unterschiedliche Schwachstellen auf. Gerade die Kombination mehrerer Verfahren macht die Prüfung belastbarer. Inzwischen veröffentlicht das Projekt eigene Berichte dazu, wie gut Bitcoin Core Tests eingebaute Mutanten erkennen.
Bitcoin Core Tests und dezentrale Kontrolle
Für die Frage, ob Bitcoin Core dezentral ist, sind die Tests mehr als Technik. Der gesamte Code und alle Bitcoin Core Tests sind öffentlich. Jeder kann sie ausführen, Mutanten einbauen und Schwächen melden, ohne um Erlaubnis zu fragen. Kein Unternehmen und keine Behörde entscheidet, welche Prüfung als ausreichend gilt.
Ein Test ist nur so gut wie seine Fähigkeit, Fehler tatsächlich zu erkennen, und das lässt sich nur durch bewusstes Zerstören prüfen. Dahinter steht ein Gedanke, den Friedrich August von Hayek für Märkte beschrieben hat. Wissen ist verstreut, und keine zentrale Stelle kann alle Fehler vorhersehen. Offene Prüfverfahren nutzen dieses verstreute Wissen, weil viele unabhängige Entwickler unterschiedliche Schwachstellen finden.
Für Bitcoin ist das zentral. Ein Geld mit einem fixen Angebot von 21 Mio. BTC und Proof-of-Work verdient nur Vertrauen, wenn die Regeln im Code verlässlich durchgesetzt werden. Harte Geldregeln brauchen deshalb harte Prüfungen, die jeder nachvollziehen kann.
Einschränkend gilt: Öffentlicher Code bedeutet nicht, dass ihn tatsächlich viele prüfen. In der Praxis trägt eine kleine Gruppe erfahrener Entwickler einen Großteil der Prüfarbeit. Auch Mutationstests beweisen nicht, dass Software fehlerfrei ist, sie zeigen nur, wo Tests schwach sind. Offenheit ist daher eine Voraussetzung für Dezentralität, keine Garantie.
Im vorherigen Bildungsartikel berichteten wir über Bitcoin Code Integration: Jeder Knoten entscheidet selbst.





