Guía de iniciación a Blockchain con Ethereum


Actualmente, una de las opciones para implementar blockchain con éxito es por medio de Ethereum. Su constante evolución y ampliación merecen que se le preste atención. En un post anterior analizábamos a fondo blockchain y explicábamos detalladamente los aspectos más importantes de una aplicación típica creada en esta tecnología. También introducíamos el concepto de los contratos inteligentes, que van mucho más allá del caso de uso clásico de las criptomonedas. Ethereum abarca estas ideas y ofrece muchas más posibilidades.

 

Ethereum fue creado por Vitalik Buterin en 2015 y ha estado evolucionando con gran efectividad durante los últimos dos años. Conceptualmente, amplía la  propuesta original y proporciona una plataforma basada en blockchain de propósito general para gestionar contratos inteligentes. Cabe mencionar que el bitcoin en sí es un contrato inteligente que incluye varias reglas y operaciones, como enviar activos, comprobar el saldo, etc. La diferencia principal entre el bitcoin y Ethereum es la manera en la que se programa la lógica (ver la captura de pantalla de más abajo). Bitcoin tiene un lenguaje de programación basado en pilas de muy bajo nivel que requiere un gran conocimiento del protocolo bitcoin, mientras que Ethereum es compatible con un lenguaje de programación de alto nivel y Turing completo , lo que simplifica la programación de una lógica personalizada que, después de compilar, se transforma en un bytecode que se ejecuta a continuación en la llamada Ethereum Virtual Machine (máquina virtual Ethereum, EVM). Existen muchas similitudes con la estructura de la máquina virtual Java.

 

Configuración básica

Para empezar a trabajar con Ethereum, echa un vistazo a la documentación que hay disponible online, muy buena y completa:

Deberás instalar un software monedero de Ethereum Wallet o Mist que ofrezca una funcionalidad similar a la del monedero, pero que también incluya otras funciones, como el navegador DApp.

Si no tienes ether, un token nativo de Ethereum como el bitcoin, de las cadenas públicas, deberías pensar en instalar y configurar el cliente Ethereum CLI. Hay algunas alternativas, pero la más popular es Geth (escrito en Go), que ofrece una interfaz muy completa para gestionar nodos de Ethereum. Visita la página de Github para descargarte los paquetes que hay disponibles para muchas plataformas y sigue las instrucciones de instalación.

Otra opción para obtener ethers e ir directamente a la red principal de Ethereum es comprarlos a través de los numerosos y populares servicios de monedero en línea (p. ej., Coinbase).

Desarrollo y testing

Aparte del software monedero, hay muchas herramientas útiles para acelerar el desarrollo en el ecosistema de Ethereum.

Deberías pensar en utilizar el IDE online para Solidity llamado Remix, que te ofrece muchas funciones útiles, como verificación sintáctica, bytecode, código de interfaz, generación de código de implantación e implantación automática en varias cadenas, desde una cadena de prueba en memoria y una cadena privada del localhost hasta una cadena pública (con el plugin MetaMask). Existe una versión beta de un IDE en línea completo para el desarrollo de Ethereum. ¡Regístrate en el sitio web ether.camp y disfruta!

En función de si tu aplicación se ejecuta dentro del navegador o como componente autónomo en Java o NodeJS, tienes un montón de herramientas y aceleradores a tu disposición. En general, es interesante utilizar una biblioteca de alto nivel para interactuar con la cadena en lugar de llamar a Ethereum directamente mediante llamadas RPC. Una biblioteca que actualmente es muy popular para Ethereum es Web3/js, tanto para JavaScript como para Java. Para aplicaciones basadas en navegador, deberías pensar en utilizar MetaMask, de momento disponible como plugin de Chrome.

En el caso de Java, la biblioteca web3j cuenta con varias herramientas útiles para generar clases envolventes (wrapper classes) de Java directamente desde el código de Solidity, que después se pueden utilizar para interactuar con el blockchain. La web3j admite un mecanismo de futuro, por lo que no tendrás que preocuparte por la sincronización de hilos de bajo nivel. Si decides conectarte con el blockchain público y no quieres ejecutar un nodo completo en tu máquina local (algo que puede requerir mucha memoria), puedes emplear Infura, que ejecuta un nodo completo en la nube y te permite interactuar con él mediante simples llamadas HTTP. Si quieres acelerar el proceso de desarrollo y evitar gastar ethers innecesariamente, echa un vistazo a TestRPC. Este blockchain en memoria es una simulación perfecta que puede acelerar el desarrollo de tu contrato inteligente y hacer que ahorres tus ethers para otras ocasiones.

Cuando estés más familiarizado con Solidity y el desarrollo de contratos inteligentes, será un buen momento para empezar a automatizar un ciclo de vida de contratos. Existe una herramienta muy práctica que te ofrece la oportunidad de crear contratos como un bloque parte de sistemas más complejos. Truffle permite controlar el proceso de compilación, testing e implantación como lo hacen las herramientas más clásicas, Maven o Gradle, en Java. Puede interactuar con una cadena en directo, tanto pública como privada, pero también con un TestRPC.

Conclusión

Estas son las herramientas básicas que necesitarás para empezar a crear contratos inteligentes:

  • Un monedero: te permite guardar y asegurar ethers y otros criptoactivos creados en Ethereum, así como escribir, implementar y usar contratos inteligentes.
  • Ether: elemento necesario (combustible) para manejar la plataforma de aplicaciones distribuidas Ethereum.
  • IDE para Solidity: para un desarrollo sencillo de contratos inteligentes.
  • Biblioteca de alto nivel: para interactuar con la red de Ethereum.

Si quieres más información al respecto, en Hackermoon encontrarás otras herramientas interesantes disponibles para desarrolladores de Ethereum.

Y, finalmente, un regalo en caso de que aún te sientas perdido en Ethereum: echa un vistazo a esta infografía del blog de ethereum.com, que resume a la perfección qué es Ethereum, los casos de uso principales, las herramientas, etc.