Was bedeutet der Begriff „Längste Kette“?

Was bedeutet der Begriff „Längste Kette“, da es nur eine „richtige“ Blockchain gibt? Wie würde eine andere längere Kette die "richtige" Kette ungültig machen?

Antworten (2)

Das Blockchain-System von Bitcoin besteht eigentlich aus zwei ziemlich getrennten Systemen, die leicht verwechselt werden können. Der erste ist der Blockbaum und der zweite die aktive Kette .

Der Blockbaum besteht aus allen gültigen Blöcken, deren gesamte Herkunft bekannt ist, bis hin zum Genesis-Block. Die Regeln für die Gültigkeit beinhalten keine doppelten Ausgaben, gültige Signaturen, keine Einführung von mehr Währung als erlaubt, ... Dies sind die Netzwerkregeln, und jeder vollständige Bitcoin-Knoten verifiziert sie.

Die aktive Kette ist ein Pfad vom Genesis-Block oben zu einem Blattknoten unten im Blockbaum. Jeder dieser Pfade ist eine gültige Wahl, aber von den Knoten wird erwartet, dass sie denjenigen auswählen, der die meiste "Arbeit" enthält, von der sie wissen (wobei Arbeit lose als die Summe der Schwierigkeiten definiert wird). Relativität und technologische Beschränkungen hindern uns daran, weltweit sofort zu kommunizieren, sodass nicht erwartet werden kann, dass zwei Knoten dieselbe Kette wie der aktive auswählen. Das ist kein Problem: Der Mining-Mechanismus sorgt dafür, dass die Wahrscheinlichkeit, dass sich zwei Nodes über Blöcke in der Vergangenheit nicht einig sind, exponentiell abnimmt, wenn sie älter sind.

Also nein, es gibt nicht die eine „richtige Kette“, es gibt viele. Knoten wählen für sich selbst, aber das System ist darauf ausgelegt, sicherzustellen, dass schnell ein Konsens entsteht.

Die Regeln in der Praxis sind folgende: Wenn ein neuer Block ankommt und die vorherige aktive Kette erweitert, hängen wir ihn einfach an die aktive Kette an. Wenn nicht, hängt es davon ab, ob der Zweig, den es erweitert, jetzt mehr Arbeit hat als der derzeit aktive Zweig. Wenn nicht, speichern wir den Block und stoppen. Wenn es mehr Arbeit bedeutet, führen wir eine sogenannte "Reorganisation" durch: Deaktivieren von Blöcken aus dem alten Zweig und Aktivieren von Blöcken aus dem neuen Zweig.

Sir, wie ein Knoten den neuesten Block auf dem längsten Pfad auswählt; Angenommen, der Knoten kennt beispielsweise zwei Unterketten, wie erkennt er, welche länger ist? Vergleichen Sie einfach ihre Längen (Anzahl der Blöcke)? Vielen Dank.
Wir betrachten den Arbeitsaufwand in jeder Kette: die erwartete Anzahl von Hashes, die notwendig waren, um sie zu erstellen. Dies entspricht ungefähr der Summe der Schwierigkeiten der Blöcke in beiden Ketten (was fast immer dasselbe ist, als würde man nur die Länge vergleichen, es sei denn, der Fork überspannt ein Retarget).
Diese Antwort definiert "Arbeit" nicht genau. Die Arbeit eines Blocks wird tatsächlich als floor(2^256 / (target + 1)) definiert, wobei „target“ der Zielschwellenwert ist, der aus dem „nBits“-Feld des Blockheaders konvertiert wird. (Siehe die GetBlockProof-Funktion in src/pow.cpp.)
@DairaHopwood hilfreicher Kommentar, obwohl technisch gesehen der Kommentar direkt über Ihrem ihn definiert ("erwartete Anzahl von Hashes ...") :) . Für diejenigen, die sich fragen, woher die Formel kommt: Die erwartete Anzahl von Hashes ist 1/p, wobei p die Wahrscheinlichkeit ist, bis zum Ziel oder darunter zu hashen, also p = (Ziel + 1) / 2^256. (das "+1" soll den Hash mit allen Nullen zählen).

Stellen Sie sich vor, dass die Blockchain 210000 Blöcke lang ist und ZWEI Miner beide innerhalb weniger Sekunden gültige Blöcke finden und sie an das Netzwerk senden.

Dies ist völlig normal, da das Bitcoin-Netzwerk Peer-to-Peer und global ist.

Sie haben jetzt zwei Ketten mit der Länge 210001. Keine davon ist länger als die andere. Einige Bitcoin-Knoten sehen den Block des ersten Miners und einige Bitcoin-Knoten sehen den zweiten.

Vorübergehend haben Sie zwei Forks der Blockchain, die jeweils 210001 Blöcke lang sind. Sie sind für 210000-Blöcke identisch, aber der 210001. ist bei den beiden Gabeln unterschiedlich.

Einige Zeit später findet ein anderer Miner einen weiteren gültigen Block, den 210002. Block, und dieser wird an genau einen der Forks angehängt.

Diese Kette ist jetzt mit 210002 Blöcken die längste und wird zur längsten Kette. Sie wird zur „endgültigen“ Blockchain.

(Die Transaktionen im alternativen Fork verschwinden nicht – sie werden einfach wieder in den Pool der unbestätigten Transaktionen eingefügt und die Bergleute werden sie in einen nachfolgenden Block einfügen).

Aber wird dieser eine Block, der auf der 210001-Kette vergeben wurde, vergeben? Das Netzwerk hat die 210002-Kette gewählt, und die Transaktionen aus der 210001-Kette werden für den nächsten Block (210003?) recycelt und der 210001. verschwindet?
Mein Verständnis ist, dass die Transaktionen in den meisten Forks in den meisten Fällen gleich sind. Alle gebührenpflichtigen Transaktionen im (bald) verwaisten Block (z. B. 210001B) würden wahrscheinlich in den unmittelbar folgenden Block (z. B. 210002) aufgenommen, da diese Transaktionen von den Minern, die an ihrem eigenen Fork (210001A) arbeiten, als noch verfügbar gelten. . Sie müssten nicht auf Block 210003 warten, wie der letzte Absatz andeutet.
Diese hervorragende Beschreibung hat mir Klarheit verschafft, danke! und die Antwort, nach der ich gesucht habe, ist: Es kann sein, dass in Block N zwei Blöcke fast gleichzeitig gesendet werden, aber es ist sehr unwahrscheinlich, dass dies zweimal hintereinander passiert, und verschwindend wahrscheinlich, dass es dreimal hintereinander passiert, also die Dinge laufen schnell zusammen. Meine nächste Frage ist: Ist es jemals passiert (oder ist es kürzlich passiert), dass es zweimal hintereinander passiert ist, also gab es 3 oder vier Chains mit jeweils gleicher Länge und die Miner fangen an, an jeder zu arbeiten? Ich denke, ich werde einen Blockchain-Explorer finden und anfangen zu suchen ...
Das ist eine nette Antwort!