Block header

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

La blockchain è costituita da una serie di blocchi che vengono utilizzati per memorizzare le informazioni relative alle transazioni che avvengono su una rete di blockchain. Ciascuno dei blocchi contiene un block header, un'intestazione unica e ogni blocco è identificato individualmente dall'hash del Block Header.

CONCETTI CHIAVE

  • I block header identificano i singoli blocchi di una blockchain.
  • Vengono sottoposti a hash nella proof of work.
  • I blocchi sono stratificati verticalmente, a partire dal "blocco genesi".
  • Ogni block header ha tre serie di metadati del blocco e più componenti individuali.
  • Il numero di versione di Bitcoin aiuta a tenere traccia delle modifiche apportate al protocollo.

Il Block Header è quella parte di un blocco che serve a descrivere il resto del blocco.

È composto da diversi metadati, quali l'ora e la difficoltà in cui il blocco è stato minato, la Merkle root delle transazioni incluse e il nonce. È presente anche l'hash del blocco precedente, che permette di creare la "catena" di blocchi. In sostanza, il Block Header contiene tutti i dati che non sono l'elenco delle transazioni grezze.

I miner calcolano l'hash del Block Header nella loro attività di mining di un blocco valido. Questo è molto più efficiente dell'hashing dell'intero blocco, che può essere composto da migliaia di transazioni. Sarebbe molto più complicato per un miner cambiare il nonce e rieseguire un intero blocco di 2 MB per ogni tentativo. Si confronti con l'hashing del block header di Bitcoin, ad esempio, che hanno una lunghezza fissa di 80 byte. I block header sono ottime dal punto di vista del mining, ma grazie alle loro dimensioni ridotte sono ideali anche per i light client. La blockchain di Bitcoin è troppo grande per essere memorizzata da dispositivi come gli smartphone. Se la catena avesse 100.000 blocchi da 1MB, si consumerebbero 100GB di spazio. Ma con le sole intestazioni degli stessi blocchi, si occuperebbero solo 0,008GB, ovvero 8MB. In questo modo, i dispositivi con meno larghezza di banda o spazio di archiviazione possono comunque eseguire un certo grado di convalida. Poiché la Merkle root incapsula tutte le transazioni, è possibile verificare in seguito se una transazione è stata inclusa in un determinato blocco. Questo ha un costo: l'utente deve comunque affidarsi a una terza parte per ottenere le informazioni necessarie. Detto questo, i light client sono preferibili a un sistema in cui gli utenti non effettuano alcuna verifica.

I blocchi vengono disposti uno sopra l'altro, con il primo blocco come base, e crescono in altezza (Block height).

Il primo blocco della catena è noto anche come "blocco genesi". Gli strati e la storia profonda di ogni sequenza sono uno degli elementi che rendono Bitcoin così sicuro.

Nell'ambito di un esercizio di mining standard, il block header viene ripetutamente modificato dai miner alterando il valore nonce. Attraverso questo esercizio, si effettua la Proof of Work, che aiuta i miner a essere ricompensati per il loro contributo al funzionamento regolare ed efficiente del sistema blockchain.

Il Block Header contiene tre serie di metadati del blocco. Si tratta di una stringa lunga 80 byte, composta dal numero di versione di Bitcoin lungo 4 byte, dall'hash del blocco precedente lungo 32 byte, dalla Merkle root lunga 32 byte, dal timestamp del blocco lungo 4 byte, dal difficulty target del blocco lungo 4 byte e dal nonce usato dai miner lungo 4 byte.

Componenti del Block Header Ognuno di questi componenti è fondamentale per creare un'intestazione accurata e affidabile. L'identificatore principale di ogni singolo blocco è l'hash crittografico che contiene. Si tratta essenzialmente di un'impronta digitale, che viene creata eseguendo due volte l'hashing del Block Header attraverso l'algoritmo di hashing.

Il numero di versione di Bitcoin è utile per tenere traccia delle modifiche e degli aggiornamenti del protocollo. L'hash del blocco precedente si collega al blocco precedente o al suo genitore, proteggendo in modo efficace la catena.

La Merkle Tree è costituita da tutti gli hash delle transazioni all'interno della transazione. Non è così complicato come sembra, ogni hash è solo un ulteriore hash. Il timestamp è incluso in modo che tutti coloro che i partecipanti siano in grado di vedere una registrazione permanente e codificata di quando si è verificato un particolare evento. In genere fornisce la data e l'ora del giorno di quel particolare evento e spesso è abbastanza preciso da rientrare in una frazione di secondo, ma è comunque impostata dal miner quindi non può essere considerata affidabile e a tal proposito vienee effettuata dai nodi una verifica tramite il Median time-past.


aggiornato il 2022-08-28