Approfondimento sull'Intestazione del Blocco
Prima di poter procedere ad esplorare in dettaglio l'intestazione del blocco, è necessario comprendere la differenza tra i formati big endian e little endian.
Little Endian e Big Endian
Per prima cosa, è importante capire cosa significa realmente endianness.
Endianness si riferisce all'ordine in cui i byte (ogni byte equivale a 8 bit) sono disposti all'interno di tipi di dati più grandi nella memoria del computer.
Il formato big endian memorizza il byte più significativo per primo, in linea con il modo in cui gli esseri umani leggono tipicamente i numeri. Utilizziamo come esempio il numero decimale 234567890 e convertiamolo in esadecimale e binario utilizzando Python e visualizziamo i risultati:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Poiché i computer memorizzano gli interi utilizzando un numero intero di byte, e ogni 2 cifre esadecimali corrispondono a un byte, è necessario avere un numero pari di cifre. La rappresentazione esadecimale del nostro numero, 0xDFB38D2, contiene 7 cifre, quindi occorre aggiungere uno zero 0 a sinistra. Il numero risultante, 0x0DFB38D2, ora ha 8 cifre esadecimali (corrisponde esattamente a 4 byte) e lo stesso valore.
Allo stesso modo, il nostro numero binario ha 28 bit, e ogni 8 bit corrispondono a 1 byte, quindi è necessario che il numero di bit sia divisibile per 8 aggiungendo 4 zeri 0 a sinistra. Il numero risultante, 0b00001101111110110011100011010010, ora ha 32 bit (corrisponde esattamente a 4 byte) e lo stesso valore.
Utilizzando Python, abbiamo ottenuto il formato big endian, che otterremmo anche convertendo manualmente, e il nostro numero appare come segue:
0x0DFB38D2in esadecimale;0b00001101111110110011100011010010in binario.
Osserviamo la tabella sottostante per comprendere il formato big endian:
Al contrario, il formato little endian memorizza per primo il byte meno significativo, invertendo l'ordine intuitivo:
Come puoi vedere, il nostro numero in formato little endian appare come segue:
-
0xD238FB0Din esadecimale; -
0b11010010001110001111101100001101in binario.
Torniamo all'Intestazione del Blocco
Per ricapitolare, l'intestazione è composta esattamente da 80 byte che contengono sei campi dati, ciascuno dei quali è in formato little endian. Ora diamo un'occhiata all'intestazione del blocco 645536:
Poiché l'intestazione del blocco occupa esattamente 80 byte, ci sono esattamente 160 cifre esadecimali (ogni byte corrisponde a 2 cifre esadecimali). Il campo version (versione), ad esempio, occupa 4 byte, quindi ci sono 8 cifre esadecimali.
Ecco le informazioni dettagliate su questo blocco nell'explorer:
I campi qui sono mostrati in formato big endian. Analizziamo il campo bits, ad esempio, e confrontiamolo con la sua rappresentazione nell'intestazione del blocco. La sua rappresentazione esadecimale è 0x171007ea in formato big endian:
Se lo convertiamo in formato little endian, apparirà come segue:
Come puoi vedere, è esattamente ciò che avevamo nell'intestazione del blocco.
1. A cosa si riferisce "endianness" nel contesto della blockchain e dei sistemi informatici?
2. Abbina i componenti del blocco alle loro definizioni.
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 6.25
Approfondimento sull'Intestazione del Blocco
Scorri per mostrare il menu
Prima di poter procedere ad esplorare in dettaglio l'intestazione del blocco, è necessario comprendere la differenza tra i formati big endian e little endian.
Little Endian e Big Endian
Per prima cosa, è importante capire cosa significa realmente endianness.
Endianness si riferisce all'ordine in cui i byte (ogni byte equivale a 8 bit) sono disposti all'interno di tipi di dati più grandi nella memoria del computer.
Il formato big endian memorizza il byte più significativo per primo, in linea con il modo in cui gli esseri umani leggono tipicamente i numeri. Utilizziamo come esempio il numero decimale 234567890 e convertiamolo in esadecimale e binario utilizzando Python e visualizziamo i risultati:
123decimal_number = 234567890 print(hex(decimal_number)) print(bin(decimal_number))
Poiché i computer memorizzano gli interi utilizzando un numero intero di byte, e ogni 2 cifre esadecimali corrispondono a un byte, è necessario avere un numero pari di cifre. La rappresentazione esadecimale del nostro numero, 0xDFB38D2, contiene 7 cifre, quindi occorre aggiungere uno zero 0 a sinistra. Il numero risultante, 0x0DFB38D2, ora ha 8 cifre esadecimali (corrisponde esattamente a 4 byte) e lo stesso valore.
Allo stesso modo, il nostro numero binario ha 28 bit, e ogni 8 bit corrispondono a 1 byte, quindi è necessario che il numero di bit sia divisibile per 8 aggiungendo 4 zeri 0 a sinistra. Il numero risultante, 0b00001101111110110011100011010010, ora ha 32 bit (corrisponde esattamente a 4 byte) e lo stesso valore.
Utilizzando Python, abbiamo ottenuto il formato big endian, che otterremmo anche convertendo manualmente, e il nostro numero appare come segue:
0x0DFB38D2in esadecimale;0b00001101111110110011100011010010in binario.
Osserviamo la tabella sottostante per comprendere il formato big endian:
Al contrario, il formato little endian memorizza per primo il byte meno significativo, invertendo l'ordine intuitivo:
Come puoi vedere, il nostro numero in formato little endian appare come segue:
-
0xD238FB0Din esadecimale; -
0b11010010001110001111101100001101in binario.
Torniamo all'Intestazione del Blocco
Per ricapitolare, l'intestazione è composta esattamente da 80 byte che contengono sei campi dati, ciascuno dei quali è in formato little endian. Ora diamo un'occhiata all'intestazione del blocco 645536:
Poiché l'intestazione del blocco occupa esattamente 80 byte, ci sono esattamente 160 cifre esadecimali (ogni byte corrisponde a 2 cifre esadecimali). Il campo version (versione), ad esempio, occupa 4 byte, quindi ci sono 8 cifre esadecimali.
Ecco le informazioni dettagliate su questo blocco nell'explorer:
I campi qui sono mostrati in formato big endian. Analizziamo il campo bits, ad esempio, e confrontiamolo con la sua rappresentazione nell'intestazione del blocco. La sua rappresentazione esadecimale è 0x171007ea in formato big endian:
Se lo convertiamo in formato little endian, apparirà come segue:
Come puoi vedere, è esattamente ciò che avevamo nell'intestazione del blocco.
1. A cosa si riferisce "endianness" nel contesto della blockchain e dei sistemi informatici?
2. Abbina i componenti del blocco alle loro definizioni.
Grazie per i tuoi commenti!