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.
StephenM hat darauf eine gute Antwort geschrieben:
- 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:
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.
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.
Pieter Wuille