È stato presentato il rilascio del sistema di file decentralizzato IPFS 0.9 (InterPlanetary File System), che forma un archivio globale versionato di file, distribuito sotto forma di rete P2P, composta dai sistemi dei partecipanti. IPFS combina idee precedentemente realizzate in sistemi come Git, BitTorrent, Kademlia, SFS e Web, e ricorda un'unica "sciame" di BitTorrent (peer coinvolti nella distribuzione), che scambia oggetti Git. IPFS si distingue per l'indirizzamento basato sul contenuto, piuttosto che sulla posizione, e per i nomi arbitrari. Il codice di riferimento di implementazione è scritto in linguaggio Go e distribuito con licenze Apache 2.0 e MIT.
Nella nuova versione:
- Nelle gateway è stata implementata la possibilità di caricare grafi IPLD (InterPlanetary Linked Data, uno spazio dei nomi per l'indirizzamento delle risorse basato su hash) attraverso il gestore "/api/v0/dag/export", che svolge una funzione simile al comando "ipfs dag export". L'esportazione avviene nel formato di archivio DAG (grafo aciclico orientato). L'IPLD ottenuto consente all'utente di verificare che i dati caricati dal gateway pubblico corrispondano al nome simbolico richiesto (ad esempio, ricevendo il file "/ipfs/bafyexample" è possibile verificarne la corrispondenza con l'hash del contenuto inizialmente associato al nome simbolico).
- È stata fornita la possibilità di definire il proprio risolutore DNS, che utilizza il protocollo "DNS over HTTPS", il quale verrà utilizzato al posto del risolutore nelle impostazioni del sistema operativo. È anche possibile sovrascrivere il risolutore per singoli dei domini livelli superiori. In DNSLink, il meccanismo per collegare i nomi DNS tradizionali agli indirizzi IPFS, la sostituzione selettiva del risolutore può essere applicata per creare nomi di dominio non correlati a ICANN, ad esempio, è possibile collegare il risolutore "https://eth.link/dns-query" per gestire i domini di primo livello " .eth", che non sono ufficialmente approvati da ICANN.
- È stata aggiornata l'interfaccia web (WebUI), che ha introdotto il supporto sperimentale per il pinning di servizi esterni (simile al comando "ipfs pin remote service"). È stata modificata l'impostazione degli schermi per il lavoro con file e peer.
- Nell'interfaccia CLI è stata fornita la possibilità di esportare le chiavi con il comando "ipfs key export" senza fermare il processo in background di ipfs.
- È stato aggiunto un client DHT sperimentale per la ricerca di dati utilizzando una tabella hash distribuita, che si distingue dalla soluzione basata su IPNS per prestazioni superiori.
- I componenti per la migrazione a nuove versioni di go-ipfs sono suddivisi in pacchetti separati per velocizzare il download e semplificare la gestione degli aggiornamenti in configurazioni con plugin personalizzati. È stato automatizzato il processo di download degli aggiornamenti tramite IPFS e sono state aggiunte impostazioni per facilitare l'applicazione degli aggiornamenti in assenza di connessione di rete o in caso di blocco del firewall.
Ricordiamo che in IPFS il collegamento per accedere a un file è direttamente legato al suo contenuto e include l'hash crittografico del contenuto stesso. L'indirizzo del file non può essere rinominato arbitrariamente; può cambiare solo dopo una modifica del contenuto. Allo stesso modo, non è possibile apportare modifiche al file senza modificare l'indirizzo (la versione vecchia rimarrà all'indirizzo precedente, mentre la nuova sarà accessibile tramite un altro indirizzo, poiché l'hash del contenuto del file cambierà). Considerando che l'identificatore del file cambia ad ogni modifica, per non dover trasmettere ogni volta nuovi collegamenti, sono disponibili servizi per legare indirizzi permanenti, considerando le diverse versioni del file (IPNS), o per fissare un soprannome in analogia con i tradizionali FS e DNS (MFS (Mutable File System) e DNSLink).
In modo simile a BitTorrent, i dati sono memorizzati direttamente sui sistemi dei partecipanti, che scambiano informazioni in modalità P2P, senza legami a nodi centralizzati. Quando è necessario ottenere un file con un contenuto specifico, il sistema individua i partecipanti che possiedono il file e lo distribuisce dalle loro macchine in parti attraverso più flussi. Dopo aver caricato il file sul proprio sistema, il partecipante diventa automaticamente uno dei punti per la sua distribuzione. Per identificare i partecipanti nella rete su cui è presente il contenuto desiderato, viene utilizzata una tabella hash distribuita (DHT). Per accedere al FS globale, IPFS può utilizzare il protocollo HTTP o montare un FS virtuale /ipfs utilizzando il modulo FUSE.
IPFS contribuisce a risolvere problematiche come l'affidabilità dello stoccaggio (se lo storage originale viene compromesso, il file può essere caricato dai sistemi di altri utenti), la resistenza alla censura dei contenuti (per bloccare è necessario arrestare tutti i sistemi degli utenti che hanno una copia dei dati) e l'organizzazione dell'accesso in assenza di una connessione diretta a Internet o in presenza di una scarsa qualità del canale di comunicazione (è possibile caricare dati tramite i partecipanti più vicini nella rete locale). Oltre a memorizzare file e scambiare dati, IPFS può essere utilizzato come base per creare nuovi servizi, ad esempio per organizzare il funzionamento di siti non legati ai server o per sviluppare applicazioni distribuite.

Fonte: opennet.ru
