Problemi
Problemi del Blockchain
- Consenso
- Algoritmi efficaci, veloci e non dispendiosi di risorse
- Bitcoin consuma elettricità come la Danimarca
- Possibilità di numero elevato di transazioni
- Storaggio
- Metodi e luoghi per la ritenzione e l’accesso con enormi quantità di dati
- L’infinito non è possibile
- Eliminazione di dati obsoleti o inutilizzati
- Comunicazione
- Garanzia di link non controllati o impediti
- Protocolli di rete intrinsecamente efficienti
- Naming
- Denominazione comprensibile dei nodi e degli indirizzi
- Garanzia di unicità
Consenso
Tipi di Consenso a Elezione
Nakamoto Consensus
Consenso ottenuto sull'elezione o autoelezione di un singolo, che decide quale sia il prossimo blocco valido da inserire nel chain.
La velocità di decisione determina la velocità di produzione blocchi, e quindi il flusso di transazioni accettabili per unità di tempo.
Proof of Work (PoW)
- Consenso basato sulla dimostrazione di aver compiuto molto lavoro computazionale per poter costruire un blocco valido.
- Usato attualmente da molte implementazioni, incluso Bitcoin e la versione corrente di Ethereum.
- E' un metodo di provato successo e resistente agli attacchi.
Il requisito di capacità computazionale corrisponde purtroppo a vasti consumi di energia elettrica.
Al momento questo è il singolo metodo che dà più fiducia, ma si stanno alacremente valutando alternative più ecologiche.
Proof of Stake (PoS)
- Consenso basato sull'investimento in criptovaluta.
- Vengono scelti i blocchi da chi possiede più criptovaluta e/o da più tempo, oppure i nodi più ricchi hanno maggior peso di voto nella scelta del blocco accettabile (Delegated PoS).
Il metodo è più efficiente del PoW e consuma meno, ma vi sono tutta una serie di situazioni che possono causare un double spending o una fork ostile. Le implementazioni che adottano questo metodo introducono anche una serie di controlli per evitare questi effetti.
Altre possibilità:
Deposit-based
Il peso di voto nella scelta di un blocco è proporzionale al valore di un deposito in criptovaluta, che può essere perso in caso di comportamenti provatamente scorretti.
Proof of Importance
Estensione del PoS con algoritmi che tengono conto non solo degli asset di criptovaluta posseduti, ma anche del volume di scambio effettuato in criptovaluta.
Reputation-based
Il peso di voto è influenzato dalla reputazione del votante, ottenuta con meccanismi simili ai likes. Si sospetta che possa essere un metodo polarizzante, a feedback positivo, fino potenzialmente a superare il 50% del controllo consenso.
Byzantine Consensus
Metodi che richiedono molti interscambi di messaggi di voto prima di arrivare ad un accordo.
Teoricamente sopportano un numero più elevato di Nodi Bizantini e sono sistemi più equi, ma soffrono di relativa lentezza di produzione dei blocchi.
Practical Byzantine Fault Tolerance (PBFT)
L'algoritmo classico basato su interscambio di messaggi potenzialmente tra nodi qualsiasi.
Federated Byzantine Consensus
Anche chiamato Stellar Consensus Protocol (SCP). Essenzialmente le transazioni sono validate da un sottogruppo di nodi più fidati, che determinano il blocco prescelto.
Nuovi Metodi di Consenso
Idee nuove basate su modi diversi di concepire il concetto stesso di consenso.
Proof of Elapsed Time
Basato su hardware particolare, al momento fornito solo da Intel SGX, il processore con Software Guard Extensions, che crea l'ambiente Trusted Execution Environment (TEE).
Al momento Hyperledger (soprattutto in variante IBM) sta considerando questa soluzione.
Quantum Byzantine Agreement
Protocollo molto teorico ed esso stesso bizantino basato su quantum computer a 4 qubits e che usa proprietà dello entanglement quantistico (uso del Principio di Indeterminazione di Heisenberg). Futuribile, forse.
PoW e Difficoltà
Il livello di difficoltà è ricalibrato regolarmente per produrre un tempo medio noto di generazione di un nuovo blocco.
Con Bitcoin ~10 minuti.
Questo serve:
- A dare una chance anche al piccolo miner
- A impedire che un Mining Pool conquisti la maggioranza assoluta
- Controlla sempre quale blocco sia scelto
- Può eseguire double spending
Diverse criptovalute hanno tempi e algoritmi diversi
- Correlaziione tra valore e difficoltà
Pool Hopping (Time Warp Attack)
- Mining quando la difficolta è bassa e il valore alto
- Sospendere quando la difficoltà aumenta
- Rientrare quando ritorna bassa
Algoritmi di Difficoltà
- Bitcoin
- Ricalcolata ogni 2016 blocchi. Molto vulnerabile a Time Warp Attack, ma difesa intrinseca data dall’elevato numero di miners.
- Kimoto Gravity Well (KGW) [Megacoin]
- Difficoltà ricalcolata ad ogni blocco. Vulnerabile a Time Warp Attack.
- Dark Gravity Wave (DGW) [Darkcoin]
- Media mobile con esponenziali multipli e funzione di smoothing. Per combattere il Time Warp Attack.
- DigiShield [Zcash]
- Ogni blocco o ogni minuto. Più veloce di KGW.
- Basato su una media di più blocchi precedenti.
- MIDAS (Multi Interval Difficulty Adjustment System)
- Rapido responso a cambiamenti improvvisi di hashrate.
- Algoritmo molto complesso.
Storaggio
I dati possono essere storati (conservati) direttamente all'interno dei blocchi del Blockchain, e questa è la soluzione tradizionale di Bitcoin ed Ethereum.
Vi sono due principali problemi di scalabilità:
- la quantità di dati cresce col tempo e la diffusione delle tecnologie Blockchain
- ogni nodo miner deve scaricare dalla rete tutto il Blockchain corrente e mantenerlo costantemente aggiornato. Si parla tipicamente al momento di 100+ GB per Bitcoin ed Ethereum
La soluzione deve necessariamente andare verso lo storaggio dati esterno al Blockchain, e l'inserimento nel chain di soli riferimenti ai dati veri.
Distributed Hash Tables (DHT)
I dati sono distribuiti sui sistemi dei partecipanti, come con Torrent
Problemi:
- I partecipanti non tengono i dati all'infinito, che invece è un requisito del Blockchain. Anche in caso di numerose repliche non è garantita la conservazione di tutti i dati.
- In un determinato istante alcuni dati possono essere inaccessibili perchè i nodi che li detengono sono offline.
Inter Planetary file System (IPFS)
Risolve i problemi del DHT e si propone in futuro di sostituire interamente il protocollo HTTP.
E' basato su Kademilia DHT per lo storaggio e Merkle DAG (Directed Acyclic Graphs) per le ricerche dati.
Include un modello di versionamento dei dati simile a quello di Git.
L'incentivo alla ritenzione dati è dato dal pagamento ai nodi in criptovaluta, come nel sistema Filecoin.
Ethereum Swarm e Whisper
Sono prodotti dell'ecosistema Ethereum e in continua evoluzione. Swarm è un sistema cluster per lo storaggio, Whisper è un protocollo di comunicazione.
Maidsafe
Altro progetto che intende sostituire HTTP e formare una rete più efficiente e sicura.
Basato su crowdsourcing e il pagamento servizi di storaggio nella criptovaluta Safecoin.
BigChainDB
Iniziativa Open Source con estensioni Enterprise. Combina caratteristiche di database distribuiti NoSQL con cartteristiche del Blockchain.
Si dice compatibile con IPFS e i prodotti Ethereum. Può essere un metodo promettente nel non lontano futuro.
Problemi di Networking
- Problemi Tecnici
- Latenza
- Banda
- Tempo di Processamento
- Problemi Sociopolitici
- Censura
- Governance e Controllo
Problemi Tecnici
Velocità della luce → Latenza mondiale: 1 secondo.
Banda media mondiale: 10 MB/s, serve 1 GB/s.
Tempo sincronizzazione iniziale di Ethereum: 8 ore.
Quando stabile, latenza di intercambio messaggi:
- Verifica blocchi e trransazioni
- Raggiungimento del consenso
- Notifica di eventi, come nuovo blocco
- Manutenzione di stato
- Gossip: queries, comunicazione conWallets, …
Notifica nuovi blocchi in Ethereum: ~30 secondi
- Generazione di Fork temporanee (frequenti)
- Necessità di Tempo di Ritenzione dei blocchi
Per un blocco: tempo propagazione < tempo generazione
Blocchi grandi:
- più tempo di propagazione
- più transazioni al secondo e guadagno per i miner
- più efficienza di storaggio
- meno sicurezza contro fork
Generazione veloce:
- più stabilità di rete
- più velocità di validazione
- meno transazioni per blocco
- meno efficienza di storaggio
Transazioni al Secondo (TPS)
Metrica più importante per la scalabilità.
Attualmente:
- Bitcoin: ~5 TPS
- Ethereum: ~20 TPS
- VISA: ~2,000 TPS
In futuro:
- Economia mondiale: 10,000 TPS
- Internet of Things: 100,000 TPS
Soluzioni Proposte
Meno blocchi sui nodi
- Sharding - l’intero chain è in un gruppo di nodi, non in ogni nodo: nuovo Ethereum
- Comunicazioni intra-shard e inter-shard
- Sharding di solo Blockchain o anche Macchina a Stati: Harmony
Meno partecipanti al consenso
- Numero limitato di decisori, es. con Delegated Proof of Stake: EOS, Tron
- Eletti con voto o decisi a priori: Fabric
Soluzioni gerarchiche
- Sidechains con protocolli diversi: Lightning
- Reti di Blockchains a più livelli: Cosmos
Problemi Sociopolitici
Le implementazioni correnti di Blockchain sono ultimamente basate su Internet.
Per quanto forse all'inizio Internet fosse una rete a mesh, ovvero con tendenza a diventare sempre più distribuita, ora non lo è certamente più.
Tutto il traffico dei nodi finali passa attraverso gerarchie di Internet Service Providers (ISP), che per ragioni politiche, dei servizi, militari o solo commerciali, possono filtrare il transito dei dati.
Sono auspicabili reti fisiche alternative se si vuole mantenere l'indipendenza delle applicazioni Blockchain.
- Un esempio di rete a mesh è dato da Firechat.
Il problema è veramente di Governance globale, non tecnico.
Naming
Il teorema di Zooko Wilcox-O'Hearn parla delle proprietà dei Naming Systems in generale.
I requisiti di un nome sono:
- Sicuro - non cambiabile senza la dovuta autorità
- Decentralizzato - senza un elemento radice di controllo
- Significativo - per gli esseri umani, per esempio facilmente ricordabile
L'asserzione di Zooko è che sono possibili solo due di queste proprietà.
Esempi:
- DNSSec è sicuro e significativo ma non decentralizzato
- Gli indirizzi Onion Routing (Tor) e Bitcoin sono sicuri e decentralizzati, ma incomprensibili agli umani
Namecoin
E' un Ledger distribuito per la registrazione di coppie nome=valore
. Il record può avere la lunghezza massima di 520 bytes.
Possiede la criptovaluta pure chiamata Namecoin (NMC).
- La registrazione ha un costo in Namecoins.
- I Namecoins sono acquistabili in altre criptovalute, come Bitcoin o Ethereum.
I valori registrati scadono dopo 35999 blocchi aggiunti (circa 200 giorni). I valori possono essere rinfrescati ad un costo aggiuntivo. Le chiavi sono valide all'infinito e non devono essere rinfrescate.
Le operazioni di registrazione si effettuano tramite il client Namecoin Wallet, che permette di spendere NMC anche per altri scopi.
Namecoin permette la creazione di Namespaces, ambiti ristretti di visibilità delle chiavi. Alcuni namespaces sono già definiti:
a
- dati di applicativid
- nome di dominio senza TLSds
- nome di dominio con accesso TLSid
- identitàis
- identità sicurap
- prodotto
Una chiave completa assume la forma, p.es. d/example.com
. Per convenzione i client più importanti riconoscono i namespaces principali.
Namecoin è Open Source e sperimentale, ma si sta affermando. Molte sue iniziative coinvolgono la difesa della privacy, dei diritti libertari, dell'anonimato, p.es.:
- NameID, la registrazione di identificativi
- OpenID identità digitali globali e sicure
Il Dominio .bit
Il Blockchain ha bisogno di un Name Service distribuito.
L'implementazione Namecoin è ideale per il mappaggio necessario ad un Name Server. L'aggancio al DNS è tramite il dominio .bit.
I browser devono possedere plugins o software che interagisca con la rete Namecoin, e supportare i namespaces d
e ds
. P. es. il plugin di Firefox FreeSpeechMe.
Quello che ottengono è il valore associato alla chiave, che è il nome di dominio. Spesso tale valore è un indirizzo Blockchain.
Il dominio .bit non è registrato da ICANN, RIPE, ecc. e non è raggiungibile tramite i root servers del DNS tradizionali, tipicamente basati sul software BIND. Esiste software che lo riconosce però, ad esempio OpenDNS, così come riconosce parecchie altre radici DNS alternative.