Entorno de desarrollo dApps

Como cualquier proyecto de desarrollo de software los programas en Solidity, conocidos como “smart contracts”, también requieren el uso de algunas herramientas de programación que nos ayuden en el proceso de desarrollo.

En principio, luego que tener claro el entorno de desarrollo de las aplicaciones distribuidas, concluimos que se requieren las siguientes herramientas:

  1. Editor de texto o IDE
  2. Compilador de Solidity
  3. Cliente o interfaz a la red de pruebas/desarrollo (Ethereum, Bitcoin, etc)
  4. Otros, como gestión del proyecto o control de versiones

Para nuestro objetivo, que es un acercamiento inicial al desarrollo de estos programas, vamos a introducir los 3 últimos grupos de herramientas a las que, eventualmente, ya conocemos y utilizamos.

Herramientas de desarrollo

truffle

Es una herramienta para la gestión de proyectos en Solidity. Se puede equiparar a herramientas como Maven para Java, o muy genéricamente a Make en entornos C/C++. Permite gestionar todas las etapas de desarrollo del proyecto e internamente abstrae la compilación y despliegue de los programas. Además, como aspecto interesante para nuestros propósitos, implementa una consola que permite interactuar directamente con los contratos ya desplegados en la red de desarrollo.

ganache-cli (antes ethereumjs-testrpc)

Es un paquete de Node.js que simula un nodo completo de Ethereum. Este simulador implementa las llamadas RPC más populares y también es determinista por lo que es útil para el desarrollo de programas. Una de sus ventajas es que simula el nodo en modo local y genera un bloque por cada transacción, lo que es útil al momento de efectuar pruebas, pues caso contrario se tendría que esperar por el nodo y el minado de las transacciones en la red de pruebas, además de necesitar fondos para el pago del gas.

Mocha

Es una herramienta completa para crear pruebas para aplicaciones escritas en Javascript sobre el entorno de Node.js, por consiguiente también se puede utilizar en proyectos en Solidity.

En nuestro caso nos permite validar que las funciones de los programas publicados en la red están operando de manera correcta, o como deseamos. Las pruebas se escriben de manera sencilla y tienen el siguiente formato:

  it("should match token.address with contract's tokenAddress", async function() {
    let holderTokenAddr = await holder.tokenAddress();
    assert.equal(token.address, holderTokenAddr);
  });

Instalación

Para instalar los componentes de desarrollo se debe contar previamente con el entorno de Node.js. En su página web se puede descargar los instaladores para los sistemas operativos más conocidos.

Luego de haber instalado Node.js puede utilizar bien npm o yarn para instalar las herramientas que nos interesan. Para esto solo ejecute la siguiente instrucción:

npm install -g truffle ganache-cli mocha solc