Interessantissimo articolo di Clara Shikhelman sulla validità delle transazioni sul Tangle.

Questo articolo discute come possiamo valutare la validità di una transazione in un libro mastro distribuito (distributed ledger o come lo chiama il Ministero dello Sviluppo Economico: registro distribuito) e le questioni particolari che affrontiamo nel caso del Tangle.

Per cominciare, diamo un’occhiata alle strutture di dati blockchain. In una blockchain, prima che gli utenti aggiungano un nuovo blocco al termine della catena (chain), si assicureranno che tutte le transazioni nella catena siano valide. Validità significa che in ciascuna transazione, il pagatore deve disporre dei fondi necessari e non è possibile creare monete al di fuori delle specifiche del protocollo. Questo è reso semplice dal fatto che i blocchi sono ordinati nel tempo e le transazioni sono ordinate all’interno dei blocchi (dai minatori) – questo rende il confronto dei tempi di due transazioni relativamente semplice. Ad esempio, se Alice inizia con un portafoglio vuoto, la transazione “Alice ottiene 3 monete” deve precedere la transazione “Alice dà 3 monete”, altrimenti quest’ultima non è valida.

Come si differenzia il Tangle?

Proprio come una blockchain, una condizione necessaria affinché una transazione sia valida è che il pagatore abbia ricevuto la moneta prima di effettuare il pagamento. Tuttavia, poiché il Tangle è un grafico aciclico diretto (DAG – directed acyclic graph), la questione dell’ordinamento temporale diventa non banale. La struttura del DAG rende difficile, o talvolta impossibile, risolvere se un pagatore ha ricevuto monete prima di spenderle.

Prendiamo il caso di 2 transazioni A e B. In una transazione blockchain, ci sono solo due opzioni riguardanti il ​​loro ordine. A è stata inviata prima di B o A avviene dopo B. Tuttavia, in un DAG, abbiamo anche la possibilità che due transazioni non siano confrontabili (cioè, non sappiamo quale sia stata trasmessa prima).

transazioni nel DAG

Per continuare la nostra discussione, concordiamo su alcuni concetti preliminari. Innanzitutto, consideriamo la validità come uno stato di una transazione, esaminata nel contesto dello stato corrente del Tangle. Cioè, qualsiasi funzione che decide se una transazione è valida o meno, deve prendere in considerazione sia la transazione stessa che il Tangle in cui vive.

In secondo luogo, l’unica cosa per cui una transazione è responsabile è il cono delle transazioni passate, cioè tutte le transazioni che approva direttamente o indirettamente.

Cono di transazioni di A

Quando un utente sceglie quali transazioni approvare, controlla la validità delle transazioni analizzandone i coni (la parte della Tangle cui fanno riferimento queste transazioni) e può ignorare il resto del Tangle.

Ogni transazione in un cono implica il movimento di token da un account all’altro. Per valutare la validità, applichiamo tutti questi movimenti allo stato Genesi per generare uno stato aggiornato dei portafogli (wallet) e dei loro saldi. Chiameremo questo stato accettabile se tutti i saldi non sono negativi (e.g., i saldi degli indirizzi non possono contenere valori negativi, solo zero o positivi) e la somma dei saldi è uguale al numero di token creati nella Genesi.

Ora approfondiamo le proprietà che una transazione e il suo cono dovrebbero avere per considerare la transazione come valida. Ci sono molte opzioni per tali proprietà. Qui ne consideriamo tre:

1. La proprietà minima

Nel momento in cui un utente onesto (anche se egoista) invia una transazione, dovrebbe possedere i fondi che sta spendendo. Cioè, in un sistema sano, ci aspettiamo che gli utenti abbiano i soldi “in tasca” prima di provare a darli a qualcun altro.

Avere fondi sufficienti è la condizione più elementare. Affinché una transazione sia considerata valida, ci aspettiamo che dopo tutte le sue transazioni coniche vengano applicate allo stato Genesis, otteniamo uno stato accettabile. Questa proprietà è minima, nel senso che qualsiasi altra proprietà ragionevole che troveremo soddisferà questa proprietà.

2. La proprietà “buona passeggiata aleatoria”

Questa proprietà si presenta in modo piuttosto naturale quando si implementa il Tangle. Come sappiamo, per scegliere due transazioni, l’utente esegue due passeggiate aleatorie partendo dalla Genesis fino a quando arrivano ad un tip (transazione) considerato “valido”. Sarebbe un peccato andare dalla Genesi fino al tip solo per scoprire che non va bene.

Per risparmiare tempo e cuori infranti su cattivi tip, un utente può verificare che ogni transazione su cui la passeggiata casuale procede abbia la “proprietà minima” spiegata sopra. Questo significa che per ogni transazione sulla via, dopo aver applicato il cono di questa transazione allo stato Genesis, lo stato che otteniamo è accettabile.

3. La proprietà massima

La proprietà più rigida che possiamo esigere da una transazione è che ogni transazione nel suo cono abbia la proprietà minima. Oltre a ottenere uno stato accettabile per la transazione finale o le transazioni che abbiamo visto sul percorso, controlliamo anche di ottenere uno stato accettabile per qualsiasi transazione che approviamo, direttamente od indirettamente.

Quindi, se gli utenti approvano una transazione, devono assumersi una certa responsabilità sui fondi in quella transazione, anche se tali fondi non sono coinvolti nella nuova transazione che stanno aggiungendo. Questa proprietà è massima, nel senso che qualsiasi proprietà ragionevole a cui possiamo pensare non può chiedere di più dal cono di quanto detto sopra.

Quindi quale proprietà è buona, quale brutta e quale è cattiva?
Bene, l’unica cosa che possiamo chiaramente dire è che la proprietà “buona passeggiata aleatoria” è cattiva, anche se attraente dal punto di vista dell’implementazione. Il problema con esso è il seguente. Se tutti gli utenti concordano su questa proprietà, potrebbe essere che due utenti non siano d’accordo sulla validità di una determinata transazione perché la casualità delle loro passeggiate li ha portati in due percorsi diversi. Poiché vorremmo che gli utenti onesti fossero d’accordo l’uno con l’altro il più possibile, questa proprietà è decisamente cattiva.

Per quanto riguarda le altre due – numerose ore e litri di inchiostro elettronico sono entrati nella discussione di quale sia il buono (e quale il brutto Non siamo stati in grado di trovare un attacco che permetta la proprietà minima o un caso d’uso che impedisce la proprietà massima, il che lascia molto spazio alla discussione senza un chiaro tie breaker. Abbiamo le nostre idee, ma vi incoraggiamo a pensare ed a condividere le vostre e forse scopriremo la proprietà unica per dominarle tutte.


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/validity-in-the-tangle-the-good-the-bad-and-the-ugly-98bd3b53408a


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.