Wie schwer ist es, einen Block zu ändern, nachdem er gefunden wurde?

Wenn ein Miner einen Block gefunden hat, wie einfach ist es für ihn, einen in diesem Block enthaltenen TX hinzuzufügen oder zu entfernen? Müsste er den modifizierten Block von Grund auf neu lösen oder gibt es einen Punkt, an dem er den Lösungsprozess wieder aufnehmen kann?

Antworten (3)

Wenn ein Miner einen Block gefunden hat, wie einfach ist es für ihn, einen in diesem Block enthaltenen TX hinzuzufügen oder zu entfernen?

Es ist unmöglich. Der gelöste Block hängt von jedem Byte der Transaktionsdaten ab, nichts kann geändert werden. Es ist wichtig, dass es so ist. Was wäre, wenn ich einen gelösten Block übertragen könnte, aber die Transaktion auslassen könnte, bei der ich Münzen an jemand anderen gesendet habe, wodurch meine Ausgaben im Wesentlichen zurückerstattet würden? Das würde zu einem unsicheren System führen.

Müsste er den modifizierten Block von Grund auf neu lösen oder gibt es einen Punkt, an dem er den Lösungsprozess wieder aufnehmen kann?

Es ist im Grunde wie ein Neuanfang. Dies liegt hauptsächlich an der Merkle-Wurzel im Block-Header. Stellen Sie es sich wie eine Funktion vor, die von jedem einzelnen Byte der Transaktionen abhängt, und wenn sich eine der Transaktionen ändert, ändert sich die Ausgabe der Funktion vollständig.

Weitere Informationen zu Merkle-Bäumen in Bitcoin finden Sie hier: Was ist die Merkle-Wurzel?


BEARBEITEN: Ich wollte diese Mining-Analogie hinzufügen, die ich nützlich finde.

Jeder Hash, den der Miner berechnet, hat die Chance, einen Block zu lösen. Bergbau ist im Grunde so, als würde man ein Video aufnehmen, in dem man 256 Münzen wirft und versucht, eine lange Reihe von Köpfen zu bekommen. Wie lang die Köpfe sein müssen, hängt davon ab, mit wie vielen anderen Münzwerfern Sie konkurrieren. Wenn Sie eine Reihe von Köpfen bekommen, die lang genug ist, zeigen Sie den Beweis (Video) und erhalten die Belohnung. Andernfalls versuchen Sie es einfach erneut. Sie beginnen im Wesentlichen jedes Mal neu, wenn Sie einen neuen Hash erstellen (also Milliarden Male), und das Ändern Ihrer Blockdaten macht es nicht mehr oder weniger unwahrscheinlich, dass Sie die Münzen erfolgreich werfen.

Beachten Sie, wie viel Arbeit es braucht, um die Köpfe erfolgreich umzudrehen (es würde viele Versuche erfordern, wobei jeder Versuch wirklich einfach ist), aber sehr wenig Arbeit, um zu überprüfen, ob ein Video von Münzwürfen legitim ist.

"Es ist im Grunde wie ein Neuanfang." Eigentlich ist es nicht von einem Neuanfang zu unterscheiden . ;)

Aus dem ursprünglichen Bitcoin-Papier :

... wir implementieren den Proof-of-Work, indem wir eine Nonce im Block inkrementieren, bis ein Wert gefunden wird, der dem Hash des Blocks die erforderlichen Nullbits gibt. Sobald der CPU-Aufwand aufgewendet wurde, um den Proof-of-Work zu erfüllen, kann der Block nicht geändert werden, ohne die Arbeit zu wiederholen . Da spätere Blöcke danach verkettet werden, würde die Arbeit zum Ändern des Blocks das Wiederholen aller Blöcke danach umfassen.

SHA256 ist eine kryptografische Hash-Funktion .
Neben anderen Eigenschaften ist es

  • Es ist nicht möglich, die Eingabe eines CHF zu ändern, ohne die Hash-Ausgabe zu ändern
  • Es gibt kein erkennbares Muster zwischen den Hashes zweier unterschiedlicher Nachrichten

Da der Block-Hash das Produkt der Anwendung von SHA256 auf die Blockdaten ist und die Transaktionsdaten in der Eingabe durch die Merkle Root dargestellt werden, ist es unmöglich, auch nur ein Bit eines Blocks oder einer Transaktion zu ändern, ohne von vorne zu beginnen, und dort ist kein Vorsprung durch das Arbeiten mit einem eng verwandten Input.