Byzantine Generals' Problem

12 Apr 2023

Indice


Capire questo problema e una delle possibili soluzioni è fondamentale per comprendere il processo di verifica e la sicurezza che sta dietro a Bitcoin. Non essendoci nessuna entità centralizzata al comando del database (ledger) si è dovuto trovare una soluzione per stabilirne le regole.

Chi decide le regole del ledger e come si raggiunge il consenso da parte della maggioranza?

Il modello a cui si ispira la Blockchain di Bitcoin è stato ricavato dal Byzantine Generals' Problem (Problema dei generali bizantini)

Byzantine Generals' Problem

L'idea che sta alla base del consenso è data da questo problema, abbreviato BGP, proposto da Marshall Pease, Robert, Shostak e Leslie Lamport nel 1982.

È espresso attraverso una situazione in cui 10 generali bizantini, con le rispettive truppe, sono accampati fuori dalle mura nemiche e devono decidere come agire: devono attaccare o ritirarsi?

I generali possono comunicare solo attraverso i loro messaggeri. Il problema è che alcuni generali potrebbero essere dei traditori e decidere di comunicare il falso.

Nel nostro caso possiamo paragonare i generali ai nodi del network peer-to-peer e i traditori ai nodi con l'obiettivo di verificare delle transazioni fraudolente.

Una soluzione proposta è quella del consenso che sta dietro alla blockchain di Bitcoin. Il whitepaper di Bitcoin fu proposto per la prima volta sul web il 31 ottobre 2008 da una persona / gruppo con lo pseudonimo di Satoshi Nakamoto.

Ad oggi è la migliore soluzione al BGP mai proposta ed è quella attualmente utilizzata.




L'approccio di Bitcoin al BGP

Prima di iniziare, alcune utili definizioni:

  • bitcoin: con la b minuscola indica la cryptocurrency (unità di conto) usata all'interno del network di Bitcoin.
  • Bitcoin: con la B maiuscola si usa per descrivere il concetto, il network, il progetto e la community.
  • Indirizzo Bitcoin: è una stringa di lettere e numeri (codificata in sha256) collegata ad un portafoglio digitale, a cui si possono inviare bitcoin.
  • Transazione: una registrazione che informa il network del trasferimento di bitcoin tra due nodi.
  • Blockchain: è il registro completo delle transazioni compiute all'interno del network.
    Mostra come, da chi e verso chi è stata fatta la transazione.
    La blockchain è pubblica e mostra le transazioni in ordine cronologico.

Naviga nella blockchain: Blockchain Explorer

Il registro di Bitcoin: la Blockchain

Quando si fa riferimento a un nodo ci si riferisce ad un dispositivo collegato al network di Bitcoin.

Come ci si collega? Basta scaricare un software, scaricare sul proprio computer la copia della blockchain e collegarsi ad internet, in questo caso saremo dei full node (copia completa della blockchain sul proprio dispositivo ~400GB)

Problema I: come si tiene sincronizzata ogni copia della blockchain all'interno del network?

Problema II: Come fa un nodo a sapere quale informazione accettare e quale rifiutare, non essendoci nessuna istituzione centralizzata a stabilire le regole?

La soluzione si è trovata adattando il consenso tra i nodi al Byzantine Generals' Problem (BGP).

La sincronizzazione della blockchain

  1. Quando un utente crea una transazione, essa viene trasmessa a tutti i nodi all'interno del network e in pochi secondi la maggior parte dei clients (dispositivi) nel mondo la vedranno.
  2. A questo punto la transazione viene etichettata come unconfirmed (non confermata). Bisogna verificare se la transazione è fraudolenta o no.
  3. Bitcoin conferma la transazione e risolve il Byzantine Generals' Problem attraverso un processo chiamato mining. Se la transazione viene rifiutata, si ripete il processo.

Introduzione al mining e al Proof Of Work

Da ora chiameremo miners i nodi che si occupano di verificare e di registrare le transazioni nella blockchain.

Il mining è il processo nel quale un nuovo blocco viene verificato e connesso alla catena di blocchi della blockchain. Quando un miner registra un nuovo blocco viene ricompensato con dei bitcoin, in questo caso diremo che i BTC sono stati mintati (minted bitcoins).

Ricordiamo che non ci saranno piu ricompense dopo che il network raggiungerà i 21.000.000 BTC totali.

L'integrità della transazione e del blocco viene verificata tramite la potenza computazionale del miner con un processo automatico chiamo Proof Of Work.

Cosa fa il miner:

  1. Raggruppa 📦 le transazioni non ancora confermate e le inserisce in un blocco, chiamato candidate block perchè non è ancora sicuro che verrà registrato nella blockchain.
  2. Costruisce ⛏️ il candidate block con:
  • una referenza all'ultimo blocco valido della blockchain
  • il nonce, un numero casuale usato per il Proof Of Work.
  1. Risolve ⚙️ il Proof Of Work e manda il candidate block al network per farlo verificare agli altri nodi.
  2. Se il blocco viene validato ed è quello che è stato creato con più potenza computazionale, il miner riceverà la ricompensa 💰.

Quando si parla di ricompensa ci si riferisce a dei bitcoin che riceverà il miner per aver speso tempo ed elettricità (tenere acceso un macchinario per il mining consuma più di 2kW/h).

La ricompensa è composta da:

  • il block subsidy, che fornisce BTC al network ogni volta che un blocco viene creato. Viene dimezzata ogni 210.000 blocchi (~ 4 anni), per avere un decremento della fornitura di BTC; nel 2008 la ricompensa era di 50 BTC, oggi è arrivata a 6.25 BTC per blocco ♦️.
  • le fees, cioè le tasse che paga l'utente per inviare i propri bitcoin.

♦️ Nel 2140, quando si stima che ci saranno i 21M di bitcoin nel network, i miners riceveranno solo più le fees come ricompensa. Oggi ci sono 18M di bitcoin (più dell'80% del totale fissato).

Cosa succede se 2 miner creano e verificano 2 blocchi, con informazioni (come le transazioni) diverse, allo stesso istante? Quale dei due viene scelto?

Quando un client deve decidere quale blocco accettare, sceglierà ovviamente l'ultimo della catena ma anche quello che è stato creato con più difficoltà, cioè quello che ha avuto bisogno di più potenza computazionale da parte del miner.

Il blocco che viene scartato diventa orfano e le transazioni al suo interno dovranno essere nuovamente inserite in un altro blocco.

Lo scopo del Proof of Work

Perchè dovrei usare la blockchain ed avere la necessità di tutta questa energia quando posso usare un normale database?

Perché ciò che sta alla base della blockchain e del suo consenso è la sicurezza: l'investimento di potenza computazionale, tempo ed energia aumenta la sicurezza di tutto il sistema! Ad un miner non conviene creare un blocco con informazioni false, perché non verrebbe accettato dal network e quindi consumerebbe energia inutilmente ($$$).



⬅️ Capitolo Precedente | Capitolo Successivo ➡️