Hey zusammen, meine Frage: Wie funktioniert das mit dem Hashing in der Blockchain eigentlich? Wäre cool wenn mir jemand den Begriff in der Umgangssprache erklären könnte was hashing genau bedeutet, und was ihre Aufgabe in der Blockchain ist. Vielen vielen Dank schonmal im Voraus.
Ein Hash ist das Ergebnis einer Funktion, die abhängig vom Eingangswert (Text, Datei, Zahlen…) eine Kombination aus Buchstaben und Zahlen mit einer fest definierte Länge ausgibt.
Derselbe Eingangswert bringt bei einer Hash-Funktion immer dasselbe Ergebnis. Änderst Du auch nur 1 Zeichen, ändert sich das Ergebnis vollständig und man weiß, dass die Eingangswerte unterschiedlich sein müssen.
Das Ergebnis und die Länge der Ausgabe hängt von der verwendeten Hash-Funktion ab. Es gibt bspw. MD5, SHA-1, SHA-2, SHA-3 usw.
Das Besondere daran: Man kann nicht ohne Weiteres vom Ergebnis auf den Anfangswert schließen.
Beispiel:
Der MD5-Hash von „Beispieltext 123“ ist a620c18d775865d6749cdcb20e603201.
Gebe ich jemandem „Beispieltext 123“, kann er ohne große Probleme „a620c18d775865d6749cdcb20e603201“ daraus erzeugen.
Gebe ich jemandem aber a620c18d775865d6749cdcb20e603201 kann er nicht „zurückrechnen“, um auf „Beispieltext 123“ zu kommen.
Nur mal zum Vergleich: Der Hash von „Beispieltext 1234“ ist 96f46d53bba477594b3eb78b4542e811, also völlig anders als der Hash von „Beispieltext 123“, obwohl nur 1 Ziffer hinzugefügt wurde.
Beim Mining ist es nun so, dass vorgegeben wird, wie ein Hash auszusehen hat. Man gibt beispielsweise vor, dass der nächste Hash mit 9 Nullen beginnen muss und dann soll eine 1 kommen, also 0000000001xxxxxxxxxxxxxx
Die Aufgabe der Miner ist es nun, einen Eingangswert zu finden, der einen Hash generiert, der dieser Vorgabe entspricht. Je mehr Nullen bzw. je genauer die Vorgabe, desto schwieriger wird das Mining. (Stichwort: Difficulty)
Wer diesen Hash bzw. den richtigen Eingangswert findet, darf den nächsten Block in der Blockchain anhängen und erhält den Mining-Reward.
Zudem wird das Hashing in der Kryptographie genutzt. Aber das würde jetzt wohl zu weit führen.
Es ist natürlich ein ganz klein wenig komplizierter und mathematischer, aber mit einfachen Worten erklärt, kann man’s so stehenlassen, denke ich.
Reicht Dir das als Antwort aus?
Super, mega… danke dir vielmals
Aber eine letzte Frage noch: Der Miner probiert doch irgendwie mit einer Nonce den vorgegebenen Hashwert zu erreiche. Was macht er da dann genau eigentlich? Und die 2 Frage: Was ist eine Nonce ?
Im Grunde einfach „zählen“. Er probiert so lange verschiedene Noncen (= Einmalzahlen: „Number Used Once“) aus, bis als Output ein gültiger Hash rauskommt. Im Grunde ist das, was man in den Medien oft liest „Spezialrechner lösen komplexe mathematische Aufgaben“ eigentlich völliger Blödsinn. Es ist überhaupt nicht komplex - eher im Gegenteil. Das habe ich auch hier unter Punkt 4 schonmal beschrieben: Die 6 häufigsten Bitcoin- Missverständnisse - Blocktrainer
Da es allerdings weniger Noncen als Möglichkeiten für Hashes gibt, müssen manchmal auch noch andere Anpassungen am Input vorgenommen werden (z.B. Die Transaktionen im Block umsortieren).
Das haben wir auch hier schonmal diskutiert:
Kleiner Hinweis. Genau genommen ist die Vorgabe „kleiner gleich“ das gewünschte Difficulty-Target.
„kleiner gleich“ was?
Naja kleiner gleich als das Target (der gewünschte Zielwert), steht doch da xD .
Angenommen der aktuelle Schwierigkeitsgrad gibt als Zielwert „5“ an, dann muss der gültige Block nicht zwingend die 5 als Hash haben, sondern auch Blöcke die 4 , 3, 2 ,… als Hash haben würden als gültig angesehen.
Ah so. Verstehe.
Dann kann man ja eigentlich auch sagen dass das Hashing ja mehr oder weniger ebenso die Verbindung der Blöcke ( Kette ) ist, da ja auch alle Blöcke durch die Hashes verbunden werden, denn jeder neue Block der dazu kommt erhält ja auch den Hashwert des vorhärigen Blocks richtig?
Korrekt. Die einzelnen Kettenglieder (Blöcke) sind durch Hashes miteinander verbunden.
Hallo,
Irgendwie kann ich das Prinzip nicht verstehen, denn wenn mein Passwort „Beispieltext 123“ lautet ergibt das den Hashwert „a620c18d775865d6749cdcb20e603201“ und der sollte man nicht zurückrechnen können. ABER genau das ist mit einem Hash-Toolkit sehr einfach möglich.
Irgendetwas verstehe ich nicht Richtig
Welches Toolkit soll denn das „ganz einfach“ können?
Schick mir das, dann bin ich sofort reich
Nein, ist es nicht. Ich vermute, das Tool nutzt einfach nur eine Datenbank (sogenannte Rainbow-Tables), in der „Beispieltext 123“ als HASH abgespeichert ist. So wie 100.000e von anderen Passworten, die man durch Hacks erhalten hat bzw. es wird auch viel Content durch BruteForce generiert.
Versuch’s mal hiermit:
08c3645d91b8c77dc4d17b4f007b6a12 (md5)
d7a3093c346af5f66b8fad31a2ebc6c60edad369 (sha1)
Das steht garantiert nicht in einer Datenbank. Also falls Dein Hash-Toolkit das errechnen kann (Du wirst merken, ob’s so ist.), dann…herzlichen Glückwunsch.
Es ist genau so wie du geschrieben hast
Hab es jetzt auch verstanden, wäre es nicht so würde es eine kleine Katastrophe sein.
Vielen Dank für die Antwort
Schon 'ne ziemlich große, IMHO…