Taller de desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum

Este año, como Proyecto de Fin de Máster me he pegado con el desarollo de aplicaciones descentralizadas (ÐApps) con contratos inteligentes (Smart Contracts) en la Blockchain de Ethereum.

En este taller pretendo hacer una pequeña aplicación descentralizada con un pequeño contrato inteligente, y enseñar todo lo que yo he aprendido a base de golpes.

Veremos un poco de Solidity, un lenguaje para programar contratos inteligentes. Utilizaremos también Truffle, un framework para desarrollar y testear aplicaciones descentralizadas. Necesitaremos usar web3js para llamar desde nuestra web a la Blockchain. Usaremos MetaMask para interactuar con la aplicación. Y para minar nuestras transacciones de prueba levantaremos una instancia de Ganache.

Taller en el Commit Conf

Taller en el Commit Conf

Recursos

Slides de la taller

Slides de la taller

Slides de la taller

Ejecución de la ÐApp

Prerequisitos

Instalar NodeJS https://nodejs.org/

Instalar MetaMask https://metamask.io/

Clonar el repositorio

Ejecutar:

git clone git@github.com:asanzdiego/commit-conf-taller-blockchain.git
cd commit-conf-taller-blockchain

Instalar dependencias globales

Ejecutar:

npm install -g truffle
npm install -g ganache-cli
npm install -g @angular/cli

Instalar dependencias del proyecto

Ejecutar en la carpeta del proyecto:

npm install

Ejecutar ganache (nodo privado)

Ejecutar en la carpeta del proyecto en una consola separada:

ganache-cli --gasLimit 7000001

Compilar y migrar los contratos al nodo privado

Ejecutar en la carpeta del proyecto en una consola separada:

truffle compile && truffle migrate

Testear los contratos contra el nodo privado

Ejecutar en la carpeta del proyecto en una consola separada:

truffle test

Arrancar el front

Ejecutar en la carpeta del proyecto en una consola separada:

ng serve

Abrir la aplicación

En un navegador con MetaMask instalado abrir: http://localhost:4200/

Para desarrollar

Recomiendo Visual Studio Code con el plugin de Solidity de Juan Blanco