Proof of Work
Zur Erinnerung: Die Herausforderung besteht darin, einen Knoten zufällig auszuwählen, der einen Block zur Blockchain hinzufügen darf. Dieser Prozess wird durch ein Rätsel erreicht, das die Knoten lösen müssen. Knoten, die an diesem Rätsel teilnehmen, werden oft Miner genannt.
Die Aufgabe sieht folgendermaßen aus.
- Erstelle einen Kandidatenblock mit Transaktionsdaten und den Metadaten.
- Nimm die Daten des Kandidatenblocks und hashe sie. Dies ergibt den Blockhash aus dem Abschnitt Konsens.
- Wenn der Hash unter einem bestimmten Zielwert liegt und man der erste ist, der die Lösung veröffentlicht hat, hat man gewonnen.
Das klingt auf den ersten Blick einfach. Aber wenn die Zielvorgabe niedrig genug ist (denken Sie daran, dass Sie einen Hash benötigen, der niedriger ist als die Zielvorgabe), braucht es viele Versuche, um eine korrekte Eingabekombination zu finden.
Wenn wir aber viele Versuche brauchen, müssen wir die Eingabe jedes Mal zumindest ein wenig ändern (erinnern Sie sich an die Eigenschaft unserer Hash-Funktion? Sie besagt, dass sich der Hash komplett ändert, wenn man die Eingabe nur ein kleines bisschen ändert).
Um diese kleine Änderung zu erreichen, gibt es in den Metadaten eines jeden Blocks eine Variable namens Nonce. Und dieser Nonce ist unser Wert, der in jeder Runde erhöht wird.
Und jetzt haben wir ein Rennen zwischen allen Minern. Derjenige, dem es gelingt, die richtige Nonce und den dazugehörigen Blockhash zuerst zu finden, gewinnt das Rennen und darf einen neuen Block an die Blockchain anhängen.
Die Start-Eingabewerte sind für jeden Miner ein wenig anders. Erstens, weil jeder Miner unterschiedliche Sätze von Transaktionen wählen kann. Und zweitens, weil die Adresse des Miners auch in die Hash-Eingabe eingeht. Wozu wir das Brauchen, werden wir im Abschnitt Anreize erklären.
Der Miner mit dem schnellsten Computer kann mehr Nonces ausprobieren als seine Konkurrenten. Deshalb hat er die besten Chancen, dieses Rennen zu gewinnen. Da die Hash-Ausgabe jedoch unvorhersehbar ist, kann auch ein Miner mit geringerer Rechenleistung Glück haben. Es ist ein bisschen wie bei einer Ostereiersuche. Wenn man schnell durch den Garten rennt, um Ostereier zu suchen, kann man viele Stellen abklappern, und es ist sehr wahrscheinlich, dass man ein Osterei vor seinen Geschwistern findet. Wenn du aber an den falschen Stellen suchst, können deine jüngeren und langsameren Geschwister auch Glück haben, indem sie an anderen Stellen suchen, die vielleicht die richtigen sind.
Wenn der richtige Blockhash gefunden wurde, sendet der Miner diesen Block an das Netzwerk, und jeder Knoten prüft die Lösung des Rätsels. Wenn alles richtig ist, wird der Block an die Blockchain angehängt. Dann beginnt das Rennen mit neuen Werten (neue Transaktionen und ein neuer vorheriger Blockhash) für den nächsten Block.
Sie können ein wenig mit unserem Proof-of-Work-Simulator spielen. Wenn Sie auf “mine” klicken, versucht er, eine gültige Nonce und einen Hash zu finden, der das Rätsel löst. Sobald der Algorithmus die Nonce gefunden hat, wird der Block grün. Sie können nun den nächsten Block abbauen.
Wenn Sie etwas an einem Block ändern, werden alle folgenden Blöcke rot.