Da es sich bei der Blockchain um eine dezentrale Datenstruktur handelt, sind verschiedene Kopien nicht immer konsistent. Blöcke können zu verschiedenen Zeiten auf verschiedenen Knoten ankommen, was dazu führt, dass die Knoten unterschiedliche Perspektiven der Blockchain haben.
Um das zu lösen, jeder Knoten wählt und versucht immer, die Blockkette zu erweitern, die den größten Arbeitsbeweis (Arbeitsnachweis – Proof of Work) darstellt, auch bekannt als längste Kette oder größte kumulative Arbeitskette. Durch Summieren der in jedem Block einer Kette aufgezeichneten Arbeit kann ein Knoten den Gesamtbetrag an Arbeit berechnen, der zum Erzeugen dieser Kette aufgewendet wurde. Solange alle Knoten die größte kumulative Arbeitskette auswählen, konvergiert das globale Bitcoin-Netzwerk schließlich zu einem konsistenten Zustand. Forks treten als temporäre Inkonsistenzen zwischen Versionen der Blockchain auf, die durch eine eventuelle Rekonvergenz gelöst werden, wenn mehr Blöcke zu einer der Fork hinzugefügt werden.
Die in diesem Abschnitt beschriebenen Blockchain-Fork treten natürlich als Folge von Übertragungsverzögerungen im globalen Netzwerk auf. Wir werden uns später in diesem Kapitel auch bewusst ausgelöste Forks ansehen.
In den nächsten Diagrammen verfolgen wir den Verlauf eines „fork“ -Ereignisses im Netzwerk. Das Diagramm ist eine vereinfachte Darstellung des Bitcoin-Netzwerks. Zu Illustrationszwecken werden verschiedene Blöcke als verschiedene Formen (Stern, Dreieck, auf dem Kopf stehendes Dreieck, Rhombus) gezeigt, die sich über das Netzwerk ausbreiten. Jeder Knoten im Netzwerk wird als ein Kreis dargestellt.
Jeder Knoten hat seine eigene Perspektive der globalen Blockchain. Wenn jeder Knoten Blöcke von seinen Nachbarn empfängt, aktualisiert er seine eigene Kopie der Blockchain und wählt die größte kumulative Arbeitskette aus. Zu Illustrationszwecken enthält jeder Knoten eine Form, die den Block darstellt, von dem er glaubt, dass er derzeit die Spitze der Hauptkette ist. Wenn Sie also eine Sternform im Knoten sehen, bedeutet dies, dass der Sternblock die Spitze der Hauptkette ist, soweit es diesen Knoten betrifft.
Im ersten Diagramm hat das Netzwerk eine einheitliche Perspektive der Blockchain, wobei der Sternblock die Spitze der Hauptkette ist.

Vor dem Fork – alle Knoten haben die gleiche Perspektive.
Eine „Gabelung“ bzw. „Fork“ tritt auf, wenn zwei Kandidatenblöcke konkurrieren, um die längste Blockchain zu bilden. Dies geschieht unter normalen Bedingungen, wenn zwei Miner den Proof-of-Work-Algorithmus innerhalb einer kurzen Zeitspanne voneinander lösen. Da beide Miner eine Lösung für ihre jeweiligen Kandidatenblöcke finden, senden sie sofort ihren eigenen „gewinnenden“ Block an ihre unmittelbaren Nachbarn, die damit beginnen, den Block über das Netzwerk zu verbreiten. Jeder Knoten, der einen gültigen Block empfängt, wird ihn in seine Blockchain einbinden und die Blockchain um einen Block erweitern. Wenn dieser Knoten später einen anderen Kandidatenblock sieht, der dasselbe Elternelement erweitert, verbindet er den zweiten Kandidaten auf einer sekundären Kette. Als Ergebnis werden einige Knoten zuerst einen Kandidatenblock „sehen“, während andere Knoten den anderen Kandidatenblock sehen werden und zwei konkurrierende Versionen der Blockchain erscheinen werden.
Im nächsten Diagramm sehen wir zwei Miner (Knoten a und Knoten b), die zwei verschiedene Blöcke fast gleichzeitig minen. Beide Blöcke sind Kinder des Sternblocks und haben die Kette durch den Aufbau auf dem Sternblock verlängert. Um uns zu helfen, es zu verfolgen, wird man als ein Dreieckblock visualisiert, der von Knoten A stammt und das andere wird als ein umgekehrter Dreieckblock gezeigt, der von Knoten B stammt.

Visualisierung eines Blockchain-Fork-Ereignisses: zwei Blöcke gleichzeitig gefunden
Nehmen wir zum Beispiel an, dass ein Miner-Knoten A eine Proof-of-Work-Lösung für einen Block „Dreieck“ findet, der die Blockchain erweitert und auf dem übergeordneten Block „Stern“ aufbaut. Fast gleichzeitig findet der Miner-knoten B, der auch die Kette vom Block „Stern“ verlängerte, eine Lösung für den Block „umgekehrtes Dreieck“, der aus dem Knoten A stammt; und eine, die wir „umgekehrtes Dreieck“ nennen, die ihren Ursprung im Knoten B hat. Beide Blöcke sind gültig, beide Blöcke enthalten eine gültige Lösung für den Arbeitsbeweis, und beide Blöcke erweitern das gleiche übergeordnete Element (Block „Stern“). Beide Blöcke enthalten wahrscheinlich die meisten der gleichen Transaktionen, mit nur einigen Unterschieden in der Reihenfolge der Transaktionen.
Wenn sich die zwei Blöcke ausbreiten, empfangen einige Knoten zuerst den Block „Dreieck“ und einige empfangen zuerst den Block „auf dem Kopf stehendes Dreieck“. Wie im Diagramm gezeigt, teilt sich das Netzwerk in zwei verschiedene Perspektiven der Blockchain auf; eine Seite mit einem Dreiecksblock, die andere mit dem umgekehrten Dreiecksblock.

Visualisierung eines Blockchain-Fork-Ereignisses:zwei Blöcke verbreiten sich und teilen das Netzwerk auf
Im Diagramm erhielt ein zufällig ausgewählter „Knoten X“ zuerst den Dreiecksblock und erweiterte damit die Sternkette. Dieser Knoten X wählte die Kette mit „Dreieck“ -Block als Hauptkette (Main Chain). Später erhielt dieser Knoten X auch den Block „auf dem Kopf stehendes Dreieck“. Da es als zweites erhalten wurde, wird angenommen, dass es das Rennen „verloren“ hat. Dennoch wird der Block „auf dem Kopf stehendes Dreieck“ nicht verworfen. Sie ist mit dem Elternelement „Stern“ verknüpft und bildet eine sekundäre Kette. Während der Knoten X annimmt, dass er die Gewinnerkette korrekt ausgewählt hat, behält er die „Verlusts“ -Kette bei, so dass er die Information hat, die benötigt wird, um erneut zu konvergieren, wenn die „Verlierer“ -Kette doch „Gewinnen“ erreicht.
Auf der anderen Seite des Netzwerks konstruiert der andere Knoten Y eine Blockchain basierend auf seiner eigenen Perspektive der Abfolge von Ereignissen. Es erhielt einen „umgekehrten Dreiecks“ -Block, es verband es mit dem „Stern“ -Block-Elternteil als eine sekundäre Kette.
Keine Seite ist „richtig“ oder „falsch“. Beide sind gültige Perspektiven der Blockchain. Nur im Nachhinein wird man sich durchsetzen, basierend darauf, wie diese beiden konkurrierenden Ketten durch zusätzliche Arbeit erweitert werden.
Mining-Knoten, deren Perspektive dem Knoten X ähnelt, beginnen sofort mit dem Mining eines Kandidatenblocks, der die Kette mit „Dreieck“ als Spitze erweitert. Indem sie „Dreieck“ als Elternteil ihres Kandidatenblocks verknüpfen, stimmen sie mit ihrer Hashing-Macht überein. Ihre Stimme unterstützt die Kette, die sie als Hauptkette (Main Chain) gewählt haben.
Jeder Mining-Knoten, dessen Perspektive dem Knoten Y ähnelt, beginnt mit dem Aufbau eines Kandidatenknotens mit „umgekehrtes-Dreieck“ als Elternteil und erweitert die Kette, von der sie glauben, dass sie die Hauptkette ist. Und so beginnt das Rennen wieder.
Forks werden fast immer innerhalb eines Blocks aufgelöst. Während ein Teil der Hashing-Power des Netzwerks dazu dient, auf dem „Dreieck“ als Eltern zu bauen, konzentriert sich ein anderer Teil der Hashing-Power darauf, auf „umgekehrtes-Dreieck“ zu bauen. Selbst wenn die Hashing-Macht fast gleichmäßig aufgeteilt wird, ist es wahrscheinlich, dass eine Gruppe von Minern eine Lösung findet und diese propagieren wird, bevor die anderen Miner irgendwelche Lösungen gefunden haben. Nehmen wir zum Beispiel an, dass die Miner, die oben auf „Dreieck“ bauen, einen neuen Block „Rhombus“ finden, der die Kette verlängert (zum Beispiel Stern-Dreieck-Rhombus). Sie propagieren diesen neuen Block sofort und das gesamte Netzwerk sieht es als eine gültige Lösung, wie in dem Diagramm gezeigt.
Alle Knoten, die in der vorherigen Runde „Dreieck“ als Gewinner gewählt hatten, verlängern die Kette einfach um einen weiteren Block. Die Knoten, die das „umgekehrte Dreieck“ als Gewinner gewählt haben, werden nun zwei Ketten sehen: Stern-Dreieck-Rhombus und Stern-auf-Kopf-Dreieck. Die Kette Stern-Dreieck-Rhombus ist jetzt länger (mehr kumulative Arbeit) als die andere Kette. Als Ergebnis setzen diese Knoten die Kette Stern-Dreieck-Rhombus als Hauptkette (Main Chain) und ändern die Stern-Ober-Unter-Dreieck-Kette in eine Sekundärkette, wie im Diagramm gezeigt. Dies ist eine Ketten-Rekonvergenz, da diese Knoten gezwungen sind, ihre Sicht auf die Blockchain zu revidieren, um den neuen Beweis einer längeren Kette aufzunehmen. Alle Miner, die daran arbeiten, das „Kettenstern-auf-Kopf-Dreieck“ zu verlängern, werden nun diese Arbeit stoppen, weil ihr Kandidatenblock ein „Orphan (Waisenkind)“ ist, da sein Elternteil „umgekehrtes-Dreieck“ nicht länger auf der längsten Kette ist. Die Transaktionen innerhalb von „umgekehrtes-Dreieck“ werden erneut in den MemPool eingefügt, um in den nächsten Block aufgenommen zu werden, da der Block, in dem sie sich befanden, nicht mehr in der Hauptkette ist. Das gesamte Netzwerk konvergiert auf einer einzelnen Blockchain-Stern-Dreieck-Raute, wobei „Rhombus“ der letzte Block in der Kette ist. Alle Miner beginnen sofort mit der Arbeit an Kandidatenblöcken, die „Rhombus“ als ihr Elternteil bezeichnen, um die Stern-Dreieck-Rhombus-Kette zu erweitern.

Visualisierung eines Blockchain-Fork- Ein neuer Block erweitert eine Verzweigung und führt das Netzwerk erneut zusammen

Visualisierung eines Blockchain-Das Netzwerk rekonvergiert auf einer neuen längsten Kette
Es ist theoretisch möglich, dass sich ein Fork auf zwei Blöcke erstreckt, wenn zwei Blöcke fast gleichzeitig von Minern auf gegenüberliegenden „Seiten“ einem vorherigen Fork gefunden werden. Die Chance dafür ist jedoch sehr gering. während ein Ein-Block Fork jeden Tag auftreten kann, tritt ein Zwei-Block-Fork höchstens einmal alle paar Wochen auf.
Bitcoins Blockintervall von 10 Minuten ist ein Entwurfskompromiss zwischen schnellen Bestätigungszeiten (Abwicklung von Transaktionen) und der Wahrscheinlichkeit einer Verzweigung. Eine schnellere Blockierungszeit (Generierung von Blöcken) würde Transaktionen schneller freimachen, aber zu häufigeren Blockchain-Forks führen, während eine langsamere Blockierungszeit die Anzahl der Forks verringern würde, aber die Abwicklung langsamer machen würde.