Laut der Bitcoin Developer Reference ist der Block-Header insgesamt 80 Bytes groß:
BYTENAME 4-Version 32 Header-Hash des vorherigen Blocks 32 Merkle-Root-Hash 4 Mal 4 einmal
So wie ich es verstehe, enthält der Midstate (1. SHA-Block) 64 Bytes des Block-Headers (welche Felder im Besonderen ich nicht kenne, aber ich weiß, dass es die Nonce nicht enthält), und der 2. SHA-Block enthält den Rest , nur 80-64 = 16 Bytes. Bedeutet dies, dass der 2. SHA-Block mit 64 - 16 = 48 Bytes aufgefüllt wird? Wenn ja, warum nicht das Nonce-Feld zum Beispiel 48 - 4 = 42 Bytes größer machen (dh 52 Bytes statt 4 Bytes)?
Auf diese Weise muss Extranonce nicht in der Generierungstransaktion enthalten sein, wodurch das Hashing beschleunigt wird, oder?
Dies hätte auf diese Weise geschehen können, auf Kosten der Erhöhung des Speicherplatzes, der zum Speichern und Senden von Blockheadern benötigt wird. Es scheint, als ob die Block-Header-Speicherung ein großes Problem für Satoshi war (es gibt sogar einen Abschnitt im Whitepaper darüber), aber es hat sich herausgestellt, dass es nicht sehr wichtig ist.
Bedeutet dies, dass der 2. SHA-Block mit 64 - 16 = 48 Bytes aufgefüllt wird?
Ja, (Quelle) , aber Ihre Argumentation ist fehlerhaft. Selbst wenn der Nonce-Raum so groß wäre, dass er sich in einen anderen Block erstreckte, würde das nur bedeuten, dass Midstate den Zustand darstellen würde, nachdem alle bis auf den letzten Block gehasht wurden (Block im Sinne der Kryptografie, nicht im Sinne von Bitcoin).
Wenn der Block-Header genau 128 Bytes wäre, würde das Auffüllen ihn auf einen dritten Block erweitern. Sie haben nur 119 Bytes, bevor das passiert.
Auf diese Weise muss Extranonce nicht in der Generierungstransaktion enthalten sein, wodurch das Hashing beschleunigt wird, oder?
Nicht wirklich. Sie können 2^32 Hashes überprüfen, bevor Sie die Extranonce erhöhen. Danach müssen Sie nur noch etwa zehn Hashes ausführen, bevor Sie zum Mining zurückkehren.
Im Allgemeinen wurde in modernen ASICs sogar dieser Teil ausgelagert. Innerhalb des ASIC wird es eine Art kleinen Prozessor geben, wie einen ARM-Kern, der eine Blockvorlage als Eingabe verwendet und Blockheader ausgibt, an denen die SHA256-Kerne arbeiten können.
Die Kosten liegen also nicht in der Geschwindigkeit, sondern in der Komplexität.
Wie viele Dinge bei Bitcoin denke ich, dass dies eine technische Entscheidung ist, die damals sinnvoll war, aber schlecht gealtert ist.
Morsecoder
Geremia
Morsecoder
Geremia
Morsecoder
Geremia
Markus Messa
<nBits> 4-bytes denoting the target threshold
.