This post is also available in: enEnglish

Dies ist der vierte Artikel in einer Reihe, die jene technischen Konzepte untersucht, welche mit On-Chain-Skalierung, Blockpropagierung und ähnlichen Themen zusammenhängen.

Die erste Bitcoin Full Node erblickte das Licht der Welt im Jahr 2009. Unter einer/einem Node (Knoten) versteht man in diesem Fall einen Computer, welcher eine bestimmte Software betreibt, die das Bitcoin-Netzwerk am Laufen hält. Bei Bitcoin werden alle Transaktionen in Blöcken zusammengefasst und an das gesamte Netzwerk übermittelt. Je mehr Transaktionen stattfinden, desto wahrscheinlicher ist es, dass die Übertragung an einzelne Nodes langsamer vonstatten geht.

Compact und Xthin-Blocks spielen eine wichtige Rolle für die Lösung dieses Problems

Die Bitcoin Core Entwickler brachten vor einigen Jahren eine Lösung für dieses Problem ins Gespräch. Diese Lösung wird als „Compact Blocks“ bezeichnet. Dabei handelt es sich um eine simple Idee: Statt jede Transaktion zu übertragen, werden nur die Identifikatoren übertragen. Da alle Nodes fast alle Transaktionen speichern, können sie diese identifizieren, wenn sie ihnen als Block vorgelegt werden. Wenn alle Transaktionen bereits vorhanden sind, kann der Block sofort verifiziert werden. Fehlende Transaktionen müssen hingegen von verbundenen Nodes angefordert werden. Compact Blocks sparen in den meisten Fällen Bandbreite, es ist jedoch mit dem Erfragen der fehlenden Transaktionen ein neuer Schritt geschaffen worden.

Dieses Erfragen führt zu einem zweispurigen Kommunikationsweg, der in einer Latenz resultiert. Bitcoin Unlimited brachte in diesem Sinne eine Idee hervor, welche die Notwendigkeit der Anfrage reduzieren würde. Hierfür würden Bloom-Filter für alle bekannten Transaktionen versendet, wodurch Nodes hervorsagen könnten, welche Transaktionen fehlen, um sie dann mit den Identifikatoren zu versenden. Dies wird als Xtreme-Thinblock oder als Xthin- Propagierung bezeichnet

„Poison Block Attack“ verlangsamt die Propagierung

Beide Protokolle sowie das Graphene-Protokoll basieren darauf, dass die Transaktionen den angefragten Nodes zur Verfügung stehen. Wenn dies nicht der Fall ist, muss die Propagierung des Blocks auf traditionelle Art und Weise stattfinden.

Was ist nun, wenn ein Miner Transaktionen aufnimmt, die nicht an das Netzwerk übertragen wurden? Einen derartigen Block bezeichnet man als Giftblock (Poison Block). Dieser würde alle Versuche der Beschleunigung zunichte machen. Fehlgeschlagene Versuche würden in diesem Fall aber auch dazu beitragen, das gesamte Netzwerk zu verlangsamen. Dies würde dazu führen, dass viele der Nodes untereinander nicht mehr synchron wären. Außerdem besteht im Falle eines Giftblocks eine größere Gefahr, dass der Block verwaist und vom Netzwerk ignoriert wird.

Nur ein Miner kann einen Giftblock erstellen. Im Normalfall hat ein Miner keinen wirtschaftlichen Vorteil davon dies zu versuchen. Im Normalfall sind Netzwerke auch belastbar genug, um Giftblöcke zu verarbeiten und weiter zu funktionieren. Doch wie reagiert das Netzwerk auf ein häufiges Auftreten von Giftblöcken?