È stata rilasciata la versione 0.8 del sistema di file decentralizzato IPFS (InterPlanetary File System), che forma un archivio globale e versionato di file, distribuito sotto forma di rete P2P, costituita da sistemi partecipanti. IPFS combina idee precedentemente realizzate in sistemi come Git, BitTorrent, Kademlia, SFS e Web, e ricorda un singolo "stormo" di BitTorrent (peer coinvolti nella distribuzione), che scambia oggetti Git. IPFS si distingue per un'indirizzamento basato sul contenuto piuttosto che sulla posizione e nomi arbitrari. Il codice della versione di riferimento è scritto in Go ed è distribuito sotto le licenze Apache 2.0 e MIT.
Nella nuova versione:
- È stata implementata la possibilità di creare servizi esterni per il pinning dei dati degli utenti (pinning — associazione dei dati a un nodo per garantire che le informazioni importanti siano salvate). I dati associati al servizio possono avere nomi separati, diversi dall'identificativo del contenuto (CID). È possibile cercare i dati sia per nome che per CID. Per gestire le richieste di pinning dei dati è stato proposto l'API IPFS Pinning Service, che può essere utilizzato direttamente in go-ipfs. Nella riga di comando, per allegare, è disponibile il comando «ipfs pin remote»: ipfs pin remote service add mysrv https://my-service.example.com/api-endpoint myAccessToken ipfs pin remote add /ipfs/bafymydata —service=mysrv —name=myfile ipfs pin remote ls —service=mysrv —name=myfile ipfs pin remote rm —service=mysrv —name=myfile
- Le operazioni di pinning e unpinning dei dati sul nodo locale sono state accelerate. L'aumento delle prestazioni e la riduzione della memoria utilizzata sono particolarmente evidenti durante l'esecuzione di operazioni di output o modifica su sistemi con un elevato numero di pin.
- Nella creazione di collegamenti «https://» per i gateway è stata aggiunta la possibilità di trasferire nomi DNSLink utilizzando sottodomini. Ad esempio, per caricare il nome «ipns://en.wikipedia-on-ipfs.org», oltre ai collegamenti precedentemente supportati «https://dweb.link/ipns/en.wikipedia-on-ipfs.org», ora è possibile utilizzare i collegamenti «https://en-wikipedia—on—ipfs-org.ipns.dweb.link», in cui i punti nei nomi originali sono sostituiti dal simbolo «-», mentre i simboli «-» esistenti vengono esaminati con un altro simbolo simile.
- È stata ampliata la supporto per il protocollo QUIC. Per aumentare le prestazioni, è stata introdotta la possibilità di incrementare i buffer di ricezione per UDP.
Ricordiamo che in IPFS il link per accedere a un file è direttamente legato al suo contenuto e include l'hash crittografico del contenuto. L'indirizzo del file non può essere rinominato arbitrariamente, può cambiare solo dopo una modifica del contenuto. Analogamente, non è possibile apportare modifiche a un file senza cambiare l'indirizzo (la versione precedente rimarrà all'indirizzo originale, mentre la nuova sarà accessibile tramite un altro indirizzo, poiché l'hash del contenuto del file cambierà). Considerando che l'identificatore del file cambia con ogni modifica, per evitare di dover fornire nuove link ogni volta, sono disponibili servizi che collegano indirizzi permanenti, tenendo conto delle diverse versioni del file (IPNS), o fissano un alias in modo simile ai tradizionali FS e DNS (MFS (Mutable File System) e DNSLink).
Analogamente a BitTorrent, i dati sono memorizzati direttamente sui sistemi dei partecipanti, che scambiano informazioni in modalità P2P, senza fare riferimento a nodi centralizzati. Quando è necessario ottenere un file con contenuto specifico, il sistema trova i partecipanti che hanno quel file e lo restituisce dalle loro macchine in parti attraverso più flussi. Dopo aver scaricato il file sul proprio sistema, il partecipante diventa automaticamente uno dei punti per la sua distribuzione. Per identificare i partecipanti della rete sui nodi che contengono il contenuto richiesto viene utilizzata una tabella hash distribuita (DHT). Per accedere al file system globale, IPFS può utilizzare il protocollo HTTP oppure montare un file system virtuale /ipfs tramite il modulo FUSE.
IPFS aiuta a risolvere problemi come l'affidabilità dello storage (se lo storage originale viene compromesso, il file può essere recuperato dai sistemi di altri utenti), la resistenza alla censura dei contenuti (per bloccare i dati è necessario spegnere 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 caso di scarsa qualità della connessione (è possibile scaricare dati tramite i partecipanti più vicini nella rete locale). Oltre a conservare file e trasferire dati, IPFS può essere utilizzato come base per creare nuovi servizi, ad esempio per l'organizzazione di siti web non legati a server, o per la creazione di applicazioni distribuite.

Fonte: opennet.ru
