Mehr Über Den Block-Header
Swipe um das Menü anzuzeigen
Bevor wir uns eingehender mit dem Block-Header beschäftigen, sollten wir zunächst den Unterschied zwischen Big Endian- und Little Endian-Formaten verstehen.
Little Endian und Big Endian
Zunächst muss das Konzept der Endianness verstanden werden.
Endianness bezeichnet die Reihenfolge, in der Bytes (jedes Byte entspricht 8 Bits) innerhalb größerer Datentypen im Computerspeicher angeordnet werden.
Das Big Endian-Format speichert das höchstwertige Byte zuerst, was der üblichen menschlichen Lesart von Zahlen entspricht. Verwenden wir die Dezimalzahl 234567890 als Beispiel und wandeln sie mit Python in Hexadezimal- und Binärdarstellung um und geben die Ergebnisse aus:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Da Computer Ganzzahlen mit einer ganzen Anzahl von Bytes speichern und jeweils 2 Hex-Ziffern einem Byte entsprechen, benötigen wir eine gerade Anzahl von Ziffern. Die Hexadezimaldarstellung unserer Zahl, 0xDFB38D2, enthält 7 Ziffern, daher müssen wir eine Null 0 links hinzufügen. Die resultierende Zahl, 0x0DFB38D2, hat nun 8 Hex-Ziffern (passt genau in 4 Bytes) und denselben Wert.
Ebenso hat unsere Binärzahl 28 Bits, und jeweils 8 Bits entsprechen 1 Byte, daher muss die Bitanzahl durch 8 teilbar sein. Wir fügen 4 Nullen 0 links hinzu. Die resultierende Zahl, 0b00001101111110110011100011010010, hat nun 32 Bits (passt genau in 4 Bytes) und denselben Wert.
Mit Python haben wir das Big Endian-Format erhalten, das wir auch bei manueller Umrechnung erhalten würden, und unsere Zahl sieht wie folgt aus:
0x0DFB38D2in Hexadezimal;0b00001101111110110011100011010010in Binär.
Die folgende Tabelle hilft, das Big Endian-Format besser zu verstehen:
Im Gegensatz dazu speichert das Little-Endian-Format das niederwertigste Byte zuerst und kehrt damit die intuitive Reihenfolge um:
Wie Sie sehen können, sieht unsere Zahl im Little-Endian-Format wie folgt aus:
-
0xD238FB0Din Hexadezimal; -
0b11010010001110001111101100001101in Binär.
Zurück zum Block-Header
Zur Wiederholung: Der Header besteht genau aus 80 Bytes und enthält sechs Datenfelder, die jeweils im Little-Endian-Format vorliegen. Werfen wir nun einen Blick auf den Header von Block 645536:
Da der Block-Header genau 80 Bytes umfasst, gibt es exakt 160 Hexadezimalstellen (jedes Byte entspricht 2 Hexadezimalstellen). Das Version-Feld beispielsweise belegt 4 Bytes, also 8 Hexadezimalstellen.
Hier sind die detaillierten Informationen zu diesem Block im Explorer:
Die Felder werden hier im Big-Endian-Format angezeigt. Das Bits-Feld zum Beispiel kann betrachtet und mit seiner Darstellung im Block-Header verglichen werden. Die hexadezimale Darstellung ist 0x171007ea im Big-Endian-Format:
Wenn wir es in das Little-Endian-Format umwandeln, sieht es wie folgt aus:
Wie Sie sehen können, ist das genau das, was wir im Block-Header hatten.
1. Worauf bezieht sich „Endianness“ im Kontext von Blockchain und Computersystemen?
2. Ordnen Sie die Block-Komponenten ihren Definitionen zu.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Mehr Über Den Block-Header
Bevor wir uns eingehender mit dem Block-Header beschäftigen, sollten wir zunächst den Unterschied zwischen Big Endian- und Little Endian-Formaten verstehen.
Little Endian und Big Endian
Zunächst muss das Konzept der Endianness verstanden werden.
Endianness bezeichnet die Reihenfolge, in der Bytes (jedes Byte entspricht 8 Bits) innerhalb größerer Datentypen im Computerspeicher angeordnet werden.
Das Big Endian-Format speichert das höchstwertige Byte zuerst, was der üblichen menschlichen Lesart von Zahlen entspricht. Verwenden wir die Dezimalzahl 234567890 als Beispiel und wandeln sie mit Python in Hexadezimal- und Binärdarstellung um und geben die Ergebnisse aus:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Da Computer Ganzzahlen mit einer ganzen Anzahl von Bytes speichern und jeweils 2 Hex-Ziffern einem Byte entsprechen, benötigen wir eine gerade Anzahl von Ziffern. Die Hexadezimaldarstellung unserer Zahl, 0xDFB38D2, enthält 7 Ziffern, daher müssen wir eine Null 0 links hinzufügen. Die resultierende Zahl, 0x0DFB38D2, hat nun 8 Hex-Ziffern (passt genau in 4 Bytes) und denselben Wert.
Ebenso hat unsere Binärzahl 28 Bits, und jeweils 8 Bits entsprechen 1 Byte, daher muss die Bitanzahl durch 8 teilbar sein. Wir fügen 4 Nullen 0 links hinzu. Die resultierende Zahl, 0b00001101111110110011100011010010, hat nun 32 Bits (passt genau in 4 Bytes) und denselben Wert.
Mit Python haben wir das Big Endian-Format erhalten, das wir auch bei manueller Umrechnung erhalten würden, und unsere Zahl sieht wie folgt aus:
0x0DFB38D2in Hexadezimal;0b00001101111110110011100011010010in Binär.
Die folgende Tabelle hilft, das Big Endian-Format besser zu verstehen:
Im Gegensatz dazu speichert das Little-Endian-Format das niederwertigste Byte zuerst und kehrt damit die intuitive Reihenfolge um:
Wie Sie sehen können, sieht unsere Zahl im Little-Endian-Format wie folgt aus:
-
0xD238FB0Din Hexadezimal; -
0b11010010001110001111101100001101in Binär.
Zurück zum Block-Header
Zur Wiederholung: Der Header besteht genau aus 80 Bytes und enthält sechs Datenfelder, die jeweils im Little-Endian-Format vorliegen. Werfen wir nun einen Blick auf den Header von Block 645536:
Da der Block-Header genau 80 Bytes umfasst, gibt es exakt 160 Hexadezimalstellen (jedes Byte entspricht 2 Hexadezimalstellen). Das Version-Feld beispielsweise belegt 4 Bytes, also 8 Hexadezimalstellen.
Hier sind die detaillierten Informationen zu diesem Block im Explorer:
Die Felder werden hier im Big-Endian-Format angezeigt. Das Bits-Feld zum Beispiel kann betrachtet und mit seiner Darstellung im Block-Header verglichen werden. Die hexadezimale Darstellung ist 0x171007ea im Big-Endian-Format:
Wenn wir es in das Little-Endian-Format umwandeln, sieht es wie folgt aus:
Wie Sie sehen können, ist das genau das, was wir im Block-Header hatten.
Danke für Ihr Feedback!