Concetti

Bitcoin e Blockchain

Il Bitcoin e il Blockchain sono cose diverse.

Il Bitcoin è un valore virtuale di scambio accettato consensualmente da due parti e basato sulla tecnologia del Blockchain.

Viene chiamato una criptovaluta, termine legalmente improprio.

Bitblock

Un blockchain è un archivio immutabile in una rete decentralizzata il cui contenuto ha il consenso da parte di tutti i nodi della rete.

Il blockchain è replicato su tutti i nodi della rete partecipante.

Viene esteso solo in modo append, da un solo nodo della rete per volta. L’estensione si propaga rapidamente a tutti i nodi della rete.

Primitive Crittografiche

Blockchain è basato su caratteristiche di crittografia, le firme digitali e le funzioni di hash, che lo rendono praticamente immutabile una volta scritto.

Crypto

Hash

Hash

Lo hash ha sempre la stessa lunghezza, qualunque sia la lunghezza dell’origine:

  • Dipende dall’algoritmo

Un leggero cambiamento all’origine produce uno hash molto differente

  • Proprietà di Diffusione

Collisione: due origini diverse che producono lo stesso hash

  • Praticamente impossibile

Chiavi Asimmetriche

Chiavi

Struttura di un Blockchain

Catena di Blocchi

Strutbloc

Un blocco è essenzialmente una selezione di transazioni riunite insieme in modo logico, e corredato di campi amministrativi extra, il cui numero e struttura dipendono dall'implementazione specifica.

Ogni blocco ha un campo che contiene lo hash del blocco precedente, formando così un anello della catena.

Cambiare anche un solo byte del blocco corrente cambia completamente il suo Hash:

  • Rompe la catena: i blocchi seguenti non lo trovano più

  • Per ricomporre la catena il blocco seguente deve ricalcolare il suo hash, quindi quello seguente, ecc.

    • Può richiedere tempi enormi
  • Inoltre il Blockchain ricomposto deve essere ridistribuito a tutti i nodi della rete

    Non è praticamente possibile modificare il Blockchain

Blockchain e Rete

Blrete

Tipi di Nodi

In un blockchain vi sono due tipi di nodi:

  • Quelli che possono estendere il blockchain: detti miners o, stranamente, clients del blockchain (sono funzionalmente dei server)
    • Grossa potenza di calcolo
    • Vasta capacità di storaggio di dati
    • Elevata banda passante di rete
  • Quelli che possono usare il blockchain emettendo transazioni: i wallet
    • Hanno interfaccia umana (web o app dedicata)
    • Gestiscono identificativi detti indirizzi, chiavi pubbliche casuali univoche in rete - con corrispondenti chiavi private e segrete

Trasferimento di Valore

Trasval

  • Ogni partecipante ha un indirizzo, la sua Chiave Pubblica
    • Nota a tutti
    • Non rivela l’identità del possessore
  • Il mittente invia valore all’indirizzo del destinatario
  • Il valore inviato è una Transazione
  • Il mittente firma la transazione con la sua Chiave Privata
  • Il trasferimento deve essere
    • Noto a tutti e Indisputabile
    • Irreversibile

Sequenza di Operazioni

Seqop

Gerarchia

L’unità di registrazione dati è la Transazione, un qualsiasi documento firmato digitalmente dall’autore.

  • Transazioni di valore, basati su Criptovaluta
  • Programmi eseguibili, detti Smart Contracts
  • Qualsiasi attributo registrabile, detto Smart Property

Le transazioni sono inviate dal wallet dell’autore ad un Pool di Transazioni pendenti, distribuito e temporaneo.

Il miner preleva le transazioni dal pool e le pone in un Blocco Dati.

Il blocco dati prescelto dal meccanismo di consenso viene perennemente aggiunto alla catena di blocchi, il Blockchain.

  • Cancellato dal pool di transazioni pendenti
  • Tutti i nodi della rete possono vedere il Blockchain

Sistemi Distribuiti

Tipi di reti:

Dist01

  • Centralizzate
    • Tutti i nodi hanno un link
    • Client-Server

Dist02

  • Decentralizzate
    • Alcuni nodi hanno più link
    • Internet

Dist03

  • Distribuite
    • Impossibile perchè non scalabile
    • Almeno tre link per nodo

Il Teorema CAP

Brewer (1998)

Un sistema distribuito può avere al massimo due delle tre seguenti proprietà desiderabili:

  • Consistenza (Consistency)
    • Tutti i nodi possiedono la stessa copia dei dati.
    • → Algoritmi di Consenso
  • Disponibilità (Availability)
    • Sistema accessibile e funzionante.
    • State Machine Replication
  • Resilenza al partizionamento (Partition tolerance)
    • Se un sottosistema fallisce, il rimanente continua a funzionare correttamente.
    • → Tolleranza a Nodi Bizantini

Generali Bizantini

Un nodo può fallire totalmente o parzialmente per due motivi:

  • accidentale - per cause 'naturali' o errori software
  • intenzionale - per comportamento malefico dell'amministratore del nodo

Bizant

Un nodo con comportamento irrazionale o imprevedibile si chiama Nodo Bizantino.

Svariati teoremi matematici dimostrano il numero massimo di Nodi Bizantini accettabile con vari algoritmi di Consenso.

Problema risolto nel 1999 da Castro e Liskov: Practical Byzantine Fault Tolerance (PBFT).

Consenso

Accordo su un unico valore di dati.

Relativamente facile raggiungere il consenso in un sistema centralizzato, molto più complesso in un sistema distribuito.

Richiede normalmente un interscambio di numerosi messaggi tra i nodi partecipanti.

Requisiti del consenso:

  • Accordo - tutti i nodi onesti hanno lo stesso valore
  • Terminazione - il procedimento di intercambio messaggi ha una durata finita (e più breve possibile)
  • Validità - il valore finale è il valore iniziale proposto da almeno uno dei nodi onesti
  • Resilienza - è tollerata la presenza di un certo numero di Nodi Bizantini
  • Integrità - nessun nodo onesto 'cambia idea' durante il procedimento di consenso

Due tipologie di Meccanismo di Consenso:

Byzantine Fault Tolerance

  • Nessun nodo è prominente
  • Interscambio di un certo numero di messaggi firmati, con regole prestabilite di selezione del migliore, fino ad un quorum minimo.
  • E' predefinita una qualità che determina il migliore.

Basati su Leaders

  • Un nodo decide. Il nodo può essere eletto.
  • Ruoli diversi dei nodi:
    • Proposer, Acceptor, Learner (Paxos)
    • Follower, Candidate, Leader (RAFT)

Possono esserci sistemi ibridi: rari, perchè diventano presto complessi.