L’obiettivo di questa guida è spiegare quali sono i complicati meccanismi che permettono al Bitcoin di funzionare ed essere la prima valuta virtuale scambiata al mondo. Spiegheremo quindi con chiarezza cosa vuol dire avere, inviare o minare i Bitcoin.
Che cosa è il Bitcoin
Il Bitcoin non è altro che un file che mantiene dei dati riguardanti dei conti digitali, come se fosse un ledger, ovvero un libro contabile. Una copia di questo file, ovvero di questo ledger, viene mantenuta in ogni computer della rete Bitcoin. I numeri presenti nel ledger non significano niente nel mondo reale, ma costituiscono un valore virtuale sul quale gli utilizzatori si accordano di poter scambiare dei valori reali. I numeri presenti sul ledger hanno un valore solamente perché noi crediamo che lo abbiano, un po’ come per tutte le valute FIAT (USD, EUR, ecc…).
Per inviare dei soldi da A a B si deve immettere in rete l’informazione che i soldi sull’account A diminuiranno dell’ammontare X, mentre i soldi sull’account B aumenteranno di X. I nodi (ovvero i computer) sulla rete Bitcoin applicheranno questa transazione alla loro copia del ledger e passeranno la transazione agli altri nodi che a loro volta la copieranno sui loro ledger. La rete di Bitcoin è dunque un sistema che permette ad un gruppo di computer di mantenere un ledger.
I vantaggi del Ledger
Questo meccanismo può sembrare simile a quello che utilizzano le banche per mantenere i saldi dei conti correnti, ma il fatto che il ledger qui è mantenuto da un gruppo, anziché da un singolo ente, introduce un bel po’ di differenze:
- Nel caso delle banche si conoscono solamente le proprie transazioni, mentre nel caso dei Bitcoin si conoscono le transazioni di tutti.
- Nel caso delle banche sappiamo con chi abbiamo a che fare e possiamo rivolgerci alla banca per problemi sul conto mentre con i Bitcoin non si conoscono gli interlocutori e quindi non possiamo fidarci di nessuno.
La risoluzione del problema della fiducia sulle transazioni è una delle innovazioni principali del Bitcoin, che viene risolta grazie a speciali funzioni matematiche.
Ma come fanno un gruppo di utenti che non si conoscono (e fidano) tra loro a gestire a vicenda le proprie transazioni?
Lo vediamo nella prossima parte della guida, quella dedicata alla firma digitale.
La firma digitale, il meccanismo di sicurezza dei Bitcoin
Il sistema di trasferimento di valore nel Bitcoin è molto semplice. Se A vuole mandare 5 Bitcoin a B inserisce tale messaggio nella rete Bitcoin ed ogni nodo che riceve la transazione lo copia sul proprio ledger e passa il messaggio agli altri nodi. Ma come fa un nodo ad essere sicuro che il messaggio è autentico? Come fa un nodo ad essere sicuro che è stato proprio il vero proprietario dei Bitcoin (A) a mandare il messaggio?
Il Bitcoin utilizza una specie di password per sbloccare e inviare le monete, questa password viene chiamata digital signature (firma digitale).
Come una firma vera e propria, la digital signature prova l’autenticità del messaggio. La digital signature applica alla transazione un algoritmo matematico che previene la copia o la contraffazione della transazione digitale stessa.
Ogni transazione richiede una diversa firma digitale, questo perché dal momento che si ha a che fare con interlocutori sconosciuti, non si deve permettere il riconoscimento di una password che possa essere utilizzata da altri per “firmare” la transazione.
Come è fatta la firma digitale: chiave pubblica e privata
La firma digitale funziona tramite l’utilizzo di due chiavi, diverse ma connesse tra di loro: una chiave privata, che serve per creare la firma, e una chiave pubblica, che serve per confronto. In pratica la chiave privata è come una password, mentre la chiave pubblica è come un intermediario che prova che la password utilizzata sia effettivamente quella ma senza che sia necessario rivelarla.
Le chiavi pubbliche sono utilizzate nei Bitcoin come l’indirizzo ricezione dei BTC (abbreviazione della moneta Bitcoin). Quando A invia dei soldi all’indirizzo di B, li sta inviando alla sua chiave pubblica.
Come avviene la creazione della firma digitale
Quando spendi dei soldi devi provare che sei il vero intestatario di un certo indirizzo. Per far ciò è necessario creare una firma digitale, questo avviene utilizzando il messaggio della transazione e la tua chiave privata. Gli altri nodi possono utilizzare la firma digitale da te creata e, tramite un’altra funzione, verificare che corrisponda con la tua chiave pubblica. Grazie alle proprietà matematiche di queste funzioni è quindi possibile verificare che il mittente stia effettivamente utilizzando una certa chiave privata senza mostrarla.
Altra cosa importante, come avevamo detto in precedenza, è che la firma sarà diversa per ogni transazione, proprio perché per crearla si utilizza il messaggio della transazione che è diverso ogni volta. Questo evita che tale firma digitale possa essere riutilizzata da altri per transazioni diverse. La dipendenza dal messaggio fa anche sì che nessuno possa di fatto modificare il messaggio passandolo da un nodo all’altro senza che si modifichi la firma digitale (modificare la transazione invaliderebbe la firma).
La matematica dietro a queste funzioni è molto complicata, per chi volesse approfondire tali argomenti si consiglia la ricerca di:
- elliptic curve digital signature algorithm, e
- mathematical trap door.
Come avviene una transazione in Bitcoin
Fin qui abbiamo approfondito come la firma digitale permetta di autorizzare le transazioni, ma vediamo di approfondire come i nodi tengono traccia del saldo dei conti legati a ciascun individuo.
E qui viene il bello, in realtà non si tiene traccia da nessuna parte del saldo! Ma allora come si riesce a capire se un individuo A ha abbastanza BTC quando richiede di fare un invio ad un altro individuo B?
Invece di tener traccia del saldo, la verifica avviene collegando la transazione attuale alle transazioni precedenti. Per mandare 5 BTC a B, A deve riferire altre transazioni dove ha ricevuto 5 o più BTC. Le transazioni che vengono riferite in questo meccanismo vengono denominate input. Gli altri nodi che verificano la transazione (attuale) controlleranno anche gli inputs per capire se A ha ricevuto 5 o più BTC.
Qui sotto una figura che specifica il meccanismo di riferimento a transazioni precedenti come input.
Facciamo un esempio di una vera transazione. La transazione a cui ci riferiamo può essere visualizzata al seguente indirizzo: https://blockexplorer.com/tx/a117c441aa5bd3fcb442e3c47a180c584420bcd9f93c68dab9feddd1d26b767e
Ne proponiamo una figura esemplificativa qua sotto:
Gli input di questa transazione sono 6, per un totale di 139.616 BTC. Negli output invece ci sono 2 transazioni. La prima è una transazione che torna indietro al mittente come “resto”, questo perché l’output che si vuole inviare è inferiore alla somma degli inputs e pertanto dobbiamo ricevere la differenza indietro.
Grazie a questi input che vengono riferiti per ogni transazione, si forma una specie di catena grazie alla quale viene trasmesso il possesso dei BTC, dove la validità di ogni transazione è dipendente dalla validità delle transazioni precedenti.
Come possiamo fidarci delle transazioni precedenti?
Non posso fidarmi a priori e devo controllare anche i loro input. Per questo la prima volta che si installa wallet per Bitcoin (software portafoglio dove vengono mantenuti i propri BTC), questo software verifica la validità di ogni transazione effettuata finora risalendo fino alla prima transazione. Bisogna sempre tener presente che poiché si ha a che fare con completi sconosciuti è bene fare tutte le verifiche del caso. Questo processo può portare via molto tempo (solo nel caso che si utilizzi un software wallet desktop) ma la verifica fino alla prima transazione deve essere fatta una volta sola.
Una transazione, una volta utilizzata, viene considerata come “già spesa” e non può essere utilizzata di nuovo, altrimenti qualcuno potrebbe riferirla nuovamente dando origine al problema del double spending (doppia spesa).
Quando i nodi verificano una transazione infatti devono anche verificare che gli input non siano già stati spesi. Ovvero i nodi devono verificare tutte le altre transazioni per essere sicuri che gli input non siano già stati usati. Questo può sembrare molto dispendioso in termini di tempo, ma in realtà è reso più veloce da un indice delle transazioni non ancora spese.
Pertanto invece di tener traccia dei saldi dei conti, nei Bitcoin si tiene traccia di una lista gigante di transazioni: avere dei Bitcoin significa semplicemente che esiste in questa lista una transazione che ha come ricevente il tuo indirizzo e che non è ancora stata spesa (ovvero non è utilizzata come input in nessuna altra transazione).
Per avere il saldo del proprio conto (indirizzo) basta dunque scorrere la lista delle transazioni e sommare tutte quelle che hanno come ricevente il proprio indirizzo e che non sono mai state utilizzate come input.
Altro fatto rilevante riguardo alle transazioni: si possono inviare transazioni complesse che non riguardano solamente un indirizzo ricevente, ad esempio si possono utilizzare meccanismi come quello di escrow. Negli output, come abbiamo visto in precedenza, non sono contenuti 2 semplici indirizzi ma una specie di puzzle matematici che devono essere risolti. Inviare soldi con i bitcoin è molto simile a metterli in una cassaforte ed attaccarci un puzzle matematico che funge da chiave per l’apertura. Il puzzle è fatto in modo che solamente il possessore di una chiave pubblica possa risolverlo, ma possono esserci anche condizioni più complesse: nel caso dell’escrow per effettuare la transazione potrebbero essere necessarie, ad esempio, 2 firme su 3.
Un altro esempio è la prima transazione fatta tramite Bitcoin (il 3 gennaio 2009) che di fatto era un puzzle risolvibile da chiunque.
I software che utilizziamo per mantenere i nostri Bitcoin (wallet) ci mascherano ovviamente tutte le complessità legate alle transazioni, ma è importante ricordarsi di mantenere segreta la chiave privata e di averla costudita in caso ci fosse la necessità di recuperare il proprio wallet per evitare di perdere i propri BTC.
La perdita dei Bitcoin è uno dei problemi principali di questa valuta. In una transazione ad esempio sono stati persi 2600 BTC proprio perché l’indirizzo ricevente era scritto male. Dal momento che non ci sono carte di credito o banche dietro ai Bitcoin ogni errore personale può far perdere permanentemente i propri BTC.
I BTC che perdiamo non solo spariscono dal nostro account ma più in generale dall’intera economia dei Bitcoin. Se perdiamo la nostra chiave privata, come detto, tutti i BTC corrispondenti al suo indirizzo pubblico saranno persi per sempre!
La rottura degli Hard Disk è all’ordine del giorno e che i backup vengono fatti poco e male, si prevede che l’economia dei Bitcoin sarà deflazionaria in futuro (quando non verranno più creati nuovi BTC).
Perché si può operare con i Bitcoin in completo anonimato
Se si accede a Internet utilizzando una rete TOR che nasconde il proprio indirizzo IP, si possono utilizzare i BTC anonimamente senza che nulla tranne il proprio indirizzo pubblico venga mai rivelato. L’indirizzo pubblico terrà comunque traccia di tutte le transazioni fatte dato che sono conservate in ogni nodo della rete Bitcoin.
Teoricamente si possono creare delle chiavi pubbliche per ogni transazione che si vuole ricevere, anche se è possibile collegare inavvertitamente suddette chiavi. Nella figura qui sotto si possono vedere 6 indirizzi che inviano dei BTC in una determinata transazione e, indipendentemente dal fatto che siano indirizzi diversi, tutti questi rimangono collegati in maniera indiretta:
Il mittente di fatto ha provato che possiede tutti quegli indirizzi grazie alla firma digitale che serve per sbloccarli (ultima colonna sulla destra).
Come si genera un indirizzo Bitcoin
Generare un indirizzo Bitcoin, ovvero una chiave pubblica, è completamente anonimo e può essere effettuato anche senza connessione alla rete.
I software wallet ormai permettono la generazione di un indirizzo semplicemente cliccando un bottone che crea la coppia chiavi: pubblica e privata.
Perché non serve l’accesso alla rete?
Dato che ci sono a disposizione un numero elevatissimo di indirizzi, non c’è neanche la necessità di controllare che qualcun altro abbia già quello stesso indirizzo.
differenza della registrazione di un indirizzo email, dove la maggioranza delle volte ci troviamo a provare degli indirizzi che sono già presi, il numero di possibili indirizzi di Bitcoin è talmente elevato (1,46 x 10^48 ovvero 2^160) da evitare questo problema e da proteggere la rete Bitcoin da altre minacce.
Quantifichiamo i possibili indirizzi con un paragone
Alcune stime su quanti granelli di sabbia siano presenti sulla terra parlano di un numero pari a 7.5 x 10^18. Anche se ogni granello di sabbia rappresentasse un mondo con la stessa quantità di granelli di sabbia, il numero totale sarebbe sull’ordine di 10^36, che è sempre molto minore al numero di possibili indirizzi Bitcoin che è dell’ordine di 10^48.
Da che cosa è dato il livello di sicurezza sulle transazioni dei Bitcoin?
Fino ad ora abbiamo parlato di firma digitale per confermare l’effettiva proprietà di un determinato indirizzo e di riferimenti a transazioni precedenti per confermare che un indirizzo abbia soldi sufficienti da spendere. Purtroppo c’è ancora un problema di sicurezza che può far saltare il processo di controllo dei BTC non spesi, ovvero il problema dell’ordine delle transazioni.
Teniamo in mente il fatto che le transazioni vengono passate da nodo a nodo attraverso tutta la rete: non c’è garanzia che l’ordine in cui ricevo 2 transazioni è lo stesso ordine con cui tali transazioni sono state create. Inoltre non posso fidarmi del timestamp (data sul computer) sulla transazione perché è facilmente falsificabile da chi crea la transazione.
Non potendo dire se una transazione viene prima di un’altra si dà spazio a possibili frodi.
Facciamo un esempio:
Un utente A protrebbe creare una transazione per dare dei BTC a B, aspettare che B invii il prodotto e poi creare un’altra transazione che riferisca lo stesso input della prima ad A.
A causa delle differenze di propagazione delle transazioni nella rete, alcuni nodi potrebbero ricevere prima la transazione 1 ed altri la transazione 2. Tutti i nodi che riceverebbero per prima la transazione 2 considererebbero non valida la transazione 1, poiché sta cercando di utilizzare come input una transazione già spesa. Quindi B avrebbe spedito il prodotto ma non riceverebbe quanto a lui dovuto!
Oltretutto sulla rete non ci sarebbe accordo su chi effettivamente ha i soldi in questo istante poiché i nodi che ricevono per prima la transazione 1 collegano i soldi a B (giustamente) mentre coloro che ricevono per prima la transazione 2 imputano i soldi ad A(che avrebbe messo a segno una frode detta Double Spending).
Per risolvere il suddetto problema, si deve mettere in piedi un meccanismo che permetta ai nodi di concordare su un ordine univoco delle transazioni. Questo è un problema non indifferente per una rete decentralizzata.
La soluzione a tale problema si chiama Block Chain e vedremo come funziona nel dettaglio nella prossima parte.
La BlockChain
Il sistema che è stato inventato per ordinare le transazioni Bitcoin raggruppa le transazioni in “blocchi” e li collega insieme nella Blockchain.
La Blockchain è diversa dalla catena delle transazioni che abbiamo mostrato in precedenza. La Blockchain serve per ordinare le transazioni mentre la catena delle transazioni tiene traccia del passaggio di proprietà dei BTC.
Nella Blockchain ogni blocco fa riferimento ad un altro, e questo permette di individuarli in funzione del tempo: scorrendo la blockchain al contrario si può tornare indietro fino al primo gruppo di transazioni che è stato eseguito.
Le transazioni che fanno parte dello stesso blocco si considerano come effettuate contemporaneamente, mentre le transazioni che non sono ancora in un blocco vengono considerate non confermate. Ogni nodo può raggruppare le transazioni in un blocco ed inviarle alla rete suggerendo il blocco appena creato come prossimo blocco nella Blockchain. Poiché più nodi possono creare blocchi allo stesso tempo ci possono essere molti “prossimi blocchi” tra cui scegliere.
Come si fa a scegliere qual è il prossimo blocco?
Non possiamo far affidamento su quello che arriva prima perché, come per le transazioni, i blocchi possono arrivare in ordine diverso su punti diversi della rete.
Per ordinare i blocchi ci si basa anche qui sulla matematica. Ogni blocco contiene un problema matematico che deve essere risolto. I computer passano in rassegna l’intero testo di un blocco più un numero casuale tramite un HASH finché l’output non è sotto un certo valore.
La funzione HASH è un meccanismo per creare un numero (chiamato digest) a partire da un testo qualsiasi. Nel nostro caso il numero generato è un numero a 32 byte, generato tramite la funzione SHA256, che viene spesso riferito come un numero esadecimale (sono i numeri che iniziano con 0x).
Ecco alcuni esempi da cui possiamo vedere come il numero cambi a partire da un minimo cambiamento della frase di partenza
Possiamo vedere che l’output è completamente impredicibile, per cui l’unico modo è quello di tirare ad indovinare.
Come per una cassaforte, indovinare il numero random di un blocco non è facile e in media ci vogliono molti tentativi. Infatti nella rete Bitcoin ad un computer potrebbero volerci diversi anni per risolvere un singolo blocco, ma dato l’elevato numero di computer presenti nella rete, il tempo medio di risoluzione di un blocco è di 10 minuti.
Il primo computer che risolve il blocco lo inoltra al resto della rete e tale blocco ottiene il posto successivo nella Blockchain. La casualità nel problema di risoluzione del blocco è fatta in maniera tale che sia molto improbabile che 2 computers risolvano lo stesso blocco simultaneamente.
Ad ogni modo può capitare che in posti diversi si risolvano allo stesso tempo blocchi diversi, il che porta alla creazione di diverse branches della blockchain.
In questo caso ogni nodo si comporta normalmente e continua ad inserire i blocchi successivi di seguito al blocco che hanno risolto. Tutto ritorna ad una blockchain unica quando viene risolto il blocco successivo, perché come regola generale tutti i nodi adottano la blockchain più lunga tra quelle disponibili. E’ già difficile che 2 blocchi vengano risolti allo stesso tempo, pertanto è rarissimo che 2 blocchi consecutivi lo siano.
Vediamo un esempio qua sotto:
Per questo meccanismo la blockchain si stabilizza e, dopo qualche blocco dalla fine della catena, tutti i nodi sono d’accordo sull’ordine dei blocchi.
Possibili attacchi alla fine della catena (Blockchain)
Il fatto che per dei minuti possa esserci ambiguità alla fine della catena ha delle implicazioni sulla sicurezza delle transazioni. Ad esempio, se una delle tue transazioni si trova a far parte di una delle branches più corte, perderà il suo posto a favore dei blocchi della chain più lunga. Pertanto la transazione tornerà nel gruppo delle transazioni non confermate e troverà il proprio posto in un blocco successivo. Sfortunatamente il fatto che una transazione possa perdere il proprio posto offre il fianco al problema del double spending.
Come potrebbe avvenire un attacco di double spending nella Blockchain
A manda i soldi a B e B aspetta la conferma della transazione sulla blockchain per spedire il proprio prodotto ad A.
A potrebbe però creare una blockchain alternativa più lunga, rimpiazzando la transazione verso B con una transazione verso qualcun altro. A questo punto la transazione verso B finirebbe nel gruppo delle transazioni non confermate, ma visto che A ha rimpiazzato tale transazione con una transazione verso altri, a questo punto la transazione verso B sarebbe giudicata non valida perché farebbe riferimento ad un input già speso!
Come ci si difende da questo attacco?
In realtà è difficile che Alice possa creare una catena ad HOC, il tutto sta nella creazione dell’HASH.
Come già spiegato, per risolvere un blocco si deve far si che l’HASH di un blocco sia sotto ad un certo valore. Questo si fa provando dei numeri casuali diversi alla fine di un blocco come possiamo vedere qui sotto:
Una volta risolto, il valore dell’HASH diviene un’impronta digitale che identifica quel blocco in maniera univoca e se un qualsiasi carattere di quel blocco cambia, anche l’HASH cambia. Tale impronta digitale viene usata come identificatore del blocco precedente nel blocco successivo. Una volta ottenuto questo, è impossibile cambiare un blocco nel mezzo della catena poiché il blocco successivo non punterà più al blocco con l’HASH giusto.
Inoltre un blocco non può essere risolto prima del blocco precedente: il dato relativo al blocco precedente è presente nel blocco stesso e pertanto anch’esso viene dato in pasto alla funzione HASH che risolve il blocco.
Questo è il motivo perché A non può crearsi una catena ad hoc: A può solamente iniziare a risolvere blocchi una volta che il blocco da cui vuol partire è già stato risolto ed il proprio valore è conosciuto.
L’unico modo che ha A di creare una catena alternativa è risolvendo effettivamente blocchi più velocemente di tutti gli altri computer nella rete. E’ come se ogni computer fosse un biglietto della lotteria: in teoria A potrebbe anche avere più computer, e quindi più biglietti, ma anche in questo caso le probabilità di vincita sono a sfavore di A.
L’attacco del 50%
Solo se controllasse il 50% del potere computativo della rete avrebbe il 50% di possibilità di risolvere un blocco prima di qualcun altro. Ed anche in questo caso le probabilità di risolvere molti blocchi di fila prima degli altri sarebbero comunque inferiori al 50%.
Le transazioni nelle blochchain sono protette da questa specie di “gara” matematica. Dato questo meccanismo, possiamo dedurre che le transazioni nei blocchi più vecchi della catena siano più sicure. Una persona che vuol frodare tramite il double spending dovrebbe essere più veloce degli altri nel risolvere i blocchi e la velocità dovrebbe incrementare in modo proporzionale alla lunghezza della catena. Pertanto si ritiene che questo sistema sia vulnerabile solamente vicino alla fine della catena e questo è il motivo per cui si consiglia di attendere la conferma di diversi blocchi prima di considerare i BTC ricevuti come definitivi.
Proof of work e la generazione di nuovi BTC
Niente di ciò che abbiamo descritto finora richiede di fidarsi di qualcuno.
Quando riceviamo delle informazioni sulla Blockchain possiamo infatti controllare noi stessi che tali informazioni siano corrette. E dal momento che i problemi matematici da risolvere sono molto difficili, sappiamo che non c’è modo che una singola persona possa attaccare la rete da sola.
La risoluzione dei problemi matematici sono la prova che l’intera potenza computazionale della rete è stata utilizzata, questo viene definito proof of work.
Finora abbiamo discusso come vengono trasferiti i BTC e come si prova la loro appartenenza ad una persona (indirizzo), vediamo adesso da dove vengono ovvero come si generano i Bitcoin.
Per trasferire dei BTC che hai devi mostrare come input una transazione dove sei stato il ricevente, ma come sono stati introdotti in primis dei BTC in questa catena di trasmissione?
Il block reward
Per remunerare il nodo che risolve per primo un blocco si generano dei BTC, ecco perché il meccanismo di risoluzione di un blocco si chiama mining (in italiano è tradotto letteralmente col verbo minare).
Questo è buon modo per introdurre nuova moneta nel sistema perché è fatto in modo lento e graduale ma soprattutto ben distribuito. Ogni 4 anni il premio (block reward) viene dimezzato finché non verranno più creati nuovi Bitcoin.
Il numero massimo di BTC che saranno disponibili, quando ciò avverrà, sarà di 21 milioni. Poiché il numero minimo di BTC trasferibili è di 1/100 milioni (ovvero 1 satoshi) il fatto che non ne verranno creati di nuovi non impatterà sull’usabilità del sistema.
Oltre al block reward, i nodi possono includere opzionalmente anche delle transaction fees per ogni blocco da processare. Al momento le transazioni sono bassa perché il block reward è ancora abbastanza alto da coprire i costi dei miners, ma nel futuro i blocchi avranno diverse transaction fees e probabilmente i nodi processeranno per prima quelle più alte, il che potrebbe portare le transazioni con fees più basse ad essere ignorate. Inviare soldi tramite Bitcoin non sarà gratuito ma probabilmente sarà ancora meno costoso che farlo tramite gli attuali circuiti di carte di credito.
Abbiamo già detto che un singolo computer potrebbe impiegare anni a risolvere un blocco, per cui la possibilità che riesca a risolverlo in 10 minuti (che è il tempo medio di risoluzione del prossimo blocco da parte della rete) sono molto basse.
Che cosa sono i mining pools
Per avere un profitto costante dall’attività di mining, molte persone si aggregano a gruppi detti mining pools dove ognuno contribuisce con la propria potenza computazionale ed i profitti derivanti dal block reward vengono distribuiti secondo il contributo apportato. Anche questo ricorda il sistema delle lotterie, dove le persone si riuniscono in gruppi per giocare insieme ed avere più probabilità di vincere.
Alcuni mining pools però sono molto grandi e possono valere anche il 20% della potenza computazionale. Il fatto che raggiungano una percentuale così elevata può porre dei problemi di sicurezza.
Ricordiamoci sempre che la possibilità di riuscire in un attacco è infinitesima da parte di una persona singola, ma aumenta in proporzione al potere computazionale e questo pone un problema con i mining pools. Infatti è già successo che un mining pool risolvesse 6 blocchi di fila, è stato il caso di BTC Guild che poi ha volontariamente limitato i propri membri per evitare problemi di sicurezza dell’intera rete.
La sicurezza e l’importanza delle conferme
Abbiamo visto che i mining pools reintroducono parzialmente il problema della sicurezza in fondo alla catena. Ricordiamoci però che, anche se ci sono i mining pools, più il blocco è lontano dalla coda e più è probabile che la conferma della transazione sia sicura. Se è raccomandabile aspettare una conferma prima di considerare eseguita una transazione, per transazioni più corpose è raccomandabile attendere le conferme di più blocchi, in modo che il blocco della propria transazione si sposti di più posizioni a partire dalla fine della catena. Se è stato possibile risolvere 6 transazioni di fila, si potrebbe voler attendere ancora qualche altra conferma prima di essere sicuri.
Se la risoluzione di un blocco richiede circa 10 minuti, attendere la risoluzione di 6 blocchi richiede circa un’ora il ché, paragonato alla velocità di esecuzione dei circuiti delle carte di credito è molto maggiore ovviamente. Se però si considera che un compratore può richiedere l’annullamento di una transazione fino ad un mese dopo la sua esecuzione, dal punto di vista del venditore la conferma della transazione avviene molto più velocemente. Infatti una volta confermata la transazione non può più essere annullata.
Il cambio della network difficulty
La scelta di 10 minuti per blocco può sembrare arbitraria, ma diminuire tale tempistica potrebbe portare a problemi nella stabilità della rete, mentre allungarla potrebbe allungare il tempo di conferma.
Man mano che nuovi computer si uniscono alla rete Bitcoin e si creano degli hardware ad hoc per fare mining, il tempo di risoluzione dei blocchi va via via diminuendo. Per compensare questa diminuzione ogni 2 settimane viene ricalibrata la difficoltà della risoluzione del problema matematico legato all’HASH, in maniera tale da mantenere il tempo di risoluzione invariato sui 10 minuti.
Ci sono altre valute virtuali che hanno un tempo di risoluzione diverso. Ad esempio i Litecoin hanno un tempo di risoluzione di 2 minuti e mezzo per blocco.
Per concludere…
Riassumendo possiamo definire il Bitcoin come una valuta digitale protetta matematicamente che viene mantenuta da una rete P2P distribuita e che si basa sui seguenti cardini:
- Firma digitale per autorizzare le transazioni
- Catena delle transazioni per effettuare il passaggio di proprietà della valuta
- Blockchain per custodire l’ordine delle transazioni.
- Sicurezza dagli attacchi ottenuta grazie all’alta improbabilità di una persona (o anche di un gruppo) di risolvere più blocchi consecutivi prima del resto dei nodi della rete
Quali sono i lati positivi del Bitcoin?
Il Bitcoin si presenta come moneta indipendente in grado di portare degli evidenti benefici:
- Indipendenza dai governi che non possono influenzare la valuta, come avviene ad esempio quando si decide di immettere più valute FIAT sul mercato (Quantitative Easing)
- Garanzia dell’anonimità: le transazioni sono pubbliche ma l’indirizzo sul cui avvengono non è legato a persone fisiche
- I costi delle transazioni sono molto inferiori rispetto ai circuiti di carte di credito
Quali sono invece i lati negativi?
L’accessibilità è sicuramente inferiore a quella delle transazioni su carte di credito che sono riconosciute e facilmente intercambiabili con valute FIAT
- L’anonimità ha portato il Bitcoin ad essere popolare in attività illegali e per l’evasione delle tasse
- Il meccanismo del proof of work che serve per la risoluzione dei blocchi utilizza una certa potenza computazionale con conseguente alto consumo di energia.
Questo contenuto non deve essere considerato un consiglio di investimento.
Non offriamo alcun tipo di consulenza finanziaria. L’articolo ha uno scopo soltanto informativo e alcuni contenuti sono Comunicati Stampa
scritti direttamente dai nostri Clienti.
I lettori sono tenuti pertanto a effettuare le proprie ricerche per verificare l’aggiornamento dei dati.
Questo sito NON è responsabile, direttamente o indirettamente, per qualsivoglia danno o perdita, reale o presunta,
causata dall'utilizzo di qualunque contenuto o servizio menzionato sul sito https://valutevirtuali.com.