Como desplegar un Smart Contract contra la red T de Alastria.

Guillermo Araujo Riestra
Babel — go2chain
3 min readJul 17, 2019

Por Guillermo Araujo, desarrollador senior en Babel Sistemas de Información y miembro de Alastria Platform Core Team (APCT).

Consideraciones e información básica red T de Alastria:

  • Existen tres tipos de nodos: Validadores (mineros), Bootnodes (permisionadores) y Regulares.
  • Solo los nodos Regulares pueden desplegar Smart Contracts.
  • Solo los nodos Regulares permiten conexiones remotas para interactuar con los Smart Contracts.
  • Los nodos que se han instalado siguiendo la guía de instalación descrita aquí, instala por defecto este access-point.
  • El access-point, por defecto nginx, expone el puerto 80 y el 443 para la conexión RPC.
  • El access-point únicamente expone tres familias de APIs: eth, net y web3.
  • El access-point se lanza por defecto con listas blancas y es por ello que debemos de añadir aquellas IPs que queremos permitir que se conecten. Todas las instrucciones para dar de alta estas IPs las tenemos en el propio README.md del repositorio del access-point.

Pasos para desplegar el Smart Contract:

En esta guía se explicará cómo se hace utilizando truffle.

1º Debemos de disponer de un nodo regular totalmente sincronizado. Para verificar que esto es así, debemos abrir esta página web y comprobar que nuestro nodo está de color verde.

2º Dentro de nuestro fichero truffle.js o truffle-config.js debemos añadir dentro de las networks la información relativa a nuestro nodo. Un ejemplo podría ser el siguiente:

module.exports = {
networks: {
telsius: {
host: "NODE_IP/rpc",
port: 80,
network_id: "83584648538",
gasPrice: 0,
type: "quorum"
}
}
};

Notas:
Debemos cambiar NODE_IP por la IP pública de nuestro nodo.
Atención al /rpc que hay que poner justo después del valor de la IP
El puerto 80 se puede sustituir por el 443
La última propiedad que indica el tipo con valor quorum solo es necesario en algunas versiones de truffle. Podéis encontrar más info en este post.

3º Como ya hemos comentado el access-point filtra algunas familias de APIs. Es por ello, que debemos desbloquear la cuenta de nuestro nodo desde dentro del mismo. Para ello vamos a seguir los siguientes pasos en la máquina donde tenemos el nodo:

docker exec -it CONTAINER_ID /bin/bash
geth attach ~/alastria/data/geth.ipc

Una vez dentro necesitamos dos cosas. Primero la cuenta a desbloquear con la que vamos a hacer el despliegue desde truffle. Con la instalación del nodo con por defecto se crea una cuenta con una contraseña por defecto, se recomienda crear una cuenta nueva con la contraseña elegida para desbloquearla y evitar posibles vulnerabilidades o fallos de seguridad. El siguiente comando nos devolverá el listado de accounts en el nodo y escogeremos la que necesitemos.

personal.listAccounts

Lo siguiente que debemos hacer es desbloquear la cuenta para poder desplegar desde truffle. Por defecto las cuentas están bloqueados y mediante este comando podremos desbloquearla durante un periodo de tiempo (en segundos).

personal.unlockAccount(ADDRESS, "Passw0rd", 300)

4º Al tener desbloqueada la cuenta por un periodo de tiempo ya podemos proceder al despliegue de nuestros Smart Contracts desde la consola donde tenemos el proyecto de truffle. Podemos utilizar un comando como el siguiente dependiendo del nombre que le hayamos dado a nuestro nodo en el archivo de configuración de truffle:

truffle compile --reset && truffle migrate --network telsius --reset

En Babel sistemas de la Información apostamos por el desarrollo con nuevas tecnologías como Blockchain. Teniendo Hyperledger, Ethereum y Quorum como punta de flecha para enfrentarnos a nuevos proyectos. Puedes encontrar más artículos tecnológicos en nuestro blog.

Si has encontrado algún error, tienes alguna sugerencia o algo no te cuadra no dudes en ponerlo en los comentarios. Por otro lado, si te ha gustado este post no olvides de darle a 👏 !!

--

--