Wie ist die zusätzliche Nonce formatiert?

Ich versuche zu verstehen, wie ein Block zusammengesetzt ist. Von hier aus weiß ich, dass die zusätzliche Nonce früher das Format hatte:

pblock->vtx[0].vin[0].scriptSig = CScript() << pblock->nTime << CBigNum(nExtraNonce);

Was bedeutet diese Syntax? Welche Elemente enthält die Skript-Sig genau und in welcher Reihenfolge?

Antworten (1)

Was bedeutet diese Syntax?

Es ist C++ für „das scriptSig der ersten Eingabe in der ersten Transaktion in diesem Block so einstellen, dass es den gleichen Inhalt wie ein Skript mit dem codierten nTime gefolgt vom codierten nExtraNone hat“.

Welche Elemente enthält die Skript-Sig genau und in welcher Reihenfolge?

Es enthält das nTime, gefolgt vom nExtraNonce.

Wie ist die zusätzliche Nonce formatiert?

Ein Beispiel aus dieser Zeit wäre in der scriptSig der Coinbase-Transaktion von Block #185000 :

04d508de4f02e82d

Wenn wir diese Skript-Sig analysieren, lautet sie:

04 -- Number of bytes in group of data
  d508de4f -- 4 bytes. The little endian timestamp.
02 -- Number of bytes in group of data
  e82d --  the little endian extranonce

Beachten Sie, wenn Sie die Bytes umkehren d508de4f, erhalten Sie 4fde08d5, was, wenn Sie es in einen Zeitstempel umwandeln Sun Jun 17 2012 12:41:57 GMT-0400 (EDT). Wenn Sie byte-reverse e82d(umgekehrt ist 2de8) und eine Ganzzahl aus dem Hex dekodieren, erhalten Sie 11.752 für einen Extranonce-Wert.

War die erste Transaktions-ScriptSig schon immer so formatiert?
Wie Sie in der von Ihnen verlinkten Frage sehen können , nein, das war nicht immer so. Darüber hinaus gibt es nur wenige Anforderungen, wie der Miner die scriptSigs seiner Coinbase formatieren muss, er kann beliebige zusätzliche Daten hinzufügen.