Scopri gli articoli di Geeks Academy su: Blockchain, Coding, Cybersecurity, Cloud, Big Data, Artificial Intelligence, Gaming, Digital Innovation
Finora abbiamo parlato di blockchain come di un sistema di sicurezza rivoluzionario ed inviolabile. Tuttavia, abbiamo anche detto che ogni blockchain gestisce tale sicurezza con un protocollo a sé stante. Vediamo quindi nel dettaglio come gestisce la sicurezza il protocollo più antico del mondo crypto: Bitcoin.
Quand’è che un protocollo si può definire sicuro?
Nell’informatica, un protocollo viene definito sicuro quando è in grado di riflettere 5 caratteristiche precise:
- Riservatezza
- Integrità
- Autenticità
- Non ripudiabilità
- Disponibilità
Se la Riservatezza, come è intuibile, viene garantita dall’utilizzo della crittografia (la scienza che prevede l’obliterazione dei dati sensibili), Integrità, Autenticità e Non Ripudiabilità sono concetti derivati da un giusto mix tra le pratiche telecomunicative e quelle di sicurezza informatica. Alla base di queste, vi è infatti il concetto di chiave pubblica e privata (crittografia a chiave asimmetrica), un sistema utilizzato nell’invio delle email, in cui si creano due “chiavi” in possesso di chi vuole comunicare. Nell’attuale sistema mailbox, mittente e destinatario richiedono al servizio di posta queste due chiavi, il cui scopo preciso è il seguente: la chiave privata richiesta può aprire un messaggio cifrato da una chiave pubblica associata, ma non viceversa; per cui, per una comunicazione sicura, mittente e destinatario avranno a disposizione 4 chiavi, 2 ciascuno. L’unione di questa pratica con l’algoritmo di hashing – un algoritmo che prevede la creazione di un codice univoco a partire da un qualsiasi dato in input – permette quindi di avere un sistema in cui i dati possono viaggiare in sicurezza rimanendo immutabili, tracciabili e quindi non ripudiabili una volta inviati.
La Disponibilità invece è un concetto più complesso, che prevede un’operatività e una resistenza alla censura indipendente dall’hardware e dal software utilizzato. Se per un sistema centralizzato è intuibile come questo sia meno affine a tale facilità di utilizzo, grazie alla scalabilità verticale della distribuzione dei dati la blockchain permette un'elevata resilienza a quelli che sono definiti i possibili Point of Failure a cui vanno incontro le maggiori strutture basate su database.
Tuttavia, Bitcoin è un protocollo che, oltre ad incapsulare le caratteristiche fondamentali di una blockchain, porta un'altra grande innovazione: quella del sistema UTXO.
Il sistema UTXO
UTXO è l’acronimo di Unspent Transaction Output. Questa pratica risponde brevemente alla fatidica domanda: “Dove sono i miei Bitcoin?” Ebbene, da nessuna parte. A differenza di quello che si vuole pensare, Bitcoin non è una valuta fisica; non è nemmeno un valore.
Se pensiamo ad un conto corrente bancario, sappiamo che ogni utente ha un ammontare di soldi che viene rappresentato da un valore (es. 300$ nel conto di marco); tuttavia quel valore è qualcosa che può essere modificato dalla stessa banca o da un agente malevolo (anche se è molto difficile che accada).
Facendo dell’informazione il proprio cavallo di battaglia, Bitcoin analizza invece il flusso d'entrata e d'uscita di dato un indirizzo, derivando il calcolo in quella che può essere definita la contabilità dell’indirizzo. Facciamo un breve esempio: Bob e Alice vogliono inviarsi dei BTC (Bitcoin); Bob dispone di 5 BTC, e ne vuole inviare 4 ad Alice. Come dicevamo, non esiste un valore di saldo che indica il totale di Bitcoin di Bob, ma ci ritroviamo ad avere una serie di transazioni entranti nell’account di Bob la cui somma sarà pari a 5 BTC. Per la transazione di 4 BTC, il sistema UTXO prenderà allora quelle transazioni entranti la cui somma è il più vicina possibile all’ammontare totale di 4 BTC. Poiché tale sistema può generare delle situazioni di overflow, nella pratica ogni singola transazione genera due movimenti. Nel caso di Bob e Alice, ci sarà un movimento che invierà 4 BTC ad Alice, e uno che restituirà l’eccesso nelle tasche di Bob. Le transazioni che verranno “spese” andranno quindi a 0 e non saranno più prese in considerazione in futuro, mentre quelle con resto andranno a bilancio nel “saldo” derivato di Bob.
Capiamo quindi che, in realtà, il saldo totale di ciascun account è rappresentato dalla somma di tutte le transazioni ancora non spese nel nostro indirizzo. Inoltre, il fatto che l’indirizzo non sia memorizzato in nessun archivio, lo rende praticamente non modificabile da altri, a meno che non venga modificato lo storico delle transazioni stesse scritte su blockchain.
Questo, in breve, è il concetto su cui si fonda la tecnologia nata dall’invenzione di Satoshi Nakatomo, il misterioso personaggio che si cela dietro la creazione del Bitcoin nel 2008.
Il progetto Bitcoin, che ha dato avvio allo sviluppo dell’attuale universo crypto, è tuttora sostenuto da diverse associazioni e fondazioni – come Bitcoin Core (un team di sviluppo la cui licenza viene fornita direttamente dal MIT, Massachusetts Institute of Technology) – nate proprio allo scopo di mantenere e aggiornare tale protocollo.
Ad oggi, Bitcoin è il codice più longevo e con più partecipanti al commit su Github, sito in cui è presente il codice di bitcoin (che può essere modificato tramite proposal che devono essere approvate dal 51% della rete). Inoltre, grazie alla sua scarsità legata ai 21 milioni di pezzi presenti sul mercato, è divenuto ben presto un bene di rifugio per molti investitori.
Perché è importante comprendere la blockchain?
Finanza Decentralizzata, Agrifood, Internet of Things, Sharing Economy, Assicurazioni, Arte, Gaming, Notarile. I possibili ambiti d’impiego della blockchain non si fermano di certo qui, ed è bene scoprire come rendere l’uso di questa tecnologia ancora più efficiente, soprattutto nel campo industriale, dove molti dei possibili lavori del futuro potrebbero essere già sostituiti da smart contracts, oracoli ed intelligenze artificiali. Lo studio della blockchain è inoltre un elemento sempre più richiesto dalle aziende FinTech, che hanno avuto il loro boom proprio durante l’anno pandemico in seguito al crescente affermarsi del lavoro digitale. Ad ora, nascono sempre più progetti, coins, tokens ed NFTs che richiedono soft skills ed un'ampia conoscenza degli strumenti principali di programmazione. Iniziare ora, sebbene possa sembrare già troppo tardi, non lo è affatto, perché la blockchain sta ormai diventando quotidianità. Le insidie però sono ancora parecchie: molte aziende, ad esempio, non riescono ancora a comprendere appieno la differenza tra un normale database e una blockchain, e quando si rivolgono a consulenze, spesso i loro casi d’uso non sono congrui alla tecnologia che vogliono impiegare.
Ecco cosa serve:
Esaminando diversi annunci di lavoro, l’elenco delle competenze e dei requisiti più rilevanti sono senz’altro:
- Comprensione di algoritmi, sicurezza dei dati, tecnologie decentralizzate e strutture dati.
- Un solido background nelle capacità di codifica, con almeno uno dei seguenti linguaggi di programmazione: Python, JavaScript, JAVA, C, C ++.
- Comprensione generale di libri mastri, blockchain e criptovalute.
- Competenza nella gestione delle prestazioni e rilevamento delle anomalie.
- Almeno esperienza di base nella creazione di framework blockchain e applicazioni aziendali.
Non vivere il futuro da spettatore...diventane il protagonista! Iscriviti ai percorsi Geeks Academy per lavorare nelle nuove professioni della Data Economy grazie ai percorsi dell’area Blockchain & Coding: