Definizioni

Blockchain

Meccanismo di consenso decentralizzato.

Registro distribuito di transazioni, raggruppate in blocchi. (Distributed Ledger Technology - DLT).

Lista collegata che usa hash anzichè puntatori (Hash List).

Indirizzi

Identificativi univoci che denotano gli originanti e i riceventi in una transazione.

Sono solitamente delle chiavi pubbliche o derivati.

Non corrispondono ad un utente fisico: ogni utente può avere più indirizzi, ma un indirizzo non può corrispondere a più utenti.

E' suggerito al limite che un utente generi un nuovo indirizzo per ogni transazione, se vuole evitare correlazioni e mantenere l'anonimato.

Non è affatto detto che un utente fisico debba esistere; gli indirizzi possono riferirsi ad entità software.

Transazioni

Una transazione è l'unità fondamentale di un Blockchain e rappresenta il trasferimento di valore tra due indirizzi.

Anche quando non vi è una transazione esplicitamente di bonifico, esistono quasi sempre dei costi di transazione, commissioni, ecc.

Blocchi

Un blocco è composto da una o solitamente più transazioni, più i campi di gestione.

Peer-to-Peer

E' una rete di pari, senza differenze gerarchiche a livello software di rete. Tutti i nodi possono, in linea di principio, inviare e ricevere messaggi.

Se vi sono limitazioni d'accesso, sono configurate a livelli software superiori.

Linguaggio di Scripting

Una transazione può essere corredata da una procedura eseguibile, scritta in un opportuno linguaggio che dipende dall'implementazione. Questo aggiunge un livello di intelligenza alla transazione, descrivendo condizioni e vincoli alla sua esecuzione.

Vi sono molti linguaggi di scripting in varie implementazioni, ma non esistono ancora standard.

Turing Complete

Un linguaggio di programmazione è detto Turing Complete se può emulare in tutti i suoi aspetti una Macchina di Turing, un nastro infinito con testina di lettura e scrittura e movimento bidirezionale. Si tace di solito che qualsiasi computer fisico ha memoria finita.

In pratica un linguaggio imperativo con costrutti decisionali e di ciclo viene considerato Turing Complete.

Non esiste correlazione tra la sicurezza di un linguaggio e la sua completezza di Turing. La sicurezza, formale o meno, è ad un livello più alto.

Macchina Virtuale

E' una estensione alla struttura di un Blockchain che permette l'esecuzione di procedure Turing Complete presenti nelle transazioni.

Evidentemente sono i nodi che gestiscono le transazioni, non il Blockchain stesso, che definiscono le procedure.

Le macchine virtuali sono fortemente dipendenti dall'implementazione e non esistono ancora standard affermati o tentativi.

Nella giusta ottica, si può adottare l'astrazione che il Blockchain è una singola Macchina Virtuale Distribuita.

Macchina a Stati Finiti

Una transazione compie il passaggio da uno stato iniziale ad uno finale, ed è rappresentabile nell'ambito della teoria informatica degli Automi a Stati Finiti.

Nonce

E' un campo di un blocco che contiene un valore pseudocasuale.

L'intero hash del blocco, incluso il nonce ha certè proprietà definite a priori, per esempio deve essere inferiore ad un certo valore. Con certi schemi di consenso, chi genera il blocco deve inventare un nonce che produca queste proprietà. Dato che lo hash non è invertibile, il nonce può essere solo indovinato. Questo implica numerosi tentativi e capacità computazionale notevole.

Smart Contract

Una particolare procedura inglobata in una transazione ed eseguita dalla Macchina Virtuale, con Logica Business che risolve determinati problemi.

Visto che un Blockchain non è modificabile, anche uno Smart Contract non lo è.

Dipende fortemente dall'implementazione e linguaggio di scripting e non è presente in tutti i tipi di Blockchain.

Ledger

In ambito di Contabilità il vocabolo inglese ledger corrisponde a Prima Nota o Libro Mastro.

In contesto di Blockchain possiamo meglio parlare di Registro o Archivio di Protocollo.

Meglio usare la parola inglese che è contestuale.

E' un database con un'unica tabella, di dimensione potenzialmente infinita e scrivibile solo in modalità append.

Il ledger di Blockchain è distribuito ad una certa quantità di nodi di rete. Possiamo distinguere due tipi di nodi:

  • Full Nodes - che contengono una copia dell'intero ledger
  • Client Nodes - che non lo contengono, p.es. Smartphone, ecc.

Sia i nodi pieni che i client possono eseguire transazioni, possedendo sufficiente criptovaluta sia per le transazioni che i costi aggiuntivi d'esercizio. Le transazioni sono compiute tramite un programma client, il Wallet.

Il nodo pieno può occuparsi dell'attività detta mining cioè contribuire:

  • alla verifica delle transazioni
  • al tentativo di costruzione di nuovi blocchi

Sequenza di Estensione

La sequenza di estensione del Ledger è la seguente:

  1. Un nodo inizia una transazione e la firma con la sua chiave privata

  2. La transazione è propagata a molti nodi tramite protocolli broadcast, effettivamente inserita in un transaction pool distribuito di transazioni pendenti.

  3. Più di un nodo verifica la validità della transazione.

  4. Più nodi miner inseriscono la transazione in un blocco in costruzione.

  5. Il meccanismo di consenso decide quale dei blocchi in costruzione alternativi è l'unico accettabile.

  6. Il blocco è aggiunto al Blockchain ed estende il Ledger. La transazione può ritenersi confermata, anche se molte implementazioni preferiscono attendere ancora la generazione di altri blocchi successivi.

Modello Software di Rete

Modsof

Blockchain può essere visto come un livello in un modello di comunicazione distribuita peer-to-peer e a sua volta basato sulla rete Internet.