Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
2.2 CONSENSO DISTRIBUITO E GENERALI BIZANTINI
"Il problema dei generali bizantini" è una sorta di indovinello che ci pone di fronte a due possibili scenari riguardanti la distribuzione del consenso, così come avviene nel caso delle blockchain. Sono presenti dei generali bizantini, che si devono coordinare per sferrare un attacco ad una roccaforte.
Sono possibili due scenari, come possiamo vedere dalla figura 2: il primo è quello in cui tutti i generali sono d'accordo sull'attacco; il secondo, invece, è caratterizzato dal fatto che ci sono alcuni traditori decisi a non assalire.
Un attacco coordinato condurrebbe alla vittoria; invece, nel caso in cui i traditori decidessero di boicottare l'incursione, ci sarebbe il rischio di essere sconfitti dalla roccaforte. In questo caso vi sono due diverse tipologie di attori: i generali non traditori, che vogliono attaccare e sono consapevoli.
che hai appena letto, la sfida è trovare un modo per coordinare tutti i nodi in modo che possano raggiungere un consenso sulla versione corretta della blockchain.precedente, potrebbero esserci dei "traditori" che vogliono proporre una versione fallace dellablockchain per modificare alcune transazioni e permettere, ad esempio, il doublespending. Un sistema centralizzato è caratterizzato da un server centrale: di conseguenza, è come se tutti i generali fossero assieme con il loro comandante, il quale riesce a comunicare con tutti e a ordinare loro come muoversi. Il server centrale, infatti, coordina tutti i suoi nodi e impone la sua versione dei fatti; ma possiede tutta la serie di debolezze precedentemente indicate. Il sistema decentralizzato, d'altro canto, è una via di mezzo dove sono presenti alcuni nodi con dei nodi "figli": allora, l'importante è coordinare quelli intermedi, in quanto saranno loro poi a organizzare tutti gli altri. Il nostro caso è quello del sistema distribuito, ossia un sistema "peer to peer", in cui tutti i nodi comunicano tra loro, o megliodove tutti dovrebbero in qualche modo farlo.Sistema distribuito: è un sistema con più componenti situati su hardware diversi che comunicano e coordinano le azioni in modo da apparire all'utente finale come un unico sistema coerente.
Sistema peer to peer: è un modello di comunicazione decentralizzato in cui ciascuna parte ha le stesse capacità e ciascuna parte può avviare una sessione di comunicazione.
In realtà non è, ora come ora, possibile che ogni singolo nodo della blockchain Bitcoin istantaneamente parli a tutti gli altri, ma è quello a cui si ambisce. Se fosse già stato implementato, non sarebbe possibile mantenere il livello di comunicazione, velocità e scalabilità di cui disponiamo ora. A noi interessa estremamente questo argomento ed è proprio il problema che si pone come obbiettivo la blockchain, ossia quello di riuscire a coordinare tutti i nodi verso un'unica soluzione.
Ciò che permette di farlo è la creazione e l'applicazione nel network degli algoritmi di consenso distribuito. Il consenso distribuito ha come scopo, infatti, quello di mettere d'accordo tutti i nodi partecipanti su un'unica versione del registro. Chiaramente non si tratta di un'impresa banale, dal momento in cui vi sono alcuni problemi su cui riporre l'attenzione: primo tra tutti è capire a chi attribuire la ragione in caso di contenziosi. Nel momento in cui, ad esempio, avessimo tre versioni della blockchain, come sarebbe possibile individuare quella corretta? Un'altra domanda potrebbe essere quella che ci si pone quando si deve capire come trovare una versione obiettivamente giusta di questo registro distribuito. È figlia della prima questione, ma è fondamentale comprendere come decidere arbitrariamente quale sia la versione veritiera e quali siano i criteri attraverso i quali possiamo effettuare questa scrematura.
È essenziale, inoltre, comprendere come concedere a tutti la possibilità di partecipare equamente a questo consenso, al fine di evitare di incappare nel modello centralizzato. Infine, come evitare che degli attori malevoli, che vogliono proporre una versione differente da quella veritiera della blockchain, influenzino il processo di consenso? Si tratta di domande a cui devono rispondere i vari algoritmi di consenso; molti hanno tentato a farlo, ma solo alcuni ci sono riusciti.
Esistono una miriade di algoritmi di consenso distribuito, i più famosi sono sicuramente:
- Proof of Work: Bitcoin, Ethereum fino al 15 Settembre
- Proof of Stake: Polygon, Elrond, Ethereum dal 15 Settembre.
- Proof of Authority: Vechain.
- Proof of History: Solana.
- Proof of Capacity: Chia.
37 Scalabilità: la caratteristica di un sistema software o hardware facilmente modificabile nel caso di variazioni della mole o della tipologia dei dati trattati.
È importante
comprendere i meccanismi di funzionamento dei primi due per potercapire come opera la stragrande maggioranza delle criptovalute.- Resistenza al 51% attack
Il metodo pensato dal protocollo Bitcoin per superare il problema dei generali bizantini è quello di mettere d'accordo tutti i nodi su un'unica versione della blockchain. Il tutto si basa sulla competizione e sullo sforzo computazionale: difatti, si tratta di un sistema in cui la meritocrazia regna sovrana. Bisogna dimostrare di essere giunti al traguardo attraverso uno sforzo maggiore rispetto agli altri.
La versione della blockchain più lunga, quella fornita dal miner che convalida il nuovo blocco, è quella corretta e che deve essere accettata da tutti.
Questo meccanismo impone che, nel caso in cui ci fosse un nodo malevolo, con la maggioranza dell'hash rate, riuscirebbe a validare la maggior parte delle volte i blocchi; infatti, statisticamente, sarebbe sempre questo nodo a trovare per primo la
soluzione. Affinché il problema dei generali bizantini venga risolto a favore dei nodi non malevoli, la percentuale di non traditori deve essere maggiore del 51%. Maggiore è la decentralizzazione, minore è il rischio che vi sia un aggregato di utenti o macchine che tenga un potere prevaricante sul network. Si tratta di una situazione che non dovrebbe mai verificarsi, pena la stabilità della blockchain. Ci sono stati degli attacchi 51% su blockchain, ma Bitcoin ha un hash power talmente alto da renderne quasi impossibile il crollo. Per compiere un 51% attack su Bitcoin, infatti, servirebbe avere la maggioranza tra i 200 milioni di tera hash al secondo che la blockchain sviluppa e questo tipo di aggressione avrebbe un costo non sostenibile da una persona o un'istituzione. Più cresce l'hash power complessivo e più Bitcoin diventa sicuro, dal momento che, per attuare un takeover, serve sempre più energia e, di conseguenza,economicamente non ne varrebbe la pena. Infine, dopo essere stato individuato, il miner maligno verrebbe inoltre cacciato dal network. 38 Hash rate: capacità nella rete di una criptovaluta di risolvere enigmi crittografici. 39 Hash power: potenza di hash. 40 Takeover: atto volto ad assumere il controllo di qualcosa. 31 41 Esistono registri distribuiti come Ethereum Classic che hanno subito il 51% attack e non sono mai crollate, rimanendo tuttora in vita. 2.3 PROOF OF WORK Il "proof of work" è un algoritmo che basa i propri presupposti sul lavoro e sulla fatica, come vedremo prossimamente si tratta di uno dei più grandi esempi di meritocrazia. In questo algoritmo di consenso distribuito ogni nodo propone la propria versione della blockchain, utilizzando, al fine della dimostrazione della veridicità, il lavoro che ha svolto. Difatti, ciascuno palesa di aver dedicato una certa potenza di calcolo alla creazione della propria versione del registro e il risultatoChe ne consegue funge da validazione. I nodi competono, ognuno con la propria proof of work, per poter risolvere il problema relativo alla validazione dell'ultimo blocco della catena, quello che, al momento, è da finalizzare. Chi per primo riuscirà a trovare la soluzione e, di conseguenza, a convalidare il nuovo blocco, ne avrà uno in più rispetto agli altri. Avendo una catena più lunga a confronto di quella degli altri nodi, nel momento in cui verrà accertata l'effettiva risoluzione del problema, egli verrà accettato univocamente dal network come "vincitore".
I partecipanti al network devono poter provare di aver svolto il lavoro per chiudere questo blocco e dimostrare di non aver aggirato il consenso distribuito e, di conseguenza, di avere la "skin in the game".
Il processo consistente nella validazione dei blocchi da parte dei nodi del network è chiamato "mining". Per capirne i meccanismi
di hash produrrà sempre lo stesso output. Questo è fondamentale per garantire l'integrità dei dati all'interno della blockchain. Le funzioni di hash sono anche caratterizzate da un'altra proprietà importante, ovvero la resistenza alle collisioni. Ciò significa che è estremamente difficile trovare due input diversi che producano lo stesso output. Questa caratteristica è fondamentale per garantire la sicurezza delle transazioni all'interno della blockchain. Le funzioni di hash vengono utilizzate in diversi contesti all'interno della blockchain. Ad esempio, vengono utilizzate per calcolare l'hash di ogni blocco, in modo da creare una catena di blocchi collegati tra loro. Inoltre, vengono utilizzate per calcolare l'hash delle transazioni, in modo da garantire l'integrità dei dati. In conclusione, l'hashing è un processo fondamentale per il funzionamento della blockchain. Le funzioni di hash permettono di garantire l'integrità e la sicurezza dei dati all'interno della blockchain, rendendo il sistema affidabile e resistente alle manipolazioni.ci restituirà