Chi entra e chi esce: un algoritmo di controllo del tasso di transazioni per il Tangle.

Luigi Vigneri della IOTA Foundation spiega in questo articolo la fase di ricerca sul Tangle post Coordicidio ed i possibili algoritmi di controllo utilizzabili per minimizzare le congestioni ed i colli di bottiglia.

Controllo del tasso del traffico nei registri distribuiti

Nella maggior parte delle reti, ci sono circostanze in cui il carico di traffico in entrata è maggiore di quello che la rete è in grado di gestire. Se non si fa nulla per limitare l’ingresso del traffico, i colli di bottiglia possono rallentare l’intera rete. Inoltre, lo spazio di buffer in alcuni nodi può essere esaurito, il che porta alla perdita di alcuni dei pacchetti. Simile ad un ingorgo autostradale, con l’aumento del carico, il throughput effettivo della rete diminuisce mentre il ritardo dei pacchetti diventa eccessivo. Pertanto, per evitare questo tipo di congestione è necessario un meccanismo che impedisca ad una parte del traffico di entrare nella rete.

Un’analisi simile può essere applicata ai registri distribuiti, dove il traffico in entrata, cioè le transazioni emesse dai nodi della rete, sfrutta risorse limitate come la larghezza di banda, la potenza di calcolo o lo spazio su disco. Inoltre, data la natura distribuita della rete, i nodi dannosi possono danneggiarla attraverso spam o attacchi di denial-of-service distribuito. Pertanto, un meccanismo di controllo del tasso di transazione è fondamentale per il corretto funzionamento dei registri distribuiti. Le blockchain tradizionali basate su Proof-of-Work sono dotate di un limite di tasso integrato, imposto dalla regolazione delle difficoltà del mining. Purtroppo, questa soluzione porta ad effetti collaterali indesiderati, come le gare sulla potenza del calcolo per il mining.

Sfide uniche per il Tangle

Al contrario, il Tangle non utilizza la prova del lavoro per raggiungere il consenso. Di conseguenza, è necessario un meccanismo esplicito di controllo dei tassi. Al di là del requisito standard della tecnica anti-spam contro i nodi dannosi, vogliamo progettare un algoritmo che raggiunga un certo grado di equità garantendo che i nodi con basse capacità computazionali abbiano ancora una probabilità non trascurabile di far approvare le loro transazioni. Come il lettore può immaginare, la correttezza aggiunge complessità ad un problema già non banale, ma riteniamo che sia un requisito fondamentale per accelerare l’adozione della tecnologia.

Un modo possibile per affrontare il problema del controllo delle tasso nel Tangle è quello di costruire un sistema di reputazione per i nodi che emettono transazioni. L’idea approssimativa è che la reputazione è difficile da ottenere, ma facile da perdere. Quando un nodo approva una transazione non valida, tenta di spammare la rete, od esegue un comportamento altrettanto negativo, rischia di essere identificato da altri nodi. Come risultato, quel nodo non sarà attendibile e le sue transazioni non saranno approvate con alta probabilità. Tuttavia, un sistema di reputazione è un approccio generale, quindi non specificamente mirato al controllo del tasso. Inoltre, date le sostanziali modifiche necessarie all’architettura, è necessario uno studio esaustivo (e quindi lungo) per evitare risultati inaspettati. Per queste ragioni, in questo post esaminiamo un approccio alternativo. In particolare, introduciamo un nuovo algoritmo di controllo adattivo del tasso basato sulle seguenti idee:

  • è necessario uno sforzo computazionale per emettere una transazione
  • lo sforzo computazionale necessario per emettere transazioni multiple in un breve intervallo di tempo aumenta progressivamente
  • mentre i nodi veloci possono emettere più transazioni più frequentemente, i nodi con poca potenza di calcolo hanno ancora la garanzia che le loro transazioni possono essere approvate con alta probabilità

Nei paragrafi che seguono, vengono discussi i due principali elementi costitutivi dell’algoritmo necessario per raggiungere gli obiettivi di cui sopra, cioè (i) la responsabilità del nodo per assegnare un’identità globale a ciascun nodo e (ii) l’attuale meccanismo di controllo adattivo del tasso basato sulla variabilità della difficoltà di Proof-of-Work.

Prova d’identità (Proof-of-Identity)

Per implementare un meccanismo di controllo del tasso in un sistema distribuito, è necessario introdurre l’identità globale dei nodi. Quando ogni nodo ha un’identità, la crittografia a chiave pubblica comune può essere utilizzata per firmare una transazione e per collegarla al suo nodo emittente in modo a prova di manomissione. Con l’introduzione di identità, un sistema distribuito diventa vulnerabile agli attacchi Sybil, dove un’entità maligna maschera molte identità contraffatte e le usa per superare il controllo del tasso per lanciare un attacco coordinato o spam sulla rete.

Un modo per rendere più difficile tale attacco è il cosiddetto test delle risorse (ad esempio, potenza della CPU, quota di partecipazione, spazio su disco), in cui ogni identità deve dimostrare la proprietà di determinate risorse difficili da ottenere. Per il nostro algoritmo, poiché gli utenti memorizzano una certa quantità di token (collaterale), proponiamo una versione semplificata di Proof-of-Stake. A differenza dell’idea originale, nella nostra proposta i collaterali non lasciano il possesso degli utenti e, quindi, non possono essere confiscati. Piuttosto, sono un requisito necessario per l’identità di ogni nodo. Qualsiasi nodo con un importo minimo di tale garanzia può emettere transazioni. La necessità di questo importo minimo apre un’interessante questione di ricerca. Da un lato, una soglia bassa permette a più utenti di emettere transazioni, ma non protegge a sufficienza contro la creazione di identità contraffatte.

D’altro canto, un’ampia soglia ridurrebbe drasticamente il numero di nodi potenziali partecipanti alla rete a scapito di una maggiore sicurezza. Lasciamo la discussione su questo compromesso come lavoro futuro.

Figura 1. Diagramma di blocchi dell’algoritmo di controllo adattivo del tasso proposto: in primo luogo, un nodo che riceve una transazione controlla se il mittente originale è autorizzato ad inviare ed emettere transazioni; poi, verifica se ha eseguito un numero sufficiente di prove di lavoro.

Algoritmo di controllo del tasso adattivo

Nell’algoritmo (vedi Figura 1) un nodo può emettere una transazione dopo aver risolto un puzzle crittografico, dove la difficoltà è funzione tra il collaterale posseduto ed il numero di transazioni emesse di recente. In un’architettura basata sul puro Proof-of-Work, un alto valore della difficoltà impedirebbe ai nodi a bassa potenza di emettere transazioni, il che non è auspicabile soprattutto nel contesto dell’Internet-of-Things; d’altra parte, una piccola difficoltà può facilmente portare alla congestione della rete. La proposta di Proof-of-Work adattivo permette ad ogni nodo di emettere transazioni e penalizzare le azioni di spamming. Una corretta scelta dei parametri di sistema è necessaria per garantire un certo livello di equità tra i nodi.

Come ulteriore misura di sicurezza, si richiede che il numero totale di transazioni emesse da un utente sia limitato. In particolare, più grande è la quota posseduta da un nodo, più alto è il numero di transazioni che lo stesso nodo può emettere. Questa soglia porta un duplice vantaggio: in primo luogo, assicura che anche un utente con una potenza di calcolo infinita non possa inviare arbitrariamente spam alla rete; in secondo luogo, una scelta corretta della soglia può scoraggiare gli attacchi Sybil.

Conclusioni

La discrepanza tra i dispositivi più piccoli per uso generale e l’hardware ottimizzato rispetto alle prestazioni del Proof-of-Work è nell’ordine di grandezza. Di conseguenza, qualsiasi controllo della velocità basato sul Proof-of-Work escluderebbe dispositivi più piccoli. Al contrario, un sistema puramente stake-based porterebbe ad una centralizzazione in cui solo i “ricchi” possono partecipare. In questo articolo, abbiamo discusso di un algoritmo di controllo della velocità che combina i due approcci di cui sopra: nodi lenti od utenti con basse garanzie possono emettere (poche) transazioni a prezzi economici, mentre allo stesso tempo gli utenti più veloci non possono inviare spam alla rete a causa di una limitazione al picco delle transazioni.



È possibile supportarmi 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à.


Originally published at Antonio Nardella.