Fermata #46 - Bitcoin Training: il Consenso
Dalla transazione alla sua conferma sulla blockchain: come funziona e quali sono i passaggi che caratterizzano il meccanismo del consenso distribuito in Bitcoin?
La prima fermata di Bitcoin Training1 è stata dedicata alla struttura della transazione: crittografia asimmetrica, input, output e UTXO. Oggi capiamo come una transazione viene approvata senza il benestare di un coordinatore centrale: in breve, parliamo del processo di consenso distribuito introdotto da Bitcoin o, com’è stato definito, del Nakamoto Consensus.
I punti del Nakamoto Consensus
Sono tre le fasi chiave tramite cui si raggiunge il consenso distribuito, cioè l’approvazione di un unico registro globale di transazioni all’interno di una rete costituita da decine di migliaia di nodi interconnessi:
Verifica indipendente di ogni transazione;
Aggregazione indipendente delle transazioni in nuovi blocchi (mining);
Verifica indipendente delle transazioni nei nuovi blocchi.
1) Verifica indipendente di ogni transazione
Una volta creata una transazione dal wallet, il nodo tramite cui quest’ultimo è collegato alla rete Bitcoin la invia ai propri peer, ossia ai nodi limitrofi collegati. Ognuno dei peer verifica indipendentemente la correttezza della transazione e, una volta terminato il controllo, esegue due azioni:
Inserisce la transazione nella propria mempool, una sorta di limbo salvato in locale (ogni nodo ha la sua mempool) in cui le transazioni restano fino a quando non vengono inserite in un blocco della blockchain;
Invia a sua volta la transazione ai propri peer, i quali la verificheranno e la manderanno ai loro peer: questo è il processo tramite cui una transazione si diffonde a tutto il network ed è conosciuto come gossip protocol.
Ogni nodo che riceve la transazione tramite il gossip protocol, come detto, prima di inserirla nella mempool ne verifica la correttezza. Ci sono diversi criteri che la transazione deve rispettare, tra cui:
Sintassi: non devono esserci refusi nel testo (anche se tecnicamente può essere scritta a mano, la stragrande maggioranza delle transazioni è scritta dai wallet, cioè software programmati per svolgere questa funzione);
Dimensione (byte): la dimensione non deve superare quella del blocco ma deve essere maggiore o uguale a 100 byte;
Quantità (sats): il valore di ogni output deve essere maggiore di 0 e minore di 21 milioni di bitcoin;
Corrispondenza: per ogni input, l’output di riferimento deve esistere nell’UTXO set2.
Annuncio sponsorizzato
Il miglior modo per acquistare bitcoin è utilizzare RELAI, la Bitcoin App più semplice d’Europa. Scaricala cliccando qui o scannerizzando il QR Code e utilizza il codice “FEDERICO” per risparmiare lo 0,5% in commissioni.
RELAI applica una politica di KYC light: non richiede registrazioni o dati personali fino a un limite di acquisto di € 900 al giorno. Tutto ciò che serve per comprare è il proprio IBAN. E’ ottimale per impostare dei piani di accumulo settimanali o mensili.
RELAI è un servizio non-custodial. La somma bonificata viene convertita automaticamente in bitcoin e trasferita su un wallet di cui è l’utente ad avere il controllo: not your keys, not your bitcoins. Ora RELAI supporta anche i bonifici istantanei e per i nuovi clienti che impostano un piano di accumulo di almeno € 100 è previsto un bonus di € 10 in bitcoin.
2) Aggregazione indipendente delle transazioni in nuovi blocchi
Quando una transazione si trova nella mempool, benché verificata, non è ancora da considerarsi confermata. Lo sarà quando sarà inclusa in un blocco della blockchain e questo avviene tramite il mining. Come spiegato nella fermata #14 tra i vari tipi di nodi esistono i nodi di mining che, oltre a verificare le transazioni, scrivono i blocchi della blockchain. Ogni nodo (e dunque anche quelli di mining) mantiene una copia locale della blockchain e sa fino a quale blocco si è arrivati in un dato momento del tempo.
Dal mio nodo Bitcoin risulta che al momento in cui scrivo siamo al blocco 751.869 e dunque i nodi di mining stanno preparando il blocco numero 751.870 riempiendolo con le transazioni prese dalla propria mempool3, ognuno indipendentemente. Ogni nodo costruisce quello che viene definito il blocco candidato e dovrà provare a risolvere la Proof-of-Work4 per poterlo propagare al resto della rete, facendolo diventare ufficialmente il blocco 751.870 per tutto il network globale.
All’interno del blocco candidato la prima transazione che viene scritta è la transazione coinbase, ossia il pagamento della ricompensa che il miner fa a sé stesso (creando nuovi bitcoin e quindi nuova valuta) per aver risolto la Proof-of-Work. Si tratta, in questa fase storica, di 6,25 bitcoin. La transazione coinbase non spende nessun UTXO e ha un output che verrà pagato al minatore. Questo processo avviene in media ogni 10 minuti, ovvero ogni qual volta c’è da aggiungere un nuovo blocco alla blockchain di Bitcoin.
Se il nodo di mining - che ha pronto il blocco candidato e sta provando a risolvere la Proof-of-Work - riceve dal network il nuovo blocco significa che un altro nodo ha trovato prima la soluzione. Dovrà quindi verificare la correttezza della Proof-of-Work, scartare il proprio blocco candidato, propagare ai propri peer il nuovo blocco, aggiungere il blocco alla blockchain salvata in locale e iniziare a costruire il blocco candidato successivo.
3) Verifica indipendente delle transazioni nei nuovi blocchi
Una volta ricevuto il nuovo blocco ogni nodo ne verifica la correttezza:
La prima transazione deve essere quella di coinbase;
La sintassi del blocco deve essere valida;
L’hash dell’intestazione del blocco (header) deve essere inferiore alla difficulty: in questo modo i nodi controllano che la soluzione alla Proof-of-Work sia corretta.
La verifica indipendente converge in un unico registro globale grazie al fatto che ogni nodo valida le transazioni e i blocchi con le stesse regole stabilite dal protocollo Bitcoin. Una transazione coinbase non valida (con una somma superiore a 6,25 bitcoin, per esempio) verrebbe respinta dai nodi in quanto non coerente con il software e il blocco verrebbe scartato. I miner sono costretti a costruire un blocco senza alcun errore per farlo approvare dai nodi e, quando trovano per primi la soluzione alla Proof-of-Work, incassare la ricompensa.
Può accadere che un nodo, per ritardi di trasmissione nella rete, riceva due blocchi quasi in simultanea. Per capire quale sia il blocco valido da aggiungere alla catena principale ci si rifà sempre a una regola: la blockchain valida è quella con il maggior lavoro computazionale accumulato.
Quale signing device scegliere?
Qual è il miglior signing device - più conosciuto come hardware wallet - per conservare i propri satoshi a lungo termine?
Per non delegare la responsabilità della custodia a terze parti, come gli exchange, è necessario proteggere autonomamente le proprie chiavi private e il modo più sicuro per farlo è offline. Per questo sono nati i signing device: dispositivi privi di connessione Internet studiati appositamente per proteggere le chiavi private.
A mio avviso, tra sicurezza e semplicità d’utilizzo, il migliore sul mercato è BitBox02, prodotto da Shift Crypto. Il codice sorgente è completamente open-source e, a differenza degli altri principali signing device sul mercato, BitBox02 consente il backup e il ripristino della seed-phrase anche tramite una micro-SD. E’ disponibile sia nella versione Multi Coin che in quella Bitcoin-only (naturalmente io consiglio quest’ultima).
Potete provarlo acquistandolo da questo link. Per ulteriori informazioni potete rispondere a questa e-mail oppure scrivermi tramite i miei contatti.
Questo NON è un messaggio pubblicitario. BitBox02 è un prodotto che ho testato personalmente. Provatelo e fatemi sapere come vi trovate!
Online su YouTube la live di lunedì scorso con Massimo Musumeci
Di seguito la nuova puntata dei video-approfondimenti live dedicati al tema della settimana di Bitcoin Train sul canale YouTube di Massimo Musumeci, fisico, ricercatore Bitcoin ed esperto di privacy e sicurezza informatica.
Lunedì 5 settembre NON ci saranno dirette perché saremo entrambi alla conferenza Baltic Honeybadger di Riga. Appuntamento dunque a lunedì 12 settembre ore 17:00.
Bitcoin Training è la rubrica tecnica di Bitcoin Train che esce una volta al mese, ogni secondo sabato del mese. La puntata di settembre è stata anticipata di una settimana per lasciare spazio agli approfondimenti dedicati alla conferenza Baltic Honeybadger.
L'UTXO set è l'insieme di tutti gli UTXO esistenti in un determinato momento del tempo. Per il concetto di UTXO rimando alla fermata #38.
Generalmente questo avviene per convenienza economica, quindi ordinandole da quelle con le commissioni più alte a quelle con le commissioni più basse.
Quindi mi sembra di capire che i blocchi candidati possono essere tutti diversi e unici tra di loro, poiché ogni nodo costruisce il propio in maniera indipendente. Le transazioni con commissioni più alte sono sempre presenti ai primi posti, ma vi sono lievi differenze nella scelta e nell’ ordine di quelle con commissioni basse.