Verwenden einer Blockvorlage zum Minen

Nov 25 2020

Ich bin etwas verwirrt darüber, wie ich die Blockvorlage verwende. Ich habe diese Frage gesehen, die mich zu der Annahme veranlasst, dass ich diese Funktion möglicherweise aufrufen muss, bis ich einen Hash erhalte, der der Schwierigkeit entspricht. Was sind die Funktionsaufrufe, die ich ausführen muss, um eine Blockvorlage abzubauen, damit ich dann den Submit-Block aufrufen kann?

Entschuldigung, wenn dies eine vage Frage ist, bin ich nur ziemlich verwirrt.

Ich habe diese Frage auch gesehen , aber sie beantwortet nicht wirklich, welche Funktion ich aufrufen soll.

Nur für mehr Kontext rufe ich Monero aus einem Bazel-Repository an, damit die Dinge etwas haarig und komplex sind.

Antworten

2 jtgrassie Nov 26 2020 at 09:52

Ich bin ein wenig verwirrt darüber, wie ich die Blockvorlage verwende ... Grundsätzlich sind die Funktionsaufrufe, die ich ausführen muss, um eine Blockvorlage abzubauen, damit ich dann den Submit-Block aufrufen kann.

Eine Blockvorlage ist genau das, eine Vorlage für einen Block, an dem ein Miner arbeiten kann (wiederholtes Hashing), um eine Lösung zu finden (ein Hash, der die Netzwerkschwierigkeiten erfüllt) und dann an das Netzwerk zu senden.

Zunächst erhält ein Miner eine Blockvorlage, normalerweise mit der Daemon-Methode get_block_template .

Als nächstes aktualisiert der Miner den Nonce-Bereich 1 und führt einen Hash 2 aus (unter Verwendung der RandomX-Hash-Funktion). Wenn der resultierende Hash (bei dem es sich nur um eine Zahl handelt) die Netzwerkschwierigkeit erfüllt, können sie den Block mithilfe der Daemon-Methode submit_block an das Netzwerk senden .

Schließlich überprüfen Peer-Knoten, ob alle vorgeschlagenen Block-Hashs die Netzwerkschwierigkeiten erfüllen. Wenn kein anderer Bergmann einen gültigen Block (oder eine Blockkette) mit mehr Arbeit einreicht, erhält der Bergmann nach 60 Blöcken die Belohnung.

1 Der Nonce-Bereich kann eine beliebige Kombination des Nonce-Felds im Blockheader oder in einem beliebigen reservierten Bereich der Miner-Transaktion sein.

2 Was tatsächlich gehasht wird, ist ein Block-Hashing-Blob, bei dem es sich um eine Verkettung des Block-Headers, einen Merkle-Root-Hash der Blocktransaktionen und eine Varint der Anzahl der Sendungen ( src ) handelt. Ein Miner kann entweder direkt den zurückgegebenen Block-Hashing-Blob von verwenden get_block_templateoder den Block-Hashing-Blob selbst mithilfe des Block-Template-Blobs erstellen. Letzteres ist erforderlich, wenn der Miner den reservierten Speicherplatz des Miner TX ändert.