Trabajando con Smart Contracts en Ethereum - Parte III

Crear un Smart Contract, hacer tests y migrarlo a una red local

Seguimos contando como montar un proyecto sobre Solidity; si ya te enseñamos los entornos de implementación y trabajo, ahora toca crear un Smart Contract básico, usando Truffle y OpenZeppelin, migrarlo en un entorno local y hacer testing para ver que todo está ok.

Para probar todo el proceso, probaremos con un Smart Contract que cumpla el ERC20, ERC827 y también que permita el minado de nuevas monedas… Quién sabe, igual en un futuro debamos acuñar más ! Como siempre, no entraremos mucho en el contrato en sí, ya que no es el foco de esta serie de post y porque, como os dijimos, Solidity tiene un muy buen manual para entender cómo funciona.

Lo primero que haremos será instalar los paquetes que necesitamos:

  • zeppelin-solidity: Esta librería da un montón de funcionalidades para trabajar sin tener que reinventar la rueda. El objetivo de la empresa Open Zeppelin es auditar y ser un “sello de garantía” de los Smart contracts, por lo que puedes usar su código estando seguro de la calidad del mismo.
  • Es muy aconsejable usar linters que nos revisen y nos den unas guías de trabajo unificadas, para Solidity tenemos Solhint, del que ya hablamos en el primer post para integrarlo en Webstorm.
  • Usaremos Javascript, por lo que es necesario usar un linter de Javascript. En nuestro caso usamos Eslint con la configuración de Airbnb que es bastante estricta. En nuestro caso, como usamos máquinas Unix usaremos el sistema que indican en la documentación para tenerlo completamente actualizado.

 

Lo primero será configurar los linters, para eso habrá que añadir un pequeño fichero de configuración para el Solhint ya que nosotros trabajamos siempre con 4 espacios y el estándar que usamos de Eslint.

 

Y en el package.json actualizaremos los scripts para poder usar Solhint, cambiando el bloque de scripts por el siguiente

 

Y si lo probamos con un “npm run test:linter” nos llevaremos una sorpresa, el Migrations.sol tiene unas cuantos errores. Así que adelante con ellos y a arreglarlo! (tienes una versión actualizada en Github)

El Smart Contrat que usaremos será el siguiente:

 

Para probar que todo funciona correctamente migraremos el contrato directamente contra la red de Ganache; para hacerlo tendremos que añadir a nuestro fichero de configuración de truffle el puerto y la network que está usando. Normalmente es el 7545 y la red 5777 pero comprobarlo por si en vuestro caso ha cambiado.

 

Y lanzar el comando para compilar el Smart Contract y migrarlo a la red de Ganache. Recordar también que no hemos instalado nada en global, por lo que los comandos son ligeramente distintos a los habituales:

 

Si todo ha salido bien, tendréis el contracto subido y podréis ver algunos detalles en vuestro Ganache:

 

 

Pero, para probar las cosas, ¿qué mejor que hacerse unos tests? vamos a por uno básico y a ver si todo ha ido bien, este sería el test:

 

Algunos tips sobre el test:

  • Las dos primeras líneas las usamos para quitar un par de reglas de Eslint; Tener en cuenta que estamos dentro de un test.
  • Usamos el before para esperar a que el deploy esté completamente hecho y guardar algunas “variables globales”
  • Aunque aquí usamos Ganache para las pruebas, en los casos locales usamos ganache-cli por ser ligeramente más rápido.
  • Hemos probado sólo con “test positivos” a modo de prueba, sería bueno hacer pruebas con cosas que no se pueden hacer.

 

¡Vamos a probarlo!

Y, si todo ha ido bien, tendrás una salida similar a esta:

 

Enhorabuena! Ya tienes tu primer Smart Contract funcionando! Ahora nos tocará publicarlo en una red de desarrollo para poder usarlo con nuestro proyecto antes de lanzarlo a producción.

Notas:

  • Veréis que también hemos incluido npm-check lo usamos para ir controlando el uso de los paquetes mientras estamos en desarrollo, tanto para actualizar los paquetes como para gestionar aquellos que no se están utilizando.
  • Recuerda entrar a Ganache para cotillear todas las transacciones que has realizado! 😉

 

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