Am wenigsten verstanden habe ich bisher das da oben.
Ok, sorry. Ich versuchs noch ein mal.
Ich weiß das eine Prüfsumme gefunden werden muss.
Diese ergibt sich aus der Prüfsumme des letzten Blocks und den aktuellen Transaktionen.
Es ist nicht wirklich eine Prüfsumme. Hashes werden oft als Prüfsumme verwendet, aber nicht in diesem Fall (bei der Generierung eines Blocks).
Es muss einfach ein Hash errechnet werden.
In den Hash fließen verschiedene Sachen mit rein, unter anderem der Hash des letzten Blocks. Außerdem fließt eine Nonce (Number only used once) mit ein, diese kann verändert werden um so einen komplett anderen Hash zu erzeugen. Dies spielt bei der Suche nach einem gültigen Hash eine wichtige Rolle.
Zu deinem Beispiel:
Wenn die Difficulty bei 15.000.000.000.000 liegt, bedeutet es, dass es 15.000.000.000.000 mal schwieriger ist, als bei der niedrigsten Difficulty.
Was GENAU ist denn schwieriger?
Der Hash selbst (also der Rechenweg)?
Nicht der Hash selbst, sondern einen Hash zu finden, der gültig ist.
Also wenn wir das alles mal vereinfachen.
Nehmen wir folgendes an:
Die Hash funktion liefert einen 4 bit output.
Target wird ebenfalls durch 4 bit definiert.
Das niedrigste Target wäre 0001. Das höchste 1111.
Bei einem Target von 1111, beträgt die Difficulty 1
Bei einem Target von 0111, beträgt die Difficulty 2 (relative Schwierigkeit zur niedrigsten difficulty)
Es ist also 2 mal schwieriger einen Hash zu finden der unter dem Target 0111 = 7 liegt als unter dem Target 1111 = 15 (vereinfacht gesagt).
Wenn das Target bei 0101 liegt, muss ein Hash gefunden werden der kleiner ist.
Also wäre 0100 und 0011 z.B. gültig. 0110 aber nicht.
Je größer das Target ist, umso leichter ist es eine Zahl die kleiner ist zu finden => Desto niedriger die Difficulty.
Daraus ergäbe sich, dass das Target bei 2224/difficulty = 1797329777810042652977801005801308711575809628169371498.7 liegt. Der erzeugte Hash muss also einen Wert niedriger als das Target aufweisen um als valider Block anerkannt zu werden.
Die ganze Zeit krieg ich erklärt der Hash muss höher sein als die Diff und nun das. Bin echt verwirrt.
Das ist falsch.
Die Difficulty ist nur ein
relativer Wert.
Der Hash muss
niedriger als das Target sein.
Target und Difficulty stehen in direktem mathematischen Zusammenhang. Aber das eine ist eine relative Angabe und das andere das "in der Praxis genutzte" Target.
Bei einer Difficulty von 15.000.000.000.000 braucht man im Durchschnitt 232 * difficulty = 64.424.509.440.000.000.000.000 Versuche um einen gültigen Hash zu finden.
Mit 45 GH/s benötigst man dafür ca. 45398 Jahre.
Es sei denn man hat Glück und trifft im ersten Versuch!
Desswegen ja auch "im Durchschnitt"
Ich nehme schwer an, dass ich den ein oder anderen hier bereits nerve, aber ich gebe nicht auf
bis ich es wirklich verstanden habe.
Kein Problem.
Falls es immernoch unverständlich ist, versuch genau zu erklären wo