Che cos'è il file system interplanetario (IPFS) e come lo si usa?
Pubblicato: 2022-06-25L'Interplanetary File System (IPFS) è una rete di condivisione di file peer-to-peer distribuita che è ben posizionata per diventare la base di un nuovo Web decentralizzato. Ecco come funziona e come puoi iniziare a usarlo.
Un Internet decentralizzato
Come funziona l'IPFS
Come vengono archiviati i dati
Come installare IPFS
L'interfaccia web
Il client desktop IPFS
Quello che viene dopo?
Un Internet decentralizzato
Anche se è globale, il World Wide Web è ancora una rete centralizzata . L'archiviazione dei dati dietro Internet è costituita principalmente da server, fisici o virtuali, in enormi server farm o piattaforme cloud. Queste strutture sono di proprietà di un'unica società. I server sono di proprietà o noleggiati da altre società e configurati ed esposti per essere accessibili al mondo esterno.
Chiunque desideri accedere alle informazioni su quei server deve effettuare una connessione HTTPS dal proprio browser al server appropriato. Al centro c'è il server, che serve tutte le richieste di accesso ai dati che contiene.
Questa è una semplificazione ovviamente, ma descrive il modello generale. Per consentire la scalabilità e fornire solidità, le organizzazioni possono mettere in gioco server mirror e reti di distribuzione dei contenuti. Ma anche in questo caso, c'è ancora un numero relativamente piccolo e limitato di posizioni in cui le persone possono recarsi per accedere a quei file.
IPFS è un'implementazione di una rete decentralizzata . Uno dei sistemi decentralizzati più popolari è Git, il software di controllo della versione. Git è un sistema distribuito perché ogni sviluppatore che ha clonato un repository ha una copia dell'intero repository, inclusa la cronologia, sul proprio computer. Se il repository centrale viene cancellato, è possibile utilizzare qualsiasi copia del repository per ripristinarlo. IPFS prende quel concetto distribuito e lo applica all'archiviazione di file e al recupero dei dati.
IPFS è stato creato da Juan Benet ed è gestito da Protocol Labs, la società da lui fondata. Hanno preso la natura decentralizzata di Git e le tecniche distribuite e di risparmio della larghezza di banda dei torrent e hanno creato un sistema di archiviazione che funziona su tutti i nodi della rete IPFS. Ed è qui ora, e funziona.
Come funziona l'IPFS
Il Web decentralizzato IPFS è costituito da tutti i computer ad esso collegati, noti come nodi . I nodi possono memorizzare i dati e renderli accessibili a chiunque ne faccia richiesta.
Se qualcuno richiede un file o una pagina web, una copia del file viene memorizzata nella cache del suo nodo. Man mano che sempre più persone richiedono quei dati, esisteranno sempre più copie memorizzate nella cache. Le richieste successive per quel file possono essere soddisfatte da qualsiasi nodo, o combinazione di nodi, che contiene il file. L'onere di consegnare i dati e soddisfare la richiesta viene gradualmente ripartito tra molti nodi.
Ciò richiede un nuovo tipo di indirizzo web. Invece del routing basato sull'indirizzo in cui devi conoscere la posizione dei dati e fornire un URL specifico a tali dati, il Web decentralizzato utilizza il routing basato sul contenuto .
Non dici dove sono i dati; richiedi ciò che desideri, e viene trovato e recuperato per te. Poiché i dati sono archiviati su molti computer diversi, tutti questi computer possono inviare parti dei dati al tuo computer contemporaneamente, come un download torrent. Questo ha lo scopo di ridurre la latenza, ridurre la larghezza di banda ed evitare colli di bottiglia causati da un unico server centrale.
Allontanarsi dal modello centralizzato significa che gli hacker non hanno un punto focale da attaccare. Ma la preoccupazione immediata per la maggior parte delle persone sarà l'idea che i loro file, immagini e altri media verranno archiviati sui computer di altre persone.
Non è proprio così. IPFS non è qualcosa a cui ti connetti e su cui carichi. Non è un Dropbox distribuito e comunitario. È qualcosa a cui partecipi, ospitando un nodo o pagando per utilizzare un nodo con provisioning professionale ospitato da un servizio cloud. E a meno che tu non scelga di condividere o pubblicare qualcosa, non sarà accessibile a nessun altro. In effetti, il termine "caricamento" è fuorviante. Quello che stai veramente facendo è importare file nel tuo nodo.
Se desideri che un file sia accessibile ad altri ma devi limitare il contenuto a pochi eletti, devi crittografarlo prima di importarlo. La trasmissione dei dati è crittografata in entrambe le direzioni, ma i file importati non sono crittografati di proposito per impostazione predefinita. Questo lascia a te la scelta della tecnologia di crittografia. IPFS non spinge una forma di crittografia dell'archiviazione di file come crittografia "ufficiale".
Come vengono archiviati i dati
I dati vengono archiviati in blocchi di 256 KB, chiamati oggetti IPFS. I file di dimensioni maggiori vengono suddivisi in tutti gli oggetti IPFS necessari per ospitare il file. Un oggetto IPFS per file contiene collegamenti a tutti gli altri oggetti IPFS che compongono quel file.
Quando un file viene aggiunto alla rete IPFS, gli viene assegnato un ID hash univoco di 24 caratteri, chiamato Content ID o CID. È così che viene identificato e referenziato all'interno della rete IPFS. Il ricalcolo dell'hash quando il file viene recuperato verifica l'integrità del file. Se il controllo fallisce, il file è stato modificato. Quando i file vengono aggiornati in modo legittimo, IPFS gestisce il controllo delle versioni dei file. Ciò significa che la nuova versione del file viene archiviata insieme alla versione precedente. IPFS funziona come un file system distribuito e questo concetto di controllo delle versioni fornisce un grado di immutabilità a quel file system.
Diciamo che memorizzi un file in IPFS sul tuo nodo e qualcuno chiamato Dave lo richieda e lo scarichi sul proprio nodo. La prossima persona che richiede quel file potrebbe ottenerlo da te, o da Dave, o in modo simile a un torrent con parti del file provenienti dal tuo nodo e dal nodo di Dave. Più persone scaricano il file, più nodi ci sono da inserire e aiutare con le successive richieste di file.
La raccolta dei rifiuti rimuoverà periodicamente gli oggetti IPFS memorizzati nella cache. Se desideri archiviare in modo permanente un file, puoi aggiungerlo al tuo nodo. Ciò significa che non verrà ripulito durante la raccolta dei rifiuti. Puoi pagare per l'archiviazione su provider di archiviazione cloud che espongono i tuoi dati alla rete IPFS e li mantengono permanentemente bloccati, e ci sono servizi specificamente personalizzati per l'hosting di siti Web accessibili IPFS.
Se qualcosa sul tuo sito web diventa virale e porta enormi ondate di traffico al tuo sito web, le pagine verranno memorizzate nella cache in tutti i nodi che recuperano quelle pagine. Tali pagine memorizzate nella cache verranno utilizzate per soddisfare ulteriori richieste di pagina, aiutandoti a cavalcare l'onda e soddisfare la domanda.
Ovviamente, tutto ciò dipende da un numero sufficiente di nodi attivi e disponibili e da un numero sufficiente di dati bloccati e memorizzati nella cache. E ciò richiede partecipanti.
Come installare IPFS
Gli utenti Windows possono scaricare ed eseguire il file EXE che si trova nella pagina di rilascio di IPFS. Se sei su un Mac, scarica il file DMG e trascinalo in Applicazioni come faresti normalmente. In caso di problemi, controlla la documentazione ufficiale.
A scopo dimostrativo, esamineremo l'installazione su Ubuntu. Sono disponibili pacchetti Snap per IPFS e per il client desktop IPFS su qualsiasi distribuzione Linux. Se installi solo IPFS, avrai un nodo IPFS completamente funzionante che puoi controllare e amministrare utilizzando un browser. Se installi il client desktop non è necessario utilizzare il browser, il client fornisce tutte le stesse funzionalità.
Per installare gli Snap utilizzare:
sudo snap install ipfs
sudo snap install ipfs-desktop
Ora devi eseguire il comando per inizializzare il tuo nodo.
ipfs init
I seguenti comandi sono suggeriti da IPFS se incontri delle difficoltà e il demone non funziona o non riesci a connetterti ad esso. Su tutti i computer di prova che abbiamo provato questi erano richiesti, quindi potresti anche andare avanti ed emetterli ora:
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Origin '["webui://-", "http://localhost:3000", "http://127.0.0.1:5001", "https ://webui.ipfs.io"]'
ipfs config --json API.HTTPHeaders.Access-Control-Allow-Methods '["PUT", "POST"]'
sudo sysctl -w net.core.rmem_max=2500000
Con quelli fuori mano, puoi avviare il demone IPFS.
demone ipfs
Quando il demone si avvia, riporta i due indirizzi che puoi usare per connetterti. Uno è per il desktop IPFS e l'altro è per "webui" IPFS o interfaccia utente web.
L'interfaccia web
Incolla l'indirizzo webui http://127.0.0.1:5001/webui
nel browser per connetterti al front-end web IPFS.
La pagina predefinita è la schermata "Stato". Questa è una dashboard che mostra lo stato e l'attività del tuo nodo. Mostra la dimensione dei file che stai ospitando, più la dimensione totale degli oggetti IPFS memorizzati nella cache che il tuo nodo ospita. Si tratta di dati provenienti da altre parti della rete IPFS. Il dashboard mostra anche due indicatori in tempo reale che mostrano il traffico IPFS in entrata e in uscita e un grafico in tempo reale che mostra la cronologia di quel traffico.
Per passare a una schermata diversa, fai clic su una delle icone nella barra laterale di sinistra. La schermata "File" ti consente di vedere i file che hai importato in IPFS. Puoi utilizzare il pulsante blu "Importa" per cercare file o cartelle sul tuo computer che desideri importare in IPFS.
IPFS fa uso di alberi Merkle. Si tratta di un superset molto efficiente di hash tree binari, inventato nel 1979 da Ralph Merkle. Se hai molti alberi, hai una foresta. L'icona "Esplora" apre una schermata che ti consente di sfogliare diversi tipi di informazioni archiviate in IPFS e nella sua foresta Merkle.
C'è un archivio di cartoni animati dal noto sito web XKCD. Facendo clic su quell'opzione e selezionando un cartone animato ti viene consegnato il cartone animato scelto su IPFS.
L'icona "Peers" apre una mappa del mondo che traccia dove si trovano le tue connessioni IPFS in tutto il mondo.
In pochi minuti abbiamo avuto collegamenti da Australia, Bielorussia, Belgio, Canada, Cina, Finlandia, Francia, Germania, Giappone, Malesia, Paesi Bassi, Norvegia, Polonia, Portogallo, Romania, Russia, Singapore, Corea del Sud, Svezia, Taiwan, Turchia, Regno Unito e, naturalmente, Stati Uniti.
Prova positiva, se ce ne fosse bisogno, che IPFS ha generato un ronzio globale. Ovviamente non ti connetterai a tutti i nodi disponibili. Sarebbe inefficiente.
Il client desktop IPFS
Trova IPFS Desktop nel programma di avvio delle applicazioni del tuo sistema. Su GNOME, con il demone IPFS fermo , premi il tasto "Super" e digita "ipfs". Vedrai l'icona del cubo IPFS blu.
Fare clic su questa icona e il client desktop si avvierà. Inizierà il demone stesso.
L'aspetto e la funzionalità del client desktop sono esattamente gli stessi dell'interfaccia Web, ma questa volta viene eseguita come applicazione autonoma.
Una funzionalità aggiuntiva fornita dall'applicazione è un indicatore di app nell'area di notifica.
Questo ti dà un rapido accesso a un menu di opzioni e un indicatore a semaforo dello stato del tuo nodo. L'indicatore è verde per il normale funzionamento, rosso per un errore e giallo per l'avvio.
Quello che viene dopo?
Niente sostituirà improvvisamente il web centralizzato esistente, ma nel tempo le cose si evolveranno. Forse l'IPFS è un assaggio di ciò in cui potrebbe evolversi.