46 / 736STALE

Stale Block

Ein gültiger Block außerhalb der Hauptkette

Ein Stale Block ist ein gültiger Bitcoin-Block, der auf einem Seitenzweig zurückbleibt. Dazu braucht es keinen Betrug: Zwei Miner können fast gleichzeitig einen Block finden, bevor das Netzwerk auf einem der beiden Zweige weiterarbeitet.

Ein Stale Block erfüllt die Bitcoin-Regeln, gehört aber nicht zur aktiven Kette. Das ist die Historie, anhand derer ein bestimmter Knoten Bestätigungen zählt und verfügbare Guthaben ermittelt. Ein Knoten ist ein Computer, der Blöcke und Transaktionen überprüft. Ausschlaggebend ist die angesammelte Mining-Arbeit gültiger Zweige. Für den Empfänger einer Zahlung kann das bedeuten, dass eine Bestätigung wegfällt und er erneut warten muss — nicht, dass seine Bitcoin automatisch verloren sind.

Stellen wir uns die Miner Anna und Pavel vor. Beide arbeiten am Nachfolger desselben letzten Blocks. Anna findet einen neuen Block, doch bevor Pavel davon erfährt, findet auch er einen. Beide können gültig sein und lediglich etwas unterschiedliche Transaktionen enthalten. Die Knoten prüfen Blöcke und Transaktionen. Sie erfahren in unterschiedlicher Reihenfolge von den Blöcken und folgen kurzzeitig verschiedenen Kettenspitzen. Sobald ein gültiger Zweig mehr Arbeit angesammelt hat und die Knoten ihn geprüft haben, wechseln sie auf diesen Zweig. Ein Block auf dem aufgegebenen Zweig heißt Stale Block. [1]

Bitcoin braucht eine gemeinsame Historie, damit dieselben Mittel nicht zweimal erfolgreich ausgegeben werden können. Es reicht deshalb nicht, dass beide Blöcke für sich genommen die Regeln erfüllen. Der Knoten muss zusätzlich entscheiden, welchem gültigen Zweig er folgt. Blockgültigkeit und Kettenauswahl sind zwei verschiedene Fragen. Ein Stale Block kann einen korrekten Proof of Work, also einen Nachweis der Mining-Arbeit, gültige Transaktionen und gültige Signaturen enthalten und trotzdem außerhalb der gewählten Historie liegen. Damit gilt er nicht als fehlerhaft oder betrügerisch. [1] [2]

Nehmen wir an, Pavels Block enthielt Ihre Zahlung und Ihre Wallet zeigte eine Bestätigung. Setzt sich Annas Zweig durch, hängt das Ergebnis von dessen Inhalt ab. Dieselbe Transaktion kann auch dort enthalten sein und bestätigt bleiben. Andernfalls kann sie in den Mempool zurückkehren, die lokale Liste unbestätigter Transaktionen eines Knotens, und auf einen weiteren Block warten. Das ist aber nicht garantiert: Sie muss weiterhin akzeptabel sein und darf der neuen Historie nicht widersprechen. Enthält diese bereits eine andere Transaktion, die dieselben Mittel ausgibt, kann die ursprüngliche Zahlung dort nicht ebenfalls bestätigt werden. [2]

Eine gewöhnliche Zahlung unterscheidet sich von der Coinbase Transaction. Diese erste Transaktion im Block schreibt dem Miner seine Belohnung gut: neu ausgegebene Bitcoin und Transaktionsgebühren. Bleibt Pavels Block außerhalb der aktiven Kette, ist seine Coinbase-Belohnung in dieser Historie nicht ausgebbar. Sie wandert nicht wie eine normale Zahlung in den Mempool. Den verbrauchten Strom bekommt Pavel trotzdem nicht zurück. Miner wollen daher nicht nur einen Block finden, sondern auch dafür sorgen, dass andere möglichst schnell davon erfahren. [1] [2]

In Artikeln und Blockexplorern wird ein Stale Block manchmal auch Orphan Block genannt. Die Begriffe werden oft gleichgesetzt, doch ihre genauere Bedeutung unterscheidet sich. Ein Orphan Block ist ein Block, dessen Vorgänger der Knoten noch nicht kennt und den er deshalb noch nicht einordnen kann. Bei einem Stale Block kann der Vorgänger bekannt und der Block gültig sein; er liegt nur außerhalb des gewählten Zweigs. Auch Transaktionen werden als orphan bezeichnet, wenn dem Knoten frühere Transaktionen fehlen, die er zur Prüfung ihrer Eingänge braucht. Achten Sie deshalb darauf, welche Bedeutung die jeweilige Quelle meint. [1]

Hat ein Knoten Pavels Block bereits verwendet und ersetzt ihn anschließend durch Annas Zweig, führt er einen Reorg durch. Er ändert also einen Teil seiner aktiven Historie. Deshalb kann sich die Zahl der Bestätigungen in einer Wallet ändern. Ein kurzer Wettlauf wie in unserem Beispiel entsteht auch bei ehrlichem Mining. Ein Angreifer kann allerdings versuchen, einen Historienwechsel für einen Double Spend zu nutzen: eine andere Zahlung mit denselben Mitteln durchzusetzen. Ein Stale Block allein beweist diese Absicht nicht. Dafür muss man den Ablauf und mögliche widersprüchliche Transaktionen untersuchen. [1] [2]

Die Nachricht von einem neuen Block erreicht nicht sofort die ganze Welt. Je länger ihre Verbreitung dauert, desto länger können andere Miner unwissentlich am selben Vorgänger weiterarbeiten. Übertragungsgeschwindigkeit, Verbindungen zwischen Knoten und die Ausbreitungszeit im Verhältnis zum Blockabstand spielen dabei eine Rolle. Stale Rate bezeichnet den Anteil gefundener gültiger Blöcke, die nicht in der aktiven Kette bleiben. Es ist kein von Bitcoin festgelegter Prozentsatz. Beim Vergleich von Messungen zählen auch der Beobachtungszeitraum und die Blöcke, die der Beobachter überhaupt erfasst hat. [1] [3]

BIP152 beschreibt Compact Block Relay. Ein Knoten kennt häufig schon die meisten Transaktionen eines neuen Blocks aus seinem Mempool. Ihre vollständigen Daten müssen daher nicht erneut übertragen werden. Mithilfe kurzer Kennungen kann er den Block aus vorhandenen Daten zusammensetzen und fehlende Transaktionen anfordern. Das spart Bandbreite und kann unter passenden Bedingungen dafür sorgen, dass Knoten früher vom neuen Block erfahren. Es verbessert die Übertragung, verändert aber nicht die Gültigkeitsregeln. Nahezu gleichzeitige Blockfunde lassen sich damit nicht vollständig verhindern. [3]

Die angesammelte Arbeit eines Zweigs heißt technisch chainwork. Sie misst weder den tatsächlich verbrauchten Strom noch zählt sie Computerstimmen. Jeder Block trägt einen Wert bei, der sich aus der Schwierigkeit seines Proof of Work, also seines Arbeitsnachweises beim Mining, ergibt. „Die längere Kette gewinnt“ ist daher ungenauer als „der gültige Zweig mit mehr chainwork gewinnt“. Der Knoten muss die Regeln prüfen: Auch sehr viel Arbeit macht ungültige Transaktionen nicht gültig. Außerdem beschreibt stale immer die Beziehung eines Blocks zu der Historie, die ein bestimmter Knoten gerade gewählt hat. [1] [2]

Ein Blockexplorer bietet einen nützlichen Überblick, zeigt aber die Sicht seines Betreibers. Mit einem eigenen Full Node, der die Regeln selbst prüft, können Sie Ihre unabhängig akzeptierte Historie untersuchen. Wenn der Knoten die Blockdaten gespeichert hat, liefert getblock in Bitcoin Core für einen Block außerhalb der aktiven Kette confirmations: -1. Fehlen die Daten, etwa weil sie beim Pruning zur Speicherersparnis gelöscht wurden, gibt der Befehl einen Fehler zurück. Dieser Wert allein beweist noch nicht, dass der Block sämtliche Gültigkeitsprüfungen bestanden hat. Prüfen Sie zur Einordnung auch seinen Hash — seine Kennung —, den Vorgänger, die Höhe (die Anzahl der Blöcke davor) und den chainwork. Den Verbleib einer einzelnen Zahlung müssen Sie separat untersuchen. Zwei Blöcke können dieselbe Höhe und unterschiedliche Hashes haben. [4] [5]

Für ein möglichst vollständiges Bild lies diesen Eintrag zusammen mit Reorg, Bestätigung, Block, Block Header, Proof of Work, Mining. Auf diesen Eintrag verweisen außerdem Reorg, Mining Pool, Hashrate, Selfish Mining.

DOC · 001Bitcoin Developer Guide — Block ChainDokumentation DOC · 002Bitcoin Core v29.0 — chain activation and mempool reconciliationPrimärquelle DOC · 003BIP 152 — Compact Block RelaySpezifikation DOC · 004Bitcoin Core v29.0 — getblockDokumentation DOC · 005Bitcoin Core v29.0 — block RPC implementationPrimärquelle
Überarbeitet: Quellenbasiert · Keine Anlageberatung