Wie garantiert das BTC-Protokoll, dass eine „Haupt“-Blockchain entsteht?

Ich lese mich über die Bitcoin/Blockchain-Technologie ein. Normalerweise ist der Teil über den Arbeitsnachweis und das Erstellen eines Blocks gut erklärt. Was jedoch nie erklärt wird, ist, wie/warum die Kommunikation von Blöcken über das Netzwerk die Konvergenz einer „Blockchain“ ermöglicht.

Lassen Sie mich erklären: Was ist, wenn zwei Miner gleichzeitig einen neuen Block erstellen und ihn gleichzeitig übertragen? Etwa 50 % der Nodes hätten jeweils einen neuen (anderen) Block und bauen darauf auf. Nun stellen Sie sich vor, das passiert wieder usw. Dann gibt es keine einzige Blockchain, an der gearbeitet wird, da jetzt Miner alle an mehreren Forks arbeiten. Der Bitcoin-Vorschlag spricht dies an, indem er sagt, dass die längste Kette verwendet werden muss, aber:

  • Zu einem bestimmten Zeitpunkt könnte es zwei gegabelte Ketten mit der gleichen Größe geben, die ungefähr im gleichen Tempo wachsen
  • Um zu wissen, welche Kette die längste ist, muss möglicherweise zum Anfang "zurückverfolgt" werden, was bedeutet, dass keine Transaktion in irgendeiner Kette "validiert" werden kann, da wir nicht sicher sind, dass wir uns in der richtigen Kette befinden

Werden diese Probleme vom Bitcoin-Protokoll angegangen? Grundsätzlich scheint es keinen Beweis dafür zu geben, dass das Hinzufügen von Blöcken auf verteilte Weise über das Netzwerk sauber zu einer einzigen Kette zusammenläuft.

Sie sagen: "Zu einem bestimmten Zeitpunkt könnte es 2 gegabelte Ketten mit der gleichen Größe geben, die ungefähr im gleichen Tempo wachsen". Aber "ungefähr" ist nicht "genau" - im Durchschnitt, wenn die Kettenschwierigkeit gut eingestellt ist und ein Block etwa zehn Minuten braucht, um abgebaut zu werden, haben zwei parallele Ketten etwa fünf Minuten zwischen ihren beiden Entdeckungen des nächsten Blocks. Das ist eine Ewigkeit in Computerzeit – leicht genug für die längere Kette, sich mit dem gesamten Netzwerk zu kommunizieren und vier Minuten Zeit zu haben.
@DanielWagner warum sollten sie unbedingt 5 Minuten voneinander entfernt sein? Es könnte Millisekunden auseinander liegen und dann 10 Minuten warten?
@Tim Es sind nicht unbedingt 5 Minuten auseinander. Im Schnitt liegen sie, wie gesagt, fünf Minuten auseinander.

Antworten (2)

Bitcoin-Knoten betrachten die Kette mit dem am meisten gesammelten Arbeitsnachweis als die beste Kette. Immer wenn eine Kettenspitze durch Hinzufügen eines weiteren Blocks nach vorne zieht, werden alle Knoten zu dieser Kettenspitze reorganisiert, sobald sie davon erfahren.

Ein weiterer Grund dafür, dass das Netzwerk schnell zu einer besten Kette zusammenläuft, ergibt sich aus der Art und Weise, wie Bitcoin-Miner bezahlt werden. Wenn Miner ihre Blockvorlagen erstellen, enthält jede eine einzigartige Coinbase-Transaktiondie die Blockbelohnung an sich selbst zahlt. Das bedeutet, dass das Finden eines gültigen Blocks dazu führt, dass der Autor des Blocks sich selbst die Blockbelohnung über die von ihm eingeschlossene Coinbase-Transaktion zahlt. Allerdings unterliegen die Outputs von Coinbase-Transaktionen einer Laufzeit von 100 Bestätigungen. Das bedeutet, dass nur Blöcke ausgegeben werden können, die mindestens 99 Nachfolger hervorbringen. Das bedeutet im Wesentlichen, dass eine Blockbelohnung nur dann ausgezahlt wird, wenn ein Block Teil der besten Kette wird. Da Bergbaubetriebe unabhängig vom Erfolg hohe Hardware- und Energiekosten verursachen, bluten Bergleute Geld, wenn sie an Blöcken arbeiten, die nicht in der besten Kette landen. Selbst wenn also gelegentlich zwei Miner gleichzeitig Blöcke finden und zwei konkurrierende Kettenspitzen produzieren, ist selbst der „Verlierer“

Während die einzelnen Mining-Bemühungen nicht zentral koordiniert werden, ist es ungewöhnlich, dass zwei konkurrierende Blöcke auf gleicher Höhe gefunden werden: Es passiert nur etwa einmal pro Monat. Bitcoin-Mining ist ein Poisson-Prozess, der darauf abzielt, alle zehn Minuten etwa einen Block zu produzieren. Die Kadenz wird durch Schwierigkeitsanpassungen reguliert, die alle 2016-Blöcke stattfinden, die das Schwierigkeitsziel so zurücksetzen, dass die nächsten 2016-Blöcke voraussichtlich 14 Tage dauern werden, unter der Annahme, dass das Netzwerk weiterhin die gleiche Menge an Hashrate produziert, wie sie für die vorherige Epoche beobachtet wurde .

Danke, ich glaube ich verstehe. Aber es fühlt sich so an, als würde man im Grunde davon ausgehen, dass es einen „Hauptzweig“ geben wird und wie 2 Unterketten mit jeweils 1 oder 2 ausstehenden Blöcken. In diesem Setup ist es in der Tat einfach zu erkennen, welche Kette die "Hauptkette" sein sollte, indem man die längste ankreuzt. Meine anfängliche Frage bezog sich eher auf die (theoretische) Möglichkeit, dass neue Blöcke so schnell auf chaotische Weise abgebaut werden, dass sich niemand wirklich darauf einigen kann, wo sich die Hauptkette befindet. Grundsätzlich, wenn es vom Anfangsblock an immer 10 verschiedene Minen für die nächsten Knoten gibt und es sich in alle Richtungen verzweigt
Wenn Blöcke sehr schnell gefunden werden, erhöht sich die Schwierigkeit, bis die Kadenz wieder etwa einen Block pro zehn Minuten erreicht. Ein Szenario, in dem zahlreiche konkurrierende Kettenspitzen gefunden werden, ist daher unwahrscheinlich und würde für Miner mit Absicht sehr teuer herbeigeführt werden.
@lezebulon Im Allgemeinen sind 10 Minuten wesentlich länger als die Ankündigung eines neuen Blocks, daher ist die chaotische Periode kurz im Vergleich zur Dauer des stabilen Zustands, in der plötzlich keine neuen Blöcke erscheinen. Bei Blockchains in jungen Jahren gibt es jedoch echte Bedenken darüber, was passiert, wenn ein böswilliger Akteur plötzlich viel AWS-Zeit kauft und sehr schnell einen Haufen Blöcke erstellt (weil sie einen großen Teil der gesamten Mining-CPU-Zeit hatten). Bitcoin ist groß, mit vielen Minern, also ist das unwahrscheinlich … aber theoretisch möglich.
Es kann dem einzelnen Bitcoin-Nutzer überlassen bleiben, ob das Risiko eines solchen erfolgreichen Angriffs ausreicht, um das Bitcoin-System in Frage zu stellen.

Jetzt bild das passiert wieder usw.

Damit die beiden Ketten gleichmäßig bleiben, müssten die neuen Blöcke immer wieder genau zur gleichen Zeit gefunden werden. Es wird immer unwahrscheinlicher, dass dies wiederholt vorkommt.

Die Wahrscheinlichkeit hängt vom Blockintervall ab, das auf 10 Minuten geregelt ist, und davon, wie schnell sich die neuen Blockankündigungen im Netzwerk ausbreiten.

Derzeit sieht das Bitcoin-Netzwerk etwa einmal in 10.000 Blöcken veraltete Blöcke. Dass zwei Bergleute gleichzeitig einen Block erhalten, ist ein zufälliges und unabhängiges Ereignis, daher können wir berechnen, dass es eine Chance von 1 zu 100 Millionen wäre, zwei Kettenspitzen mit jeweils 2 einzigartigen Blöcken zu haben. Bei einem Blockintervall von 10 Minuten würde dies im Durchschnitt einmal in 2 000 Jahren vorkommen.

Vor Bitcoin Core 0.10.0 von 2015 war die Netzwerkausbreitung langsamer und die Rate veralteter Blöcke lag näher bei 1 zu 100. Aber selbst dann kam es nur einmal in 20 Jahren zu einer veralteten Kette von 3 Blöcken. Es liegt im besten Interesse der Bergleute, die Blockausbreitung zu beschleunigen, und daher treten veraltete Blöcke viel seltener auf.

ok das verstehe ich, danke. Was mich in dieser Situation mehr beunruhigt, ist, dass das Netzwerk selbst ausfällt oder Blöcke falsch liefert. Es scheint, als ob dies auf der Annahme beruht, dass die HTTP-Transportschicht ordnungsgemäß funktioniert und dass Informationen immer schnell genug verbreitet werden
@lezebulon Sie können eine Situation annehmen, in der sich das Netzwerk aufgrund eines schwerwiegenden Problems mit dem Internetverkehr vollständig aufteilt. In diesem Fall ist eine Gabelung unvermeidbar, da keine Kommunikation zwischen den Hälften besteht.
Wir hatten im November eine Zwei-Block-Fork und es war nicht die erste. Ich denke einmal alle 2000 Jahre klingt ein bisschen optimistisch. :)