Was passiert mit der Arbeit eines Miners, wenn er neu startet?

Ich studiere die Bitcoin-Interna und insbesondere den Proof-of-Work. Der Proof-of-Work basiert auf dem mathematischen Problem, das wir aus einer Eingabe berechnen müssen, die einen Hash mit einer bestimmten führenden Teilzeichenfolge erzeugt. Ich denke, die Teilzeichenfolge sollte mit einer bestimmten Anzahl von Nullen beginnen.

Wir hashen die aktuelle Eingabe mit SHA-256, also müssen wir 2^256 berechnen. Jetzt ist meine Frage, wir hashen den Hash der vorherigen Blockchain mit Transaktionen und der Nonce? Ist es noch etwas anderes, auch im Hash? Wenn der erste Versuch nicht erfolgreich ist, wird außerdem die Nonce geändert, um einen neuen Hash zu berechnen?

Noch ein paar Fragen: a) Wenn wir beginnen, Transaktionen zu einem Block hinzuzufügen und vor unserem Block ein weiterer Block erstellt wird, was passiert dann mit unserer Arbeit? Beginnen wir mit dem Mining von Anfang an oder setzen wir das Mining mit unseren verbleibenden Transaktionen fort? b) Können wir außerdem Blöcke mit 0 Transaktionen in die Blockchain aufnehmen?

Antworten (2)

Jetzt ist meine Frage, wir hashen den Hash der vorherigen Blockchain mit Transaktionen und der Nonce?

Wir können hier die Form eines Blocks betrachten.

Die Informationen, die tatsächlich gehasht werden, umfassen die Version, den vorherigen Block-Hash, die Merkle-Root der Transaktionen, die der Miner in den Block aufgenommen hat, die aktuelle Uhrzeit, die Zielschwierigkeit des Blocks und die 32-Bit-Nonce. Der Rest der Informationen hier ist abgeleitet.

Weitere Informationen zum Blockformat finden Sie im Wiki.

Wenn der erste Versuch nicht erfolgreich ist, wird außerdem die Nonce geändert, um einen neuen Hash zu berechnen?

Die Nonce wird inkrementiert, bis der 32-Bit-Speicherplatz erschöpft ist. An diesem Punkt wird der Header geändert, um dem Miner eine andere Arbeit zu geben. Derzeit kann dies viele Male pro Sekunde passieren.

Wenn wir beginnen, Transaktionen zu einem Block hinzuzufügen und ein weiterer Block vor unserem Block erstellt wird, was passiert dann mit unserer Arbeit?

Die aktuelle Arbeit wird verworfen und der Miner beginnt mit der Arbeit auf dem höchsten bekannten Block.

Können wir außerdem Blöcke mit 0 Transaktionen in die Blockchain aufnehmen?

Nein, ein Block muss eine Transaktion enthalten, die die Miner-Belohnung enthält, die ein beliebiger Wert bis zur Grenze der aktuellen Blockbelohnung sein kann, zum Zeitpunkt des Schreibens sind dies 25 BTC. 1-Transaktionsblöcke sind recht häufig, da sie weniger wahrscheinlich verwaisen (ein weiterer wird erstellt, während der geprägte Block seinen Weg durch das Netzwerk findet).

Ja, die Nonce wird bei jedem Versuch erhöht. Ich bin vielleicht pedantisch, aber der Hash ist ein doppelter SHA256-Hash, z. B. SHA256 (SHA256 (Daten))

Werfen Sie einen Blick auf http://blockexplorer.com/rawblock/000000000000026190ebd9560f94b8d0534c6cd6fd585bf6fdb54610e6b676c3 , um ein Beispiel für einen Rohblock (erfolgreich abgebauter Block) mit den Header-Informationen zu sehen.

Beachten Sie, dass Sie, wenn Sie die Nonce überlaufen (an die oberste Zählung gelangen), einfach den Zeitstempel ändern oder neue Transaktionen hinzufügen und Ihre Nonce auf 0 zurücksetzen können.

Außerdem ist es für Bergleute in verschiedenen Pools rechnerisch unmöglich, dieselbe Merkle-Wurzel wie der Block zu finden

Wenn wir beginnen, Transaktionen zu einem Block hinzuzufügen und ein weiterer Block vor unserem Block erstellt wird, was passiert dann mit unserer Arbeit?

Ihre Arbeit ist verloren/verschwendet und jeder beginnt mit dem Abbau des nächsten Blocks (der den Hash des Blocks davor enthält).

Können wir Blöcke mit 0 Transaktionen in die Blockchain aufnehmen?

Ja, das können Sie, aber Sie werden die Blockbelohnung von (derzeit) 25 BTC wegwerfen, da eine der Transaktionen im Block diejenige ist, die die Belohnung beansprucht.