Trabajando con Smart Contracts en Ethereum - Parte II

Crear el entorno de trabajo local

Como os comentamos en el post anterior, nuestra idea es ir paso a paso contando todo el flujo de vida de un Smart Contract dentro de un gran proyecto.

Y, en este caso, empezaremos por crear un entorno de trabajo local que, como siempre, podréis ver completo en este proyecto de Github.

Lo primero que hay que hacer es inicializar el proyecto con Node y Truffle, así como todos los módulos necesarios para el proyecto.

 

Recordar que lo hemos instalado todo de forma local, así que tendremos que crear, en el package.json, los comandos necesarios para poder acceder a truffle y a ganache-cli:

 

Ahora podréis ejecutarlos mediante:

Los dos primeros fallarán ya que todavía no está configurado truffle. El tercero, la testnet, es recomendable que la abráis en un terminal diferente, ya que tendrá que estar siempre arrancada.

Nota: Recordar que podéis añadir flags a los comandos añadiendo dos guiones “–” antes de los flags que queráis pasar al comando.

 

Por ahora, poco podemos hacer, así que vamos a arrancar truffle para que nos instale toda su configuración base.

Esto nos genera un fichero y los tres directorios que necesita truffle para trabajar.

  • Contracts: es el directorio donde irán todos los contratos de Solidity que realicemos.
  • Migrations: En este directorio se guardan los scripts necesarios para hacer el deploy de los contratos a la blockchain.
    Hay que tener en cuenta que nuestro código no está directamente en la blockchain sino que hay que hacer una serie de transacciones para que sea accesible desde la misma, también es importante porque, en caso de que se necesiten varios Smart Contracts, es aquí donde diremos como se deben subir y cual es la relación entre todos ellos.
  • Test: Porque ya no sabemos programar sin hacer test!!
    En nuestro caso usaremos los test en JS (usa por debajo Mocha), aunque también los hay en formato Solidity.
  • truffle.js En este fichero debe estar la configuración básica de truffle para hablar con las diferentes redes blockchain con las que trabajes. En la documentación de Truffle os indican como podéis configurarlo. Por ahora usaremos la configuración básica.

 

La propia suite de truffle trae por defecto una testnet que parte de la de ganache-cli, podríamos usar esta por defecto con el comando “npm run t — develop”, esta testnet, en nuestro caso, está usando el puerto 9545, mientras que la blockchain de ganache-cli corre bajo el 8545, y la app de Ganache está en el puerto 7545, por lo que en la configuración de truffle.js podréis poner:

 

Por otro lado, aquí os cuentan un poco sobre los network_id, no entraremos mucho en detalle para no salir de contexto, pero hay que saber que hay una lista definida de los principales network ids y que las redes testnet suelen poner el suyo de forma aleatoría, de ahí que se suela poner el asterísco “*” para los de desarrollo.

Podrás elegir cualquiera de las redes simplemente nombrándolas, por ejemplo:

 

Y, para comprobar que todo funciona correctamente sólo tenemos que arrancar las dos redes blockchain en dos terminales distintos y, sin cerrarlas, arrancar la consola de truffle conectándose a cada una de ellas:

 

Y para problarlas

 

Deberías poder conectarte a ambas redes y ver algo similar a esto:

 

Y, por último, el package.json debería acabar mostrando algo similar a esto:

 

Con esto, más las recomendaciones que os pusimos en el anterior post, ya tendréis una estructura básica para empezar a trabajar. Seguiremos avanzando.

 

Y no os olvidéis del .gitignore!

Más al respecto:

 

Foto cortesía de La Huella artworks.
© Todos los derechos reservados.

You may also like

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies