- Bitcoin Train
- Posts
- Fermata #83 - Bitcoin Training: i miner non fanno calcoli complessi
Fermata #83 - Bitcoin Training: i miner non fanno calcoli complessi
Anche se lo scrive Il Sole 24 Ore, i miner non eseguono "complessi calcoli matematici". Spiegazione di Proof-of-Work, hashing e aggiustamento della difficoltà. Cos'è il mining e come funziona
Quasi impossibile non essersi mai imbattuti nel temine mining.
La comprensione di che cosa sia davvero, tuttavia, non è ancora scontata. Specialmente quando sui giornali leggiamo che i server coinvolti in questo processo eseguono “complessi calcoli matematici”. L’informazione generalista è poca e di bassa qualità.
In questa newsletter è stato affrontato più volte il tema del mining, in particolare per analizzarne l’impatto sull’ambiente e sui mercati energetici. E’ arrivato il momento di capire, più tecnicamente, di che cosa stiamo parlando.
Mining è un termine fuorviante.
Il riferimento è ovviamente all’atto del minatore che scava la materia prima, come l’oro o il diamante, per rimandare all’idea che tramite il mining si estraggano nuovi bitcoin. L’emissione di nuova valuta, tuttavia, è solo il modo studiato per ricompensare economicamente l’attività del minatore, i cui compiti principali sono fornire i blocchi della timechain ai nodi e mettere in sicurezza il network.
Dopo il 2140 - quando si raggiungerà il limite di 21 milioni di bitcoin - non verrà estratto più alcun satoshi, per cui il mining non permetterà di estrarre proprio nulla. I miner verranno ricompensati unicamente con le commissioni di transazione.
Qui puoi ascoltare un estratto gratuito di Bitcoin Train Podcast!
Per accedere alla completa versione narrata dell’articolo ed entrare nel gruppo Telegram dedicato alla newsletter, abbonati a Bitcoin Train!
Questione di competizione
Il mining è una gara su scala globale che si ripete mediamente ogni 10 minuti. A partecipare sono degli specifici nodi del network1. Come tutti i nodi, quelli di mining ricevono, verificano, inseriscono in mempool e propagano2 le transazioni ancora non confermate sulla timechain. Ogni nodo di mining fa però anche altro: dalla propria mempool raccoglie le transazioni in un gruppo di informazioni - il blocco - costruendo il proprio blocco candidato. All’interno di quest’ultimo, il miner inserisce anche la coinbase transaction: quella transazione che assegna i nuovi bitcoin3 al miner che ha scritto il blocco, una volta che quest’ultimo è stato approvato da tutta la rete.
La generazione di nuova valuta è tutta qui: nel miner che se la auto-assegna e negli altri nodi che verificano la correttezza del processo.
Dunque, tutti i nodi di mining hanno un blocco candidato e competono con il resto dei miner per far sì che il proprio blocco venga scritto sulla timechain, per poter così incassare i bitcoin della coinbase transaction e le commissioni delle transazioni inserite nel blocco. Ma quando inizia e quando finisce ogni gara? E come si svolge?
Annuncio sponsorizzato
Il miglior modo per acquistare bitcoin è utilizzare RELAI. Scaricala l’app cliccando qui o scannerizzando il QR Code e utilizza il codice “FEDERICO” per risparmiare lo 0,5% in commissioni.
RELAI non richiede registrazioni o dati personali fino a un limite di acquisto di € 950 al giorno. Tutto ciò che serve per comprare è un IBAN o una carta di credito.
Soprattutto, RELAI è un servizio non-custodial. Dimentica la registrazione all’exchange, il pagamento, il rischio di default e il prelievo con commissioni altissime. I bitcoin acquistati con RELAI vengono automaticamente trasferiti su un wallet di tua scelta: quello creato dall’app di default oppure uno esterno. In ogni caso, solo tu controlli le chiavi. Not your keys, not your bitcoins.
Trovare il giusto hash
Quando miner riceve dalla rete un blocco corretto capisce che ha perso la gara relativa a quello specifico blocco. Inizia quindi subito a lavorare per provare scrivere in timechain il blocco successivo. L’approvazione di ogni blocco coincide con la fine della competizione per quel blocco e con l’inizio della competizione per quello seguente.
I blocchi della timechain sono costituiti da due parti: la lista di transazioni incluse e l’intestazione (header). Nell’intestazione il miner deve inserire alcuni dati tra cui un riferimento al blocco precedente, una sorta di numero identificativo: l’hash.
Ad esempio, l’hash del blocco 779878 è il seguente: 00000000000000000003fc162f117ef616f3db54f18c9ab9e25dc44f75a9ee69
I minatori che hanno partecipato alla gara per minare il blocco successivo, hanno quindi dovuto includere nell’intestazione del blocco 779879 l’hash sopra indicato.
Una volta costruito il blocco candidato con le corrette informazioni, è il momento di iniziare la gara per trovare la corretta Proof-of-Work.
Lanciare dei dadi, ma velocemente
Uno degli strumenti chiave del mining è lo SHA-256: secure hash algorithm. Un algoritmo crittografico che, partendo da un input di dati, produce un risultato di lunghezza fissa: 256 bit.
Dando in pasto il nome “BitcoinTrain” all’algoritmo SHA-256, il risultato è bb665674fed71ace85a537a56529f4de94703b2d858448ebf6a4d01f074d0db8.
Inserendo il numero 0 alla fine di BitcoinTrain si ottiene un risultato completamente diverso, ma sempre lungo 256 bit.
Ciò che fanno i miner è molto semplice: prendono il codice identificativo dell’ultimo blocco approvato - il suo hash - e vi aggiungono un numero finale - chiamato nonce - per poi dare il tutto in pasto allo SHA-256 e controllare il risultato.
Come si vince la sfida? Trovando un numero che sia coerente con l’obiettivo dettato dai nodi.
I nodi della rete comunicano ai miner di trovare un risultato SHA-256 che abbia un determinato requisito di difficoltà. Per esempio: un numero che inizi con quattro zeri. Tutti i miner del mondo iniziano quindi ad aggiungere nonce diversi all’hash del blocco precedente ottenendo ogni volta un risultato SHA-256 differente, fino a quando un miner non ne trova uno che effettivamente inizi con quattro zeri.
E’ un processo non molto diverso da un lancio di dadi. Immaginate di avere due dadi da gioco classici e di avere un obiettivo: trovare un risultato inferiore a 5. Lanciate una prima volta: 10. Non va bene. Lanciate una seconda volta: 8. Non va bene. Lanciate una terza: 11. Non va bene. Lanciate una quarta volta: 3. Bingo.
Prova di lavoro e aggiustamento della difficoltà
Anche se ogni tentativo produce un risultato casuale, la probabilità di qualsiasi risultato può essere calcolata in anticipo. Nel caso dei dadi è naturalmente più facile ottenere un numero inferiore a 12 che un numero inferiore a 3. Questo permette di regolare la difficoltà dell’obiettivo fornito dai nodi a seconda della potenza computazionale disponibile nel network. Si tratta di un meccanismo fondamentale, perché ogni risultato deve essere trovato mediamente in 10 minuti. In caso contrario verrebbe minato un numero diverso di blocchi rispetto a quelli previsti da protocollo e, di conseguenza, verrebbe emesso un numero diverso di bitcoin.
Grazie all’aggiustamento della difficoltà - spiegato nella fermata #3 - ogni 2.016 blocchi ogni nodo indipendentemente aggiorna l’obiettivo della difficoltà della Proof-of-Work. Lo fa misurando il tempo impiegato per minare gli ultimi 2.016 blocchi - che idealmente dovrebbe essere di 20.160 minuti - e alzando o abbassando la difficoltà a seconda dei minuti in difetto o in eccesso che si sono resi necessari. In breve: più è la potenza di calcolo presente nella rete, più è alta la difficoltà e viceversa.
I server specializzati nel mining, chiamati ASIC, oggi sono in grado di produrre fino a 250 TH/s (TeraHash al secondo). Ciò significa che una singola macchina delle più avanzate esegue 250 mila miliardi di tentativi ogni secondo.
La prova di lavoro
L’hash compatibile con la difficoltà fornita dai nodi si chiama Proof-of-Work. Proprio perché la probabilità di qualsiasi risultato può essere calcolata in anticipo, l’hash corretto è la dimostrazione crittografica che un miner ha eseguito il lavoro necessario per poterlo trovare: facendo tentativi, per cui è necessario un hardware specializzato che deve essere alimentato da energia elettrica. Una volta verificato dai nodi, questi aggiungono il blocco alla timechain e lo propagano a loro volta secondo i criteri del consenso, spiegati nella fermata #46.
Il risultato vincente fornito dallo SHA-256 sarà l’hash, o il codice identificativo, del blocco minato e verrà utilizzato come base per trovare la Proof-of-Work del blocco successivo. E’ per questo motivo che si parla di chain, catena: perché l’hash di ogni blocco è ottenuto dall’hash del blocco precedente, più il nonce.
Sicurezza della rete
Per modificare l’hash di un blocco è necessario cambiare l’hash del blocco successivo che, per essere modificato, richiede il cambiamento dell’hash del blocco seguente e così via. Insomma, per violare un blocco della timechain bisognerebbe ricalcolare tutti i blocchi che lo seguono fino all’ultimo della catena, ossia il più recente. Per questo motivo, la potenza computazionale impiegata per trovare la Proof-of-Work dei blocchi e la sicurezza della rete sono direttamente proporzionali. Maggiore è la difficoltà richiesta per minare ogni blocco, più la rete è sicura. Più hash rate, più sicurezza.
I lettori più attenti avranno capito che la metrica del “consumo energetico per transazione” - spesso menzionata dai quotidiani più noti - non ha alcuna ratio in Bitcoin. Il consumo energetico cresce all’aumentare degli ASIC che si uniscono alla competizione del mining e viceversa. Indipendentemente dalla quantità di elettricità coinvolta nel network la dimensione dei blocchi resta identica e dunque la quantità di transazioni che possono essere scritte sulla timechain non cambia. Transazioni e consumo energetico sono metriche completamente scorrelate.
Nuovo speaker annunciato da BTC Prague, la conferenza Bitcoin più grande d’Europa che si terrà a Praga dall’8 al 10 giugno!
Abubakar Nur Khalil è CEO di Recursive Capital, sviluppatore nigeriano di Bitcoin Core e cofondatore di Qala, un programma per la formazione di sviluppatori Bitcoin africani. È membro del consiglio di amministrazione di Btrustteam, un'organizzazione no-profit che si occupa della crescita dell'ecosistema Bitcoin in Africa.
Usa il codice BTCTRAIN per ottenere il 10% di sconto sui biglietti d’ingresso. Ulteriore sconto del 5% pagando in bitcoin. Biglietti acquistabili da qui
Online su YouTube la live di lunedì scorso con Massimo Musumeci
E’ online il nuovo video-approfondimento dedicato al tema della settimana di Bitcoin Train sul canale YouTube di Massimo Musumeci, fisico, ricercatore Bitcoin ed esperto di privacy e sicurezza informatica.
Questa settimana si è parlato del futuro del Lightning Network. Appuntamento a lunedì 13 marzo!
Reply