Cómo poner en marcha un nodo regular en la red Telsius de Alastria

Guillermo Araujo Riestra
Babel — go2chain
5 min readMar 29, 2019
Nodo Regular Alastria

En este enlace puedes encontrar la versión en Inglés

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

Telsius, es una red Quorum, que utiliza el algoritmo de consenso IBFT. Es una red permisionada (necesitaremos solicitar el acceso a la misma) y con la posibilidad de generar transacciones privadas (Constellation).

En esta red, podemos elegir desplegar tres tipos de nodos:

  • Validadores: Responsables de generar neutralidad y confiabilidad al generar los bloques. Son los encargados de ejecutar el algoritmo de consenso IBFT.
  • Bootnodes/permisionadores: Responsables del permisionado de los nodos en la red. Visibles para todos los tipos de nodos.
  • Regulares: Responsables de aceptar transacciones, verificarlas y entregarlas a los validadores.

En este post vamos a ver como instalar un nodo de tipo regular.

Requerimientos del nodo:

Sistema operativo: Ubuntu 16.04

Docker: Necesitamos tener instalado docker en la máquina donde se va desplegar el nodo. Instalación de docker.

Hardware:

Requisitos de Hardware minimos y deseados.

Puertos: Se debe permitir el tráfico a los siguientes puertos:

  • 21000/TCP y UDP: Permite conectarse y sincronizarse a los nodos entre sí. Esto se hará incluyendo el “enode”, IP y puerto 21000 en los ficheros: boot-nodes.json, regular-nodes.json o validator-nodes.json dependiendo del tipo de nodo que sea.
  • 80/TCP y 443/TCP: Puertos en los que escucha el Access Point que filtra algunas familias de la API Geth y trabaja por defecto con listas blancas.
  • 9000/TCP: Este puerto será opcional. Es el encargado de las transacciones privadas de Constellation. Si en nuestro caso no queremos realizar transacciones privadas con otros socios no es necesario que habilitemos el puerto.
  • 8443/TCP: Este puerto será opcional. Exposición de la API REST del monitor del nodo. Para poder acceder a este API, es necesario disponer de un certificado digital instalado en el navegador. El monitor vendrá instalado por defecto en las imágenes de docker de los nodos regulares pero no será obligatorio tenerlo operativo.

Pasos para lanzar el nodo:

1. Descargamos el repositorio con el siguiente comando:

git clone -b testnet2 https://github.com/alastria/alastria-node

2. Navegamos hasta la carpeta donde esta el script para lanzar la instalación del nodo:

cd alastria-node/docker/general

3. Ejecutamos el script init dentro de esta ruta:

./init.sh

4. Respondemos a todas las preguntas que nos vaya haciendo el script:

Nombre de la compañia
Número de CPU’s de la máquina
Número de Ram de la máquina
Número de secuencia de nodos en la red, empezando por 00 si es primer nodo e incrementando en un en caso de tener más (00, 01, 02 … )
Deseas lanzar el monitor (Y/N)
Deseas habilitar constellation para las transacciones privadas (Y/N)
Confirmamos si la información es correcta, introduciendo 1 en caso afirmativo o 2 en caso negativo.

5. Esperamos que termine de lanzarse el script. Una vez haya terminado deberíamos ver en el netstat de la red nuestro nodo de color rojo.

http://netstats.telsius.alastria.io/

6. Para que nuestro nodo sea incluido en la red y comience a sincronizar la chain, deberemos realizar un Pull Request sobre el repositorio de alastria-node en la rama testnet2 (actualmente Telsius). Tendremos que modificar los siguientes archivos:

  • DIRECTORY_REGULAR.md
  • data/regular-nodes.json
  • data/constellation-nodes.json (únicamente si hemos activado el constellation para las transacciones privadas en nuestro nodo).

Como el nodo ha sido lanzado con docker, tenemos que meternos dentro del contenedor que se crea para obtener el enode de nuestro nodo. Con el siguiente comando podremos encontrar el Container_ID de nuestro docker.

docker container ls
Comando para obtener el CONTAINER_ID

Una vez que lo tenemos, lanzaremos el siguiente comando para meternos dentro del container de docker:

docker exec -it CONTAINER_ID /bin/bash

La información necesaria de nuestro nodo la podremos encontrar ejecutando el siguiente comando:

git diff /root/alastria-node/data/regular-nodes.json

Y en el caso de que este activado el constellation también ejecutaremos:

git diff /root/alastria-node/data/constellation-nodes.json

Además, en el caso de tener instalado constellation también será necesario obtener la clave pública para que los demás nodos constellation puedan realizar las transacciones privadas contra el nuestro.

$ cat ~/alastria/data/constellation/keystore/node.pub
BAKMjJL7xeRjUt1za/Ax8pKIb9T66tSJWxW3QfTmOSY=

7. Una vez identificada la información de nuestro nodo (línea verde de la imagen superior), se procede a enviar un pull request al repositorio github alastria-node a su rama “testnet2”. Para ello:

  1. Iniciamos sesión en https://github.com
  2. Navegamos a https://github.com/alastria/alastria-node/tree/testnet2
  3. Pulsamos sobre el botón Fork y nos creará una copia del repositorio actual alastria node en nuestro usuario, ej.: https://github.com/go2chain/alastria-node
  4. En este repositorio, navegamos a la rama testnet2 y después al fichero data/regular-nodes.json y con el icono lápiz, agregamos la modificación al final de la lista y fijándonos en la estructura de los demás nodos. Una vez realizados los cambios en el fichero, deberemos utilizar el botón Commit changes.
  5. Navegando al fichero data/constellation-nodes.json y con el icono lápiz, agregamos la modificación al final de la lista dentro de los corchetes, teniendo cuidado de NO añadir la “,” al final. Una vez realizados los cambios en el fichero, deberemos utilizar el botón Commit changes.
  6. Navegando al fichero DIRECTORY_REGULAR.mdy utilizando el icono lápiz, añadimos en la última línea del fichero la información, que en el caso del ejemplo sería:
| Babel | Guillermo Araujo Riestra(go2chain@babel.es) | Self Hosted (2C/4Gb/100Gb) | BAKMjJL7xeRjUt1za/Ax8pKIb9T66tSJWxW3QfTmOSY= | enode://d670e3f0d767c20fb780448555a9f918bccb4dd94f8fe1d53ad58abb6feb5775a546342b1a0665e61d906a21e61d90b96a21e61ddc8abb04d9c4a0fa1a44f6e9cf013ad4@87.220.23.252:21000?discport=0 |

6. Utilizamos el botón Commit changes como en el resto de los casos.

7. Navegamos a la pestaña Pull request y hacemos clic sobre el botón New Pull Request verificando que a la izquierda se encuentra el repositorio alastria\alastria-nodey a la derecha tu_usuario\alastria-node , ambos en la rama testnet2.

9. Utilizando el botón Create pull request se crea en el repositorio alastria-node el correspondiente pull request que el equipo de plataforma deberá aceptar e integrar.

Importante:

Siguiendo esta instalación hay que tener en cuenta que dentro del docker del nodo de Alastria se instala también un access point para restringir las llamadas y las familias de las APIs que se pueden utilizar. Podéis encontrar más información en el enlace que pongo a continuación. Hay que tener en cuenta que NO hay que hacer caso a la parte de Instalación ya que el docker lo trae instalado por defecto y podemos saltar directamente a la parte de TOOLS Access-point

--

--