Il blocco: intestazione, altezza, dimensione e sussidio
Un blocco è una piccola intestazione fissa più le transazioni: i sei campi dell'intestazione, cosa entra nell'hash e cosa sono altezza e dimensione.
Di cosa è fatto un blocco?
Un blocco ha due parti, un'intestazione e un corpo. Il mining calcola l'hash solo dell'intestazione.
- Il corpo contiene le transazioni. Può occupare qualche centinaio di byte o diversi megabyte, a seconda di quanto è attiva la catena.
- L'intestazione è un riepilogo fisso del blocco. Sulla maggior parte delle catene occupa esattamente 80 byte.
- Il mining calcola l'hash dell'intestazione e di nient'altro.
Quest'ultimo punto è il dato più utile di questo articolo. Un miner prova miliardi di varianti al secondo. Non potrebbe farlo se ogni tentativo significasse ricalcolare l'hash di un blocco pieno di transazioni. Ricalcola solo l'hash di 80 byte.
Quali sono i sei campi dell'intestazione?
L'intestazione contiene sei campi. Ognuno è lì per un motivo, e due di essi fanno la maggior parte del lavoro.
- La versione.
- L'hash del blocco precedente.
- La radice di Merkle, un unico hash che riassume tutte le transazioni.
- Una marca temporale.
- I bit di difficoltà.
- Il nonce, un contatore che il miner può cambiare.
L'hash del blocco precedente è ciò che ne fa una catena. Ogni intestazione nomina il blocco prima di lei. Riscrivere un vecchio blocco ne cambierebbe l'hash. Questo romperebbe l'intestazione successiva, e quella dopo ancora, fino alla punta. Questo solo campo è tutto l'argomento di sicurezza della proof of work.
La radice di Merkle riassume tutte le transazioni del corpo. Se cambia una transazione anche di un solo byte, la radice di Merkle cambia. Allora cambia l'intestazione, e ogni hash provato fino a quel momento non vale più nulla. Ecco come 80 byte possono rappresentare onestamente un blocco di qualsiasi dimensione.
I bit di difficoltà sono il target sotto il quale deve scendere l'hash, in forma compatta. La marca temporale indica più o meno quando è stato creato il blocco, e può essere approssimativa. Il nonce è il campo che il miner può cambiare liberamente. È questa libertà a rendere possibile la ricerca.
Cosa succede quando il nonce si esaurisce?
Il nonce è un piccolo contatore. Un miner moderno esaurisce quasi subito tutti i valori che può contenere. Non è un vicolo cieco. Il nonce è solo la cosa più facile da cambiare, mai l'unica.
Quando si esaurisce, il miner cambia qualcos'altro che alimenta l'intestazione.
- La marca temporale può avanzare.
- La transazione coinbase (la prima transazione del blocco, spiegata più sotto) può essere modificata leggermente. Questo cambia la radice di Merkle, e dà un'intestazione completamente nuova in cui cercare.
In una pool, a questo serve l'extranonce. La pool dà a ogni miner un punto di partenza diverso. Così due miner non macinano mai gli stessi numeri.
Che cos'è l'altezza del blocco?
L'altezza del blocco è il numero di blocchi venuti prima di un dato blocco. Il blocco genesi, il primissimo, ha altezza zero. Il successivo ha altezza uno, e così via. È il numero accanto a ogni voce nella pagina dei blocchi della pool e in qualsiasi explorer.
In realtà l'altezza non è memorizzata nell'intestazione. Deriva dalla posizione del blocco nella catena.
Sulla maggior parte delle catene moderne, l'altezza viene scritta anche nella transazione coinbase. Questa regola è stata aggiunta in seguito, perché due blocchi ad altezze diverse non possano mai essere identici byte per byte. Comunque, la risposta di riferimento sull'altezza di un blocco è la sua posizione.
L'altezza è anche il modo naturale di contare le conferme. Una transazione sepolta a sei blocchi di profondità si trova in un blocco sei sotto la punta. Ogni blocco in più rende più costoso riscriverla.
Che cosa misura la dimensione del blocco?
La dimensione del blocco è in pratica la dimensione del corpo. L'intestazione è trascurabile al suo confronto. Un limite di dimensione del blocco riguarda quante transazioni ci stanno, non l'intestazione.
Un blocco pieno e un blocco vuoto richiedono esattamente lo stesso lavoro di mining. La difficoltà decide quanto è difficile trovare un blocco. La dimensione decide quanto il blocco trasporta. Le due cose non sono collegate, e confonderle porta a molte intuizioni sbagliate sulle commissioni.
La dimensione incide invece sul mercato delle commissioni. Quando più transazioni vogliono entrare di quante ne stiano, entrano prima quelle che offrono commissioni più alte. Il totale delle commissioni del blocco sale, e va direttamente in ciò che il blocco paga.
Che cos'è la transazione coinbase?
La prima transazione di ogni blocco è speciale. Non ha mittente. Crea monete dal nulla e le paga a chi ha prodotto il blocco.
Si chiama transazione coinbase. Non ha nulla a che vedere con l'exchange dallo stesso nome.
Paga la ricompensa del blocco, che ha due parti.
- Il sussidio, cioè le monete appena emesse. Lo fissa il calendario di emissione della catena, e sulla maggior parte delle monete diminuisce nel tempo.
- Le commissioni di tutte le altre transazioni del blocco. Gli utenti le aggiungono per far includere le proprie transazioni.
In una pool, la coinbase paga la pool. La pool poi divide la ricompensa tra tutti quelli che hanno inviato share in quel round. Non è una deviazione. È il modo in cui una pool paga molte persone con una ricompensa che arriva come un unico pagamento indivisibile.
Perché conta mentre mina?
Una volta chiara la forma di un blocco, tre cose diventano evidenti. Tutte e tre tornano in continuazione.
- Un nuovo blocco rende subito senza valore il Suo lavoro. L'hash del blocco precedente è cambiato, quindi l'intestazione su cui cercava non esiste più. Tutto ciò che invia per essa dopo è una share obsoleta, e nessuna velocità lo risolve.
- La pool Le invia spesso lavoro nuovo. Ogni nuova transazione che la pool vuole includere cambia la radice di Merkle. Un lavoro più recente porta più commissioni, cioè più ricompensa per lo stesso sforzo.
- La dimensione del blocco non compare mai in una stima dei guadagni. Quello che guadagna dipende da difficoltà, sussidio e commissioni. Non dipende dai byte del corpo.
La pagina dei blocchi della pool mostra l'altezza di ogni blocco, la sua ricompensa e quando è stato trovato. Quella riga è la parte utile di tutto quanto detto sopra. L'explorer mostra il resto, compresa la transazione coinbase che l'ha pagato.