Cómo poner en marcha un bootnode en la red Telsius de 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 bootnode.
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:
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.
- 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/bootnode
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 … )
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_BOOTNODES.md
- data/boot-nodes.json
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
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/boot-nodes.json
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:
- Iniciamos sesión en
https://github.com
- Navegamos a https://github.com/alastria/alastria-node/tree/testnet2
- 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
- En este repositorio, navegamos a la rama testnet2 y después al fichero
data/boot-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ónCommit changes
. - Navegando al fichero
DIRECTORY_BOOTNODES.md
y utilizando el iconolá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) | - | enode://a5788255afd311e2c05c3d72547724d8bf8a47a9f21aa661a4ddcc9c5cd9f87449872e474c64b79adac9b18c15ee0ba3b62cf62528d5b70a826ec27aad30f3b6@62.82.95.209:21000 |
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-node
y 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.