Was sind die Hashes, die Miner verwenden müssen, um einen Block zu erstellen? [Duplikat]

Ich stecke ein bisschen im Konzept des Bergbaus fest.

Welche Hashes müssen in jedem Block und in der Kette erstellt werden? Nehmen wir an, wir haben Block A - B - C, der eine Kette bildet.

Eine Quelle sagte, dass wir den Hash von A finden und ihn mit dem Hash des vorherigen Blocks kombinieren müssen, um einen anderen zu bilden, mit anderen Worten: Hash (A + Hash des vorherigen Blocks).

Eine andere Quelle sagt nur, dass es nur ein Hash des Blocks selbst ist, und in diesem Block geben wir den Hash des Hashs des vorherigen Blocks an.

Das Konzept von Proof of Work ist, dass Sie X haben und eine Ausgabe von Z haben, was das benötigte Y ist, also hash(X + Y) = Z.

Wenn das der Fall ist, können wir dann sagen, dass X der Hash des vorherigen Blocks und Y der Hash des aktuellen Blocks ist? Oder sehe ich das falsch?

Quellen: https://www.investinblockchain.com/what-exactly-is-blockchain/ https://www.youtube.com/watch?v=SSo_EIwHSd4&t=1sUnd andere Quellen.

Antworten (1)

Eine andere Quelle sagt nur, dass es nur ein Hash des Blocks selbst ist, und in diesem Block geben wir den Hash des Hashs des vorherigen Blocks an.

Das ist richtig. Die anderen sind in unterschiedlichem Maße richtig und falsch. Aber das ist das einzige, was absolut richtig ist.

Das Konzept von Proof of Work ist, dass Sie X haben und eine Ausgabe von Z haben, was das benötigte Y ist, also hash(X + Y) = Z.

Wenn das der Fall ist, können wir dann sagen, dass X der Hash des vorherigen Blocks und Y der Hash des aktuellen Blocks ist? Oder sehe ich das falsch?

So'ne Art.


Der Block besteht aus mehreren Feldern. Es kann zunächst in zwei Hauptteile unterteilt werden: den Block-Header und die Transaktionen selbst. Der gesamte Block wird auf irgendeine Weise gehasht.

Der Hash des Blockheaders ist das, was wir den Hash des Blocks nennen. Der Hash des Blockheaders wird auch für den Proof of Work verwendet. Wenn Sie den Hash des Block-Headers (auch als Block-Hash bezeichnet) als 256-Bit-Little-Endian-Ganzzahl interpretieren, muss er kleiner als ein berechnetes Ziel (ebenfalls eine 256-Bit-Ganzzahl) sein.

Der Blockheader selbst kann weiter in mehrere Teile zerlegt werden. Es enthält die Versionsnummer des Blocks, den Hash des vorherigen Blocks, den Hash aller Transaktionen im Block, einen Zeitstempel, eine kompakte Darstellung des Zielwerts und eine Nonce.

Da der Blockheader den Hash des vorherigen Blocks enthält, ist der Hash des Blockheaders wirklich nur der Hash des Blocks (da er den Hash aller Transaktionen des Blocks enthält), in dem der Hash des vorherigen Blocks darin angegeben ist.

Um Blöcke abzubauen, optimieren Miner die Felder im Blockheader, bis sie eines erhalten, das dem Ziel entspricht. Normalerweise ändern sie den Nonce-Wert (es ist nur eine Zahl) und den Hash aller Transaktionen im Block (indem sie die Coinbase-Transaktion ändern, neue Transaktionen auswählen und die Reihenfolge der Transaktionen ändern). Miner können auch den Zeitstempel und die Versionsnummer ändern.

Danke für die Antwort! Wenn ich das richtig verstanden habe: Ein Block enthält die Blockversionsnummer, den Hash des vorherigen Blocks, Informationen (Transaktionen, Zeitstempel, andere Daten) und eine Nonce. Miner versuchen, Nonce (normalerweise) oder Transaktionen im Inneren zu optimieren, um den gewünschten Hash zu erreichen. Ist das korrekt? Wer darf den Hash auswählen, der erfüllt werden muss, damit der neue Block abgebaut werden kann?
@NelsenLiu ja, du bist auf dem richtigen Weg! Der Hash muss keinen bestimmten Wert haben, sondern der Hash muss innerhalb eines vordefinierten Wertebereichs liegen. Dieser Bereich wird durch die aktuelle Netzwerkschwierigkeit definiert, die einen Maximalwert für einen gültigen Block-Hash festlegt.
Der Zielwert wird von jedem Knoten individuell bestimmt. Es ist ein deterministischer Algorithmus, sodass jeder, der dieselbe Blockchain verwendet, am Ende die gleiche Schwierigkeit für jede Blockhöhe berechnet.