Proyecto de ejemplo para la consulta y provisión de información desde una página Web con Node y Express hacia la Blockchain, y la provisión de información hacia una base de datos MySQL off-chain.
- Característica 1
- Característica 2
Se requiere la instalación de los siguientes paquetes software:
Instalamos truffle.
$ npm install -g truffle
Instalamos las dependencias de Web3. IMPORTANTE: Ejecutar en PowerShell y como administradores:
$ npm install --global --production windows-build-tools
Descargamos el repositorio de GitHub.
Arrancamos Ganache.
Abrimos un terminal, vamos a la carpeta del sub-proyecto DBManager y ejecutamos:
$ truffle compile --all
$ truffle migrate
Al hacer este último comando aparece un resultado como el de la siguiente imagen. Anote la información correspondiente con contract address para el contrato de 'Gestion':
Antes de proseguir, hemos de introducir la dirección donde se ha desplegado el contrato en nuestros proyectos. En WebServer\routes\index.js y en DBManager\oracle.js modificamos el valor de "const contractAddress" por el valor que nos aparece en la consola al haber hecho 'truffle migrate' (en amarillo en la imagen).
Procedemos a la instalación del sub-proyecto WebServer. Dentro de la carpeta WebServer ejecutamos:
$ npm install
$ npm run dev
Esta última orden lanzará el servidor en localhost:3000
Para la parte de base de datos, iniciamos nuestro servidor MySQL, nos aseguramos de que está lanzado en localhost:3306. Dentro del proyecto DBManager ejecutamos:
$ npm install
$ npm run dev
En la capeta documentación hay un archivo sql para crear una talba de ejemplo en la base de datos y así poder jugar con las consultas a través de la blockchain. Consultas que se puede hacer:
INSERT INTO video_games (ID, name, owner, console, price, players, comments) VALUES (51, 'New Super Mario Bros', 'John', 'Wii', 4, 1, 'Incredible!')
SELECT name FROM video_games WHERE console = 'Nintendo 64'
SELECT name FROM video_games WHERE price >30
UPDATE video_games SET owner='Kathy' WHERE ID=1
Copyright VACADENA All rights reserved