Il client ufficiale, Bitcoin Core, è un software libero che deriva direttamente dal codice scritto da Satoshi Nakamoto per implementare il protocollo di comunicazione e la rete peer-to-peer che ne risulta.
Panoramica
Bitcoin si basa sul trasferimento di valuta tra conti pubblici usando crittografia a chiave pubblica. Tutte le transazioni sono pubbliche e memorizzate in un database distribuito che viene utilizzato per confermarle e impedire la possibilità di spendere due volte la stessa moneta.Proprietà
Se la chiave privata viene smarrita, la rete Bitcoin non potrà riconoscere in alcun altro modo la proprietà del denaro[31]: la relativa somma di denaro sarà inutilizzabile da chiunque e, quindi, da considerarsi persa in modo irrimediabile. Casi di perdita patrimoniale per smarrimento della chiave privata si sono già verificati nei primi anni di operatività della criptovaluta: ad esempio, nel 2013 un utente ha lamentato la perdita di 7.500 bitcoin, all'epoca del valore di 7,5 milioni di dollari, per essersi accidentalmente sbarazzato di un hard disk che conteneva la sua chiave privata[32].
Anonimato
Gli indirizzi non contengono informazioni riguardo ai loro proprietari e in genere sono anonimi.[22] Gli indirizzi in forma leggibile sono sequenze casuali di caratteri e cifre lunghe in media 33 caratteri, che cominciano sempre per 1 oppure per 3, della forma 1NAfBQUL4d2N7uu1iKxjwF8dESXTT3AKcq. Gli utenti possono avere un numero arbitrario di indirizzi Bitcoin, e infatti è possibile generarne a piacimento senza nessun limite in quanto la loro generazione costa poco tempo di calcolo (equivalente alla generazione di una coppia di chiavi pubblica/privata) e non richiede nessun contatto con altri nodi della rete. Creare una nuova coppia di chiavi per ogni transazione aiuta a mantenere l'anonimato.L'algoritmo utilizzato da Bitcoin per generare le chiavi è l'Elliptic Curve Digital Signature Algorithm (ECDSA)[33].
Transazioni
I bitcoin contengono la chiave pubblica del loro proprietario (cioè l'indirizzo). Quando un utente A trasferisce della moneta all'utente B rinuncia alla sua proprietà aggiungendo la chiave pubblica di B (il suo indirizzo) sulle monete in oggetto e firmandole con la propria chiave privata.[34] Trasmette poi queste monete in un messaggio, la "transazione", attraverso la rete peer-to-peer. Il resto dei nodi validano le firme crittografiche e l'ammontare delle cifre coinvolte prima di accettarla.[35]La catena dei blocchi e le conferme
Per impedire la possibilità di utilizzare più volte la stessa moneta, la rete implementa quella che Satoshi Nakamoto descrive come un "server di marcatura oraria peer-to-peer",[36] che assegna identificatori sequenziali a ognuna delle transazioni che vengono poi rafforzate nei confronti di tentativi di modifica usando l'idea di una catena di proof-of-work (mostrate in Bitcoin come "conferme").
Ogni volta che viene effettuata una transazione, essa parte nello stato di "non confermata"; diventerà "confermata" solo quando verificata attraverso una lista di marcatura oraria gestita collettivamente di tutte le transazioni conosciute, la blockchain (in italiano: "catena di blocchi").
In particolare, ogni nodo "generatore" raccoglie tutte le transazioni non confermate che conosce in un "blocco" candidato, un file che, tra le altre cose,[37] contiene un hash crittografico del precedente blocco valido conosciuto a quel nodo. Prova poi a riprodurre un hash di quel blocco con determinate caratteristiche, uno sforzo che richiede in media una quantità definibile di prove da dover effettuare. Quando un nodo trova tale soluzione la annuncia al resto della rete, i peer che ricevono il blocco ne controllano la validità prima di accettarlo e poi aggiungerlo alla catena.
Quando una transazione viene ammessa per la prima volta in un blocco, riceve una conferma. Ogni volta che al di sopra di quel blocco vengono creati altri blocchi figli a esso collegato, riceve un'altra conferma. Quando il blocco contenente la transazione raggiunge sei conferme, ovvero vengono creati sei blocchi collegati a esso, il client Bitcoin cambia stato alla transazione portandola da "non confermata" a "confermata". La motivazione dietro a questa procedura è che a ogni conferma della transazione, ovvero a ogni nuovo blocco che viene creato al di sopra del blocco con la transazione stessa, risulta via via più difficile e costoso annullare la transazione. Un ipotetico attaccante, per annullare una transazione con un certo numero di conferme, dovrebbe generare una catena parallela senza la transazione che desidera annullare e composta da un numero di blocchi pari o superiore alle conferme ricevute dalla transazione.
Ne consegue che la catena dei blocchi contiene lo storico di tutti i movimenti di tutti i bitcoin generati a partire dall'indirizzo del loro creatore fino all'attuale proprietario.[38] Quindi, se un utente prova a riutilizzare una moneta che ha già speso, la rete rifiuterà la transazione in quanto la somma risulterà già essere spesa.
Nakamoto ha progettato il sistema in modo che, nonostante il database aumenti di dimensioni nel tempo, sia possibile averne una versione ridotta che riguardi nel dettaglio solo alcune transazioni, ma che rimanga completamente verificabile in modo indipendente. Ad esempio, per un utente privato potrebbe essere interessante avere la catena dei blocchi con le sole transazioni che lo riguardano. Oppure, potrebbe essere desiderabile ripulire dal database tutte le transazioni le cui somme in uscita sono già state utilizzate in altre transazioni, diminuendone di molto le dimensioni.
Generazione dei bitcoin
La rete Bitcoin crea e distribuisce in maniera completamente casuale un certo ammontare di monete all'incirca sei volte l'ora ai client che prendono parte alla rete in modo attivo, ovvero che contribuiscono tramite la propria potenza di calcolo alla gestione e alla sicurezza della rete stessa. L'attività di generazione di bitcoin viene spesso definita come "mining", un termine analogo al gold mining (estrazione di oro).[21] La probabilità che un certo utente riceva la ricompensa in monete dipende dalla potenza computazionale che aggiunge alla rete relativamente al potere computazionale totale della rete.[39]Inizialmente il client stesso si occupava di svolgere i calcoli necessari all'estrazione dei bitcoin, sfruttando la sola CPU. Con l'aumentare della potenza di calcolo totale della rete e a seguito della natura competitiva della generazione di bitcoin, questa funzionalità è diventata antieconomica ed è stata rimossa. Oggigiorno esistono dei programmi specializzati[40][41] che inizialmente sfruttavano la potenza delle GPU e delle FPGA, e che ora utilizzano hardware dedicato basato su processori ASIC progettati per questo utilizzo. Dal momento che la quantità di operazioni mediamente necessarie a chiudere con successo un singolo blocco è diventata talmente elevata da richiedere grandi quantità di risorse in termini di energia elettrica e potenza computazionale, la maggior parte dei minatori si unisce in "gilde" chiamate mining pool dove tutti i partecipanti mettono in comune le proprie risorse, spartendosi poi i blocchi generati in funzione del contributo di ognuno.[42]
Il numero di bitcoin creati per blocco era inizialmente di 50 BTC (aggiunti agli eventuali costi delle singole transazioni). Tale quantità è stata programmata per diminuire nel tempo secondo una progressione geometrica con un dimezzamento del premio ogni 4 anni circa. Così dimensionata, questa serie comporta che in totale verranno creati esattamente 21 milioni di bitcoin nel giro di 130 anni circa, con l'80% degli stessi creati nei primi 10 anni.[22] In seguito la ricompensa è passata a 25 BTC per blocco il 28 novembre 2012 [43] e a 12,5 BTC per blocco il 9 luglio 2016 [44] , e così sarà per i successivi 4 anni. Con la progressiva riduzione della ricompensa di generazione nel tempo, la fonte del guadagno per i minatori passerà dalla generazione della moneta alle commissioni di transazione incluse nei blocchi, fino al giorno in cui la ricompensa cesserà di essere elargita: per allora l'elaborazione delle transazioni verrà ricompensata unicamente dalle commissioni di transazione stesse.
L'importo della commissione può essere impostato liberamente da chi effettua una transazione, sebbene da maggio 2013, con l'aggiornamento alla versione 0.8.2 del client ufficiale, commissioni al di sotto della soglia di 0,0001 BTC vengono considerate non standard e, di conseguenza, le transazioni associate rischiano di non essere mai confermate[45]. Tanto più è alta la commissione tanto più è probabile che venga inclusa nel primo blocco estratto, accelerando quindi la prima conferma. Gli utilizzatori hanno dunque un incentivo a includere tali commissioni, perché ciò significa che la transazione sarà probabilmente elaborata più rapidamente: ogni minatore ha la libertà di scegliere quali transazioni includere nel blocco che sta elaborando, che ha una dimensione massima prefissata dal protocollo, e che quindi sarà invogliato a includere per prime le transazioni con commissioni maggiori.
Tutti i nodi della rete competono per essere i primi a trovare una soluzione di un problema crittografico che riguarda il blocco candidato, un problema che non può essere risolto in altri modi che tramite bruteforce e che quindi richiede sostanzialmente un enorme numero di tentativi. Quando un nodo trova una soluzione valida l'annuncia al resto della rete attribuendosi contemporaneamente i bitcoin in premio previsti dal protocollo, i nodi che ricevono il nuovo blocco lo verificano e lo aggiungono alla loro catena, ricominciando il lavoro di mining al di sopra del blocco appena ricevuto.
Dal punto di vista tecnico il processo di mining non è altro che un'operazione di hashing inverso: determinare un numero (nonce) tale per cui l'hash SHA-256 di un insieme di dati rappresentante il blocco sia inferiore a una soglia data. Questa soglia, chiamata difficoltà, è ciò che determina la natura concorrenziale del mining di bitcoin: più potenza di calcolo viene aggiunta alla rete bitcoin e più questo parametro aumenta, aumentando di conseguenza il numero di calcoli mediamente necessari a creare un nuovo blocco e aumentando quindi il costo di creazione dello stesso, spingendo i nodi a migliorare l'efficienza dei loro sistemi di mining per mantenere un bilancio economico positivo. L'aggiornamento di questo parametro avviene ogni 14 giorni circa, dimensionandosi in modo che un nuovo blocco venga generato in media ogni 10 minuti.
Costi di transazione
Visto che i nodi non hanno l'obbligo di includere le transazioni nei blocchi che generano, chi invia bitcoin potrà volontariamente pagare una tassa di trasferimento. Facendo questo la velocità di trasferimento aumenterà e offrirà un incentivo agli utenti per tenere attivi i nodi, specialmente quando la difficoltà per generare bitcoin aumenterà o se la quantità di premio per blocco decrescerà nel tempo. I nodi collezionano le tasse di transazione associate a tutte le transazioni presenti nel loro blocco dedicato.[22]Bitcoin sui media
Bitcoin è stato menzionato in siti di ampia visibilità come Slashdot[46] o la rubrica tecnica del Time.[47] Anche l'Agenzia ANSA ha dato risalto all'ascesa dell'utilizzo, della diffusione e del valore del bitcoin[48]L'episodio 13 della terza stagione di The Good Wife e l'episodio 9 dell'undicesima stagione di The Big Bang Theory sono dedicati ai bitcoin.
Ampio risalto ha avuto sui media internazionali[49] l'annuncio che il colosso dei blog Automattic ha adottato, a partire dal 15 novembre 2012, la criptovaluta come metodo di pagamento per sfuggire al blocco di più di 60 paesi adottato da PayPal e dalle carte di credito.
Il 10 ottobre 2014 il distributore cinematografico Gravitas Venturas ha diffuso The Rise and Rise of Bitcoin[50] un documentario sulla tecnologia Bitcoin, che può essere considerato il primo film su questa tecnologia.
Implementazioni alternative
In virtù delle caratteristiche open del protocollo e del software originario scritto dal creatore del sistema Bitcoin, nel tempo sono stati creati programmi e librerie che implementano il protocollo Bitcoin in modo indipendente. Queste implementazioni spesso sono pensate per semplificare l'uso dei bitcoin, ad esempio consentendo all'utente di ricevere transazioni senza dover scaricare l'intera catena dei blocchi, o scaricandone una versione ridotta. Altri software sono in grado di collegarsi al client originale per estenderne le funzioni o per agevolarne l'uso. Altre ancora sono pensate per essere utilizzate su dispositivi sui quali il client originale non può essere eseguito.Di seguito un elenco dei software che implementano in varie forme il protocollo Bitcoin:
- Armory: questo programma si collega al client originale e ne estende le funzionalità, garantendo un maggior livello di controllo delle transazioni.
- MultiBit: è un client che scarica una versione ridotta della catena dei blocchi, che riduce di molto i tempi di sincronizzazione e lo spazio di archiviazione del client originale con un minimo compromesso al livello di sicurezza.
- Bitcoin Wallet: simile come principio a MultiBit, ma scritto per smartphone con sistema operativo Android e BlackBerry.
- Electrum: si tratta di una coppia di programmi basata su un approccio client/server. Gli utenti utilizzano un programma client che, collegandosi a un server in esecuzione su una macchina diversa, gli permette di visualizzare tutte le sue transazioni e crearne di nuove. A differenza degli altri approcci, questo sistema richiede che chi esegue il client ponga un certo livello di fiducia nel server a cui si collega.
- BitCoinJ: è un'implementazione in linguaggio Java sviluppato da Mike Hearn, un ex ingegnere di Google.[51]
- bitcoin-js-remote, un'interfaccia utente via web sviluppata in JavaScript per il demone Bitcoin ufficiale.[52]
- libbitcoin: comunità, libreria e strumenti open source per uno sviluppo libero di Bitcoin.
- btcd: un'implementazione di nodo completo scritta in Go.
- coinpunk: wallet basato su interfaccia web installabile su server (per sviluppatori e utenti esperti).
ATM (Bancomat) bitcoin
In Italia sono funzionanti alcuni punti Automated Teller Machine (ATM) nei quali è possibile prelevare contanti o versare contanti nel proprio conto bitcoin, i quali verranno convertiti secondo il tasso di cambio vigente in quel momento.[53] Prima di utilizzare un ATM bitcoin è necessario installare il portafoglio elettronico nel proprio smartphone e generare il proprio indirizzo Bitcoin (il numero del proprio conto corrente virtuale, analogo al codice IBAN) e il relativo QR Code da far riconoscere alla macchina per il successivo accreditamento o prelievo di valuta bitcoin. Il primo ATM (Bancomat) bitcoin al mondo, marchiato Robocoin, fu installato a Vancouver (Canada) e cominciò a funzionare il 1º novembre 2013. Il primo installato in Italia (terzo in Europa dopo quelli di Helsinki e Zurigo), a marca Lamassu, ha cominciato a operare a Udine il 20 febbraio 2014.Gli ATM (Bancomat) del circuito di Bitcoin sono separati e non integrati con Visa, Mastercard, o altri circuiti di pagamento utilizzati dagli istituti bancari.
Nessun commento:
Posta un commento