Wie überprüfen Knoten, ob ein Block gelöst wurde und der Blockchain hinzugefügt werden kann?

Wenn ein Miner einen Block löst, wird er an das Netzwerk gesendet, wenn andere Knoten ihn erhalten, wie überprüfen sie, ob der empfangene Block tatsächlich gelöst wurde und der Blockchain hinzugefügt werden kann?

Sie wissen also nicht, was die Antwort ist, aber wenn Sie die Antwort bekommen haben, wissen Sie, was die Frage war.

Antworten (3)

StephenM hat darauf eine gute Antwort geschrieben:

  1. Die Schwierigkeit (oder nBits, wie sie im Code genannt wird) ist eine Abkürzung dafür, wie schwierig es ist, den Block zu lösen. Im Wesentlichen codiert es einen Zielwert, und der Hash des Blocks (wenn er als 256-Bit-Ganzzahl behandelt wird) muss unter diesem Zielwert liegen, um als gelöst zu gelten.

Die anderen Knoten können dies verifizieren, indem sie den Block mit der angenommenen Nonce-Lösung hashen, und wenn er denselben Hash wie die Lösung zurückgibt und die Schwierigkeitsbeschränkungen erfüllt (korrekte Anzahl von Nullen am Anfang), wird dieser Block als gelöst bestätigt .

Nehmen wir an, Block #396716 wurde gerade abgebaut. Die Teilnehmer bestätigen:

  1. Ist der Block wirklich der nächste? Schauen Sie einfach, ob der vorherige Block bereits akzeptiert wird. Jeder Block enthält die ID des vorherigen Blocks.

  2. Hat der Bergmann genug Arbeit geleistet? Da die Schwierigkeit jetzt 120 ist, bedeutet dies, dass die Block-ID 120÷8 = 15 Nullen enthalten sollte.

00000000000000000277e25b11ccc9dc44a8563de315c454507522dae5a0d204

000000000000000 <- 15 Nullen. Daher verbrachte der Bergmann genug Arbeit.

  1. Ist der Zeitstempel korrekt? Testen Sie einfach, ob es in der Nähe der aktuellen Zeit ist.
  2. Überprüfen Sie alle Transaktionen innerhalb des Blocks. Dazu gehört die Überprüfung, ob der Miner sich selbst die richtige Belohnung geschickt hat (derzeit 25 BTC). Als nächstes werden alle Transaktionen überprüft, ob Beträge übereinstimmen, Unterschriften korrekt sind usw.
So funktioniert Schwierigkeit nicht. Er wird nicht durch eine Anzahl von Nullen am Anfang ausgedrückt, sondern als Verhältnis zwischen dem maximalen Block-Hash und dem tatsächlich benötigten.