Trabajando con Smart Contracts en Ethereum - Parte I

Intro - Entornos de Implementación

Últimamente no paramos de ver muchos artículos sobre qué es blockchain, qué son las criptomonedas y qué se puede hacer con un Smart Contract en Ethereum, pero pocos en los que realmente nos bajemos al barro, nos manchemos las manos y empecemos a trabajar, de una forma profesional, con Solidity.

Por eso, vamos a empezar una serie de artículos sobre Solidity donde os contaremos cómo creamos, y trabajamos, desde Kubide, con este nuevo lenguaje.

No queremos ser otro “hello world”, para eso, os recomendamos que os leáis la documentación oficial, que es bastante buena. Pero si que espero que os sirva de bastante ayuda a la hora de organizaros para acometer un gran proyecto en Blockchain.

Empezaremos mostrando nuestro entorno de implementación con esta tecnología, nuestro boirleplate, haremos un Smart Contract básico y usaremos NodeJs para consumirlo (si, NodeJS, porque también hemos visto muchísimos artículos para hacerlo desde Web con React o Angular, y no queremos repetir)

En un proceso normal de trabajo, al igual que con cualquier otro proyecto o lenguaje de programacion, solemos dividir el entorno de implementación en 5 áreas delimitadas:

 

Entorno local
Cada uno de los desarrolladores de blockchain tiene que poder trabajar desde sus propios equipos creando, testando y modificando el código de los Smart Contracts.

Debe tener una infraestructura mínima en su equipo que le permita programar y hacer los deploys de una forma sencilla.

Para eso necesitaremos, como poco, un IDE de trabajo compatible con Solidity y una Blockchain local, o testnet, sobre la que hacer las pruebas.

 

Desarrollo
Una vez un Smart Contract cumple los requerimientos básicos del proyecto, hacemos un deploy a nuestro entorno de desarrollo. Así todo el equipo puede ponerse manos a la obra a probarlo e integrarlo con las demás partes del proyecto sin miedo a compartir información fuera de nuestra red.

En este caso, veremos cómo crear una blockchain privada y como integrar nuestro Smart Contract contra un API en NodeJS.

 

Staging
Hay que entender que un Smart Contract no se puede modificar. Cometer un fallo en el planteamiento de un Tokenomics o en el desarrollo del mismo, puede ser bastante grave, puede no tener posibilidad de rollback o, peor, unos costes inmensos tanto para la empresa como para los usuarios.

Por eso, cuando trabajamos con Smarts Contrats la parte de testing es muy importante, más incluso que la de desarrollo.

Todo nuestro código va con Test de integración, pero aun así, es muy recomendable esta fase previa al lanzamiento a producción, utilizamos las Testnets de Rinkeby y/o Ropsten (enlaces) donde podremos conseguir ETH gratis para hacer todo tipo de test en un entorno real y donde podremos mostrar nuestros Smart Contracts al mundo para ponerlos realmente a prueba sin riesgo alguno.

 

Producción
Una vez hemos validado nuestro Smart Contract, ya podremos hacer el deploy a producción del mismo, configurar el código de nuestra API en NodeJS para que conozca la dirección real y empezar a usarlo!

 

En el próximo post, os contaremos nuestro boilerplate básico y haremos nuestro primer Smart Contract, para lo que os recomendamos tener instalado en vuestro equipo:

  • NodeJS en la versión 8 o superior:
    Lo utilizaremos tanto para trabajar con Solidity como para montar el API básica.
    Os recomendamos encarecidamente usar NVM para gestión de NodeJS y sus versiones.
  • Ganache (de Truffle): Recordar que en local necesitaremos nuestro propio blockchain para hacer pruebas y ver que todo funciona correctamente.
    Este tipo de blockchains de prueba se llaman testnet, y, aunque no es estrictamente necesario tener la testnet de Ganache, y en el código siempre incluimos ganache-cli para trabajar, esta versión gráfica creada por la gente de Truffle es muy potente y fácil de usar y ayuda a visualizar mejor qué está pasando dentro del blockchain.
    Puedes descargarte el código compilado desde la propia página de Ganache o compilarlo tu desde la versión de Github.
  • Webstorm + Solidity Plugins: Aunque hay otros IDE de trabajo, nosotros estamos bastante contentos con Webstorm, y funciona muy bien con Solidity y NodeJS. En este caso, para hacer que todo funcione correctamente, le debéis instalar los plugins de Solidity y Solhint (el linter para Solidity).

 

Nota: Trabajamos con Truffle framework, y aunque ellos recomiendan el instalarlo global, nosotros preferimos no instalar ningún paquete NPM a nivel global, así que lo instalaremos directamente en el proyecto.

Nos vemos en las trincheras!

 

Más al respecto:

 

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

You may also like

One comment