Skip to content

Latest commit

 

History

History
125 lines (64 loc) · 4.95 KB

Readme.md

File metadata and controls

125 lines (64 loc) · 4.95 KB

Ejercicio 2 - IPFS (3 puntos)

A partir de un truffle project como puede ser la pet-shop utilizada en bloques anteriores.

*También puede utilizar otro truffle project.

Haga una pequeña modificación en su frontend para mostrar su nombre al ejecutar la aplicación. (Puede editar cualquier parámetro adicional, siempre y cuando el nombre sea visible).

Suba el truffle project a GitHub manteniendo su estructura. (No incluya la carpeta node_modules).

Arranque un daemon de IPFS y aloje la DApp (Proyecto truffle elegido).

Una vez alojada la DApp, debe ser capaz de utilizar la aplicación al igual que en localhost, es decir, firmando transacciones mediante MetaMask.

Describa todo el procedimiento adjuntando las instrucciones utilizadas y sus outputs, además adjunte el hash de IPFS. Se recomienda realizar la carga (o recarga si ya ha realizado la carga en IPFS) en una fecha cercana a la entrega. Esto es debido a que si realiza la carga en una fecha temprana, puede que el contenido tarde o no llegue incluso a cargar. También debe indicar si los contratos están desplegados en Ganache o Rinkeby.

*Se recomienda alojar el contenido a subir en IPFS en una única carpeta, ésta también debe alojarse en GitHub.


1º) Siguiendo la indicaciones del Webpack Truffle Box en GitHub (https://github.com/truffle-box/webpack-box) instalamos la aplicación de MetaCoin:

  • Ejecutamos el comando para el unbox:

$ truffle unbox webpack

./images/Screenshot_1.jpg

  • Abrimos una consola de desarrollo de Truffle (truffle develop) para poder ejecutar los comandos compile y migrate:

./images/Screenshot_2.jpg

./images/Screenshot_3.jpg

./images/Screenshot_4.jpg

2º) Hacemos una pequeña modificación en el frontend para incluir el nombre (en src/index.html).

3º) Abrimos otro terminal y desde el directorio app arrancamos la aplicación para comprobar que funciona en local y la modificación es correcta:

$ npm run dev

  • Una vez configurado MetaMask para que funcione con el nodo local (http://127.0.0.1:8545/) e importamos una de las cuentas disponibles, vemos que funciona correctamente:

./images/Screenshot_5.jpg

4º) Preparamos la aplicación para su posterior despliegue en IPFS:

$ npm run build

Esto deja en el directorio app/dist los componentes listos para el despliegue.

./images/Screenshot_6.jpg

  • Indicar que previamente se modificó el fichero webpack.config.js para que se copiasen los ficheros json del directorio ../build/contracts/ al directorio /dist y tener todos los componentes necesarios para ejecutar la web en un único directorio).
  • En línea con esto, también se modificó el componente app/src/index.js para incluir el siguiente cambio:

//import metaCoinArtifact from "../../build/contracts/MetaCoin.json";
import metaCoinArtifact from "../MetaCoin.json";

5º) Subimos nuestro truffle project a GitHub:

Repositorio: https://github.com/lealp22/MetaCoin

6º) Preparamos el entorno de IPFS:

$ cd ~/Descargas
$ tar xvfz go-ipfs_v0.4.21_linux-amd64.tar.gz
$ cd go-ipfs/
$ sudo ./install.sh

./images/Screenshot_12.jpg

$ ipfs init

./images/Screenshot_13.jpg

Con lo que obtenemos:

- peer identity: QmehNL7rwheXo2mdSB8J37LwGZDkPbDgELKd1BRqSaW7Gs
- hash: QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv

  • Arrancamos IPFS en nuestra máquina:

$ ipfs daemon

  • En otra terminal, subimos a IPFS el directorio que contiene la aplicación:

$ ipfs add -r dist/

./images/Screenshot_15.jpg

  • Nos quedamos con el último hash, el del directorio principal:

QmcU2PXBLKcqLTnRRL2kafVEN9ZUrvestQ9BDW92tCXu6a

  • Utilizamos este hash para publicar el directorio en IPFS:

$ ipfs name publish QmcU2PXBLKcqLTnRRL2kafVEN9ZUrvestQ9BDW92tCXu6a

./images/Screenshot_16.jpg

  • Comprobamos el contenido publicado:

$ ipfs ls /ipfs/QmcU2PXBLKcqLTnRRL2kafVEN9ZUrvestQ9BDW92tCXu6a

./images/Screenshot_17.jpg

7º) Accedemos a la aplicación publicada en IPFS para comprobar que funciona correctamente:

https://ipfs.io/ipfs/QmcU2PXBLKcqLTnRRL2kafVEN9ZUrvestQ9BDW92tCXu6a/index.html

./images/Screenshot_18.jpg

_*Los contratos no han sido desplegados en Rinkeby. En vez de utilizar Ganache se ha utilizado truffle develop que también crea una blockchain en local.