Come Funziona Bitcoin: Il Protocollo (2/3) [Understanding Bitcoin-Part 2]

Verdi
9 min readSep 20, 2018

--

Questo articolo è la traduzione della seconda sezione di ‘Understanding Bitcoin’, un ebook guida gratuito prodotto da Silas Barta e Robert P. Murphy, scaricabile visitando questo sito, dove è anche possibile donare agli autori. Silar Barta scrive sul suo blog in merito a diversi argomenti, tra cui Bitcoin, finanza e teoria dell’informazione, mentre Robert P. Murphy è autore di diversi libri nel campo della scuola austriaca di economia, oltre ad essere co-host del podcast Contra Krugman insieme a Tom Woods.

Sezione precedente — Come Funziona Bitcoin: Il Protocollo (1/3)

Il “Mining” di Nuovi Bitcoin

Per semplicità, la nostra analogia è iniziata con 21 milioni di unità di moneta già minati. Tuttavia, nella realtà il processo attraverso cui i computer del network verificano le transazioni è strettamente collegato con l’aumento della quantità di bitcoin. All’introduzione di Bitcoin nel 2009, i computer nel network — chiamati “miner” — ricevevano 50 nuovi bitcoin come ricompensa per aver eseguito i calcoli necessari per aggiungere un “blocco” di transazioni al registro pubblico. Al momento della stesura di questo libro, la ricompensa è scesa a 25 nuovi bitcoin per blocco, e il numero continuerà a dimezzarsi ogni 210,000 blocchi (circa ogni quattro anni, la difficoltà computazionale del mining viene calibrata periodicamente in base alla potenza del network). Eventualmente, intorno all’anno 2140, il numero di nuovi bitcoin distribuiti per blocco raggiungerà lo zero, limitando la quantità totale di bitcoin esistenti (poco meno di 21 milioni).

In principio, lo/gli sviluppatore/i di Bitcoin avrebbero potuto emettere tutti i 21 milioni di unità di moneta immediatamente insieme al protocollo. Questa operazione avrebbe quasi sicuramente condannato il progetto alla rovina. Con la disposizione attuale — in cui le operazioni di mining necessarie per il funzionamento del sistema rendono nuovi bitcoin alle macchine che eseguono i calcoli — c’è un incentivo che porta le persone a dedicare la potenza di calcolo dei propri dispositivi al network (oltre a promuovere la nuova moneta). Se gli utenti vogliono pagare commissioni per accelerare la verifica di un trasferimento di bitcoin possono farlo, ma (in questa fase iniziale) il network arriverà a elaborare una transazione anche se i partecipanti non pagano una commissione extra. Questa caratteristica è un modo ingegnoso per stimolare l’adozione di Bitcoin e aiutarlo a crescere.

Spingiamoci oltre! Analogie più Difficili ma più Vicine al Vero Bitcoin

L’analogia che abbiamo utilizzato in cui Bill acquista una macchina da Sally era molto intuitiva nel creare un quadro generale sul funzionamento di Bitcoin sia come moneta che come sistema di pagamento. Tuttavia, la nostra storia ha ignorato alcune domande importanti sull’implementazione nel mondo reale di un tale sistema.

Prima di tutto, come è possibile fare in modo che il sistema degli enigmi funzioni in modo affidabile? Come può una sola persona autorizzare il passaggio di proprietà dei numeri, mentre tutti gli altri possono verificarlo? Cosa succede se finiscono gli enigmi?

Secondo, come risolvere transazioni contrastanti senza un’autorità centrale? Se qualcuno trasmette due messaggi validi differenti cercando di inviare lo stesso numero a due persone diverse, come decidere quale transazione considerare ufficiale?

Il primo problema risulta avere da tempo una risposta nel campo della crittografia, con una soluzione matura già utilizzata decenni prima di Bitcoin. Esaminiamo questa soluzione attraveso un esempio semplificato di uno schema a firme digitali. Chiaramente, la matematica utilizzata nelle effettive applicazioni di crittografia è ben più complessa — e sicura — ma questo esempio banale dovrebbe riuscire a dimostrarne l’idea generale.

Siamo lieti di presentare lo Schema di Firme Mucca-Gallina. Forse hai già sentito un rompicapo di questo tipo:

“Un contadino ha diverse mucche e galline nella sua fattoria. In totale, i suoi animali hanno 5 teste e 16 zampe. Quante mucche e quante galline ci sono?” (Nel caso l’avessi dimenticato, le galline hanno 1 testa e 2 zampe, mentre le mucche hanno 1 testa e 4 zampe.)

Nella realtà, gran parte delle persone risolverebbero questo rompicapo ricorrendo all’algebra, dato che questi tipi di problemi sono un ottimo modo per insegnare agli studenti come creare equazioni con “x” e “y.” Tuttavia, per utilizzarlo nella nostra analogia con Bitcoin, facciamo finta di non poter usare l’algebra, o altri tipi di matematica avanzata, per risolvere il nostro puzzle Mucca-Gallina. Invece, possiamo solo tirare a indovinare: Cerchiamo di indovinare il numero di mucche e di galline, quindi contiamo i numeri di teste e zampe corrispondenti e verifichiamo se la nostra ipotesi è corretta.

Puoi osservare una certa asimmetria in questo problema: è “facile” calcolare teste e zampe sapendo il numero di mucche e galline ma, sapendo il numero di teste e zampe, è “difficile” dedurre il numero di mucche e galline. In pratica, servono molti tentativi prima di trovare quello giusto.

Aggiungendo un nuovo elemento alla situazione si nota l’evidente pertinenza a Bitcoin. Supponiamo che una persona — chiamiamola Alice — sia in possesso della formula che le permette di convertire velocemente teste e zampe nel corrispondente numero di mucche e galline (La formula è: Mucche = Zampe/2 — Teste; Galline = 2*Teste — Zampe/2). Questa formula è la chiave privata di Alice. Ricorda che questa è la direzione “difficile”, anche perché stiamo fingendo che, per qualche ragione, nessuno conosca l’algebra. E’ facile passare dal numero di Mucche e Galline al numero di teste e zampe, mentre la direzione opposta è molto più complicata “calcolando a mente”. In questo contesto, Alice — armata della sua formula speciale — sembra avere un super potere. Solo lei sarebbe in grado di prendere due numeri (di teste e zampe) e sapere immediatamente quante Mucche e Galline devono esserci. Al contrario, tutti gli altri farfuglierebbero numeri a caso, tirando a indovinare per poi controllare “a mente” se c’hanno azzeccato.

Il problema matematico specifico che Alice usa è conosciuto come la chiave pubblica, e funge anche da indirizzo per identificare un conto. Una volta formattata, Alice potrebbe comunicare il suo indirizzo Bitcoin come “1/4–1/2,” cosa che informa anche sul problema matematico di cui lei conosce la soluzione. (Forse la comunità locale utilizza come indirizzi il format “primo animale: testa/zampe‐secondo animale: testa/zampe.” Per questo motivo se Alice scrive “1/4‐1/2”, chiunque conosca questa convenzione o protocollo sa che lei sta dichiarando di poter risolvere rapidamente un problema Mucca-Gallina, invece di un problema, per esempio, Mucca-Ragno.)

Mettiamo Insieme i Pezzi

Descriviamo il funzionamento dell’intero sistema per la situazione che abbiamo creato, in analogia a Bitcoin:

Quando Alice vuole firmare una transazione Bitcoin, possiede due numeri importanti: la somma di bitcoin che vuole trasferire, e l’indirizzo a cui vuole inviarli. La somma da trasferire è il numero di teste, e l’indirizzo target è il numero di zampe. La sua firma è il numero di mucche e galline corrispondente, numero che può trovare facilmente usando la sua chiave privata (la formula segreta). Supponiamo un output in cui separa mucche e galline da due punti, come “8:2” per indicare otto mucche e due galline.

Per fare un esempio specifico, supponiamo che Alice voglia inviare 10 unità all’indirizzo 28. Per prima cosa tratta il 10 come il numero di teste, e il 28 come il numero di zampe. Ricorda che, al resto della comunità, è molto complicato trasformare “10 teste, 28 zampe” nel corretto numero di Mucche e Galline. Dato che Alice possiede la formula segreta (la chiave privata), può calcolare velocemente il numero di mucche come 28/2–10 = 4 e il numero di galline come 2*10 -­‐ 28/2 = 6. Quindi la sua firma sarà “4:6.”

A questo punto trasmette, “Sto inviando 10 unità all’indirizzo 28. La mia firma per questa transazione è 4:6.” Anche se sarebbe stato molto difficile e dispendioso in termini di tempo per gli abitanti della comunità scoprire la firma “4:6,” possono controllare velocemente e confermare che funziona: Chiunque voglia verificare la firma di Alice può calcolare che 4 mucche e 6 galline corrispondono effettivamente a 10 teste e 28 zampe. Bingo! Dato che solo Alice è in possesso della formula segreta (la chiave privata) che genera la firma da allegare agli annunci pubblici in merito al trasferimento di unità a indirizzi riceventi, il pubblico confida nel fatto che questo particolare annuncio, “Sto inviando 10 unità all’indirizzo 28” è stato fatto effettivamente da Alice. Solo lei è in grado di scoprire velocemente la firma “4:6”, anche se chiunque potrebbe calcolare nella direzione opposta per verificarne la legittimità.

Speriamo che questo semplice esempio Mucca-Gallina abbia chiarito il funzionamento di Bitcoin nel mondo reale, di seguito approfondiamo i criteri necessari di una firma che abbiamo definito in precedenza.

La Firma non può essere Trasferita su una Transazione Diversa

Parte della difficoltà nell’uso del termine “firma” è il fatto che nel linguaggio comune, la firma di una persona è la stessa a prescindere dal documento su cui questa viene apposta; la tua firma è sempre la stessa sia quando paghi con la carta di credito al ristorante sia quando compili un modulo all’ospedale. Tuttavia, nel contesto delle firme digitali nella crittografia asimmetrica, la “firma” identifica univocamente il firmatario, ma la “firma” stessa è dipendente dal contenuto del messaggio che andrà ad autenticare.

Per comprendere questo concetto, pensa alla transazione che abbiamo descritto sopra. Supponiamo che l’indirizzo 28, il ricevente, appartenga a un furfante. Questo furfante vede la “firma” che Alice ha usato per il suo messaggio legittimo al network in cui annunciava di inviare 10 unità di moneta all’indirizzo 28. Ora che il furfante ha a disposizione la sua “firma”, cosa gli impedisce di inviare un nuovo messaggio, autorizzando il trasferimento di (diciamo) 12 unità di proprietà di Alice all’indirizzo 28, copia-incollando la stessa “firma”? Come potrebbe il network riconoscere che questa richiesta non è legittima in quanto non proviene dalla vera Alice?

La risposta (per ribadire) è che la “firma” digitale di Alice non è statica. Al contrario, per il modo in cui il protocollo opera, la firma legittima di Alice sarà diversa in base alla transazione che sta autenticando. In questo caso, gli abitanti della comunità vedranno un messaggio, che presumono essere di Alice, che annuncia “Sto inviando 12 unità all’indirizzo 28. La mia firma è 4:6.” Verificando questo annuncio, scopriranno che non corrisponde. O meglio, calcolano il numero di teste e zampe che corrispondono a 4 mucche e 6 galline, e ottengono 10 e 28 — non 12 e 28. Di conseguenza l’annuncio viene considerato invalido e non è possibile sapere che sia stata davvero Alice a inviarlo.

La firma è facile da verificare …

Dato che passare da mucche/galline a teste/zampe è facile, chiunque può verificare velocemente la validità della firma.

… ma difficile da falsificare.

Dato che le persone (come abbiamo ipotizzato nella nostra analogia) non possono fare altro che tirare a indovinare, sono costrette a effettuare molti tentativi prima di trovare la corrispondenza al messaggio per cui vogliono falsificare una firma. Alice non ha questo problema conoscendo la chiave privata (la formula magica) e tenendola segreta, è l’unica in grado di generare queste firme abilmente e velocemente.

Creare un Sistema di Firme su Larga Scala

In un sistema diffuso, dobbiamo permettere a un grande numero di persone di partecipare, e allo stesso tempo fornire indirizzi separati — e, di conseguenza, chiavi pubbliche e private separate. Nell’esempio riportato sopra, Alice ha “riservato” il problema matematico con mucche e galline — o meglio, il problema matematico a due animali, uno di tipo 1/4 (una testa e quattro zampe) e l’altro di tipo 1/2 (una testa, due zampe). I nuovi arrivati dovranno scegliere “animali” di diversi tipi. Per le finalità del sistema, l’animale non deve per forza esistere sulla terra, dato che ci sono pochi tipi in questo sistema. Quindi gli utenti possono scegliere un animale immaginario “3/7” (3 teste, 7 zampe), e via dicendo, consentendo la creazione di un numero illimitato di indirizzi.

Inoltre, si presuppone che gli utenti possano scegliere una “coppia di animali” (che funge da chiave pubblica e indirizzo, come già detto), e pochi secondi più tardi ricevere la “chiave privata” (la formula magica), che nessun altro possiede. Gli utenti possono scegliere, o creare, tutti gli indirizzi che vogliono, senza dover rivelare quanti ne hanno (nel sistema reale delle firme di Bitcoin, gli utenti scelgono una chiave privata casuale e seguono un breve processo per trovare la chiave pubblica/indirizzo corrispondente). Dal punto di vista degli utenti, non ci sono differenze tra Alice che invia bitcoin da due indirizzi di sua proprietà e due persone diverse che inviano bitcoin dal proprio indirizzo.

Sezione successiva — Come Funziona Bitcoin: Il Protocollo (3/3)

--

--