Was ist Hashing?

Hashing spielt für Kryptowährungen eine wichtige Rolle. Hashfunktionen garantieren eine manipulationssichere Blockchain. Des weiteren basieren viele Konsensusverfahren auf Hashfunktionen.

Das Hashen oder auch Hashing bezeichnet die Ausführung einer Hashfunktion. Hashfunktionen kommen aus der Kryptographie und erzeugen aus einer beliebigen Eingabe eine Ausgabe mit bestimmten Eigenschaften:

  • Das Ergebnis ist eine Zahl
  • Das Ergebnis ist zufällig
  • Eine bestimmte Eingabe liefert immer das gleiche Ergebnis
  • Jede beliebige Eingabe führt zu einer Ausgabe zwischen 0 und einer oberen Grenze, z.B. 100 Billionen
  • Das Ergebnis ist nicht umkehrbar, man kann aus einem Hash nicht die Eingabe zurückrechnen
  • Kleine Veränderungen führen zu einem völlig anderem Ergebnis, hier am Beispiel der SHA256 Hashfunktion verdeutlicht:
    • SHA256(Schmitt): d80b5f061c97950688de903fb2d63819549f0bed
    • SHA256(Schmidt): fc7919b286e49d89c6308ecce50e7ed18bf8d8f7
    • SHA256(schmidt): ec3fdd57d03042ff57e161929639e74addf22ec3

Hashing in Blockchains

Hashfunktionen spielen für Blockchains eine wichtige Rolle. Für jeden Block wird ein Hashwert gebildet. In diesen Hash fließen unter anderem alle enthaltenen Transaktionen ein. Desweiterern ist ein ein Verweis auf den Vorgänger-Block enthalten. Sinngemäß: ich bin der Nachfolger des Blockes mit dem Hash 8aa31a1003c5f36c2815cfd57032478c581cb798 und ich enthalte die folgenden Transaktionen: …

Das ist entscheidend für die Manipulationssicherheit einer Blockchain. Ändert man in einem Block nur eine einzige Transaktion, verändert sich der Hash des Blocks. Damit gibt es aber keine gültigen Nachfolgerblöcke mehr und für jeden Nachfolger muss ein neuer Konsens gefunden werden. Beim Proof-of-Stake Konsensus benötigt man dafür mindestens 51% der Mining-Kapazität. Dann hat man eine theoretische Möglichkeit die Blöcke erneut zu minen. So könnte ein Angreifer eine Transaktion nachträglich verändern. Man spricht in diesem Kontext auch von einer 51%-Attacke.