IPFS el internet del futuro
Tags: docker, ipfs, javascript
Published: 2020-10-06 00:00:39

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/73r5afwbumvm7qqcqglz.png)

# ¿Qué es IPFS?
IPFS es una tecnología desarrollada por Juan Benet desde Septiembre del 2015 el cual se compone de estas 3 características: 

**1.-Direccionamiento de contenido y datos vinculados**

**2.-Directed Acyclic Graphs (DAGs)**

**3.-Distributed Hash Table (DHT)**

De forma general lo que hacen estas herramientas es conectarnos a un cluster de servidores, tambien conocidos como nods donde mediante un link o una secuencia de caracteres conocido como hash se vincula a una tabla de hashes donde está situados todos los servidores donde se mapea la informacion a consultar que esta distribuida por por DAGS.


## ¿Cómo podemos empezar con ipfs?

Hay varias formas de empezar como usarlo en el escritorio, desde linea de comandos, como un cluster pero la que usaremos es una integración con javascript, en este caso usaremos esta integración junto con docker  para ello vamos a crear la siguiente estructura de archivos:


```
├── Dockerfile
├── index.js
└── package.json
```

_Docerfile_ nos permite poner las intrucciones de como se levatará el servicio

**Dockerfile**

```
FROM node:10.15.0
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "npm", "start" ]
```


_index.js_ es nuestra conectividad con IPFS donde enviaremos la información del promp a la red de IPFS

**index.js**

```
const prompt = require('prompt');
const IPFS = require("ipfs-mini");
const ipfs = new IPFS({host: 'ipfs.infura.io', port:5001, protocol:'https'});
prompt.start();
prompt.get(['ipfs'], function (err, result) {
console.log('Command-line input received:');
console.log('  IPS: ' + result.ipfs);


ipfs.add(result.ipfs, (err,hash)=> {
   if(err){
   return console.log(err);
   }
   console.log('https://ipfs.infura.io/ipfs/'+hash)
})
});

```

_package.json_ sólo es un archivo de configuración donde indicamos como levantar el servicio de _index.js_

**package.json**

```

{
 "name": "ipfs",
 "version": "1.0.0",
 "description": "un ejemplo del uso de ipfs",
 "main": "index.js",
 "scripts": {
   "start": "node index.js"
 },
 "keywords": [
   "ipfs",
   "file",
   "system",
   "docker"
 ],
 "author": "uracilo",
 "license": "MIT",
 "dependencies": {
   "ipfs-mini": "^1.1.5",
   "prompt": "^1.0.0"
 }
}
```



### Construir nuestra imagen para levantar el servicio:

```
docker build -t ipfs:v1 .
```

### Correr nuestro contenedor y tener nuestro servicio:
```
docker run --rm -it --name=ipfs ipfs:v1
```

Este es el resultado del promp escribimos el texto en este caso escribí 
`hola mundo!`

```
> ipfs@1.0.0 start /usr/src/app
> node index.js

prompt: ipfs:  hola mundo! 
Command-line input received:
  IPS: hola mundo! 
https://ipfs.infura.io/ipfs/QmPf7iRzvQn7QMmon1oeY5ptmVSe8zzbeHxrfMQKbEr9nr
```
Nos da como respuesta un link ya nuestra información esta formando parte del sistema de IPFS 

> https://ipfs.infura.io/ipfs/QmPf7iRzvQn7QMmon1oeY5ptmVSe8zzbeHxrfMQKbEr9nr

Como siguiente paso puedes subir un sitio web por ejemplo, pero te invito que entres a la página oficial.

https://ipfs.io



![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kmfqn7y1xo3qyl4rmxxw.png)