Di seguito l’articolo di Serguei Popov, matematico e co-fondatore della IOTA Foundation sul Tangle.

Con la ricerca, lo sviluppo e l’ecosistema attorno al progetto IOTA che stava davvero iniziando a prosperare, e con quasi tre anni passati da quando è stato annunciato per la prima volta al mondo, ha pensato che sarebbe stato un buon momento per riflettere su come siamo arrivati qui. Questo post ha lo scopo di gettare un po ‘di luce sulla storia del progetto IOTA e sul perché è stato scelto l’approccio di ricerca e sviluppo attuale.

Una breve storia del Tangle e del progetto IOTA

DAG

Il White Paper del Tangle — Versione -3.0

Circa quattro anni fa alcune delle idee su un’architettura di ledger distribuito basata su un Grafo Aciclico Diretto (al contrario di una catena) iniziarono a essere discusse su vari forum Nxt e Bitcointalk. Il problema della scalabilità della blockchain, che è venuto veramente alla coscienza molti anni dopo, era già ben compreso all’epoca. Non è incredibilmente difficile vedere che la catena di blocchi di dimensioni finite, che può essere prodotta solo ad intervalli di tempo discreti regolari, produce un collo di bottiglia in termini di throughput (capacità di trasmissione effettivamente utilizzata in un canale di trasmissione) e comporta elevati costi di transazione che devono essere pagati ai minatori (come da progettazione). Se si desidera rimuovere le tariffe e consentire la scalabilità del sistema, l’idea naturale sarebbe quindi quella di eliminare il collo di bottiglia ed i minatori.

Questo è, ovviamente, più facile a dirsi che a farsi – solleva ogni sorta di nuove domande. Dove dovrebbe essere collegato il prossimo blocco/transazione/vertice? Chi controllerà le transazioni per coerenza e per quale motivo? Come può essere sicuro contro possibili attacchi? Come si raggiungerà il consenso? Queste domande non hanno risposte banali. È stato solo dopo oltre un anno di intense analisi, discussioni e riflessioni che i fondatori di IOTA hanno avuto l’idea di un’architettura che potesse potenzialmente risolvere questi problemi. In questo sistema, ogni transazione (rappresentata da un vertice nel grafico) approverà due transazioni precedenti che seleziona utilizzando una particolare classe di passeggiata aleatoria (random walk). Questo è diventato il modello matematico che tutti conosciamo come il Tangle e funge da base per il protocollo di base IOTA. Sono trascorsi quasi tre anni da quando è stata pubblicata la prima bozza del white paper del Tangle che descrive questo modello matematico e da allora ha assunto una vita a parte – il white paper originale ha subito molte revisioni grazie alle molte persone che hanno suggerito numerosi miglioramenti (vedi la sezione “Riconoscimenti” alla fine – dove si coglie l’occasione per ringraziare tutte le persone che hanno fornito un feedback inestimabile), è stato citato numerose volte in altri documenti di ricerca, e ha generato un numero sempre crescente di articoli successivi (follow-up papers) scritti sia dai ricercatori della IOTA Foundation che indipendenti i quali continuano ulteriormente ad indagare sulle le proprietà di questa architettura unica nel suo genere.

blockchain vs tangleL’obiettivo era quello di creare un sistema decentralizzato in grado di ridimensionare ed eliminare le commissioni di transazione: un compito difficile. Per eliminare le commissioni di transazione, era prima necessario eliminare i minatori – dopotutto, se si vuole progettare un sistema feeless, non si può avere una dicotomia di “minatori” che servono i “semplici utenti”. Questa biforcazione dei ruoli tra i minatori e i transattori porta naturalmente a commissioni di transazione perché i minatori hanno una sorta di risorsa che gli altri non hanno ed useranno questo potere di monopolio per estrarre gli affitti (sotto forma di commissioni di transazione, premi a blocchi od entrambi). Pertanto, per eliminare le commissioni, tutti gli utenti (cioè, voi) dovrebbero arrangiarsi. L’idea era di creare un sistema in cui il principio principale fosse “Aiuta gli altri, e gli altri ti aiuteranno” (puoi pensarlo come un modello di pagamento pay-it-forward – paga per il prossimo).

Puoi aiutare gli altri approvando le loro transazioni; altri possono aiutarti approvando le tue transazioni. Chiamiamo ‘tip’ le transazioni che non hanno ancora alcuna conferma; Tutte le transazioni in arrivo sono tip all’inizio. L’idea è che, approvando una transazione, siano approvate anche indirettamente tutte le sue transazioni “precedenti”. È intuitivamente chiaro che per aiutare il sistema a progredire, le transazioni in entrata devono approvare tip perché ciò aggiungono nuove informazioni al sistema. Tuttavia, a causa dei ritardi della rete, non è pratico imporre che ciò avvenga: come si può essere sicuri che ciò che si ritenga essere un tip non sia già stato confermato da qualcun altro forse 0,1 secondi fa?

Invece, si tratta solo delle strategie di approvazione – a volte (beh, di fatto, la maggior parte delle volte) si usa il termine “selezione tip”, ma è importante notare che i partecipanti alla rete non sono obbligati a selezionare i tip; sarebbe oppurtuno imporre che tutti lo facciano, solo che non è possibile. Se tutti collaborassero con tutti – approvando solo transazioni recenti e buone (non contraddittorie), allora andrebbe tutto bene. D’altra parte, per una persona che si preoccupa solo di sé, una strategia naturale sarebbe semplicemente quella di scegliere un paio di vecchie transazioni ed approvarle in continuazione senza dover fare il lavoro più pesante di controllare le nuove transazioni per coerenza aggiungendo in tal modo nuove informazioni al sistema. Se tutti si comportassero in questo modo, non verrebbero approvate nuove transazioni e la rete effettivamente si fermerebbe. Pertanto, se vogliamo che funzioni, dobbiamo incentivare i partecipanti a collaborare ed approvare le transazioni recenti degli altri.

Sì, ancora una volta, alla fine, si concentra tutto sugli incentivi. Tutti vogliono essere aiutati dagli altri, ma non tutti si preoccupano di aiutare gli altri. Per risolvere questo problema senza dover introdurre ricompense monetarie, si potrebbe invece pensare ad una semplice ricompensa: non essere puniti dagli altri. È necessario modificare leggermente il principio principale – ora si legge: “Aiuta gli altri e gli altri ti aiuteranno; tuttavia, se scegli di non aiutare gli altri, anche gli altri non ti aiuteranno”. Quando una nuova transazione fa riferimento a due transazioni precedenti, è una dichiarazione del genere “Garantisco per queste transazioni per le quali non ci sono garanzie precedenti, così come tutti i loro predecessori, ed il mio destino è legato al loro destino.” Sfortunatamente come esseri umani, nessuno di noi ha la possibilità scegliere i nostri genitori e discendenza, ma nel mondo di IOTA è possibile – e si consiglia di scegliere saggiamente 😉. Nell’ambiente IoT è ragionevole presumere che una buona proporzione dei partecipanti alla rete seguirà la “raccomandata” strategia di selezione dei tip (da chi? Da m̶e̶ ̶C̶o̶m̶e̶-̶f̶r̶o̶m̶-̶B̶e̶y̶o̶n̶d̶  della IOTA Foundation, ovviamente 😊). Il nostro compito è quindi quello di progettare questa strategia in modo tale che sia vantaggioso utilizzarla per tutti (a condizione che almeno una buona parte degli altri facciano altrettanto). Dopo molte discussioni e tentativi falliti, è stato concluso che l’algoritmo di selezione tip Markov Chain Monte Carlo (MCMC) (più precisamente, la famiglia degli algoritmi di selezione tip) nel cuore del Tangle avrebbe avuto queste proprietà.

Quale scopo ha un modello matematico?

Definizione matematica

Una definizione formale del modello matematico del Tangle

Il Tangle come modello matematico è contemporaneamente molto semplice ed incredibilmente complicato. È molto semplice perché esiste una sola regola che viene realmente imposta: una transazione deve approvare (convalidare) due transazioni precedenti. È incredibilmente complicato perché i nodi della rete sono liberi di scegliere queste due transazioni come preferiscono, e questo può rendere la topologia (a grandi linee, il modo in cui le transazioni sono collegate l’una con l’altra) del Tangle molto disordinata. Anche supponendo che tutti seguano la stessa strategia di selezione dei tip, il grafo risultante è casuale, con una struttura alla quale è piuttosto difficile accedere. Come argomentato nel paper, una buona scelta della strategia di selezione dei tip sta facendo una “passeggiata casuale verso i tip” (nota anche come MCMC) – quindi, matematicamente parlando, abbiamo a che fare con catene Markov in ambienti casuali, e modelli di questo tipo sono notoriamente difficile. I processi di Markov in ambienti casuali sono uno degli argomenti principali della ricerca di “matematica pura” di Serguei Popov.

Se qualcuno pensa che in realtà non sia così difficile, che provino a dimostrare la stabilità del numero di tip per alpha = 0. Per essere precisi, supponiamo che la selezione dei tip sia fatta da una semplice passeggiata casuale verso i tip (quindi è indipendente dai pesi cumulativi), e dimostrare che il numero atteso di tip al tempo t è delimitato in modo uniforme da una costante. È qualcosa che sembra quasi intuitivamente ovvio, ed è in effetti confermato da simulazioni, ma provate a dimostrarlo rigorosamente. Questo può essere fatto – il suo ex studente, Darcy Camargo, è stato in grado di farlo solo di recente (una dimostrazione molto impressionante della sua abilità matematica). E, se quanto sopra sembra troppo facile per voi, provate a dimostrare la Congettura 1.1 in Equilibri nel Tangle.

Ma sul tema delle dimostrazione – come forse sapete, Serguei Popov è un matematico di ricerca che lavora nell’area dei processi di Markov e correlazioni. Ha dimostrato molti teoremi nella sua vita. Venendo da lui, questo può sembrare particolarmente sorprendente, ma ricordate: non sopravvalutare l’importanza delle dimostrazioni matematiche nel mondo reale. OK, le dimostrazioni sono importanti e, cosa ancora più importanti, le dimostrazioni sono frequentemente belle. Ma, per dimostrare qualsiasi cosa, è necessario prima di tutto impostare un modello matematico basato su ipotesi, e questi modelli non riflettono mai la realtà in maniera completamente accurata. Il mondo reale è troppo complesso e complicato per queste ipotesi semplificative. Gli altri fondatori che lavorano al progetto IOTA e Serguei hanno sempre apprezzato il fatto che per progettare e costruire qualcosa per il mondo reale, sarebbe necessario un processo di sviluppo iterativo, tramite l’avviamento dello sviluppo con alcuni binari di sicurezza lungo il percorso (e.g. il coordinatore), e nel mentre analizzare, criticare e migliorare continuamente la comprensione del sistema. Questa è semplicemente la natura dell’ingegneria. Un protocollo come IOTA non vive su un pezzo di carta o su una lavagna, ma nel mondo reale dove molte delle ipotesi di un modello matematico astratto – il Tangle – si disgregano.

Cianografia Aereo Fratelli Wright

Cianografia della prima “macchina volante” dei fratelli Wright

Modelli matematici, dimostrazioni e teoremi possono essere estremamente preziosi, ma è anche molto importante apprezzarne i limiti. Qualsiasi white paper che affermi di aver provato tutto sul comportamento di un sistema che esisterà non come un’idea astratta, ma piuttosto come implementazione nel mondo reale, è o chiaroveggente o (più probabile) semplicemente ingenuo. Si può provare a scrivere le specifiche tecniche e provare ogni aspetto del design e della sicurezza di un aeroplano, ma finché non è stato effettivamente costruito e si può vederlo volare, si deve prestare attenzione prima di fare affermazioni radicali sulla sua prontezza al volo.

Inoltre, anche nel contesto di modelli matematici, non è raro che un’affermazione sia ampiamente ritenuta vera, ma non è nota alcuna prova – ne esistono numerosi esempi in matematica e fisica matematica (in oltre, Seguei ricorda umilmente che tutta la crittografia a chiave pubblica odierna si basa su ipotesi non dimostrate?). Per complicare ulteriormente la situazione, in questo contesto sono necessari risultati quantitativi. Non è sufficiente per dimostrare che, ad esempio, “con probabilità 1, qualsiasi transazione verrà eventualmente confermata”. Per illustrare cosa si intende con questo esempio, si deve considerare la seguente “dimostrazione” dell’affermazione: “Bitcoin è rotto (broken)“: infatti, dato un indirizzo, si può semplicemente prova casualmente ad indovinare la chiave privata corrispondente; dal momento che ce ne sono finitamente molti, eventualmente ci sarà un successo con probabilità equivalente ad 1. 😎

Per favore non fraintendetelo: quanto sopra non è, in alcun modo, la licenza per smettere di interessarsi alle dimostrazioni.

Ma quando non abbiamo una dimostrazione matematica rigorosa di una dichiarazione desiderata come “Il Tangle è probabilmente sicuro”, (o forse lo si fa, ma nel contesto di un modello matematico semplificato), questo significa che è necessario lavorare sodo per trovare quelle non matematiche. Eseguire molte simulazioni di tutto, costruire altri modelli matematici che sono più adeguati e/o rintracciabili, immaginare ogni possibile tipo di attacco al sistema e scoprire perché non funzioneranno (o capire perché lo faranno e poi fare emendamenti per difendersi loro), e così via. Inoltre, dobbiamo incentivare la ricerca esterna su tutto questo (aspettatevi presto notizie interessanti in questa direzione) (ed altre traduzioni n.d.r. se non superano i miei limiti di comprensione 😉 ).

Introduzione dei modificatori locali

A proposito di emendamenti ai modelli matematici, alcuni di voi potrebbero aver notato il documento “Modificatori locali nel Tangle (Local modifiers in the Tangle, in lingua inglese)” che è stato recentemente pubblicato sulla pagina di ricerca accademica su www.iota.org. È una bozza che circola nella Fondazione da diversi mesi; la versione che pubblicata è stata spogliata di alcuni commenti seri-ma-incompleti-di-matematica e ad “uso interno”. L’abstract della paper recita::

Ad oggi, esistono molti sistemi di criptovaluta in circolazione. Per lo più condividono una caratteristica comune: tutti i partecipanti alla rete interpretano lo stesso ledger allo stesso modo. In questo articolo, introduciamo l’idea dei modificatori locali: i nodi della rete possono interagire con il ledger in diversi modi, a seconda dei vari tipi di informazioni disponibili a livello locale. Quindi sosteniamo che tale approccio consente di aumentare la sicurezza e la scalabilità del Tangle.

catena parassita

Rappresentazione grafica di un attacco “catena parassita”

Quello si cerca di fare in quel documento è di rafforzare ulteriormente l’algoritmo di selezione dei tip, introducendo anche la “visione locale dei nodi” (in particolare, il momento in cui un nodo ha ricevuto una particolare transazione). Questo approccio sembra essere piuttosto efficace contro molti attacchi del tipo “fare-qualcosa-segretamente-poi-trasmettere” (questi includono l’attacco “catena parassita” a doppia spesa e anche l’attacco “scissione” descritto nel white paper del Tangle). È importante sottolineare che non si cerca di sostituire l’algoritmo di selezione dei tip MCMC, ma piuttosto, nello spirito di sviluppo iterativo, di modificarlo nello spirito “dell’inseguimento senza fine” per migliorare il protocollo e renderlo più sicuro.

Mentre c’è ancora molta ricerca da fare su modificatori locali prima che si possa dire con sicurezza se sono un miglioramento dell’algoritmo di selezione tip esistente e che saranno incorporati nella strategia di selezione dei puntali IOTA raccomandata, si condivide la ricerca e sviluppo presto e spesso nello spirito e nell’ethos dell’open source. In tal modo, si da l’opportunità a questo straordinario ecosistema di ricercatori e sviluppatori per aiutare a contribuire all’evoluzione del protocollo. In effetti, il progetto IOTA non sarebbe arrivato da nessuna parte oggi se non fosse per questi contributi al progetto dall’ecosistema IOTA.

Solo la fine dell’inizio

Costruire un protocollo per abilitare lo scambio sicuro, senza commissioni e decentralizzato di dati per l’Internet of Things (IoT) non è qualcosa che accade in una notte, in un anno o anche in tre anni. Non è qualcosa in cui tutte le proprietà desiderate (sicurezza, “un buon” Nash Equilibrium, scalabilità, ecc.) Possono essere dimostrate in un white paper. E non è qualcosa che si può fare nella cattedrale. Le idee descritte nel white paper di Bitcoin sono state davvero brillanti ed è assolutamente straordinario vedere quale è stata la manifestazione di queste idee oggi. Ma anche il grande Satoshi Nakamoto (chiunque lui/lei/loro/essi fossero) non ha considerato alcuni difetti cruciali nel design di Bitcoin. Per raggiungere la visione di rendere IOTA il protocollo spina dorsale (backbone) per l’IoT, i ricercatori e gli ingegneri della IOTA Foundation, così come tutti i ricercatori indipendenti e gli ingegneri dell’ecosistema IOTA che contribuiscono al progetto, devono fare tutto il possibile per assicurati che il protocollo di base IOTA sia veramente costruito per durare. Come per lo stesso Protocollo Internet, la ricerca sul protocollo IOTA non finirà mai, ci sarà sempre spazio per miglioramenti, e dovrà evolversi per soddisfare le mutevoli esigenze di un mondo in continua evoluzione. Questa è semplicemente la natura di qualsiasi protocollo perché un protocollo non è altro che un linguaggio condiviso: un insieme di regole comunemente accettato che ci consente di condividere informazioni e, nel caso dello IOTA, anche di valore. Come ogni lingua, però, sono cose viventi e si evolvono nel tempo. Con l’incredibile team riunito alla IOTA Foundation ed il fiorente ecosistema di ricercatori, sviluppatori, aziende ed altri contributori al progetto, si sa che è possibile costruire IOTA per soddisfare le esigenze del settore Internet of Things ed aiutarlo ad evolvere il potere dell’economia delle macchina del futuro.

Il testo originale in inglese si trova qui: https://blog.iota.org/on-the-tangle-white-papers-proofs-airplanes-and-local-modifiers-44683aff8fea


Per ulteriori informazioni in italiano o tedesco trovate i miei contatti a questa pagina.
Se avete trovato utile la mia traduzione, accetto volentieri delle donazioni 😉
IOTA:
CHQAYWPQUGQ9GANEWISFH99XBMTZAMHFFMPHWCLUZPFKJTFDFIJXFWCBISUTVGSNW9JI9QCOAHUHFUQC9SYVFXDQ9D
BTC:
1BFgqtMC2nfRxPRge5Db3gkYK7kDwWRF79
Non garantisco nulla e mi libero da ogni responsabilità.


Also published on Medium.