Nella Parte 1, abbiamo appreso che Bitcoin è una valuta decentralizzata, non generata o posseduta da alcun governo o istituzione finanziaria, e cos'è l'hashing. Ora impareremo come i minatori di Bitcoin usano l'hashing per fare letteralmente soldi e come la crittografia consente ai bitcoin di essere affidabili, unici e impervi alla copia anche se sono completamente (e irreversibilmente) trasferibili.

Bitcoin, come il dollaro degli Stati Uniti, varia di valore. Le persone si fidano delle valute anche quando il loro valore fluttua, il che significa semplicemente il valore di una valuta che dipende dall'offerta e dalla domanda rispetto ad altre valute, al contrario di essere "riparato" e determinato da un governo o altro ente centralizzato.

Quando i dollari statunitensi erano sostenuti dall'oro, la gente si fidava del denaro perché poteva essere scambiato con un metallo prezioso. Ora la gente si fida del dollaro in gran parte a causa della credibilità del governo degli Stati Uniti. Fidano anche che il governo appoggi le banche, nel caso qualcosa vada storto.

Bitcoin è progettato per essere altamente affidabile, ma non a causa dell'oro o di alcun governo. Invece si basa sulla matematica, in particolare sull'uso intelligente di due tecnologie: hashing e crittografia a chiave pubblica.

Hashing e Blockchain di Bitcoin

La blockchain di Bitcoin è un libro mastro pubblico di ogni transazione bitcoin. È una sequenza di blocchi e ogni blocco contiene un gruppo di transazioni bitcoin. È possibile visualizzare la blockchain come una serie di pacchetti, ciascuno contenente le transazioni avvenute durante un periodo di circa 10 minuti:

Oppure potresti visualizzare i pacchetti impilati uno sopra l'altro, con il primo blocco di transazioni in basso e il più recente in alto. Manomettere qualsiasi blocco dello stack e tutti i blocchi sopra di esso cadono a terra, facilitando il rilevamento di manomissioni.

Ogni blocco ha un hash univoco: un'impronta digitale sotto forma di una stringa di numeri molto grande espressa (in esadecimali) come una stringa di caratteri gobbledygook. Ad esempio, l'hash di un blocco potrebbe essere "00000000003e95b0ac78cb961d0".

Per rendere la nostra discussione semplice e concettuale, usiamo le emoji invece dei numeri per rappresentare gli hash. Esprimiamo l'hash del primo blocco come (un pallone da calcio), l'hash del secondo blocco come (un calamaro) e il terzo blocco come (un ombrello). La blockchain, quando rappresentata da hash emoji, ora assomiglia a questo:

Diciamo che la mia amica Elizabeth mi ha inviato $ 5 in bitcoin e voglio passartelo. Quando lo farò, la transazione verrà inclusa tra molti altri in un nuovo blocco aggiunto alla catena. Ogni blocco in una catena sa dove appartiene nella sequenza perché contiene l'hash del blocco che lo precede. In altre parole, il terzo blocco non contiene solo un gruppo di transazioni, ma contiene anche l'hash () del blocco precedente.

Immagina che il sistema Bitcoin abbia appena eseguito l'hashing del blocco 3 (creando l'hash ). Una volta che ti pago $ 5, Bitcoin include la nostra transazione nel blocco successivo. Questo nuovo blocco, che alla fine rappresenteremo come 4, non ha ancora un hash. Per ora è un punto interrogativo.

Questo è dove le cose diventano davvero interessanti. I potenti computer chiamati "minatori" competono per aggiungere 4 alla blockchain, risolvendo un problema matematico complesso. Il primo minatore a eseguire l'hash con successo del nuovo blocco è il vincitore e il suo proprietario riceve 12,5 bitcoin nuovi come ricompensa. (Il numero di bitcoin assegnati diminuirà negli anni futuri).

Questo è il modo in cui i nuovi soldi vengono "estratti". Una volta scoperto un hash di successo, viene distribuito istantaneamente a tutti gli altri minatori, che lo verificano e lo aggiungono alle loro copie della blockchain. Quindi la corsa continua per trovare l'hash corretto per la catena successiva nel blocco.

Hashing è facile. I laptop medi possono trovare migliaia di hash in un secondo.

Ma nella rete Bitcoin, trovare un hash di successo richiede in media 10 minuti i minatori in competizione, perché non tutti gli hash lo faranno. Il sistema Bitcoin rende estremamente difficile trovare un hash accettabile richiedendo che l'hash sia un numero terribilmente piccolo rispetto a tutti gli altri hash possibili. Un hash può essere uno qualsiasi di un numero sorprendentemente elevato di valori. Un numero che è semplicemente nei trilioni è piccolo rispetto alla gamma di tutte le possibilità, nello stesso senso in cui la terra è estremamente piccola rispetto al suo universo.

Pertanto, i minatori vogliono trovare un valore di hash improbabilmente piccolo e l'unico modo è riprovare ancora e ancora. Ogni tentativo deve essere diverso ei minatori non possono variare nel modo in cui hanno, ma possono leggermente variare ciò che hanno.

Lo fanno con l'aiuto di qualcosa chiamato "nonce", che è una specie di pulce nera a un pixel che abbiamo aggiunto sopra l'occhio del cucciolo nella Parte 1.

Ricorda che l'aggiunta di un solo pixel ha causato la differenza tra l'hash della foto del cucciolo e il fatto che la modifica dei contenuti digitali anche leggermente prima dell'hash provoca risultati completamente diversi e assolutamente imprevedibili.

Un nonce è un'ipotesi selvaggia - un numero che viene aggiunto a un blocco Bitcoin su una base di tentativi ed errori, nella speranza che causi la vincita dell'hash risultante. I minatori prendono tutte le transazioni nel nuovo blocco più l'hash del blocco precedente, aggiungono un nonce e quindi hash il risultato. Ogni minatore prova molti numeri diversi per il nonce, sperando di atterrare su uno che, quando incorporato nel blocco, causerà l'hash del blocco a un numero adeguatamente piccolo. In effetti, i minatori di successo possono indovinare usando milioni di valori diversi per il nonce.

In questi giorni, in genere servono minatori a quadrilioni di tentativi, collettivamente, prima che uno di loro trovi un nonce che produce un hash vincente. C'è un vincitore ogni 10 minuti circa perché i minatori corrono in fattorie con computer molto potenti e ci sono molti minatori. (Se il tempo medio per vincere scende sotto i 10 minuti, il sistema Bitcoin rende automaticamente più difficile il problema riducendo le dimensioni di un hash accettabile.)

L'oro trae il suo valore dall'essere un metallo prezioso, proprio come un hash vincente ottiene il suo valore essendo un numero prezioso - un numero che ha una qualità (le sue piccole dimensioni) che lo rende estremamente raro. I minatori prendono pugnalate nel buio - collettivamente quadrilioni di pugnalate nel buio - sperando di essere i primi a colpire un numero (un "nonce") che genera un hash che soddisfa il rigoroso requisito imposto dal sistema Bitcoin. Il requisito, ad esempio, potrebbe essere che l'hash sia inferiore a 0000000003e95b0acc32ac089222. La strategia di mining vincente è quella di disporre di una potenza del computer sufficiente per fare molte ipotesi.

La rete Bitcoin richiede hash al di sotto di determinate dimensioni, ma per continuare la nostra metafora delle emoji, immaginiamo che stabilisca vincoli più amichevoli: ad esempio, supponiamo che il vincolo della rete sia che l'hash deve essere un animale. Al loro primo tentativo, gli hash dei minatori si presentano così:

Solo uno di questi valori soddisfa il vincolo: né il fiore di ciliegio né la pera sono animali, ma una balena soddisfa il requisito.

Poiché il secondo minatore ha trovato un hash corretto, raccolgono una ricompensa. Questa ricompensa consiste in nuovissimi bitcoin, motivo per cui questo processo si chiama "mining". È quasi come se i minatori stessero scoprendo nuovi bitcoin, come se fosse oro.

Se il mining avviene troppo rapidamente, il sistema verrà inondato di bitcoin, causando l'inflazione. Per proteggersi da ciò, il software Bitcoin è scritto con un vincolo regolabile. Se gli hash vengono trovati troppo facilmente, la rete può scegliere un vincolo più rigoroso.

Immagina che i blocchi vengano estratti troppo rapidamente nella nostra emoji-blockchain. Per ovviare a questo, il vincolo potrebbe essere adattato: "Per il blocco successivo, l'hash deve essere un animale e deve essere un animale con le zampe".

I minatori eseguono le loro funzioni di hash e trovano questo:

Nessuno di questi hash sono animali con le zampe. Quindi i minatori riprovano:

A questo punto, il terzo minatore ha trovato un hash corretto: gli orsi sono animali con le zampe! Questo minatore può quindi trasmettere l'hash, insieme ai dati all'interno del blocco, alla rete. Poiché le funzioni hash possono essere eseguite rapidamente, altri minatori possono eseguire la funzione hash su questo blocco e verificare che questo hash, , soddisfi i vincoli. Adotteranno quindi il blocco nelle loro catene - il che significa che resteranno più o meno sincronizzati tra loro - e inizieranno a raccogliere le transazioni per il blocco successivo.

Ora gli hash della blockchain sembrano così, con la transazione in cui ti ho inviato $ 5 inclusi nel blocco chiamato :

Crittografia a chiave pubblica

Hashing è solo uno dei concetti matematici su cui Bitcoin fa affidamento. La crittografia a chiave pubblica è un'altra.

Le persone che studiano la crittografia spesso usano "Alice" e Bob "come personaggi nelle loro spiegazioni reciproche. Usiamoli per aiutare a spiegare l'idea di base dietro la crittografia a chiave pubblica.

Immagina che Alice voglia inviare a Bob una valigetta con alcuni documenti segreti. (Nella crittografia, questo è il genere di cose che Alice sembra fare tutto il tempo.) Se Alice e Bob hanno le chiavi corrispondenti, è semplice: può mettere un lucchetto sulla valigetta, bloccarlo con la sua chiave e inviarlo a Bob.

Quando Bob lo riceve, può sbloccare il lucchetto con la sua chiave - poiché è uguale a quello di Alice - e accedere ai documenti segreti. Questo processo è una crittografia simmetrica.

Ma di solito le persone che si scambiano segreti non hanno chiavi corrispondenti, perché non è facile trasferire una chiave in modo sicuro. Se Alice avesse un servizio privato e sicuro per inviare una chiave a Bob, potrebbe usarlo anche per trasferire i documenti!

Quindi Alice e Bob non hanno le chiavi corrispondenti per un singolo lucchetto. Al contrario, ognuno di essi ha la propria chiave e il proprio lucchetto, il che significa che non è necessario trasferire le chiavi.

Ecco come funziona:

Alice chiude a chiave la valigetta con il lucchetto e la chiave e la invia a Bob. Quando Bob lo riceve, non riesce a sbloccare il lucchetto di Alice. Invece può aggiungere il proprio lucchetto ...

... e rispediscilo ad Alice:

Alice quindi usa la chiave per togliere il lucchetto dalla valigetta:

La valigetta ora ha solo un lucchetto: Bob. Alice rimanda la valigetta a Bob:

E Bob può semplicemente sbloccare il suo lucchetto e accedere ai documenti.

Ora Alice e Bob non devono trovare un modo per condividere segretamente una singola chiave. Tutto ciò di cui hanno bisogno sono le proprie chiavi e i propri lucchetti.

Ma cosa succede se la persona dall'altra parte non è chi pensi che sia? E se ci fosse stata una specie di incidente strano e Bob fosse sostituito da ... un bovino?

Ecco cosa succede dopo:

  1. Alice spedisce la sua valigetta con lucchetto. Pensa che lo sta inviando a Bob, ma lo sta davvero inviando a una mucca.
  2. La mucca - che è sorprendentemente abile - aggiunge il suo lucchetto alla valigetta e lo rimanda ad Alice.
  3. Alice, felice che il caso sia apparentemente tornato con il lucchetto di Bob (che ovviamente appartiene al bovino), sblocca il suo lucchetto e lo rispedisce.
  4. La mucca apre la valigetta sbloccando il lucchetto.
  5. La mucca mangia i documenti segreti. Muggire!

Nessuno vuole che i loro segreti vengano consumati da una mucca o da qualsiasi altro destinatario non intenzionale, quindi facciamo un altro passo per proteggere i nostri dati segreti: Bob si assicura che Alice sappia esattamente che aspetto ha il suo lucchetto, così che quando riprende la sua valigetta con un lucchetto aggiuntivo, può verificare che sia suo.

In effetti, Bob fa copie del suo lucchetto e le rende pubblicamente disponibili ovunque. Non importa se tutti sanno che aspetto ha il lucchetto di Bob, dal momento che è l'unico che può sbloccarlo con la sua chiave. Allo stesso tempo, questo consente ad Alice di identificare il lucchetto di Bob. Può verificare che il secondo lucchetto sia proprio quello di Bob prima di sbloccare il suo.

Se avessimo a che fare con chiavi e lucchetti fisici, sarebbe difficile duplicare e distribuire i lucchetti. Ma quando abbiamo a che fare con record digitali, stiamo lavorando con chiavi e lucchetti digitali, che sono numeri.

Il lucchetto è un numero che è pubblico. La chiave è un numero privato. Il numero privato, che è giustamente chiamato "chiave privata", può essere utilizzato per "sbloccare" quello pubblico. Questo numero pubblico, forse confusamente, è chiamato la "chiave pubblica".

Questa è crittografia a chiave pubblica.

Le persone proteggono attentamente le proprie chiavi private, poiché una chiave privata può sbloccare una qualsiasi delle chiavi pubbliche corrispondenti. (Nella crittografia, questo processo di sblocco viene talvolta chiamato firma.) Le persone pubblicheranno le loro chiavi pubbliche in modo ampio, in modo che altre persone sappiano cosa è stato bloccato da un determinato blocco.

Nel sistema Bitcoin, la crittografia a chiave pubblica viene utilizzata per dimostrare la proprietà. Per parlare di come funziona, dobbiamo prima sistemarci un po 'di terminologia. In Bitcoin, ci sono chiavi private, chiavi pubbliche e indirizzi:

A differenza di Alice e Bob e dei documenti segreti, le chiavi del sistema Bitcoin non stanno cercando di crittografare nulla. Non esiste una cartella opaca che stanno cercando di sbloccare. Invece, le chiavi vengono utilizzate per dimostrare la proprietà.

Nell'universo Bitcoin, Alice non sta inviando a Bob una valigetta segreta. Invece, ha una scatola di vetro con il suo lucchetto e il suo bitcoin all'interno:

Per inviare il bitcoin a Bob, Alice deve fare due cose:

  1. Alice deve aggiungere il lucchetto di Bob nella confezione. Questo è semplice, perché il suo "lucchetto" è davvero un numero pubblico. In questo modo, Bob può dimostrare la proprietà sbloccando il suo lucchetto.
  2. Alice deve dimostrare che il primo lucchetto associato al bitcoin è il suo lucchetto, e non quello di qualcun altro. Lo fa sbloccando il proprio lucchetto con la sua chiave (un numero lungo che non condivide con nessun altro).

Quindi, quando Bob decide di voler inviare questi bitcoin a qualcun altro (chiamiamolo Carlos), farà le stesse cose: aggiungerà il lucchetto di Carlos e firmerà la transazione con la sua chiave privata.

In questa situazione, che cos'è esattamente il lucchetto? In generale, è la chiave pubblica. Ma il protocollo Bitcoin ha un'altra variazione sulla crittografia della chiave pubblica - invece di includere la stessa chiave pubblica di Bob, Alice può includere l'indirizzo bitcoin di Bob. Gli indirizzi bitcoin sono derivati ​​da chiavi pubbliche, quindi è come se Alice stesse mettendo una rappresentazione specifica del lucchetto di Bob nella scatola. E un numero praticamente infinito di indirizzi può essere generato da una singola chiave pubblica, quindi se Bob voleva usare ogni volta un indirizzo diverso, poteva farlo.

Torniamo ai $ 5 che ti ho inviato. L'ho inviato al tuo indirizzo bitcoin, che hai generato dalla tua chiave pubblica, che hai generato dalla tua chiave privata. Il tuo indirizzo bitcoin, quindi, è matematicamente collegato alla tua chiave privata. Se possiedi la chiave privata associata a un indirizzo, allora possiedi il bitcoin nello stesso indirizzo!

Per trasferire $ 5, devi effettuare una nuova transazione, includere un indirizzo che appartiene al tuo destinatario e firmarlo con la tua chiave privata. Questo equivale a mettere il lucchetto del destinatario sulla valigetta e quindi a sbloccare il lucchetto.

C'è anche un interessante effetto collaterale dell'uso degli indirizzi, che è che Bitcoin è quasi anonimo.

È pseudonimo, perché i tuoi indirizzi sono i tuoi pseudonimi. Bitcoin non è collegato al tuo nome: tutto ciò di cui hai bisogno è la tua chiave privata.

Quindi finché hai la tua chiave privata, hai il tuo bitcoin. Cosa puoi farci?

Successivamente, impareremo come Bitcoin e blockchain vengono utilizzati per fare più dei soldi e come queste tecnologie stanno alla base di nuovi strumenti finanziari.