IPFS - InterPlanetary File System è un nuovo progetto di file-system distribuito peer-to-peer che si avvale di varie tecnologie già presenti per consentire un'ampia possibilità di distribuzione e conservazione di dati in una rete. IPFS sfrutta il background di competenze accumulate nel tempo nello sviluppo di servizi DHTs come Napster, BitTorrent, Kademlia DHT e Coral DSHT. Allo stesso tempo può essere usato come un protocollo web identico ad HTTP. Esso è implementabile su reti decentralizzate usando la crittografia. Un esempio di uso decentralizzato di IPFS su blockchain è AKASHA Project social media network, basato sulla Ethereum Network. IPFS implementa anche Git e SFS.
Lo scopo di IPFS è di semplificare, evolvere e connettere insieme tecniche affidabili in un unico sistema coesivo.
IPFS si pone come un progetto capace di far navigare il web più velocemente e allo stesso tempo di conservare enormi quantità di dati e informazioni, come possono essere film, immagini, documentazioni scientifiche, digitalizzazione di libri antichi. IPFS è in grado di funzionare anche in assenza di connessione internet, perché i dati sono conservati in locale sul nodo.
In sintesi. Quello che oggi fanno tanti diversi protocolli di comunicazione web differenti (HTTP, FTP, ecc.), quello che conservano e redistribuiscono tra gli utenti svariati sistemi come BitTorrent, IPFS lo fa da solo.
Come funziona IPFS - InterPlanetary File System
Vediamo in sintesi come funziona IPFS - InterPlanetary File System.
- Ciascun file e i blocchi con esso, ricevono una 'impronta digitale' per essere identificati univocamente nella rete. L'impronta digitale è data attraverso un hash crittografico.
- Grazie al meccanismo di controllo offerto da Merkle DAG, ciascun contenuto della rete è unico e non duplicabile. Ciò rende la rete più leggera e il reperimento di un file più veloce. Le modifiche successive al documento sono aggiunte al file originario, senza duplicati.
- Ciascun nodo della rete memorizza solo i contenuti a cui è interessato e un indice, che aiuta il sistema e gli utenti, a comprendere chi sta memorizzando cosa.
- Quando si è alla ricerca di un file, l'utente chiede alla rete di cercarlo tra i nodi e di individuare il nodo dove esso è conservato. Ciò è possibile grazie all'hash univoco assegnato in fase di upload del file nella rete stessa.
- Tutti i file presenti nella rete possono essere ricercati assegnando loro nomi leggibili (human-readable names), usando il sistema di denominazione decentralizzato IPNS.
Per quali usi è utile IPFS?
IPFS è utile per i seguenti usi.
- Per archiviare e organizzare informazioni.
- Serve alle aziende che forniscono ai propri utenti enormi quantità di dati, perché l'approccio peer-to-peer consente alle prime di risparmiare sull'uso della banda.
- I ricercatori trovano in IPFS un sistema di conservazione della documentazione scientifica, dei dati di analisi ecc., con alte performance: funge da archivio decentralizzato. Anche in caso di catastrofi naturali, i dati non andranno irrimediabilmente persi.
- IPFS si pone come capace di ridurre drasticamente la latenza delle reti.
- IPFS lavora con la tecnologia Blockchain. I dati caricati e conservati sul protocollo di comunicazione IPFS, possono essere resi immutabili e permanenti come IPFS links, sotto forma di transazione blockchain.
- Per i creatori di contenuti multimediali è una piattaforma indipendente che aiuta a distribuire contenuti a basso costo.
IPFS fa molto di più
Il peer-to-peer hypermedia protocol IPFS ha enormi potenzialità di applicazione. Il progetto è appunto quello di fare sintesi di decenni di ricerca accademica in ambito di sistemi peer-to-peer, e di includere tutti i benefici di applicazioni DHTs, BitTorrent, Git e SFS. IPFS è da vedere come una piattaforma per scrivere e distribuire applicazioni, allo stesso tempo, un nuovo sistema per distribuire grandi dati.
Nessun nodo della rete è privilegiato. Gli oggetti di IPFS, files e strutture di dati, sono conservati in locale dai singoli nodi. Ogni singolo nodo si connette a un altro per trasferire gli oggetti. Il protocollo IPFS si divide in una serie di sub protocolli, ciascuno responsabile di differenti funzionalità, ma nessun sotto sistema è indipendente dall'altro:
- Identities. Gestisce la generazione e la verifica dell'identità di un nodo.
- Network. Gestisce la connessione con gli altri peers della rete, usando vari protocolli di rete e tecniche di comunicazione: WebRTC DataChannels, uTP, ICE NAT, HMAC.
- Routing. Gestisce le informazioni per individuare specifici peers e objects. Risponde sia alle richieste in locale che in remoto. Di default risponde a richieste DHT, ma è sostituibile.
- Exchange. Attraverso Bitswap, nuovo block exchange protocol, governa in modo efficiente la distribuzione del blocco. Il modello è quello di un mercato, dove la replica dei dati è poco incentivata.
- Objects. Gli oggetti sono etichettati con il sistema Merkle DAG e ricevono un indirizzo non modificabile e un links per essere raggiunti.
- Files. La gerarchia del file system si ispira a Git.
- Naming. Un sistema di nome mutabile con auto certificazione.
Per approfondire IPFS
IPFS - InterPlanetary File System è un progetto in piena fase di sviluppo. Per approfondire e seguire le evoluzioni future, rimando al sito ufficiale: www.ipfs.io. Per approfondire in modo tecnico rimando alle repositories di IPFS su GitHub.
L'articolo si è basato sul White Paper del progetto: 'IPFS - Content Addressed, Versioned, P2P File System (Draft 3)', di Juan Benet (inventore del file system).