Snaphot locali: Un nuovo articolo dal blog degli sviluppatori della IOTA Foundation. In questo caso Hans Moog ci aggiorna sullo stato degli snapshot locali.

Un aggiornamento dello stato di sviluppo

Negli ultimi mesi, la rete IOTA ha visto un aumento significativo dell’attività, in quanto sempre più sviluppatori stanno iniziando ad implementare soluzioni basate sul Tangle. Mentre questo è uno sviluppo molto promettente, che riflette la crescente adozione del protocollo IOTA, comporta anche un aumento delle dimensioni del database, questo può essere problematico per i nodi con risorse hardware limitate.

La Fondazione IOTA esegue regolarmente snapshot globali, in base alle quali la cronologia delle transazioni viene eliminata ed i saldi risultanti vengono consolidati in un nuovo stato di genesi, consentendo così il riavvio dei nodi con un database vuoto. Tuttavia, questo modo di gestire una dimensione di contabilità crescente sta diventando sempre meno pratico in quanto impone di:

  • Fermare temporaneamente il coordinatore
  • Genera lo stato dell’istantanea
  • Dai alla comunità il tempo di verificare i file generati
  • E infine riavviare il coordinatore

La soluzione: Snapshot locali

Per risolvere questo problema, hanno lavorato sull’implementazione di una funzione chiamata Snapshot locali. Questa è sempre stata una parte centrale della Roadmap del protocollo IOTA. L’implementazione iniziale sarà ora testata internamente e ci terrannno aggiornati con informazioni sui passaggi successivi, ma prima è necessario esaminare tutte le modifiche implementate e raccogliere metriche sufficienti sul comportamento di questa nuova funzionalità.

Output della console durante lo snapshot locale

Output della console durante lo snapshot locale

Cosa significa questo per gli operatori di nodi?

Prima di approfondire gli aspetti tecnici degli snapshot locali, troviamo qui un breve riepilogo delle modifiche apportate da questa nuova funzionalità per operatori dei nodi:

  • Durante l’attivazione di un nuovo nodo è possibile eseguire la sincronizzazione in base ad un file di snapshot locale di piccole dimensioni, che consente di sincronizzare completamente i nodi in pochi minuti (anziché eseguire il bootstrap del nodo con un file di database di grandi dimensioni)
  • I requisiti del disco per i nodi sono enormemente ridotti, infatti abbiamo già nodi con poche centinaia di megabyte di spazio su disco
  • Dal momento che non ci sarà più bisogno di snapshot globali, i nodi potrebbero teoricamente funzionare per anni senza manutenzione
  • I nodi dovrebbero essere in grado di gestire migliaia di transazioni al secondo, senza che le dimensioni del database diventi un problema

Come funziona?

Per comprendere il funzionamento degli snapshot locali, dobbiamo prima chiarire alcune cose sul funzionamento del Tangle:

  • Il Tangle è una struttura di dati che ha, statisticamente parlando, delle incertezze ai suoi tip (nuove transazioni) ma acquisisce certezza con il passare del tempo (n.d.t. per approfondire consiglio di leggere #IOTA #Tangle transazione, conferma e consenso)
  • Di conseguenza, più si torna indietro nel tempo meno è probabile che una transazione non confermata diventi improvvisamente parte del consenso. Questo è il motivo per cui è necessario “ricollegare” le transazioni se sono state in sospeso per troppo tempo
  • Per verificare le transazioni e prendere parte al consenso di IOTA, è necessario conoscere solamente la cronologia recente delle transazioni in sospeso e lo stato corrente (saldi) del libro mastro (ledger).

Il principio di base degli snapshots locali è relativamente facile da comprendere e può essere suddiviso in diversi aspetti:

Elimnazione delle vecchie transazioni e mantenimento del saldo

  • Per prima cosa selezioniamo una transazione confermata sufficientemente vecchia e usiamo questa transazione come “àncora” per lo snapshot locale
  • Successivamente, si eliminano tutte le transazioni direttamente o indirettamente referenziate da questa transazione e si pulisce di conseguenza il database
  • Prima di pulire le vecchie transazioni, controlliamo quali saldi sono stati influenzati da loro e manteniamo lo stato risultante del libro mastro in un file di snapshot locale, che viene quindi utilizzato dall’IRI come nuovo punto di partenza.

Punti di ingresso solidi (sincronizzazione rapida per i nuovi nodi)

Mentre l’eliminazione delle vecchie transazioni non è un problema per i nodi che sono già completamente sincronizzati con la rete, pone un problema ai nuovi nodi che tentano di accedere alla rete, poiché non sono più in grado di recuperare facilmente la cronologia completa delle transazioni risalente all’ultima istantanea globale.

Anche supponendo che siano in grado di recuperare la cronologia completa contattando i permanodes (nodi permanenti) per ottenere le transazioni mancanti, ci vorrebbe ancora molto tempo per raggiungere l’ultimo stato del libro mastro. Questo problema non è nuovo ed è uno dei motivi per cui molti operatori di nodi eseguono il bootstrap dei loro nodi con una copia del database da un altro nodo sincronizzato.

Per risolvere questo problema, utilizziamo i file dello snapshot locale non solo come modo per mantenere lo stato del nodo ma anche per consentire ai nuovi nodi di iniziare le loro operazioni in base ad esattamente lo stesso file (che può essere condiviso dalla comunità e dall’IF ad intervalli regolari).

Per poter eseguire il bootstrap di un nuovo nodo con un file di snapshot locale, è necessario archiviare qualche altro dettaglio rispetto ai soli saldi:

  • Prima di tutto un nuovo nodo in fase di sincronizzazione deve sapere a che punto può smettere di solidificare una catena di transazioni e considerare esclusivamente il solido del sub-tangle. Per essere in grado di farlo, determiniamo quale delle transazioni che abbiamo cancellato, hanno approvatori che non sono rimasti orfani ed archiviamo i loro hash in un elenco di “punti di ingresso solidi”
  • Quando un nodo raggiunge uno di questi hash, smette di chiedere l’approvazione e contrassegna la transazione come solida (come la transazione 999999 … .99 dopo uno snapshot globale)

Questo ci consente di utilizzare i file di snapshot locali come meccanismo di bootstrap per ottenere un nuovo nodo sincronizzato molto rapidamente (in pochi minuti), che allo stesso tempo è molto più facile da fornire e recuperare rispetto ad una copia dell’intero database.

Pietre Miliari viste (sincronizzazione ancora più veloce)

  • Sebbene punti di ingresso solidi ci consentano di interrompere il processo di consolidamento il prima possibile, ci vuole ancora un po’ per conoscere tutte le fasi successive che si sono verificate dopo il punto di cut-off scelto
  • Dal momento che vogliamo che i file di snapshot locali siano un modo utilizzabile ed efficiente di eseguire il bootstrap di un nuovo nodo, salviamo anche tutti gli hash delle pietre miliari successive nei file di snapshot locali, in modo che i nuovi nodi possano chiedere immediatamente le milestone (pietre miliari) mancanti, senza dover attendere passivamente il loro nodi vicini (neighbors) per trasmetterli

Permanodes

Poiché l’eliminazione dei dati sarà controllata da una semplice impostazione di configurazione, sarà ora possibile gestire dei permanodes (nodi permanenti) che mantengono l’intera cronologia delle transazioni, impossibile fino ad ora a causa del fatto che gli snapshot globali erano un evento a livello di rete.


L’intera procedura di acquisizione di snapshot locali viene quindi ripetuta automaticamente per consentire ai nodi di funzionare con un requisito di spazio relativamente costante senza interventi di manutenzione non necessari.

Sommario

L’imminente funzionalità di Local Snapshots non risolverà solo i problemi di spazio derivanti dalla crescente adozione di IOTA, ma semplificherà anche la configurazione dei nuovi nodi e consentirà alle organizzazioni ed ai membri della comunità di operare permanodes.

Questa funzionalità sarà aperta per i beta test nelle prossime settimane. Ulteriori informazioni saranno pubblicate nel canale #snapshots sul Discord di IOTA.
Grazie ad Alon Gal.


Il testo originale in lingua inglese si trova qui: https://blog.iota.org/coming-up-local-snapshots-7018ff0ed5db


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.