Frage zu getblocktemplate

Ich habe Probleme, getblocktemplate zu verstehen.

Von https://en.bitcoin.it/wiki/Getblocktemplate ,

Ich sehe, wie ich den Block-Header aufbaue und dann mit dem Hashing beginne, indem ich die Nonce erhöhe, genauso wie ich das Ergebnis eines getwork-Aufrufs bearbeiten würde.

Was ich nicht verstehe ist folgendes

Da Sie alle Blöcke selbst erstellen, brauchen Sie wirklich nie eine andere Vorlage zu bekommen ... bis sie ungültig ist.

Nachdem ich meine Merkle-Root und dann meinen Block-Header erstellt und durch Erhöhen der Nonce weggehasht habe, was dann? Wie „erstelle“ ich einen Block? Sicherlich werde ich die Nonce schnell mit einem ASIC überlaufen lassen - also was variiere ich sonst noch beim Hashen?

Ich habe das Gefühl, dass ich einen sehr wichtigen Schritt verpasse.

Vielen Dank im Voraus!

Sie sollten sich BIP 22/23 ansehen

Antworten (1)

Sobald ein Client die Vorlage hat, kann er sie ändern, um den Header anders zu gestalten, wodurch Sie einen neuen Nonce-Bereich zum Durchsuchen erhalten. Bei modernen Minern geschieht dies tausend- oder zehntausendmal pro Sekunde.

  • Der Zeitstempel im Header kann bei Bedarf aktualisiert werden, dies wird in alter Software als nRollTime. Diese Methode wird im Allgemeinen nicht mehr verwendet, da Sie nur einen neuen Bereich pro Sekunde erhalten.

  • Die „extraNonce“ kann aktualisiert werden, die zufälligen Daten in der Coinbase-Transaktion werden geändert und der Merkle-Baum wird bis zur Wurzel neu gehasht, wodurch der Header geändert wird. Diese Technik wird auch von Stratum-Minern verwendet.

  • Transaktionen können dem Baum hinzugefügt oder daraus entfernt werden.

GBT und Stratum unterscheiden sich von einem alten System namens GetWork, das einfach nur einen teilweise gehashten Header ausgab. Jedes Mal, wenn der Nonce-Bereich erschöpft war, musste der Client eine neue Anfrage an den Server stellen, von dem aus er abgebaut wurde. Darauf bezieht sich Ihr Zitat.

Okay, also sollte ich die Nonce und die Extra-Nonce und möglicherweise den Zeitstempel aktualisieren, wenn ich dann keine Transaktionen ausschließen möchte?
Sie müssen den Zeitstempel immer aktualisieren oder Sie werden ungültige Blöcke erzeugen. Wiederholen Sie die Nonce, bis Sie erreichen 2^32, und ändern Sie dann die extraNonce.
Der Zeitstempel soll immer nur mit meiner aktuellen Zeit synchron gehalten werden?
Das ist richtig.