Mining Difficulty

In dem von @renna verlinkten Buch steht das z.B. im Kapitel 7.3.3. Deshalb seine Empfehlung, für das Verständnis auch die vorherigen Abschnitte zu lesen.

Die Difficulty hat keine Einheit, da sie den Faktor angibt, um den die aktuellen Blöcke schwieriger zu finden sind als der allererste Block. Dieser Genesis Block hatte dementsprechend die Difficulty 1.
Genauer gesagt entspricht Difficulty 1 der Schwierigkeit, das im Bitcoin Code maximal erlaubte Target zu untertreffen, welches zu Beginn der Chain auch aktuell war. Der Genesis Block selbst hat dieses Target weit untertroffen, hat also sogar mehr führende Nullen als notwendig. Die folgenden Blöcke lagen aber dann nur knapper unter dem Target (siehe weiter unten im Thread).

Wenn du heute in dem von dir verlinkten Diagramm eine Difficulty von „22t“ siehst (= 22 Tera = 2,2e+13), dann bedeutet das, dass die aktuelle Wahrscheinlichkeit mit einem Hash einen gültigen Block zu finden um den Faktor 2,2e+13 kleiner ist als damals bei den ersten Blöcken.

Die Difficulty exakt in ein Target umzurechnen ist gar nicht so trivial, da die entsprechende 256 Bit Zahl in unterschiedlichen Formaten angegeben werden kann, und es zwischen den Angaben kleine Rundungsunterschiede gibt.

Je nachdem, welche Formatierung du verwendest, entspricht Difficulty 1 einem der beiden folgenden Targets, als maximal erlaubter Obergrenze für den Blockhash:

  • 0x00000000FFFF0000000000000000000000000000000000000000000000000000
  • 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

(die beiden Werte unterscheiden sich nur um weniger als 0,01 %)

Der aktuelle Bitcoin Block hat z.B. folgenden Hash:

  • 0x00000000000000000003a225e68c276c12d65709d3b3d5c15abccd9f6d6a4bb3

bei einer Difficulty = 21865558044610.

Diese Difficulty entspricht dem Faktor vom Genesis-Target zum jetzigen Target. In der Binärdarstellung würdest du also erwarten, dass das Target, also die Hashobergrenze, ungefähr log2(Difficulty) = ca. 44 führende Nullen mehr hat als der Genesisblock. In hexadezimaler Darstellung entspricht das 11 führenden Nullen mehr.

Wenn du den Hash des aktuellen Blocks mit den ersten Blöcken nach dem Genesis-Block vergleichst, siehst du, dass es tatsächlich 11 führende Nullen mehr sind.

Beim Genesis-Block war die Wahrscheinlichkeit mit einem Hash einen Block zu finden
ca. 1 / 4,3e+09 (= 1 / 16^8, entsprechend 8 führenden hexadezimalen Nullen). Mit der aktuellen Difficulty beträgt diese Wahrscheinlichkeit ca. 1 / 4,3e+09 / 21865558044610 = 1e-23 pro Hash.

Die aktuelle Hashrate beträgt nach deiner verlinkten Seite ca. 166m TH/s = 1,66e+20 H/s. Das entspricht damit einer Erfolgswahrscheinlichkeit von 1,66e+20 H/s * 1e-23 1/H = 0,00166 pro Sekunde.

Der Erwartungswert der Zeit bis zum nächsten Block ist also ca. 1/0,00166 s = 602 s = ca. 10 min.

Das passt übrigens nur zufällig gerade so genau und kommt auch von meinen ganzen Rundungen.

5 „Gefällt mir“