venerdì 1 settembre 2017

Le Origini Del Bitcoin: Da Dove Nasce e Perchè?

Le radici dei Bitcoin o meglio il primo embrione può esser fatte risalire al 1982, quando apparve la prima descrizione di un sistema crittografico per effettuare pagamenti non tracciati redatta da David Chaum, un ingegnere informatico specializzatosi in crittografia.
Da essa, Chaum stesso realizzò nel 1990 una prima implementazione funzionante del sistema da lui ideato denominata eCash.
Lui introdusse anche il concetto di moneta anonima digitale e dei sistemi reputazionali basati su pseudonimi.
Ecco quindi che nei primi anni 90 iniziarono ad essere attivi soprattutto nella Silicon Valley diversi gruppi di sostenitori della crittografia come mezzo di cambiamento politico e sociale.


LA RIVOLUZIONE GIAPPONESE
All’inizio degli anni ’90, i ricercatori della Nippon Telegraph And Telephone Corporation (NTT) Tatsuaki Okamoto e Kazuo Ohta descrivono un sistema rivoluzionario:

1) La sicurezza del sistema deve essere indipendente dalle condizioni fisiche del sistema stesso e deve consentire al denaro di essere trasferito attraverso la rete
2) Non deve essere possibile clonare il denaro
3) Nessuno può essere in grado di tracciare il rapporto tra un utente e i propri acquisti
4) Le transazioni devono poter svolgersi anche online
5) Il denaro può essere inviati ad altri utenti
6) Il denaro può essere suddiviso in unità più piccole

I sistemi ideati da David Chaum soddisfano solo alcuni di questi requisiti.
Questo paper è tornato attuale molti anni dopo la sua pubblicazione perché, essendo stato scritto da autori giapponesi, si è cercata una connessione con Satoshi Nakatomo, il misterioso creatore di Bitcoin.


TIM MAY, LA CRITTOGRAFIA E I PROTOCOLLI
Nel 1992 venne fondato il movimento Chyperpunk che diffondeva una mailing list in cui venivano discussi temi legati alla crittografia, alla matematica e all'informatica.
Uno dei fondatori del movimento fu Tim May che lavorò a lungo alla Intel come ingegnere elettronico dove, in qualità di capo della ricerca, risolse problemi di un certo rilievo nell'ambito dell'affidabilità dei circuiti integrati.
May diede una impronta particolare al movimento, contribuendo a creare un ponte ideale tra il mondo della crittografia e l'anarchismo, ovvero il Cripto-Anarchismo, sorta di spazio virtuale in cui realizzare i principi dell'anarchismo.
May consolidò la parte concettuale del movimento pubblicando nel 1992 il manifesto del Cripto-Anarchismo e, nel 1994, il "Cyphernomicon", vera e propria summa dei principi teoretici.

May: "Proprio come la tecnologia della stampa ha modificato e ridotto il potere delle corporazioni medievali e la struttura del potere sociale, allo stesso modo anche i metodi di crittografia altereranno fondamentalmente la natura delle grandi imprese e l'interferenza del governo nelle transazioni economiche. In combinazione con i mercati emergenti dell'informazione, la cripto-anarchia creerà un mercato liquido per ogni tipo di materiale che può essere trasferito in parole e immagini"
La crittografia e i protocolli digitali avrebbero permesso non solo lo scambio di informazioni riservate (fondamentale per le monete virtuali e non solo) ma anche la stipula, la verifica e il rispetto di veri e propri contratti tra soggetti anonimi indipendentemente da enti terzi.


NICK SZABO, GLI SMART CONTRACT E LA CATENA
Riguardo il concetto di Smart Contract e Blockchain non si può che citare Nick Szabo, un informatico di origine ungherese esperto di crittografia.
Nel 1993, anche se la prima descrizione completa è datata 1997 (First Monday, Vol.2 N.9 ), Szabo ebbe l’idea d'inserire in device fisici componenti hardware e software che ne potevano modificare il funzionamento sulla base di condizioni previste nelle clausole di un contratto.
Il concetto di Smart Contract si compone di tre parti: l’espressione di una logica contrattuale come codice di un programma, la rappresentazione degli eventi che attivano la logica come messaggi inviati al programma stesso, un meccanismo che regoli trasferimenti di denaro da un punto all’altro.
L’esecuzione di un programma per computer è oggettiva, nel senso che in base all' input avrò un certo risultato.
In altre parole, una volta che un contratto è diventato uno Smart Contract e i contraenti concordano nell’accettarne le clausole, gli effetti non sono più legati alla loro volontà.
Affinché il tutto funzioni, sono necessarie delle garanzie: che il codice non venga modificato, che i messaggi provengano da chi deve inviarli, che l’avviamento venga disabilitato.
Tradizionalmente la fiducia nell’efficacia di un contratto viene garantita da una terza parte, un intermediario che si pone tra i contraenti e che naturalmente viene retribuito per i suoi servizi.
Anche le borse oggi possono essere viste come piattaforme per l’esecuzione di Smart Contracts standardizzati che comportano lo scambio di prodotti finanziari.
La diffusione di questi sistemi ha creato la Blockchain.
Essa altro non è che un libro replicato su una rete di nodi paritari dove sono registrati in modo indelebile le informazioni di proprietà di uno o più asset.
L’immodificabilità dei record è garantita da tecnologie crittografiche e dal fatto che, una modifica, per essere accettata (per esempio un trasferimento di proprietà di un asset), deve essere confermata dalla maggioranza dei nodi della rete.
Oltre che come libro mastro, una Blockchain può però anche agire come piattaforma di esecuzione di operazioni.
Quella dei Bitcoin ad esempio esegue del codice che effettua i trasferimenti di proprietà dei Bitcoin da un wallet all’altro sulla base di un input proveniente dall’esterno (un messaggio da un utente).
Già così com’è, quindi, l’infrastruttura Bitcoin può essere usata per effettuare il trasferimento di fondi (in Bitcoin) previsto per esempio dalle clausole di uno Smart Contract eseguito da qualche altra parte.
Di più, l’architettura software di Bitcoin permette di associare ad un indirizzo una piccola quantità di dati (metadati) che possono essere usati per descrivere un “asset” diverso da un Bitcoin e le istruzioni per il trasferimento di quell’asset da un indirizzo ad un altro.
I vantaggi di realizzare gli Smart Contracts su una Blockchain sono notevoli.
Innanzitutto, si ottiene la registrazione del contratto su un libro mastro che ne garantisce l’immodificabilità.
In secondo luogo, la Blockchain garantisce con sistemi crittografici estremamente robusti che i messaggi che costituiscono l’input del programma/smart contract vengano effettivamente da chi è autorizzato a mandarli (ogni messaggio è firmato).
Questo fa sì che una infrastruttura di Smart Contracts possa avere aderenti che non si conoscono tra di loro e non si fidano l’un l’altro senza la necessità di un intermediario che dia fiducia a tutti.
Szabo presenta il progetto “Bit Gold”, il quale non ha successo, ma anticipa l'embrione del futuro Proof Of Work (pur non utilizzando questo termine), ovvero un meccanismo che consente di coniare moneta (virtuale) risolvendo un problema crittografico e affrontando così dei costi reali (dovuti al consumo di energia della CPU).
Nel lavoro di Szabo è presente anche il concetto di chain (catena) che lega la verifica di ogni una transazione alla successiva.
Anche altri concetti utilizzati in Bit Gold vengono ripresi anni dopo da Bitcoin, tanto da far pensare che sia lo stesso Szabo ad aver ideato anche quest’ultimo sistema.


DOUGLAS JACKSON E L'E-GOLD
L'E-gold viene lanciato nel 1996 da Douglas Jackson.
Il denaro elettronico in circolazione è garantito da lingotti d’oro, d’argento e di platino inizialmente depositati in una banca in Florida, successivamente a Londra e Dubai.
La moneta ha un discreto successo, tuttavia negli anni 2000 numerosi attacchi informatici vengono portati a segno contro i titolari dei conti in E-Gold.
Sono principalmente attacchi di Phising.
L'E-gold viene anche utilizzato come oggetto di truffe basate sul classico schema Ponzi e diventa pure il metodo di trasferimento di moneta preferito dai trafficanti di numeri di carte di credito, visto che per aprire un conto in E-Gold è possibile utilizzare pseudonimi.
Tutte questi fattori, uniti all’intervento dell’FBI e dei servizi segreti statunitensi, decretano la fine del progetto di Jackson, che nel 2007 viene incriminato per diversi reati, tra cui l’esercizio senza licenza dell’attività di trasmissione di denaro.


ADAM BACK E IL PROOF OF WORK
Nel 1997 Adam Back con il suo algoritmo Hashcash fornisce un'importante funzione di Mining per le criptovalute: nasce ufficialmente il Proof Of Work (il Bitcoin utilizzerà appunto questo sistema).
In realtà il sistema inizialmente viene utilizzato come filtro-antispam.
Per il Bitcoin, questo sistema, impedirà l' "avvelenamento" delle transazioni e della catena.


WEI DAI, LA NON TRACCIABILITA' E LA DECENTRALIZZAZIONE
Nel 1998 Wei Dai (forse uno pseudonimo) parlava di un protocollo "che consente ad un gruppo di pseudonimi digitali non tracciabili di effettuare vicendevolmente pagamenti in denaro e di assicurare il rispetto di contratti senza aiuti esterni".
Ispirato dal lavoro di Tim May, Wen Dai iniziava così il proprio articolo:

Wei Dai: "Una comunità è definita dalla cooperazione dei suoi partecipanti, e una cooperazione efficace richiede un mezzo di scambio (denaro) e una modalità per far rispettare i contratti. Tradizionalmente questi servizi sono sempre stati erogati da un governo o da istituzioni da esso sponsorizzate dal governo e unicamente nei confronti di entità legali. In questo articolo ho descritto un protocollo con cui questi servizi possono essere forniti a delle entità non tracciabili"

L'idea di Wei Dai contiene l'ossatura quasi completa del protocollo sul quale da lì a poco verrà implementato Bitcoin.
Sostanzialmente si parla di una rete decentrata non tracciabile, in cui i mittenti e destinatari di denaro sono identificati solo da chiavi pubbliche e ogni transazione è firmata digitalmente.
Inoltre fa dei ragionamenti su come creare un meccanismo di emissione di denaro collegato a un qualche onere computazionale da assolvere.
Su un post su un forum (1998), Wei Dai descriverà due protocolli:
"PRIMO PROTOCOLLO
Nel primo protocollo, ogni partecipante gestisce un proprio separato database su quanti soldi appartengono ad ogni pseudonimo, e l’oggetto di questo protocollo è il modo nel quale questi conti correnti vengono aggiornati.

-Creazione di denaro:
Chiunque può creare denaro rendendo pubblica (broadcasting) la soluzione di un problema computazionale fino a quel momento irrisolto. 
La sola condizione è che deve essere facile determinare quanto sforzo computazionale occorre per risolvere il problema e, in caso contrario, la soluzione non deve avere un valore né pratico né intellettuale. 
Il numero di unità monetarie creato è uguale al costo dello sforzo computazionale in termini di un paniere di beni. 
Per esempio, se un problema richiede 100 ore ad essere risolto nel computer che lo risolve più convenientemente, e ci vogliono 3 panieri standard per acquistare 100 ore di funzionamento di quel computer nel mercato libero, allora sulla diffusione della soluzione di quel problema ognuno accrediterà al mittente 3 unità nel proprio database.

-Trasferimento di denaro:
Se Alice (il detentore dello pseudonimo K_A) vuole trasferire X unità d denaro a Bob (detentore dello pseudonimo K_B), essa diffonde il messaggio “Io K_A consegno X unità di denaro a K_B”.
In seguito a questo messaggio broadcast, ciascuno sottrae nel proprio database X unità dall’account di K_A e somma X unità al conto di K_B, a meno che questo non crei un bilancio negativo peer K_A, nel qual caso il messaggio viene ignorato.
-Applicazione dei contratti:
Un contratto valido deve includere un massimo di risarcimento in caso di fallimento di ogni parte contrattuale. 
Deve anche contemplare una (terza) parte che eseguirà un arbitrato nel caso di contestazioni.  
Tutte le parti di un contratto, incluso l’arbitro, devono inviare in rete le loro firme digitali del contratto prima che questo possa essere considerato valido. 
Al momento della diffusione in rete del contratto e delle firme digitali, ogni partecipante addebita nel proprio database al conto di ciascun partecipante il massimo del sua quota massima di risarcimento e accredita su un conto speciale che si identifica con l’hash sicuro del contratto, la somma dei risarcimenti massimi di tutte le parti. 
Il contratto diviene efficace se gli addebiti funzionano su tutte le parti contrattuali senza che si verifichi un bilancio negativo per nessuno, caso nel quale il contratto viene ignorato e tutti i conti correnti vengono ripristinati al valore precedente (rollback). 
Un esempio di contratto dovrebbe essere simile a questo:
K_A acconsente di consegnare a K_B la soluzione del problema P prima delle 00:00:00 del 01/01/2100,
K_B acconsente di pagare K_A 100 bitcoin (UM, unita di moneta) prima delle 00:00:00 del 01/01/2100,
K_C acconsente di svolgere un arbitrato in caso di contestazione.
K_A acconsente di pagare a K_B un massimo di 1000 bitcoin in caso di fallimento [non consegna]
K_B acconsente di pagare a K_A un massimo di 200 bitcoin in caso di fallimento [non vuole più la soluzione].
K_C acconsente di pagare [a chi?] un massimo di 500 bitcoin in caso di fallimento [non raggiunge l’accordo].

-Conclusione dei contratti:
Se un contratto di conclude con una disputa, ogni parte invia in rete un messaggio firmato “Il contratto con firma digitale SHA-1 H si conclude senza risarcimenti” o anche “Il contratto con firma digitale SHA-1 H si conclude con i seguenti risarcimenti…”. In seguito alla diffusione di tutte le firme, ogni partecipante accredita nel proprio database nel conto corrente di ogni parte l’importo del suo massimo risarcimento, cancella l’account (fittizio) del contratto, quindi accredita o addebita al conto di ciascuna delle parti contrattuali secondo lo schema di risarcimento, se ce n’è uno.

-Applicazione dei contratti:
Se le parti contrattuali non trovano un accordo su una conclusione appropriata anche con l’aiuto di un arbitro, ogni parte invia in rete una proposta di risarcimento/sanzione e ogni argomento o evidenza che deponga in suo favore. Ogni partecipante fa una determinazione in merito agli effettivi risarcimenti / sanzioni e modifica di conseguenza i conti correnti delle parti nel proprio database.

SECONDO PROTOCOLLO
Nel secondo protocollo, i conti correnti di ciascuno sono localizzati in un sottoinsieme di partecipanti (che chiameremo server d’ora in poi) invece che nel database di ciascun partecipante. 
Questi server sono collegati da una rete di trasmissione di tipo Usenet. 
Il formato dei messaggi di transazione trasmessi su questo canale rimane lo stesso del primo protocollo, ma i partecipanti ai quali è arrivato il messaggio broadcast devono verificare che il messaggio è stato ricevuto e correttamente elaborato su un sottoinsieme casuale di questi server.
Poiché i server devono possedere un certo grado di affidabilità, è necessario un meccanismo per mantenere la loro onestà. 
Ad ogni server viene richiesto di accreditare una certa quantità di denaro su un conto corrente speciale, denaro potenziale per ricompense o multe in caso di buona o cattiva condotta. 
Inoltre, ogni server periodicamente deve periodicamente pubblicare i propri database e registrare su di essi le operazioni di creazione di denaro e le attribuzioni di denaro ai partecipanti. 
Ogni partecipante deve verificare che il bilancio del proprio conto corrente sia esatto e che la somma dei bilanci non sia maggiore della quantità di denaro creata. 
Questo impedisce ai server, anche in caso di collusione totale, di aumentare l’immissione di denaro costantemente e senza costi. 
Nuovi server possono anche usare i database pubblicati per sincronizzarsi con gli altri server.
Il protocollo proposto in questo articolo permette a entità pseudonime non identificabili (non rintracciabili) di cooperare tra loro più efficientemente fornendo loro un mezzo di scambio e un metodo per applicare i contratti. Il protocollo può probabilmente essere reso più efficiente e sicuro, ma io spero che questo sia un passo verso la realizzazione della cripto anarchia come possibilità pratica come anche teorica.

-Appendice A: una creazione di denaro elettronico alternativa
Uno degli aspetti più problematici nel protocollo di b-money è la creazione del denaro. Questa parte del protocollo richiede che tutti i detentori di un conto si accordino e decidano sul costo di computazioni particolari. Sfortunatamente, poiché la tecnologia dei computer tende ad avanzare rapidamente e non sempre pubblicamente, questa informazione potrebbe essere non disponibile, inaccurata o obsoleta, circostanze che possono causare seri problemi al protocollo.
Così, vi propongo un’alternativa al subprotocollo di creazione del denaro, nel quale ogni proprietario di un conto (tutti, nel primo protocollo, oppure i server, nel secondo protocollo) si accordino e decidano invece sulla quantità di denaro da creare una volta ogni periodo, con il costo che viene determinato a mezzo di un’asta. 
Ogni periodo di creazione di denaro viene così suddiviso in quattro fasi:
1) Pianificazione
I possessori di un conto calcolano e negoziano con gli altri una somma ottimale di denaro da fornire per il prossimo periodo. Sia che raggiungano o meno il consenso, essi inoltrano nella rete (broadcast) la loro quota di denaro creata e ogni calcolo macroeconomico fatto a supporto delle previsioni
2) Offerta
Chiunque voglia creare denaro binario immette nella rete un’offerta nella forma <x, y>, dove x è la quantità di denaro che vuole creare e y è un problema irrisolto appartenente ad una predeterminata classe di problemi. Ogni problema in questa classe deve avere un costo nominale (ad esempio in MIPS/anno) sul quale ci sia un consenso generale.
3) Calcolo
Dopo aver visto le offerte,  coloro che le hanno lanciate possono ora risolvere i problemi e pubblicare in rete le soluzioni
4) Creazione del denaro
Ogni possessore di un conto, accetta le offerte più alte (tra coloro che le hanno effettivamente pubblicate in rete) in termini di costo nominale per unità di denaro binario creato, e le accredita sui conto degli offerenti corrispondenti.


BITCOIN
Nel 2008 uno sviluppatore che si fa chiamare Satoshi Nakamoto pubblica il manifesto del protocollo Bitcoin.
Il 3 gennaio 2009 nasce la rete Bitcoin e vengono generate le prime monete.
Se pensate alle caratteristiche dei Bitcoin (rete P2P, semi-tracciabilità, sistema decentralizzato, transazioni quasi anonime, crittografia, firme digitali, chiavi, Proof Of Work, Blockchain, moneta generata da costi computazionali) si spiega perchè i signori citati in precedenza sono stati fondamentali.

Nessun commento:

Posta un commento