Direttore responsabile: Giovanni Capaccioli

Inside blockchain. La transazione: come e da cosa è composta.

Transazione-Hashing-&-Criptazione
Blockchain-piccolo

Intro.

Abbiamo cominciato a riconoscere che all’interno di una blockchain gli elementi fondamentali sono la transazione, i blocchi, l’hash, i nodi ed il ledger. Ma partiamo da principio: cos’è una transazione in blockchain?

Visione d’insieme

Il concetto da tenere bene in mente è che le transazioni sono contenute in un blocco protetto da un hash (un codice) che “contiene” tutte le informazioni del blocco in questione e dell’hash del blocco precedente. Ecco perché si parla di “catena”: perché l’hash di un blocco è immutabilmente collegato all’hash del blocco precedente, quindi un blocco è immutabilmente collegato al blocco precedente. Con tutto ciò che c’è dentro. 

I Nodi lavorano (il “Consenso, cioè la “Proof of..”) nella blockchain, validando

la, mettendola al sicuro, condividendola su tutta la rete distribuita. La blockchain, quindi, altro non è che l’insieme di tutti i blocchi saldamente uniti, incatenati tra di essi.

Nodi

Ma veniamo alla transazione

Come abbiamo detto, ciascun blocco contiene le transazioni, che sono i “dati” che formano il “database distribuito” che compongono il “libro mastro” della blockchain, cioè il Ledger (Distribuited Ledger Technology).

In base alle regole (governance) di una specifica blockchain ed al suo specifico uso, le transazioni possono esser strutturate in modalità diverse; stando però alle regole generali di codifica delle transazioni, esse sono composte nel seguente modo: abbiamo un utente che “invia”, abbiamo la “descrizione” della transazione, abbiamo infine l’utente “ricevente”. Entrambi gli utenti hanno l’uso delle proprie coppie di chiavi crittografiche, oltre che ovviamente del proprio Wallet (portafogli digitale).

Struttura della transazione: chiavi crittografiche.

Elementi fondamentali per poter aprire e gestire una transazione sono le cosiddette “Chiavi crittografiche”. Non sono  estremamente complicate da comprendere: ciascun utente, quando decide di entrare a far parte di una blockchain per usarla, crea fin da principio un proprio “portafoglio digitale” (“Wallet”: “Portafoglio”). 

Questo portafoglio ha la stessa funzione di un classico e tangibile portafoglio che usiamo tutti i giorni, con la differenza che è in formato digitale. Immagina di avere a disposizione una App su cellulare o un Home Banking della tua banca. Bene, per poter usare in modo estremamente sicuro questa App su blockchain (sia da cellulare che da computer), vieni obbligatoriamente dotato di due chiavi crittografiche: una chiave privata ed una chiave pubblica.

Non parliamo, chiaramente, di chiavi tangibili, bensì di chiavi crittografiche, digitali, cioè una serie di codici alfanumerici. Sono ambedue essenziali poiché hanno una specifica funzione. Per ogni coppia di chiavi viene inoltre calcolato matematicamente, dal sistema, anche un indirizzo pubblico che spesso è associato ad un “QR Code”, cioè una sorta di codice a barre utilizzabile dalle fotocamere dei cellulari per facilitare alcune operazioni. 

Spesso si afferma, per comodità, che la chiave pubblica sia l’indirizzo del ricevente, ma in realtà l’indirizzo è un codice alfanumerico che viene calcolato automaticamente dalla funzione di hash della chiave pubblica. Quindi, tecnicamente, un utente ricava il proprio indirizzo pubblico in modo automatico partendo dalla propria chiave pubblica. Questo per aumentare ancora di più la sicurezza.

La chiave privata è quella che non devo condividere con nessuno (a breve capirai il motivo), mentre la chiave pubblica è la chiave che posso condividere con chiunque. Il loro uso è presto detto: colui che effettua la transazione per inviarla, la firmerà assieme alla propria chiave privata; inserirà anche la chiave pubblica del ricevente. 

La chiave privata (inserita in un procedimento di cui ti parlerò a breve) ha la funzione di firma, grazie alla quale tu (che hai la tua chiave privata) accerti che quella specifica transazione l’hai costruita e quindi l’hai approvata proprio tu.

Ecco cosa accade:

  1. Irene ha un documento che vuole vendere in blockchain ad Alessio. Accederà al software per creare la transazione e trasferire il documento per un corrispettivo di moneta (coin, cryptocurrency). Crea la transazione, inserendo il documento ed altri eventuali dettagli; dovrà inserire inoltre la sua firma digitale poiché deve dimostrare a tutti che lei è la proprietaria del documento che sta vendendo;
  2. Crea quindi la sua firma digitale: innanzitutto hasha il documento; successivamente utilizza la sua chiave privata per criptare l’hash; ecco che l’hash criptato prende il nome di firma digitale. Tecnicamente queste azioni di codifica non vengono fatte “a mano” dall’utente, bensì in automatico dal sistema.
  3. Alessio accetta il controvalore in moneta per il documento di Irene, quindi la transazione di Irene ed Alessio prende vita;

Ed ecco che prende vita un ulteriore grande vantaggio della blockchain: l’utente, volendo, può verificare la transazione e la relativa firma digitale, non ha bisogno di fidarsi, può semplicemente utilizzare gli strumenti matematici che la blockchain gli mette a disposizione:

  1. Alessio può verificare la firma digitale in caso voglia, poiché è permesso dalla blockchain: Alessio, infatti, può decriptare la firma digitale usando la chiave pubblica di Irene; il risultato sarà l’hash del documento (Hash A);
  2. A questo punto Alessio applica lo stesso algoritmo di hash sul documento ricevuto ed il risultato sarà l’hash del documento ricevuto (Hash B);
  3. Infine Alessio può comparare i due hash (Hash A e Hash B) per assicurarsi che la transazione non fosse stata alterata.

In sostanza: gli utenti usano la propria chiave privata per effettuare azioni importanti, ma non la condividono mai: in questo modo la chiave privata non è reperibile da altri utenti maliziosi, quindi la “firma” degli utenti rimane al sicuro.

Creazione-Firma-Digitale-steps

Una volta che è avvenuta la messa in sicurezza della transazione, la verifica della correttezza di essa può esser fatta mettendo a confronto due dati:

  1. il valore di Hash  della crittazione tra la firma digitale e la chiave pubblica, cioè “Hash A”;
  2. il valore di hash del dato inserito nella transazione (il file, l’immagine, il documento), cioè “Hash B”.
Verifica-della-firma-digitale-steps

A questo punto, la transazione siffatta entra nel blocco, in attesa che il blocco venga completato nella sua totale capacità disponibile e poi chiuso e messo in sicurezza.