Satoshi schreibt am Ende von Seite 3 seines Whitepapers: „Wenn zwei Knoten gleichzeitig verschiedene Versionen des nächsten Blocks senden, empfangen einige Knoten möglicherweise zuerst den einen oder anderen. In diesem Fall arbeiten sie an dem ersten, den sie empfangen haben, aber Speichern Sie den anderen Zweig, falls er länger wird." Hier scheint die richtige Kette die längste zu sein, obwohl Satoshi vielleicht nur ein wenig nachlässig mit der Formulierung umgegangen ist.
Ich habe jedoch an anderen Stellen gelesen, dass Knoten die richtige Kette in Bitcoin auswählen, indem sie die Kette auswählen, die die meiste Arbeit darstellt (oder mit anderen Worten, die Kette, die am schwierigsten rückgängig zu machen wäre). Ich nenne das die stärkste Kette. Dies ist nicht unbedingt dasselbe wie die längste Kette, da beispielsweise ein Block denkbar ist, der viel mehr Hashes brauchte, um eine gültige Nonce zu finden, als zwei andere Blöcke mit einem viel einfacheren Schwierigkeitsgrad. Dieser Stapelaustausch ist ein Ort, an dem ich dies gelesen habe.
Frage 1 : Welches ist die richtige Methode, die Knoten verwenden, um die richtige Kette, längste Kette oder stärkste Kette zu bestimmen?
Meine zweite Frage ist relevanter, wenn die Antwort auf Frage 1 lautet, dass die richtige Kette die stärkste Kette ist. Es bezieht sich auf verwaiste Blöcke.
Wenn die richtige Kette die meiste Arbeit darstellt, warum sind dann verwaiste Blöcke ein solches Problem? Es scheint, als würde jeder in Sekundenschnelle davon erfahren, wenn ein Knoten einen Block löst und ihn sendet, und dann ohne verschwendete Arbeit mit dem Mining auf dem neuen Block beginnen können. Selbst wenn 2 Miner einen Block (fast) gleichzeitig lösen, sehen die meisten Blöcke die beiden neuen Blöcke und wählen den mit dem niedrigeren Header-Hash (weil es schwieriger ist, niedrigere Hashes zu finden). Es scheint, dass die Knoten in Sekundenschnelle zu einem Konsens kommen sollten, wenn die richtige Kette durch die stärkste (und nicht durch die längste) Kette ausgewählt wird. Die einzige Zeit, die ein Miner damit verbringen könnte, an der falschen Kette zu arbeiten, wäre die Zeit, die er zwischen dem Erhalt eines gelösten Blocks verbringt, der bald darauf durch einen anderen gelösten Block mit einem etwas niedrigeren Hash ersetzt wird.
Frage 2 : Sind verwaiste Blöcke ein großes Problem für Miner? Wenn die Blockgenerierungszeit stattdessen 1 Minute wäre, wären verwaiste Blöcke ein viel größeres Problem?
Die „längste“ Kette ist die mit der meisten Arbeit . Die Arbeit einer Kette entspricht der erwarteten Anzahl von Hashes, die jemand benötigen würde, um eine Kette mit derselben Anzahl von Blöcken und genau denselben Schwierigkeitsstufen zu replizieren. Derzeit fügt also jeder Block etwa 2 66 Arbeit zur Kette hinzu, da im Durchschnitt ~ 2 66 Hashes benötigt werden, um einen Block mit der aktuellen Schwierigkeit zu lösen. Blöcke mit weniger Schwierigkeit fügen weniger Arbeit hinzu. (Die aktuelle Gesamtkettenarbeit liegt bei etwa 2 80 .) Allerdings fügen zwei Blöcke im gleichen Schwierigkeitsgrad der Kette immer die gleiche Menge an Arbeit hinzu. Ein Block mit einem niedrigeren Hash wird nicht als besser angesehen als einer mit einem höheren Hash.
Satoshi war anfangs nicht klar, dass die Wahl der richtigen Kette durch einfaches Zählen der Blöcke einige extrem einfache Angriffe ermöglicht. Version 0.1 hat nur Blöcke gezählt. Deshalb steht auf dem Papier nur „am längsten“. Etwas später kam die Idee der „Kettenarbeit“ hinzu.
Das Auflösen von Waisenkindern, wie Sie vorschlagen, könnte Waisenkinder tatsächlich wahrscheinlicher machen, da Miner in einigen Fällen einen Anreiz erhalten würden, zu versuchen, den neuesten Block zu ersetzen, anstatt ihn zu erweitern, insbesondere kurz vor einer großen Schwierigkeitsanpassung oder wenn der letzte Block viele Gebühren enthält.
Verwaiste Blöcke kommen hin und wieder vor. Eligius meldet etwa 2 % verwaiste Blöcke. Sie wären in der Tat viel häufiger, wenn die Zielzeit 1 Minute wäre, da Blöcke schneller generiert würden und es daher mehr Gelegenheit für Konflikte zwischen Blöcken gäbe.
Morsecoder
Morsecoder
siemos
siemos
Morsecoder
siemos
Morsecoder
Vlastimil Ovčáčík
Daira Hopwood
Jinhua Wang