A lezione di Bitcoin #2

Gli ultimi articoli che questo blog ha trattato a tema Bitcoin hanno scatenato polemiche, riflessioni, commenti concitati con tanto di tifo da stadio pro e contro criptovalute. Quando succede tutto questo credo sia doveroso cercare di comprendere meglio il fenomeno bitcoin senza preconcetti, possibilmente attingendo le informazioni da fonti competenti. Fortunatamente tra i nostri lettori ci sono persone esperte di questa materia complessa. Una di queste persone (che ringrazio di cuore) ha scritto per noi una serie di articoli che speriamo possano aiutare i lettori di investireconbuonsenso.com a capire, nel modo più semplice possibile, come funziona Bitcoin e tutto ciò che vi gira attorno. Sarà un viaggio a puntate dove scopriremo le origini di Bitcoin e della blockchain, capiremo pregi e limiti di questa tecnologia, tenteremo di capire come spendere, conservare e convertire bitcoin con un occhio rivolto a quello che i Governi mondiali potrebbero (o non potrebbero) fare per gestire questo fenomeno.

Bitcoin, Blockchain, Criptovaluta, Soldi

Parte 2 – La blockchain e la creazione di bitcoin

Satoshi Nakamoto, l’inventore di Bitcoin, ha impostato il suo sistema sui principi seguenti:

  • Ogni 10 minuti circa, un solo computer al mondo nella rete Bitcoin (vedremo a breve quale) crea un numero prefissato di bitcoin, numero che si dimezza ogni 4 anni circa (processo chiamato halving). All’avvio della rete Bitcoin, il 3 gennaio 2009, venivano creati 50 bitcoin ogni 10 minuti, oggi sono diventati 6,25 e si dimezzeranno progressivamente fino ad azzerarsi intorno all’anno 2140. In totale saranno generati esattamente 21 milioni di bitcoin e di questi ad oggi ne sono stati generati circa 18,5 milioni.
  • Questi bitcoin generati ogni 10 minuti possono essere assegnati dal computer che li ha creati a un “indirizzo” Bitcoin, che non è altro che la chiave pubblica “Sedia” che abbiamo visto nella prima lezione. Chiunque può quindi sapere che all’indirizzo “Sedia” sono stati associati questi nuovi bitcoin. In realtà un indirizzo Bitcoin non è “Sedia” ma è analogo al seguente: 1BESGDJuEdevEn2rmLNaYMfojNksFjbE4Q. Inoltre, per correttezza formale, come indicato in precedenza anche per la firma digitale, l’indirizzo  Bitcoin non è propriamente la chiave pubblica, ma un testo composto da vari elementi tra cui una parte derivata dall’hash della chiave pubblica. Tuttavia non ha rilevanza ai fini della comprensione.
  • Solo il computer che ha creato questi bitcoin conosce la chiave privata “Tavolo” corrispondente all’indirizzo pubblico “Sedia”. Quindi solo chi ha questa chiave privata potrà spendere i bitcoin generati.
  • Per spostare dei bitcoin da un indirizzo ad un altro (transazione) è sufficiente conoscere l’indirizzo (chiave pubblica) del destinatario e la chiave privata corrispondente all’indirizzo del mittente, indicando anche l’importo delle commissioni che si è disposti a pagare per tale trasferimento. Quindi, se il computer che ha creato i bitcoin al primo punto li vuole inviare ad ArcheoWealth, deve chiedere ad ArcheoWealth di comunicargli il suo indirizzo, cioè la sua chiave pubblica “Bicicletta”, e deve firmare con la propria chiave privata “Tavolo” la richiesta di trasferimento, esattamente come abbiamo visto in precedenza. Solo ArcheoWealth conosce la chiave privata “Ruota” corrispondente al suo indirizzo pubblico “Bicicletta”, per cui solo lui potrà a sua volta spendere i bitcoin che ha ottenuto, firmando digitalmente una nuova transazione con la sua chiave privata “Ruota” e inviandoli all’indirizzo (chiave pubblica) che gli sarà comunicato dal destinatario.
  • Tutti i computer esistenti al mondo della rete di validatori Bitcoin validano le transazioni (sostanzialmente verificano la validità delle firme digitali contenute nelle richieste di spostamento dei bitcoin e impediscono che qualcuno provi a fare una doppia spesa).
  • Il computer che ha creato i bitcoin al primo punto è quello che ha risolto per primo un problema matematico elementare ma che richiede un numero elevato di calcoli e la cui soluzione richiede indicativamente sempre 10 minuti, per cui il problema diventa sempre più complesso man mano che aumentano i computer collegati alla rete, o diventa più semplice se i computer diminuiscono. Per esemplificare il tipo di problema, è come se bisognasse indovinare una parola di cinque lettere andando solo per tentativi, quindi: “aaaaa”, “abaaaa”, “acaaaa”, “adaaa”, e così via, fino a trovare la soluzione. Se i computer della rete aumentano, la parola da indovinare diventa di sei lettere, poi sette e così via per aumentare la difficoltà, se diminuiscono la parola diventa di quattro lettere, poi tre, in modo da garantire che il tempo medio di risoluzione sia sempre di circa 10 minuti.

Blockchain, Criptovaluta, Rete, Virtuale

In pratica dalla nascita ad oggi la rete Bitcoin funziona nella maniera seguente: tutte le persone che vogliono mandare dei bitcoin a qualcun altro inviano la loro richiesta tramite un programma informatico collegato alla rete Bitcoin, indicando qual è l’indirizzo del destinatario (la sua chiave pubblica) e firmando con la propria chiave privata la richiesta di invio dei bitcoin. Ogni computer validatore collegato alla rete Bitcoin riceve queste richieste, decide quali elaborare per prime in base alle commissioni offerte e ne elabora un certo numero. I computer della rete fanno quindi a gara tra loro per vedere chi riesce per primo a risolvere il problema matematico. Il primo che risolve il problema, impiegando circa 10 minuti, vince in premio i bitcoin previsti e lo comunica a tutti gli altri computer della rete, che validano la correttezza di quanto comunicato. A questo punto il procedimento ricomincia.

Tutte le transazioni elaborate da chi ha vinto la gara entrano in quello che viene chiamato “blocco”. Le transazioni elaborate subito dopo (quindi circa 10 minuti dopo) diventano un altro “blocco” e così via. I “blocchi” non sono quindi altro che i gruppi di transazioni che sono state incluse in un’elaborazione e concluse dal vincitore con la soluzione del problema matematico. I “blocchi” non possono mai essere eliminati né modificati e hanno al loro interno anche le informazioni che indicano qual è il blocco precedente, per cui l’insieme ordinato di questi “blocchi” a partire dal primo generato da Nakamoto (genesis block) fino all’ultimo esistente è chiamato blockchain, ovvero “catena di blocchi”. Tutti i computer della rete bitcoin possono quindi ricostruire e validare l’intera storia di ogni bitcoin dal momento in cui è stato generato, fino all’ultimo “blocco”, ricostruendo tutte le transazioni in cui è stato impiegato, evitando quindi la presenza di “doppie spese”. Il “blocco” tuttavia ha una dimensione massima, per cui possono essere inserite solo un numero limitato di transazioni; questa limitazione comporterà dei problemi che vedremo più avanti e ha scatenato nel tempo delle dispute feroci all’interno del gruppo di sviluppo di Bitcoin, che ha portato a litigi, scissioni e creazione di monete alternative (la più nota delle quali si chiama Bitcoin Cash).

Ma a cosa serve la competizione tra computer per risolvere il problema matematico? Questo è un aspetto fondamentale di Bitcoin e anche uno dei suoi punti deboli. Abbiamo visto che tutti i computer della rete di validatori Bitcoin nel mondo validano le transazioni, cioè verificano ad esempio che non ci sia una “doppia spesa”. Ma come si fa a stabilire chi dice la verità se due computer nella rete indicano dati differenti, cioè ad esempio se uno tenta in maniera fraudolenta di validare una transazione che contiene una “doppia spesa” e cerca di inserirla nella blockchain (problema dei generali Bizantini)? Non avendo un soggetto terzo garante, come una banca, Nakamoto ha previsto che in caso di discrepanze “vinca” semplicemente la sequenza di blocchi più lunga, cioè quella ritenuta valida da più della metà dei computer della rete (o, più precisamente, della potenza di calcolo complessiva della rete). Come scrive Nakamoto nel suo documento, “Fintanto che la maggior parte della potenza CPU è controllata da nodi che non cooperano per attaccare la rete, questi genereranno la catena più lunga e supereranno gli utenti malintenzionati”. Cosa comporta questo? Che se qualcuno riuscisse ad avere più della metà della potenza complessiva di calcolo della rete, potrebbe “srotolare” la blockchain, costruendone una alternativa e annullando quindi l’intera fiducia nella tecnologia Bitcoin. Questo viene definito “attacco del 51%”.

E quindi cosa ha previsto Nakamoto per ridurre questo rischio? La competizione tra computer per aggiudicarsi il premio dei nuovi bitcoin generati (questa modalità per raggiungere un consenso nella rete è definita proof-of-work, cioè “prova di lavoro”). Più computer ci sono nella rete e più è difficile che qualcuno riesca ad acquisire la maggior parte della potenza di calcolo. E l’incentivo per spendere denaro in acquisto di macchinari e corrente elettrica per validare le transazioni è dato (a parte dalle commissioni di chi invia i bitcoin) proprio dalla possibilità di creare i nuovi bitcoin. Questi computer che lavorano per risolvere il problema matematico vengono definiti “miners” cioè minatori. Se più minatori si mettono insieme, condividendo la propria potenza di calcolo per avere più probabilità di vincere la competizione, diventano una “mining pool”. Nel 2140, quando l’ultimo bitcoin dovrebbe essere coniato, se esisterà ancora, i minatori dovranno accontentarsi delle sole commissioni di transazione.

Blockchain, Blocco, Catena, Bitcoin

Quindi, quando sentite o leggete che Bitcoin consuma più elettricità della Svizzera, la ragione è che, se qualcuno vorrà attaccare la rete Bitcoin, dovrà acquistare macchinari e consumare ancora più elettricità della Svizzera, fino a superare la potenza di calcolo di tutti gli altri computer della rete. Se Bitcoin consumasse la corrente di un PC (come era all’inizio, quando Nakamoto ha iniziato a “minare” i bitcoin da solo sul suo PC), sarebbe sufficiente un solo PC più potente per violare il sistema.

Data comunque la sensibilità che esiste attualmente per i temi ambientali, diverse criptovalute nate dopo Bitcoin hanno cercato (o stanno cercando) di modificare il meccanismo di consenso “proof-of-work” in sistemi meno dispendiosi (il più diffuso è quello definito “proof-of-stake”, in cui i validatori impegnano le monete in loro possesso a garanzia della loro correttezza).

Al di là quindi dei discorsi etici sul consumo di corrente, la “proof-of-work” è necessaria al sistema Bitcoin e ha finora garantito che la blockchain di Bitcoin non sia mai stata hackerata. Come indicato in precedenza, quando si sente parlare di “furto di bitcoin” si intende sempre che qualcuno è entrato in possesso delle chiavi private di qualcun altro, perché finora nessuno è mai riuscito a violare l’integrità della blockchain. E come abbiamo visto, avendo le chiavi private è possibile firmare digitalmente e irrevocabilmente una transazione di invio di bitcoin a un nuovo indirizzo.

Se quanto indicato finora vi è sufficientemente chiaro, avete una comprensione praticamente completa del funzionamento tecnico della rete Bitcoin.

Da un punto di vista operativo, Satoshi Nakamoto ha definto la rete come un sistema di moneta elettronica peer-to-peer. Questo vuol dire che chiunque può scaricare sul suo PC un software specifico, che si chiama Bitcoin Core, che è il Client ufficiale (non l’unico) e si può scaricare nella versione italiana dal sito https://bitcoin.org/it.

Una volta installato il software, si entra a far parte della rete Bitcoin, comunicando con gli altri Client nel mondo (in maniera analoga a come si faceva con Napster intorno all’anno 2000 per condividere gli MP3), viene scaricata la blockchain aggiornata e si può, se si vuole, diventare un “minatore”. Data la potenza complessiva di calcolo della rete Bitcoin attuale, tuttavia, non è pensabile di riuscire a “minare” bitcoin con un PC, ma servono attrezzature specializzate (denominate ASICs).

Il codice sorgente di Bitcoin Core è open source, vuol dire che chiunque può scaricarlo e visualizzarlo. Per quanto riguarda Satoshi Nakamoto, ha lasciato il gruppo di sviluppo alla fine del 2010 e di lui non se ne è saputo più nulla.

Una volta compreso nel dettaglio il funzionamento tecnico della rete Bitcoin, nei prossimi articoli descriveremo i limiti della rete Bitcoin, la privacy, il suo utilizzo e le criptovalute nate successivamente, denominate altcoins.

Leggi anche: A lezione di Bitcoin #1

2 risposte a "A lezione di Bitcoin #2"

  1. Stefano 18 febbraio 2021 / 12:52

    Tutto ben spiegato, ma questa frase è non corretta: “Data la potenza complessiva di calcolo della rete Bitcoin attuale, tuttavia, non è pensabile di riuscire a “minare” bitcoin con un PC, ma servono attrezzature specializzate (denominate ASICs).”
    La proof-of-work è realizabile anche da un PC normalissimo… il problema è che è meno efficiente rispetto agli ASICs. Ma visto che il “lavoro” è tentare di azzeccare la combinazione giusta è solo un problema di FORTUNA.
    E’ statistica ed è quindi come una lotteria.
    E’ vero che un ASICs ha 1Mln di biglietti a confronto di un PC che ne possiede solo 1…. ma se la fortuna è dalla tua, la lotteria la vinci.

    "Mi piace"

    • L'autore 18 febbraio 2021 / 16:48

      Sì hai ragione, è questione di fortuna come in una lotteria. Prima però che qualcuno provi a minare bitcoin dal PC di casa, vediamo qual è la probabilità di indovinare la combinazione “giusta” e vincere i bitcoin in premio. Il dato aggiornato della difficoltà di estrazione di un bitcoin (“difficulty”) si può consultare sul sito: https://www.blockchain.com/charts/difficulty

      Attualmente la difficulty è di 21,434 trilioni, quindi come ordine indicativo di grandezza possiamo assumere che la probabilità di azzeccare la combinazione giusta sia di circa 1 su 20 mila miliardi. Per fare un confronto, la probabilità di fare 6 al Superenalotto è di 1 su 622.614.630, cioè circa 1 su 0,6 miliardi.

      La stima indicata è solo approssimativa e serve a dare l’idea dei numeri in gioco, in quanto il calcolo della “difficulty” nasce per uno scopo diverso. A chi dovesse interessare, un articolo molto tecnico sulla “difficulty” è disponibile all’indirizzo seguente:

      https://en.bitcoin.it/wiki/Difficulty

      "Mi piace"

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.