1. Consenso di Nakamoto
- Ogni nuova transazione viene inviata in broadcast a tutti i nodi.
- Ogni nodo colleziona le nuove transazioni in un blocco.
- Ogni nodo cerca una Proof of Work (PoW) difficile per il proprio blocco. La PoW è il calcolo di un valore tale che un hash di blocco+nonce inizi con uno stabilito numero di zeri.
- Quando un nodo trova una PoW, invia in broadcast a tutti i nodi il blocco contenente le transazioni e la PoW.
- Un nodo accetta il blocco se: tutte le transazioni sono valide, le transazioni non sono relative a un bene già speso, la PoW è valida (verificando l'hash del blocco con il numero di zeri iniziali).
- I nodi manifestano l'accettazione del blocco aggiungendolo alla blockchain al momento della creazione del blocco successivo, utilizzando l'hash del blocco accettato per creare il prossimo blocco.
Problematiche del consenso di Nakamoto: due nodi possono fare concorrentemente il broadcast di blocchi differenti, nodi diversi possono ricevere i due broadcast in ordine diverso, ciascun nodo lavora sul primo blocco che riceve ma conserva l'altro ramo. L'indecisione si risolve quando un ramo diventa più lungo e i nodi che lavorano sul ramo meno lungo lo abbandonano per proseguire sulla catena più lunga.
1.1 Rispetto al teorema CAP, quali proprietà ha il consenso di Nakamoto?
Il consenso di Nakamoto è di tipo AP: garantisce l'Availability (A) (disponibilità dei dati, ottengo una risposta da una richiesta fatta) ed è Tolerance to network partition (P).
2. Qual è la differenza tra hard fork e soft fork?
Un fork rappresenta uno stato incoerente che può essere sfruttato dagli avversari per causare confusione, transazioni fraudolente e sfiducia all'interno della rete. I fork possono essere creati involontariamente a causa di malfunzionamenti o incompatibilità negli aggiornamenti. I fork intenzionali possono essere:
- Soft fork: la modifica è retrocompatibile.
- Hard fork: i nuovi blocchi che la rete accetta sembrano non validi per i nodi pre-fork. Gli hard fork possono portare a una divisione della cryptovaluta.
3. Che cos'è l'attacco 51%?
Un attacco del 51% avviene quando un singolo aggressore o un gruppo di nodi Sybil (di solito un numero ingente di miner) raggiunge la maggioranza dell'hashrate nella rete. Ciò salta il concetto di rete decentralizzata, poiché il 51% del network è sotto il controllo dello stesso gruppo di miner, che potranno quindi:
- Manipolare la blockchain impedendo la verifica di transazioni o blocchi.
- Invertire transazioni per consentire il double spending.