Che cos’è una transazione Coinbase e come funziona dentro Bitcoin?

Che cos’è una transazione Coinbase?
Una transazione coinbase è la primissima transazione in ogni blocco Bitcoin. È il modo in cui un miner riceve la ricompensa per quel blocco. Questa ricompensa si chiama block reward ed è composta da due parti: i bitcoin appena emessi, cioè la block subsidy, e le commissioni di transazione di tutte le transazioni normali che il miner ha inserito in quel blocco.
Il miner che crea un blocco candidato inserisce sempre questa transazione per prima nel blocco. Tramite gli output, cioè le destinazioni del denaro, il miner può far andare la ricompensa a un proprio indirizzo oppure a un miningpool.
In breve
- Una transazione coinbase è sempre la prima transazione di un blocco Bitcoin.
- I miner usano questa transazione per rivendicare la block subsidy e le commissioni di transazione.
- I full node controllano che la transazione coinbase rispetti le regole di Bitcoin.
- Una transazione coinbase ha un input speciale che non punta a un output Bitcoin precedente.
- La ricompensa è spendibile solo a partire dall’altezza del blocco h+100.
Come funziona una transazione Coinbase?
Un miner crea prima un blocco candidato con la transazione coinbase in cima e poi, se vuole, aggiunge le transazioni dalla mempool. La mempool è, in parole semplici, la coda delle transazioni che sono già state inviate alla rete, ma non sono ancora in un blocco.
Poi il miner sceglie dove mandare la ricompensa. Può essere un proprio indirizzo Bitcoin, ma nei miningpool spesso c’è uno script di pagamento deciso dal pool. In seguito è il pool a gestire come vengono pagati i partecipanti.
Nel coinbase-input speciale c’è, tra le altre cose, la block height, cioè il numero progressivo del blocco. Il miner può aggiungere anche altri dati, come una nonce extra. Una nonce è un valore che il software di mining cambia continuamente mentre cerca un hash valido.
Perché è utile? Con il proof of work, il miner prova tantissimi hash diversi finché uno non rispetta le regole di Bitcoin. Se la nonce normale nell’header del blocco non basta più per fare nuovi tentativi, il miner può modificare la nonce extra nella transazione coinbase.
Così cambia il transaction ID della transazione coinbase. Di conseguenza cambia anche la merkle root, una specie di impronta crittografica riassuntiva di tutte le transazioni nel blocco. In questo modo il miner ottiene di nuovo molte nuove possibilità per provare hash.
La transazione coinbase conta davvero solo quando il miner trova un blocco valido e i nodi accettano quel blocco. Un nodo è un computer che controlla le regole di Bitcoin. Se un nodo rifiuta il blocco, anche la transazione coinbase non fa parte della blockchain Bitcoin attiva.
Qual è la differenza tra una transazione Coinbase e una transazione normale?
La differenza principale è che una normale transazione Bitcoin spende bitcoin già esistenti, mentre una transazione coinbase registra la ricompensa del blocco.
Una transazione normale usa uno o più input. Un input del genere punta a un precedente “Unspent Transaction Output”. Questo output non speso si chiama anche UTXO. In parole semplici, un UTXO è un pezzo di bitcoin che è ancora pronto per essere speso.
In una transazione normale il valore degli output deve essere uguale o inferiore al valore degli input. La differenza è la commissione di transazione che il miner può ricevere.
Una transazione coinbase funziona in modo diverso. Ha esattamente un input coinbase speciale. Questo non punta volutamente a un UTXO esistente. Al suo posto contiene un hash nullo come ID della transazione precedente e l’indice 0xffffffff.
Questo non significa che il miner possa creare bitcoin a caso. Il valore totale degli output può essere al massimo uguale alla subsidy di quel blocco più le fee delle altre transazioni nello stesso blocco.
Valgono anche due semplici regole di blocco:
- Un blocco deve iniziare con esattamente una transazione coinbase.
- Più avanti nello stesso blocco non può esserci una seconda transazione coinbase.
Un’altra differenza: gli output di una transazione coinbase non sono spendibili subito. Per questi vale un periodo di attesa separato di 100 nuovi blocchi.
Quali regole valgono per una transazione Coinbase?
Una transazione coinbase deve rispettare una serie di regole fisse di Bitcoin. Se non lo fa, l’intero blocco viene rifiutato dalla rete.
Le regole principali sono:
- La transazione coinbase è sempre la prima transazione in un blocco.
- La transazione ha un input speciale.
- Questo input non punta a bitcoin ricevuti in precedenza, come avviene in una transazione normale.
- Nell’input viene incluso, tra le altre cose, il numero del blocco, chiamato anche block height.
- Il miner non può darsi semplicemente una quantità qualsiasi di bitcoin.
- La ricompensa totale può essere al massimo composta dalla block subsidy più le commissioni di transazione del blocco.
La block subsidy è la quantità di nuovi bitcoin emessi quando si crea un blocco. Bitcoin è iniziato con una ricompensa di 50 BTC per blocco. Dopo ogni 210.000 blocchi, questa ricompensa si dimezza. Succede circa una volta ogni quattro anni e si chiama Bitcoin halving. I miner quindi non possono modificare questa ricompensa da soli.
Se un blocco contiene dati witness di SegWit, la transazione coinbase ha anche un’ulteriore funzione tecnica. In quel caso nella transazione coinbase viene inserito un cosiddetto witness commitment. In questo modo i dati witness delle transazioni vengono collegati crittograficamente al blocco, così i nodi possono controllarli.
Perché una transazione Coinbase non ha input normali?
Una transazione coinbase ha comunque un input, ma non un input normale che spende bitcoin da un output precedente.
È logico: la block subsidy viene resa disponibile per la prima volta proprio tramite questa transazione. Quindi non esiste ancora un UTXO precedente a cui il miner possa fare riferimento. Anche le commissioni di transazione del nuovo blocco arrivano al miner tramite questa transazione.
La si può vedere come il saldo finale di un blocco. Il miner ha prodotto un blocco valido e può quindi rivendicare esattamente la ricompensa che spetta a quel blocco. I full node controllano poi se quell’importo è corretto.
Esempio: Supponiamo che la block subsidy e tutte le fee insieme formino un certo importo massimo. Se un miner inserisce negli output coinbase più di quell’importo, il blocco non è valido. Il miner allora non riceve nulla, nemmeno l’importo che sarebbe stato consentito.
L’input coinbase ha anche una funzione pratica durante il mining. La block height obbligatoria e l’eventuale nonce extra aiutano il software di mining a fare sempre nuovi tentativi di proof of work.
Quanto tempo ci vuole per la conferma di una transazione Coinbase?
Una transazione coinbase riceve la sua prima conferma quando il blocco in cui si trova entra a far parte della blockchain Bitcoin attiva.
Quanto tempo ci vuole non è stabilito in anticipo. Il miner deve prima trovare un blocco proof of work valido e la rete deve accettare quel blocco. Il proof of work è il sistema in cui i miner fanno calcoli per trovare un hash che rispetti le regole di Bitcoin.
Dopo, l’output coinbase non è ancora spendibile subito. Bitcoin stabilisce che possa essere usato come input solo a partire dall’altezza del blocco h+100, dove h è l’altezza del blocco in cui si trova la transazione coinbase.
Se la ricompensa si trova, per esempio, nel blocco 500, allora può essere spesa per la prima volta nel blocco 600. Si tratta quindi di 100 nuovi blocchi, non di un tempo fisso in ore o minuti. I blocchi, infatti, non vengono trovati sempre esattamente nello stesso momento.
Alcune app di wallet crypto contano le conferme in modo leggermente diverso sullo schermo. Per questo la regola più chiara è questa: un output coinbase del blocco h diventa spendibile nel blocco h+100.
Perché le transazioni Coinbase sono importanti per Bitcoin?
Le transazioni coinbase sono importanti perché stabiliscono come i nuovi bitcoin vengono emessi secondo le regole fisse di Bitcoin e come i miner ricevono le loro commissioni di transazione.
La block reward dà ai miner un motivo per investire potenza di calcolo nel proof of work e creare blocchi validi. Senza una transazione coinbase non esiste un modo standard per assegnare quella ricompensa dentro un blocco.
Allo stesso tempo Bitcoin mantiene sotto controllo la quantità di denaro. Ogni full node controlla da solo che la transazione coinbase non paghi troppo. Se un miner prova a rivendicare bitcoin extra, i nodi non accettano il blocco. Un singolo miner quindi non può cambiare le regole da solo né creare bitcoin extra.
Anche per il mining in sé questa transazione è utile. Cambiando dati come una nonce extra, cambia la merkle root e il miner ottiene più hash da provare.
Con SegWit, la transazione coinbase ha inoltre un ruolo nel fissare i dati witness. Così questi dati transazionali aggiuntivi vengono collegati crittograficamente al blocco.
Quali rischi e limiti hanno le transazioni Coinbase?
Il limite principale è che i bitcoin ricevuti non sono disponibili subito. Un miner o un miningpool deve aspettare che vengano aggiunti 100 nuovi blocchi prima che l’output coinbase possa essere speso. Questo limita temporaneamente la liquidità.
Inoltre la ricompensa è valida solo finché il blocco si trova nella blockchain Bitcoin attiva. Se un blocco non viene accettato, oppure in seguito esce dalla chain attiva a causa di una chain reorganization, l’output corrispondente non è spendibile.
Un miner deve anche essere molto preciso con l’importo. Rivendicare troppo rende l’intero blocco non valido. Rivendicare meno è consentito, purché non si superi il limite massimo, ma in quel caso il miner perde una parte dei possibili guadagni.
La coinbase-scriptSig ha uno spazio limitato. Può essere lunga al massimo 100 byte e deve iniziare con la block height. Per questo resta poco spazio per testo libero o altri metadati.
Tutto ciò che un miner inserisce lì diventa visibile pubblicamente non appena il blocco viene incluso. Un miningpool, per esempio, può aggiungere un tag riconoscibile. Questo può rivelare informazioni su chi ha prodotto il blocco.
Infine, anche questa ricompensa dipende da uno script di spesa corretto e dalle chiavi giuste. Se lo script è configurato male o le chiavi necessarie non sono più disponibili, la ricompensa può restare non spendibile nonostante la regola dei 100 blocchi.
Conclusione
Una transazione coinbase è la speciale prima transazione di ogni blocco Bitcoin. Con essa il miner riceve al massimo la block subsidy e le commissioni di transazione di quel blocco.
La transazione assomiglia a una normale transazione Bitcoin, ma ha un input particolare che non punta a bitcoin precedenti. Questo è necessario perché la block subsidy diventa disponibile per la prima volta proprio tramite questo percorso. Allo stesso tempo i nodi controllano in modo rigoroso quanto il miner può rivendicare.
Per te, come normale utente Bitcoin, una transazione coinbase di solito non si vede direttamente. Ma sotto il cofano è una parte importante di Bitcoin: collega mining, proof of work, emissione di nuovi bitcoin e commissioni di transazione.