Consenso, fiducia di conferma ed il coordinatore

Nella parte precedente abbiamo menzionato il problema della doppia spesa, che sorge quando Alice cerca di spendere i suoi soldi più di una volta. In questo post, che sarà l’ultimo della serie, mostriamo come questo problema si risolve nel Tangle, e come decidiamo quale storia è quella valida.

Per illustrare il problema, esamineremo il seguente scenario di doppia spesa:

Come potete vedere, Alice ne ha 5i, che dà sia a Charlie che a Bob. Questo è chiaramente un problema: non possiamo trattare entrambe le transazioni come valide. Usando la terminologia del Tangle, non possiamo avere una transazione futura che approvi entrambe, dato che finirà con un saldo negativo nel conto di Alice.

Abbiamo appreso che utilizzando l’algoritmo di passeggiata aletoria ponderata, alla fine uno dei rami diventerà molto più grande. In questo modo si forma un consenso su quale transazione è valida. Dal punto di vista di Bob o Charlie, tuttavia, c’è un problema: come fanno a sapere se hanno realmente ottenuto i soldi da Alice?

Immaginate che Bob e Charlie siano commercianti di dinosauri, ed Alice ha acquistato un T-Rex da ognuno di loro. Se entrambi le mandano il T-Rex subito dopo aver visto la sua transazione nel Tangle, alla fine uno di loro scoprirà che non è stato pagato. Come possono sapere quando è sicuro spedire il lucertolone?

Questo è un problema serio, e infatti, Bitcoin è stata la prima tecnologia ad affrontarlo con successo, nel 2009. Per mostrare come il Tangle lo risolve, introduciamo un concetto chiamato fiducia di conferma (confirmation confidence). Questa fiducia è la misura del livello di accettazione di una transazione da parte del resto del Tangle.

La fiducia di conferma di una transazione è calcolata come segue:

  • Eseguire l’algoritmo di selezione del tip 100 volte
  • Conta quanti di questi 100 tip approvano la nostra transazione e chiamala A
  • La fiducia di conferma della nostra transazione è “A percentuale”

In altre parole, la fiducia di una transazione è la percentuale di tip che la approvano. Non tutti i suggerimenti sono considerati allo stesso modo; ai suggerimenti più probabili viene data maggiore importanza. Per illustrare questo punto, abbiamo aggiunto la fiducia di conferma alla simulazione. Le transazioni con una fiducia superiore al 95% sono mostrate con un bordo spesso intorno a loro.

Nel groviglio di cui sopra, la transazione 9 è approvata da due dei quattro tip. Se usassimo una selezione casuale uniforme del tip, avremmo una fiducia del 50% esatto. Tuttavia, i tip che la approvano sono apparentemente più probabili dei tip che non lo fanno, il che aumenta un po’ la fiducia.

Ora è chiaro come Bob e Charlie possono capire quando è sicuro inviare il loro T-Rex ad Alice. Una volta che la transazione di Alice raggiunge una soglia di fiducia molto alta, ad esempio il 95% successivamente è molto improbabile che venga esclusa dal consenso. Dovremmo stare attenti e dire molto improbabile, piuttosto che impossibile; se Alice vuole barare, e ha abbastanza potenza di calcolo, può cercare di raddoppiare le spese.

Per fare questo, emetterà una transazione pagando Charlie, invece di Bob. Dovrà approvare due vecchie transazioni con essa, che non fanno riferimento al suo pagamento a Charlie. Poi inizierà ad emettere quante più transazioni possibile, cercando di aumentare il peso cumulativo della sua nuovo ramo. Se ha abbastanza potenza di calcolo, può acquisire fiducia da tutta la rete IOTA per seguire il suo uovo ramo, riscrivendo così la storia e raddoppiando con successo la spesa. Se guardiamo al livello di confidenza della sua transazione con Bob, lo vedremo scendere dal 95% a zero.

Questo attacco è illustrato nel Tangle sottostante, con il tempo che scende verso il basso:

Questo scenario è un rischio solo se Alice è in grado di inviare più transazioni di tutte le altre operazioni combinate o con un valore vicino ad esso. Anche se non è un rischio importante in una rete matura e attiva, è un problema reale per l’IOTA di oggi. Non ci sono abbastanza transazioni che attraversano il sistema per essere al sicuro da un attacco concentrato a doppia spesa.

Dal momento che l’IOTA è stato costruito per la scalabilità utilizziamo un meccanismo di consenso diverso, volontario e temporaneo, per motivi di sicurezza: il coordinatore. Ogni due minuti, la Fondazione IOTA emette un’operazione fondamentale, e tutte le transazioni approvate dalla Fondazione IOTA sono considerate come se avessero una fiducia di conferma del 100%, immediatamente. Utilizzando il coordinatore, la seconda transazione di Alice non sarà mai stata approvata in primo luogo. Questo agisce come un meccanismo di protezione, mentre la rete IOTA continua a crescere verso l’attività necessaria dall’adozione necessaria per mantenere la rete sicura in modo decentralizzato al 100%, dove interviene l’algoritmo di consenso distribuito Tangle completo. A quel punto la Fondazione IOTA chiuderà il Coordinatore e lascerà che il Tangle si evolva completamente da solo. Questo avverrà in fasi iterative. Quando la rete sarà abbastanza matura per liberarsi del Coordinatore, la rete diventerà istantaneamente più efficiente.

Voglio ringraziare tutti coloro che hanno seguito questa serie. Mi sono divertito molto a scriverlo e a rispondere ai vostri commenti e alle vostre domande. Sarò felice di accettare richieste di post di follow-up su argomenti più avanzati. Alcuni candidati sono vettori di attacco al Tangle, una spiegazione di come viene definita l’alfa, ottimizzazioni pratiche all’algoritmo di selezione dei tip e qualsiasi altra cosa di cui volete saperne di più.

Siete invitati a scrivermi su Discordi: @alongal#3938.

Parte 1: Introduzione illustrata al Tangle
Parte 2: Tassi di transazione, latenza e passeggiate aleatorie
Parte 3: Pesi cumulativi e passeggiate aleatorie ponderate
Parte 4: Approvazioni, saldi e doppie spese


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/the-tangle-an-illustrated-introduction-79f537b0a455


Da oggi è possibile dare il vostro supporto su Patreon https://www.patreon.com/antonionardella

Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia libera traduzione, accetto volentieri delle donazioni 😉

IOTA:
QOQJDKYIZYKWASNNILZHDCTWDM9RZXZV9DUJFDRFWKRYPRMTYPEXDIVMHVRCNXRSBIJCJYMJ9EZ9USHHWKEVEOSOZB
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79

Non garantisco nulla e mi libero da ogni responsabilità.


Also published on Medium.