Wie wurden 59 Tage mit 1 TH/sec aus „Mastering Bitcoin“ ermittelt

In Mastering Bitcoin im Abschnitt über Difficulty Bits bemerkt Andreas:

Dies bedeutet, dass ein gültiger Block für die Höhe 277.316 einer ist, der einen Block-Header-Hash hat, der kleiner als das Ziel ist. In binärer Form wären bei dieser Zahl mehr als die ersten 60 Bits auf Null gesetzt. Bei diesem Schwierigkeitsgrad würde ein einzelner Miner, der 1 Billion Hashes pro Sekunde (1 Tera-Hash pro Sekunde oder 1 TH/s) verarbeitet, im Durchschnitt nur alle 8.496 Blöcke oder alle 59 Tage eine Lösung finden.

Wie wurden 59 Tage berechnet?

2 ^ 60 (1,15 x 10 ^ 18) wäre die Anzahl der möglichen Werte, die durchlaufen werden können, und 1 TH / s = 1 x 10 ^ 12 Versuche pro Sekunde, aber was übersehe ich?

Ich bekomme auch erwartete 13 Tage, vielleicht solltest du eine E-Mail an Andreas schreiben oder ein Issue auf GitHub eröffnen .
@Murch Der Fehler ist, dass der Autor die mehr als 60 Bits führender Nullen nebenbei erwähnt, nicht als problemdefinierende Informationen. Es ist keine sehr enge Grenze. Siehe meine Antwort für Details.

Antworten (2)

Es gibt 2 ^ 256 mögliche Hashes und Ihre Quelle gibt einen Zielwert von 238348 * 2 ^ 176 an, was mehr als 60 Bits führender Nullen erfordert (tatsächlich 61 plus die etwas strengere Anforderung, dass ein gültiger Hash kleiner als der Zielwert sein muss und nicht einfach mit der gleichen Anzahl führender Nullen beginnen). Tatsächlich beträgt der Anteil akzeptabler Hashes von allen möglichen Hashes 238348*2^-80. Multipliziert mit 10^12 getesteten Hashes pro Sekunde, multipliziert mit 24*60*60 Sekunden pro Tag, erhalten Sie eine Wahrscheinlichkeit, einen gültigen Hash von etwa 1/58,70 pro Tag zu finden, oder (reziprok) 58,70 Tage pro gültigem Hash im Durchschnitt .

Sie fragen, wie 8496 berechnet wurde. Ich stelle fest, dass 8496 = 59 * 24 * 6, also unter der Annahme, dass Sie auf genau 59 Tage pro gültigem Hash aufrunden und das nominelle Ziel verwenden, alle 10 Minuten einen neuen Block in der Blockchain aufzuzeichnen (also 24 * 6 pro Tag), dann mit ein konstantes, stationäres Ziel, von dem Sie tatsächlich erwarten würden, dass Sie im Durchschnitt einmal alle 8496 Blöcke Glück haben, indem Sie selbst einen gültigen Block finden. Offensichtlich gibt es ein Problem mit der angegebenen Genauigkeit; nach meiner Rechnung wäre schon die Rundung auf 8500 Blöcke nur knapp korrekt.

Danke für den Hinweis auf den Zielwert von 238348*2^176. Das hatte ich nicht bedacht. Und ich kann 59 Tage vom Ausgangspunkt 238348*2^-80 ableiten. Aber warum ist es ein Bruchteil? Wenn 2 ^ 256 = maximal mögliche Werte und das Ziel 238348 * 2 ^ 176 ist, wäre der Unterschied nicht die Anzahl der möglichen Werte, die ich durchlaufen müsste? Oder bin ich gerade in Mathe 101 durchgefallen.
Da Sie die Hash-Funktion effektiv nicht umkehren können (das ist der springende Punkt!), Können Sie nur im Wesentlichen zufällige Hashes erzeugen, von denen es 2 ^ 256 gibt. Nur 238348*2^176 sind gültige Hashes. Der Bruch dieser beiden Zahlen, der auch die Wahrscheinlichkeit darstellt, dass ein beliebig generierter Hash gültig ist, beträgt also 238348*2^176 / 2^256 = 238348*2^-80. Sein Kehrwert ist die typische Anzahl von Versuchen, die Sie, in Ihren Worten, "durchlaufen" müssen (es handelt sich nicht um eine tatsächliche Wiederholung!).
Habe es! Meine Lücke bestand darin, das Ziel nicht vollständig zu verstehen. Wie Sie sagen, reichen die gültigen Hashes von 1-> 238348 * 2 ^ 176. dh alles in diesem Bereich führt zu mindestens 60 führenden Nullen. Daher sind die Chancen tatsächlich 238348*2^176/2^256. Dann können Sie mit der Geschwindigkeit multiplizieren, um Zeit zu bekommen. Um anderen zu helfen, ist es, als würde man einen Würfel mit einem Ziel von 2 werfen, was bedeutet, dass man eine Zahl kleiner als 2 würfelt. Die Chancen stehen 2/6. (Anzahl der Möglichkeiten/Gesamtbereich der Möglichkeiten).

Klingt, als hätte er mit der von Ihnen erwähnten Methode zuerst 59 Tage berechnet. Und dann kam aus irgendeinem Grund 59 * 6 * 24 (1 Block pro zehn Minuten) auf 8496.

Ich stimme zu, dass es mehr verwirrt als hinzufügt.

Würden Sie wissen, wie 59 Tage berechnet wurden? Nach meinen Berechnungen würde es bei 1 TH/s 1.152.921 Sekunden dauern, um jeden möglichen Wert auszuprobieren. dh 13 Tage.