05/04/2018 | Blockchain,Consejos tecnológicos,Tecnologías

Creación de un nodo en la red blockchain de Alastria

¡Hola a todos! Como ya indicamos en otra entrada del blog, Tribalyte Technologies se ha unido a la red Alastria, por lo que encontrábamos adecuado explicar el proceso de creación de un nodo de la misma.

La asociación Alastria facilita los diferentes repositorios en GitHub con numerosa documentación para las herramientas existentes en la red. En el caso de esta entrada, estamos interesados en la creación de un nodo de Alastria.

Lo primero de todo, indicar que para poder desplegar el nodo creado, se revisará antes si  pertenece a Alastria por lo que tan solo se aceptarán aquellos que se confirme que pertenecen a la misma.

Aquí podemos encontrar el repositorio donde se nos indican los siguientes pasos a seguir. Primero hemos de prestar atención a los requisitos establecidos para la creación de nuestro nodo. Los requisitos son los siguientes:

  • CPU’s: 2 cores.
  • Memoria: 4 Gb.
  • Disco duro: 30 Gb SSD.
  • Sistema operativo: Ubuntu 16.04, CentOS 7.4 o Red Hat Enterprise Linux 7.4, siempre en 64 bits.

Y hemos de abrir los siguientes puertos de red:

  • 8443: TCP – Puerto para monitorización.
  • 9000: TCP – Puerto para la comunicación de Constellation.
  • 21000: TCP/UDP – Puerto para establecer la comunicación entre procesos geth.
  • 22000: TCP – Puerto para establecer la comunicación RPC. (este puerto se usa para aplicaciones que comunican con Alastria, y puede estar filtrado hacia Internet).

Tras ello hacemos fork del repositorio, ya que será necesario para vincular nuestro nodo con el resto de la red. Clonamos el repositorio en nuestra máquina y ejecutamos el script «bootstrap.sh» dentro de la carpeta «scripts»:

$ git clone https://github.com/alastria/alastria-node.git
$ cd alastria-node/scripts/
$ sudo -H ./bootstrap.sh
$ source ~/.bashrc
</pre>
<p><img class="alignnone  wp-image-24205" src="https://trbl-services.eu/wp-content/uploads/2018/04/nodo-2.png" alt="" width="606" height="91" /></p>
<p><br /><br />

Con ello comenzará la instalación y configuración de las dependencias necesarias para iniciar el nodo.
Una vez termine, nos queda iniciarlo indicando nuestra dirección IP, el tipo de nodo: si será uno general o bien validador, y finalmente el nombre del mismo. Todo ello serán nuestros datos de entrada que daremos al script init.sh.
Recomendamos usar por facilidad el parámetro auto para que introduzca automáticamente nuestra dirección IP:

./init.sh auto node-type node-name

Tras ello, se habrán modificado algunos archivos dentro de nuestro repositorio. Si es general:

Mientras que si el nodo es validador:

Ahora hemos de modificar manualmente el archivo DIRECTORY_REGULAR.md o  DIRECTORY_VALIDATOR.md e indicar los datos de nuestro nodo tal y como se indica:

  • Entidad: Indicaremos nuestro nombre de la entidad que representamos.
  • Contacto: Los datos de aquellos a quien pertenece el nodo y un método de comunicación (Correo, slack…)
  • Hosting info (Cores/Mem/HDD): Como bien indica, introducimos los datos de nuestra máquina en el orden que se nos requiere.
  • Clave private for *: Se nos habrá generado una clave única tras la inicialización del nodo en el fichero ~/alastria/data/constellation/keystore/node.pub
  • Enode: Se nos habrá generado los datos de nuestro nodo en la consola durante la inicialización. Los introducimos.

Tras todo ello tan solo será necesario realizar un pull request de nuestra rama a la rama del repositorio de Alastria (Atención: actualmente feature/ibtf, no en su rama master). Cuando sea validada por el equipo de Alastria ya estaremos dentro de la red y podremos desplegar nuestras aplicaciones sin problema.

Podremos interaccionar con nuestro nodo a través de los siguientes puertos que hemos abierto:

  • 8443 TCP – Usado para la monitorización: Uno de los scripts que podemos usar después de ejecutar «bootstrap.sh» es «monitor.sh». Este monitor nos permite controlar nuestro nodo y ver su estado en cualquier momento. Mediante «monitor.sh build« lo instalaremos, y con «monitor.sh start« lo iniciaremos. Para acceder a los diferentes comandos soportados y su uso, es posible consultar el repositorio del monitor en GitHub.
  • 9000 TCP – Comunicación de constellation: Este puerto es el usado por los nodos de la red para la comunicación entre ellos.
  • 21000 TCP/UPD – Comunicación entre procesos geth: Mediante este puerto es enviada las comunicaciones JSON RPC, que explicaremos posteriormente, entre los diferentes nodos de la red.
  • 22000: TCP – Puerto para establecer la comunicación RPC: Este puerto permite la comunicación con aplicaciones a la red Alastria. Mediante este puerto podemos comunicar con nuestro nodo a través de JSON RPC.

El protocolo JSON RPC utilizado por geth es una especificación que define el procesamiento de estructuras de datos para la comunicación remota con el nodo. Con ello podemos transmitir información a nuestro nodo y recibir datos de la misma. Existe documentación detallada sobre los métodos disponibles en la documentación oficial de Ethereum correspondiente.

En este caso podemos enseñaros un ejemplo de interacción con nuestro nodo, como por ejemplo mediante el método net_listening podemos ver si nuestro nodo está escuchando a conexiones de la red.

Espero que esta entrada os haya podido servir de ayuda ¡No dudéis en comentar si os encontráis ante alguna dificultad al seguir estas indicaciones!

EDIT: podéis encontrar más información en esta entrada del blog de Alastria sobre como poner en marcha un nodo regular.

Compartir en:

Relacionados