Ich habe erfahren, dass es Leute gibt, die einen neuen Block ohne Transaktion abbauen. Ich verstehe, dass dies nur dazu dient, die Blockbelohnung zu erhalten.
Frage .
Wenn Sie wissen möchten, warum ein Miner einen leeren Block abgebaut hat, müssen Sie ihn im Allgemeinen fragen. Sie könnten das wirklich aus irgendeinem Grund tun.
Für ein spezifischeres Beispiel eines technischen Beispiels, warum ein Miner einen leeren Block abbauen kann:
Als Miner sollten Sie gebührenpflichtige Transaktionen in Ihre Blöcke aufnehmen, um Ihre Gewinne zu maximieren, wenn ein gültiger Block gefunden wird.
Aber Sie müssen auch sicherstellen, dass Sie immer an gültigen Blöcken arbeiten, denn jede Zeit, die Sie mit dem Schürfen eines möglicherweise ungültigen Blocks verbringen, ist wahrscheinlich nur eine Verschwendung Ihrer Ressourcen.
Überlegen Sie in diesem Sinne, was passiert, wenn Sie von einer neuen Sperre im Netzwerk hören. Sie können den Header des Blocks ziemlich schnell validieren und mit dem Mining beginnen, um keine Ressourcen mit dem Mining auf der Höhe von (chaintip - 1) zu verschwenden. Der Haken ist, dass das Herunterladen und Validieren jeder Transaktion im Block ein wenig Zeit in Anspruch nimmt, und bis diese Validierung abgeschlossen ist, haben Sie kein klares Bild davon, welche Transaktionen enthalten sind und welche nicht. Bis Sie die Validierung des neuen Blocks abgeschlossen haben, ist es am sichersten, mit dem Abbau eines leeren Blocks zu beginnenauf der neuen Kettenspitze. Andernfalls wird Ihr Block ungültig, wenn Sie eine bereits bestätigte Transaktion einbeziehen! Sobald Ihr Node ein klares Bild davon hat, welche Transaktionen in den neuen Block aufgenommen wurden, können Sie das Mining auf einem vollen Block fortsetzen, um die Gewinne zu maximieren.
In Wirklichkeit ist die Zeit zwischen dem Hören eines neuen Blocks und dem entsprechenden Aktualisieren Ihres Mempools ziemlich kurz, aber dennoch wird gelegentlich ein Block während dieser Zeit gefunden.
Ich weiß nicht, ob das mit diesem Block passiert ist, aber es dient als Beispiel für einen technischen Grund, warum ein leerer Block im Netzwerk veröffentlicht werden kann.
Die Miner können die einzuschließenden Transaktionen frei wählen. Die meisten möglichen Szenarien waren:
Die Transaktionsgebühr wurde entwickelt, um Spam zu verhindern und die Leute zu ermutigen, Mining-Knoten zu betreiben, damit die Blockchain funktioniert. Wenn die Transaktionsgebühr zu niedrig ist, können Miner einfach alle Transaktionen ignorieren und den Block verarbeiten, um die Belohnung zu erhalten, was Zeit und Energie spart.
Was ist das Problem, wenn sie die Transaktionen darin enthalten.
Ein Block, der Transaktionen enthält, braucht länger, um ihn an andere Miner und Nodes zu verteilen. Diese längere Zeit macht es wahrscheinlicher, dass jemand anderes einen Block findet, während sich dieser Block durch das Netzwerk ausbreitet. In diesem Fall erhalten die Miner, die den ersten Block gefunden haben, ihre Mining-Belohnung nicht.
Darüber hinaus muss ein Miner, der Transaktionen enthält, auch einige SHA256-Berechnungen durchführen, um den Merkle-Baum der Transaktionen zu erstellen. Das Erstellen dieses Baums und das Berechnen des Root-Hash ist Zeit, die nicht mit dem Mining verbracht wird.
Wie Chytrik unten erwähnt, sind diese beiden Nachteile recht gering im Vergleich dazu, wie viel Zeit damit verbracht wird, einen gültigen Block-Hash zu finden, dh Mining.
Warum erlaubt das Bitcoin-Client-Protokoll leere Blöcke?
Denn die Forderung, dass Transaktionen in einen Block aufgenommen werden, würde nicht sicherstellen, dass Miner tatsächlich die Transaktionen anderer Leute abbauen, da die Miner die Transaktionen einfach selbst durchführen könnten. Die Forderung, dass Miner Transaktionen einbeziehen, garantiert daher nicht, dass sie tatsächlich produktive Arbeit für das Netzwerk leisten.
Murch
Murch