IPFS - La teoria
Scritto il: 2026-05-12
Partiamo da una cosa facile. Supponiamo di avere un fantastico sito web, come quello che state guardando in questo momento (perché sì, è chiaramente molto ben fatto, grazie). È ospitato da un server: Apache, Nginx, Lighttpd, quel che vi pare. Roba seria.
Ora succede una cosa brutta: il server diventa irraggiungibile. Perché?
- Si schianta.
- Lo oscurano.
- Glielo sequestrano.
- Esplode (capita, specie i venerdì sera).
Se il server non c'è, il sito non c'è. Fine. Silenzio tombale. Un peccato, perché era proprio un bel sito.
Come si potrebbe risolvere sta cosa orribile?
Facciamo un giochino mentale.
Immaginate che il server sia su, e uno di voi – chiamiamolo Primo Visitatore – apra il sito. Nel suo computer (o telefono, o tablet, o piccione viaggiatore elettronico) rimane una copia nella cache. Niente di strano: succede anche adesso.
Ma se quella copia non fosse solo per lui? Se chiunque altro potesse prendere il sito non solo dal server principale, ma anche dal computer del Primo Visitatore?
Poi arriva un Secondo Visitatore. Scarica il sito dal server principale e anche dal Primo Visitatore. E anche lui se ne tiene una copia.
Poi arriva un Terzo Visitatore. Può scaricare il sito da:
- il server principale
- il Primo Visitatore
- il Secondo Visitatore
E così via, come una valanga.
A questo punto, non importa più se il server ufficiale va offline: il sito è già sparso in giro nelle cache della gente. I nuovi visitatori lo prendono da chi ce l'ha già. Il sito non muore più.
Cos'è IPFS (senza pippe mentali)
IPFS significa InterPlanetary File System. Il nome è volutamente esagerato. Ma il concetto è semplice: è una rete peer-to-peer di computer che si passano i file tra loro, senza bisogno di un server centrale.
Non è "un server che dà file a tanti client". Sono tanti client che si danno file a vicenda.
Funziona più o meno così:
- Io creo un nodo IPFS
- Aggiungo un file, per esempio index.html.
- IPFS calcola un CID (Content Identifier). Sembra una roba tipo /ipfs/QmeAYko7TLNHpN5a7vSvgJoTD7J1RCNdBunMzNcabuPTvp.
- Il mio nodo dice alla rete: "Ehi, ragazzi, io ho il file con questo CID qui".
e poooi
- Primo visitatore vuole quel file. Chiede alla rete: "Chi ha il file con CID QmeAYko7TLNHp...?"
- La rete risponde: "Ce l'ha tizio, là, all'indirizzo IP X".
- Il visitatore lo scarica e se ne tiene una copia.
e poooi
- Secondo visitatore chiede lo stesso CID. La rete dice: "Ce l'ha tizio E anche il primo visitatore".
- Il secondo scarica da chi è più vicino/veloce/disponibile. Anche lui se ne tiene una copia.
e poooi
- Terzo visitatore ha ancora più fonti
e poooi
e poi ha rotto, hai capito, basta così, come nel giochino mentale di prima.
Il problema della vehstia dal pelo lungo e e le corna belle: se cambio il file, cambia tutto
Ora arriva la parte che fa bestemmiare (poco, però, si risolve).
Supponiamo che io modifichi il mio bellissimo index.html. Magari aggiungo una virgola. O una foto di una patata, unità di misura del S.I.
Nel web normale: sovrascrivo il file sul server e arrivederci.
In IPFS: il file è diverso → il suo CID diventa completamente nuovo.
Quindi io aggiungo il nuovo index.html e dico alla rete: "Ragazzi, ora ho anche il file con nuovo CID Qmc7hm9rBs3wsR52uzLR9RABu..."
Ma il vecchio CID esiste ancora, nelle cache di chi lo ha visitato prima. Quindi ora ci sono due versioni del mio sito. Una vecchia, una nuova. Entrambe raggiungibili. Entrambe immutabili. Entrambe BELLISSIME, ma una ha anche una patata.
E se io domani faccio un'altra modifica → altro CID nuovo.
E un'altra ancora → altro CID nuovo.
Ogni modifica = nuovo indirizzo.
Ora, la domanda sorge spontanea: ma scusa, ogni volta devo dire a tutti il nuovo indirizzo?
IPNS: il trucco per non cambiare mai link
Esiste una fantasticazzeria chiamata IPNS (InterPlanetary Name System).
Funziona così:
Genero una chiave privata (mia, personale, inavvicinabile) e da lì ricavo un indirizzo IPNS. Sembra una roba tipo /ipns/k51qzi5uqu5... Questo indirizzo non camberà mai. Mai.
Cosa ci combino? Dico a IPNS: "Ehi, tu punta all'ultimo CID che ho pubblicato".
Oggi:
/ipns/k51qzi5uqu5... → /ipfs/QmeAYko... (versione 1 del sito)Domani aggiorno il sito → ottengo nuovo CID. Ripubblico su IPNS:
/ipns/k51qzi5uqu5... → /ipfs/Qmc7hm9r... (versione 2 del sito)L'indirizzo IPNS resta lo stesso. Quello che cambia è il bersaglio.
Risultato: io posso dare a tutti un solo indirizzo (/ipns/roba...) che punta sempre all'ultima versione del mio sito, senza dover ricondividere niente.
Piccola nota a latere
Le copie che finiscono sui computer degli utenti non restano lì per sempre. Ogni tanto arriva il garbage collector e le pulisce, perché non si può mica riempire il disco di ogni utente con le minchiate degli altri. A meno che un utente non decida di fare il PIN del CID.
Significa: "Questo contenuto non lo cancellare. Lo voglio tenere sul mio disco per sempre (o finché non lo tolgo io)". Fare il PIN di un sito significa diventare uno dei server di quel sito, volontariamente.
Traccia bonus
Un avvertimento.
Se metti qualcosa su IPFS accetti che quella cosa resti viva potenzialmente per sempre. Se qualcuno fa il PIN di un tuo contenuto, ne avrà una copia e potrà ridistribuirla a suo piacimento. Come non possono censurarti gli altri, non puoi farlo nemmeno tu. Non hai il diritto all'oblio.
[Che il talpone sia con voi]
[EOF]