Empty block

Blocco vuoto

Difficoltà: intermedio

Argomento: tecnologia


DEFINIZIONE

Alcuni blocchi vengono creati senza transazioni dai miner, e aggiunti alla blockchain. Questi blocchi senza transazioni vengono chiamati empty block, blocchi vuoti, ma contengono comuque dati. Non sono privi di dati, semplicemente non contengono transazioni diverse dalla transazione di generazione di monete (nota come transazione coinbase). Poiché un blocco vuoto non contiene alcuna transazione dalla rete Bitcoin, è considerato vuoto.

Anche i blocchi vuoti sono computazionalmente costosi perché i miner devono comunque effettuare i calcoli richiesti dalla Proof of work. Hanno comunque l'intestazione del blocco e hanno tutti i campi dei i blocchi non vuoti. Hanno anche un elenco di transazioni; ma quell'elenco contiene una singola transazione, la transazione coinbase, che paga al miner il Block Reward, il premio per aver minato il blocco anche se vuoto.

I blocchi vuoti non sono del tutto inutili. In primo luogo, estendono la blockchain aggiungendo ulteriore lavoro alla blockchain. Le transazioni all'interno di un blocco non influiscono sulla quantità di lavoro necessaria per minare il blocco, quindi i blocchi vuoti rafforzano la sicurezza della blockchain aggiungendosi al lavoro cumulativo utilizzato per la blockchain. I blocchi vuoti introducono anche nuovi coin nel sistema Bitcoin, pagano comunque i miner per il lavoro che hanno svolto, quindi vengono generate nuove monete e pagate al miner di quel blocco. Questo fa parte della transazione di generazione di monete inclusa nel blocco stesso come unica transazione.

Inoltre, quando non ci sono transazioni nella mempool (evento ormai altamente improbabile), il network deve comunque andare avanti. Devono ancora essere estratti i blocchi, quindi devono essere consentiti blocchi vuoti affinché la blockchain possa continuare.

cosa succede se ci sono esempi di transazioni come l'invio di btc a un altro indirizzo ma nessuno lo estrae (verificandolo tramite mining), le transazioni arriveranno mai all'indirizzo destinato? Se nessuno include mai una transazione in un blocco, la transazione non è mai considerata definitiva. Apparirà ancora nei portafogli degli utenti come non confermato e vedranno le monete. Possono anche spendere gli output di quella transazione, ma non è consigliabile creare transazioni da transazioni non confermate. Anche una tale transazione non sarebbe confermata fintanto che la prima transazione non confermata rimane non confermata.

Ci possono essere diverse motivazioni che portano un miner a non inserire transazioni minando un blocco vuoto, e rinunciando al guadagno aggiuntivo rappresentato dalle fee delle transazioni, la principale è dovuta al fatto che in quel breve intervallo di tempo nel quale che si raccolgono le informazioni su quali transazioni inserire nel blocco, si prova comunque a minare un blocco vuoto, e può accadere che si trovi una soluzione anche in quel breve intervallo di tempo.

I blocchi vuoti erano più frequenti nei primi blocchi della blockchain Bitcoin, anche perché non c'erano sufficienti transazioni per ogni blocco. Il mining di blocchi vuoti è diventato sempre meno comune nel corso degli anni, e ormai sono sempre più rari i blocchi vuoti inseriti nella blockchain. Sia perché ci sono sempre più transazioni, sia perché non è conveniente per i miner rinunciare alle fee delle transazioni, ma anche perché c'è stata una evoluzione dei sistemi di mining. Tra questi il protocollo Stratum utilizzato dalle mining pool che nella versione V2, diversamente dalla V1 nel quale il trasferimento dei dati che consente ai miner di iniziare a lavorare su un nuovo blocco contiene il modello di blocco con il prevhash insieme, separa questi due componenti. Di conseguenza, le mining pool saranno in grado di scavare più a fondo nella mempool (per le transazioni che è improbabile che vengano incluse nel blocco corrente) e costruire modelli di blocchi completi prima che venga trovato il blocco corrente. Quindi possono inviare quei modelli di blocco ai miner in anticipo quando la latenza non ha importanza, in modo che solo il messaggio prevhash debba essere inviato per iniziare effettivamente il nuovo round di mining.


aggiornato il 2022-07-06