Wie berechnet sich die Menge an Proof-of-Work, die in eine Kette investiert wird?

Im Bitcoin-Whitepaper (Seite 3) heißt es

Die Mehrheitsentscheidung wird durch die längste Kette repräsentiert, in die der größte Proof-of-Work-Aufwand investiert wurde.

Ich konnte nicht finden, wie genau diese Schwierigkeit berechnet wird.

Ist es die Summe der Präfix-Nullen der Nonces jedes Blocks?


Ich habe diese Antwort gefunden , aber sie ist zu kurz, um sie zu verstehen.

Antworten (1)

Die Arbeit wird berechnet als work = 2^256 / block_target, wie in der verlinkten Antwort angegeben, was der Mindest-Hash-Wert ist, der als gültiger Arbeitsnachweis gilt (beachten Sie, dass sich dies nur alle 2016-Blöcke ändert). Der Quellcode dafür ist src/chain.cpp L#121 . Die gesamte Kettenarbeit ist die Summe der Arbeit für alle Blöcke in der Kette und wird hier berechnet: src/validation.cpp L#3713 . Um also zu visualisieren, je niedriger das Blockziel, desto mehr Arbeit wurde geleistet.

Beispiel

Block 0 Ziel: 00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff
Block 1 Ziel:00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Block 0 : Block 1 :work = (2^256) / <block 0 hash> = 4.295 × 10^9
work = (2^256) / <block 1 hash> = 4.295 × 10^9

Sie können sehen, dass beide die gleiche Menge an Arbeit geleistet haben. Bei Gleichstand gelten die folgenden Regeln, siehe https://bitcoin.stackexchange.com/a/37275/60443

  • Welche wurde zuerst erhalten? (Dies kann für verschiedene Clients unterschiedlich sein, weshalb zuerst die vorherige Regel angewendet wird.)
  • Welches hat eine größere Zeigeradresse? (Dies ist weitgehend zufällig und für verschiedene Clients unterschiedlich.)
Eine Erklärung für "block_target" fehlte. Jetzt verstehe ich, dass es sich um den wörtlichen Block-Hash handelt.
Könnten Sie zufällig einen Link zu der jeweiligen Methode/Zeile im Bitcoin-Quellcode bereitstellen?
Ich habe meine Antwort bearbeitet, da ich mich geirrt habe, den Block-Hash für die zu verwendenblock_target
Außerdem wurden Links zum Quellcode hinzugefügt.