13/10/2020 | Blockchain,Tecnologías

Cómo actualizar Geth en un nodo Blockchain de la Red T de Alastria

En este tutorial muy práctico os explicamos los pasos para actualizar la versión de Geth de vuestros nodos de Red T de Alastria.

¿Qué es Alastria?

Desde 2018 Tribalyte Technologies es miembro de Alastria, un consorcio multisectorial sin ánimo de lucro. El objetivo principal de Alastria – muy en resumen – es proveer a cualquier entidad interesada en el proyecto toda herramienta fundamental para desarrollar su propia estrategia blockchain. Podrás encontrar más información aquí.

Aquí el Checklist para actualizar Geth en un nodo Blockchain de la Red T de Alastria

«Red T de Alastria construida sobre tecnología Quorum». Fuente: web oficial de Alastria

Primero que nada, el salto que haremos será de la versión v1.8.12 a la v1.8.18, y lo haremos recopilando y actualizando el binario de geth para cambiarlo dentro de la imagen Docker del nodo. También existe la posibilidad de hacerlo montando de nuevo el nodo de Red T, el cual por defecto nos traerá la versión v1.8.18, pero es bastante más engorroso si queremos mantener nuestras cuentas. Si estáis interesados en los cambios que existen entre esta versiones, podéis verlos en el GitHub de geth.

Es fundamental que paremos nuestro nodo y para ello debemos meternos dentro de nuestro contenedor de Docker donde tenemos el nodo corriendo con las siguientes instrucciones:

Listamos todos los containers con:

docker ps -a

Copiamos el “container id” de nuestro nodo y accedemos a él con la sentencia:

docker exec -it <container-id> /bin/bash

Accedemos a la carpeta donde se encuentran los script con:

cd ~/alastria-node/scripts

Paramos el nodo ejecutando el script “stop.sh” con:

./stop.sh

Una vez parado el nodo vamos a colocarnos el repositorio de “Quorum” para poder compilar tanto el nuevo binario de “Geth” y el “bootnode” que será lo que necesitaremos para poder utilizar este nuevo “Geth” con nuestro nodo “Quorum”. Para ello:

Accedemos a la carpeta donde están los binarios:

cd /usr/local/bin

Clonamos el repo y hacemos checkout al commit marcado:

git clone https://github.com/alastria/quorum.git
cd quorum
git checkout 775aa2f5a6a52d9d84c85d5ed73521a1ea5b15b3

A continuación, compilamos con «make» y renombramos los binarios obtenido a “geth-v1.8.18” y “bootnode-v1.8.18”

make all
mv build/bin/geth /usr/local/bin/geth-v1.8.18
mv build/bin/bootnode /usr/local/bin/bootnode-v1.8.18

Volvemos a la carpeta de los binarios:

cd /usr/local/bin

Por último, solo tenemos que renombrar ambos archivo a los nombres básicos de “geth” y “bootnode”, pero antes, recomendamos cambiar el nombre de los binarios actuales, por si algo saliera mal, esto sería:

Renombramos los antiguos binarios:

mv geth geth-v1.8.12
mv bootnode bootnode-v1.8.12

Ponemos el nombre básico a los binarios de la nueva versión:

mv geth-v1.8.18 geth
mv bootnode-v1.8.18 bootnode

Volvemos a la carpeta de scripts:

cd ~/alastria-node/scripts

Y para finalizar, lanzamos nuestro nodo de nuevo

./start.sh

Si todo ha salido bien, nuestro nodo estará funcionando a la perfección y podremos comprobar que hemos actualizado correctamente la versión en la web de netstats de Red T, en la que nuestro nodo cambiará el texto que precede a su nombre de “nombre-del-nodo/v1.8.12-stable/…” a “nombre-del-nodo/v1.8.18-stable(quorum-v2.2.3-0.Alastria_EthNetstats_IBFT)/…”

En caso de tener cualquier problema podemos parar de nuevo el nodo, eliminar los binarios actuales de geth y el bootnode, renombrar de nuevo los binarios anteriores y volver a lanzar el nodo, haciendo que todo vuelva a estar como antes.

Hay que tener en cuenta que, dado que hemos hecho cambios en un contenedor en ejecución, a no ser que originalmente se hubieran montado los directorios de trabajo como volúmenes en el host, se perderán los cambios al detener el contenedor de Docker. Para persistirlos en una nueva imagen de Docker, ejecutamos:

docker commit <container-id>

¿Por qué hemos actualizado la versión de Geth?

Quitando el hecho de que casi siempre es interesante tener las últimas versiones posibles del software que usemos, ya que esto puede resolver problemas de seguridad importantes, nosotros decidimos actualizar ya que teníamos un problema con ciertas peticiones a nuestro nodo que se devolvieron vacías debido a un timeout en la RPC. A partir de la versión v1.8.13 los timeout de las respuestas RPC son configurables dentro de un archivo ”.toml” y por tanto decidimos actualizar para ver si esta configuración resolvía el problema. Desgraciadamente por ahora, esto no parece resolver nuestro problema, el cual ha sido comunicado tanto a Quorum, en esta issue, como a Alastria. Con todo esto, agradeceríamos cualquier tipo de ayuda disponible para resolver el problema planteado en la issue que añadimos a quorum.

Ejemplo fácil de Blockchain

Ya que a veces la aplicación real de esta tecnología puede resultar difícil de entender, hemos preparado un ejemplo práctico y fácil de blockchain para empresas.

Expertos en Blockchain

El blockchain va a ser uno de los protagonistas de la recuperación económica y de la adaptación de las empresas a la nueva normalidad, así que, si no quieres que te coja por sorpresa, contáctanos para saber más

Compartir en:

Relacionados