Aprender haciendo: una introducción fácil y agradable al sistema de archivos interplanetario

Introducción a IPFS

IPFS es la abreviatura de Interplanetary File System. Es un sistema de archivos distribuido de igual a igual para hacer que la Web sea más rápida, segura y abierta. Para pasar de la versión actual de la web a una versión distribuida de la web, necesitamos el IPFS. Básicamente, el objetivo es reemplazar HTTP.

NO hay servidores centralizados. Todo está descentralizado. Veamos cómo funciona esto haciéndolo.

Escribí un artículo sobre cómo IPFS usa MerkleDAG, que se puede encontrar aquí.

PASO 1: Instale IPFS

La versión alfa de IPFS está escrita en GoLang. Deberá descargarlo para su plataforma desde este enlace.

Para verificar que ha instalado correctamente IPFS, abra la consola de comandos e ingrese el siguiente comando.

$ ipfs help

Si ve algo que comienza así:

ipfs - Global p2p merkle-dag filesystem.
ipfs [--config= | -c] [--debug= | -D] [--help=] [-h=] [--local= | -L] [--api=]  ...

¡Entonces estás listo!

Paso 2: inicializar el nodo IPFS

Para inicializar su máquina local como un nodo IPFS, ejecute el siguiente comando:

$ ipfs init

Este comando inicializa los archivos de configuración de IPFS y genera un nuevo par de claves usando 2048 bit-RSA. Esto producirá su identidad de igual como resultado.

Verás algo como esto:

initializing IPFS node at /Users/niharikasingh/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmTo1oMgGEH6Ym3H1xF55U7q4bexd5288YmEJjubDqVmKn
to get started, enter:
ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Tendrás una identidad de compañero diferente a la mía.

Ahora ejecute el siguiente comando para ver el mensaje de saludo:

$ ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Verá un resultado que se parece a esto:

Hello and Welcome to IPFS!
██╗██████╗ ███████╗███████╗
██║██████╔╝█████╗ ███████╗
██║██╔═══╝ ██╔══╝ ╚════██║
██║██║ ██║ ███████║
╚═╝╚═╝ ╚═╝ ╚══════╝
If you're seeing this, you have successfully installed
IPFS and are now interfacing with the ipfs merkledag!
| Warning: |
| This is alpha software. Use at your own discretion! |
| Much is missing or lacking polish. There are bugs. |
| Not yet secure. Read the security notes for more. |
Check out some of the other files in this directory:
./quick-start <-- usage examples
./readme <-- this file


Paso 3: agregue algunos archivos a IPFS

Cree una carpeta de demostración en cualquier lugar de su máquina y agregue un par de archivos. Cualquier tipo de archivos: imágenes, videos, música… literalmente cualquier cosa. Incluso puede agregar otra carpeta dentro de esta carpeta.

Suponga que la carpeta se llama "test-ipfs". Entonces, para enviar estos archivos, primero navegue a esta carpeta en su línea de comando y luego ejecute el siguiente comando:

$ ipfs add -r .

Este comando agrega todos los archivos / directorios presentes en la carpeta a IPFS de forma recursiva para crear el IPFS MerkleDAG. Incluso puede agregar un solo archivo usando el siguiente comando:$ ipfs add on>

This creates the following output:

added QmSTuTEThyESvDgmYdao2HK6kurXe2pqjA1KHPD8wSHVy7 test-ipfs/donut.jpeg
added QmSR9MJ5resQLjwqy7kEVVKJwTvDG53Npt9i1c6jZeZDtW test-ipfs/purse.jpeg
added QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn test-ipfs/folder1
added QmaKZ3dnc9ejBdGgEDCRtsLFNRxcY67HLjk6gXUnk9sdM9 test-ipfs

You’ll notice this long thing is the unique hash of that particular file. All the files and directories, as well as the parent folder, will have their unique hash.

$ ipfs ls QmaKZ3dnc9ejBdGgEDCRtsLFNRxcY67HLjk6gXUnk9sdM9

This works exactly like the UNIX file system. The expected output will show the following:

QmSTuTEThyESvDgmYdao2HK6kurXe2pqjA1KHPD8wSHVy7 219859 donut.jpeg
QmUNLLsPACCz1vLxQVkXqqLX5R1X345qqfHbsf67hvA3Nn 4 folder1/
QmSR9MJ5resQLjwqy7kEVVKJwTvDG53Npt9i1c6jZeZDtW 110254 purse.jpeg

The file size is shown at the end of the hash string. For example, 219859 is the file size of donut.jpeg.

Step 4: Access files online

To access files online, first we’ve got to connect our node to the IPFS network. To do that, we’ve got to run the IPFS daemon.

$ ipfs daemon

This will produce the following output:

Initializing daemon...
Successfully raised file descriptor limit to 2048.
Swarm listening on /ip4/
Swarm listening on /ip4/
Swarm listening on /ip4/
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit/ipfs/QmTo1oMgGEH6Ym3H1xF55U7q4bexd5288YmEJjubDqVmKn
Swarm announcing /ip4/
Swarm announcing /ip4/
Swarm announcing /ip4/
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/
Gateway (readonly) server listening on /ip4/
Daemon is ready

Now that you’ve pushed the files to IPFS, let’s see how can you access them.


Suppose I wish to open purse.jpeg. I’ll copy the hash of purse.jpeg and hit the browser with the above syntax.

Likewise, you can even hear your music, video, and so on.

You can even access your content using the IPFS gateway:


You’re about to see real magic now!

Point your browser to:

You’ll see this screen:

Feel free to play around.

Connections: Will show you your peers all over the world.

Files: You can push files using the webUI.

DAG: Will show you the MerkleDAG and show related info about the file when its hash is entered.

Config: This will show you configurations about your own machine.

Step 5: Access files from your peers

IPFS promises that there is no central server that is giving you the files. So what if I tell you that you can stream video from my laptop also even if IPFS daemon isn’t running on my computer?

I’ve uploaded Katy Perry’s Roar video online. You can access it from me rather than hitting YouTube.

Go to:


And enjoy!

You’ll be streaming this video on IPFS.

You can even use VLC Media Player for this.

URL used:


Feel free to play around with IPFS. This was a very brief overview. But I hope you got a basic idea about what IPFS is!