Du hast einen Input, z.B. „Blocktrainer“ und dieser wird, einfach ausgedrückt, durch eine Funktion gejagt, die man nicht mehr rückwärts rechnen kann.
Ich kann also, wenn ich den Input „Blocktrainer“ kenne, verifizieren, dass der Hash korrekt ist, kann aber, wenn ich nur den Hash habe, nicht auf den Input „Blocktrainer“ schließen.
Aus „Blocktrainer“ wird mit SHA-256 (dem Algorithmus den das Bitcoin Netzwerk nutzt) dann
92bafe95c079147083a28a24652c293018031892cc615a4a4f2ab4a72bfceb8f
Verändert man auch nur ein kleines Detail am Input, z.B. „Plocktrainer“, sieht der Hash komplett anders aus:
4a73e7ef298177f33a105c92cf705e4fb4b7fb4945072ea0a182cd6ed6500d62
Das ist extrem wichtig, da man somit Hashes nicht miteinander vergleichen kann. Sehen zwei Hashes sehr ähnlich aus, heisst das nicht, dass der Input ein ähnlicher war.
Das kannst du dir folgendermaßen vorstellen, auch wenn das mehrmals von anderen erklärt wurde, aber egal, mir ist langweilig:
Die Miner haben die Aufgabe einen Hash zu finden, der in etwa so aussieht:
0000000000000000000cad4ebfee50968c64c79ae94cc3b13412ee1f18e3f831
Na, was fällt auf? Richtig, die vielen Nullen am Anfang. Dieser Hash ist das „Proof of Work“ für den Block 683329. Um einen solchen Hash zu finden, muss ich viel Arbeit investieren, da ich ja die Funktion nicht zurück rechnen kann. Je spezieller der Hash sein soll, also wie viele Nullen am Anfang zum Beispiel, desto mehr Arbeit muss ich investieren und desto unwahrscheinlicher wird es, dass ich eine Lösung finde. Ich muss also durch ausprobieren versuchen, einen besonderen Hash zu erhalten, man spricht daher auch davon, einen „Block zu finden“.
Für Bitcoin wird die Schwierigkeit immer so an die Hashrate, also die Rechenleistung die dem Netzwerk zur Verfügung steht, angepasst, damit es in etwa 10 Minuten für einen neuen Block dauert.
Es ist nicht möglich, diesen Arbeitsnachweis zu fälschen, Mathematik lügt nicht, entweder sie stimmt oder sie stimmt nicht.