Introducción
Una de las grandes libertades del mundo de las criptomonedas es la de ejecutar tu propio nodo, y Ethereum no es la excepción a la regla permitiéndonos ejecutar un nodo Geth (Go-Ethereum) sin mayores problemas. Sin embargo, muchas veces la instalación y correcta configuración de los mismos puede ser problemática. Pues bien, con el fin de mostrarte lo sencillo que puede ser esta tarea, hemos decidido crear un sencillo artículo que te mostrará cómo instalar un nodo completo de Ethereum usando Geth y Docker.
Comenzando la configuración
Lo primero que deberás hacer es verificar que cumplas con los requisitos mínimos para instalar un nodo completo de Ethereum. Estos requisitos mínimos son los siguientes:
- Un CPU de 4 u 8 núcleos (AMD o Intel).
- 4 u 8 GB de memoria RAM (para almacenar la cache y demás datos concurrentes del nodo).
- Conexión a internet de alto ancho de banda (unos 100 Mbps de conexión dedicada mínimo, estos te serán útiles en la sincronización inicial).
- 5 TB ( 5000 GB) de disco duro (La blockchain de Ethereum es la más pesada de todas las blockchain existentes). Si deseas un nodo ligero, 25 GB de espacio libre te bastarán.
- La capacidad para ampliar el espacio de almacenamiento a medida que la blockchain siga creciendo.
Seguramente, en este punto la cantidad de espacio de almacenamiento o disco duro necesario para el nodo completo te ha parecido toda una barbaridad. Y lo comprendemos, Ethereum tiene un historial inmenso, porque recuerda que no solo se almacenan las transacciones de la criptomonedas, sino de todos sus tokens, smart contracts y otras funcionalidades que hacen vida en dicha blockchain. Adicional, también pensarás que 100 Mbps es una conexión que está fuera de las manos de muchas personas, pero es lo mínimo recomendable para iniciar un nodo completo, menos de esa velocidad hará que la sincronización sea inviable.
Por supuesto que esto no te frene, existe la posibilidad de ejecutar un nodo ligero de Ethereum, que te brinda mejores capacidades de control de tus transacciones, privacidad y por supuesto seguridad, y es algo que también explicaremos en conjunto en este artículo.
Una vez que ya has comprobado que cumples con los requisitos, el segundo punto a verificar es que tengas una instalación funcional de Docker. Esto lo explicamos con detalle en nuestro anterior artículo Aprende a instalar un BTCPay Server usando Docker. En el cual mostramos todo el proceso de instalación de esta poderosa herramienta.
En este punto, podemos comenzar con el proceso de instalación inicial para nuestro nodo Geth para Ethereum
Ventajas de contar con tu propio nodo
Seguramente te preguntarás ¿Qué ventajas me ofrece todo esto? Pues bien acá enumeramos algunas de ellas:
- Si eres desarrollador, tener un nodo propio te permite tener una puerta para desplegar tus smart contracts de forma rápida. Incluso un nodo ligero sirve para esta tarea, así como otras relacionadas con el desarrollo de DApps y pruebas de las mismas.
- Si eres un usuario, tener un nodo propio te permite tener mayor control sobre tus operaciones usando la red Ethereum. Todo lo que hagas pasará por tu nodo, en lugar del nodo de un tercero del que no conoces absolutamente nada. Esto brinda un mayor control, seguridad, privacidad e incluso anonimato bajo ciertas condiciones, si unes el funcionamiento de este nodo usando Tor y mantienes tus metadatos bien controlados.
- Si ejecutas un nodo completo, ayudas a la red a mejorar su seguridad y descentralización.
Como ves son ventajas bien llamativas, en especial aquellas como usuarios, donde ganamos mayor control y privacidad por nuestros datos.
Instalando nuestro nodo
Para iniciar la instalación de Geth en Ethereum, lo primero que debemos hacer es dirigirnos a una consola de Windows o GNU/Linux para iniciar el proceso de instalación. Si estas en Windows, debes ir al Menú de Inicio y escribir "cmd", allí te aparecerá la siguiente imagen:
Una vez allí haz clic sobre la imagen de la cmd (icono negro) y podrás entrar a la misma:
En caso de que uses GNU/Linux, bastará con que ejecutes la consola de tu entorno de escritorio para poder realizar los pasos que describiremos a continuación.
Instalando Geth con Docker
En la consola o terminal deberás colocar este comando:
docker pull ethereum/client-go:stable
Este comando lo que hará es iniciar el proceso de instalación de Geth sobre la instalación Docker que tengas en ese momento. Todo ello siguiendo el proceso descrito de forma oficial por los desarrolladores de Geth.
Al ejecutar el comando anterior veremos lo siguiente en nuestra consola:
Espera a que el proceso termine antes de empezar con el siguiente paso.
Una vez terminada la instalación, iremos al Dashboard de Docker, y veremos lo siguiente:
Tal como podemos ver tenemos nuestra instalación de Geth sobre Docker instalada. Ahora para iniciar nuestro nodo debemos colocarnos sobre el mismo y hacer clic en la opción "RUN" que aparece del lado derecho de la pantalla.
Al hacer clic te aparecerá la siguiente pantalla:
En la sección "Containers" del Dashboard de Docker, podrás ver lo siguiente:
Allí se muestra nuestro nodo Geth en ejecución. Si hacemos clic sobre el mismo podrás ver todo lo que sucede dentro del mismo.
Todo lo que ves en este punto es tu nodo personal Geth realizando el proceso de sincronización. Por defecto, la configuración de este nodo ejecuta una sincronización completa de la blockchain de Ethereum, lo que requiere de 5 TB de almacenamiento en este momento. Si tienes los recursos para mantener un nodo de estas características eres bienvenido a hacerlo y ayudar a la comunidad Ethereum en su descentralización. En tal caso, lo ideal es que ejecutes este nodo en un servidor de alta capacidad que esté activo en todo momento.
Sin embargo, debido a que esto es mucho espacio para la mayoría de las personas, lo ideal es ejecutar un nodo más liviano, y es lo que haremos a continuación. De esa forma podrás instalar un nodo completamente funcional, que te permitirá un mayor grado de privacidad y de control sobre tus operaciones.
Configurando el modo nodo liviano
Ahora bien, la configuración en modo liviano es un tanto distinta. En primer lugar, ve al Dashboard de Docker y elimina la instalación que tienes hecha de Geth. Esto solo eliminará la instalación en funcionamiento, y no los archivos necesarios (imágenes) de instalación que necesitaremos más adelante.
La eliminación puedes hacerla eligiendo en el Dashboard de Docker, la imagen en ejecución de Geth, y dando clic en el icono de "Papelera" que aparece sobre la misma, tal como se muestra en la imagen siguiente.
Eliminada, la imagen lo siguiente que debes hacer es crear una carpeta en tus documentos o escritorio llamada “Geth-Docker” o con el nombre que desees. En dicha carpeta guardarás un documento llamado “docker-compose.yml”. En dicho documento guarda la información que aparece en este enlace. También puedes descargar el archivo desde el enlace y guardarlo en la carpeta con lo que te ahorras algo de trabajo.
Los comandos dentro del archivo, para tu conocimiento, ejecutan la siguiente cadena de comandos:
- Inician un contenedor con el nombre app-ethereum. Este podrás verlo en el Dashboard de Docker una vez termine la instalación del docker-compose.
- Instala la versión estable de Geth (ethereum/client-go:stable). De esa forma siempre tendremos la versión más actual estable de Geth.
- Abre los puertos 8545 para el sistema RPC, 30303 y 30303/udp para conectar otros wallets e interactuar con nuestro nodo.
- Crea puntos de almacenamiento de información para nuestro nodo usando nuestro disco duro. Así todo lo que pase en el nodo quedará grabado siempre.
- Inicia Geth en modo light (sección “command”).
De esta forma, sabes exactamente que ocurre en tu computador usando este Docker-Compose. Nuevamente te invito a que tengas cuidado cuando ejecutes este tipo de acciones desde fuentes desconocidas o poco confiables.
Una vez que descargues y pegues el contenido del enlace en el archivo docker-compose.yml, guarda los cambios y ve a la consola o terminal. Desde allí, lo siguiente será navegar con la consola a donde está dicho archivo. Esto es fácil de hacer, abre el Explorador de Archivos y ve a la dirección donde está el archivo docker-compose.yml, una vez allí copia la dirección que aparece en la barra, tal como se muestra en esta imagen:
En este caso, la dirección es: “D:\DOCKER\GETH-ETHEREUM”, pero en tu caso particular podrá cambiar, solo asegurate de copiar la dirección y lo siguiente será ir al terminal y pegar este comando:
cd D:\DOCKER\GETH-ETHEREUM
Lo que hace esto es cambiar tu directorio de trabajo al lugar donde has guardado el archivo docker-compose.yml. Una vez allí ejecuta el comando
docker-compose up -d
Esto lo que hace es iniciar la instalación del docker-compose que hemos realizado, e iniciara nuestro nodo Geth en modo liviano tal como lo especificamos.
En este punto, si revisamos el Dashboard de Docker veremos a nuestro nodo Geth liviano funcionando sin problemas.
Probando nuestro nodo
Ahora bien ¿Cómo sabemos que realmente Geth está funcionando y todo esto no es solo una tomadura de pelo? Pues bien, una forma rápida y sencilla es configurar una wallet como MetaMask para que use nuestro nodo con el fin de enviar y recibir dinero de la red. Esto es bastante sencillo de hacer. Para lograrlo, abrimos nuestro navegador favorito y vamos a la web oficial de MetaMask.
Allí vamos a la sección de Descargas o Download, y descargamos el monedero para nuestro navegador.
Al instalar tendremos nuestra wallet lista para ser configurada.
.
Para ello solo debes seguir el proceso de configuración, una vez lo termines, tendrás lista tu MetaMask instalada en tu navegador y lista para ser usada. Es allí, donde comenzamos a configurar la misma para usar nuestro nodo local Geth.
En este punto, solo deberás elegir el medio de conexión a usar para tu MetaMask, esto es bastante sencillo, solo haz clic en el menú desplegable ubicada en la parte superior derecha, y elige “localhost:8545”.
Con esto ya tendremos conectado nuestra wallet MetaMask usando nuestro propio nodo Geth. Ahora bien, ¿Qué pasa si queremos ir y probar nuestra wallet en una app DeFi? Pues bien, si vamos a Compound, podemos examinar si funciona todo como debe.
Si entramos en la DApp, entonces podemos interactuar con la misma usando MetaMask, y está enviará toda la información de la red usando nuestro propio nodo, evitando que terceros manejen o enruten los mismos. En la siguiente imagen, podemos ver que efectivamente Compound DApp ha conectado con nuestra MetaMask, y que nuestra MetaMask está usando nuestro nodo local para hacer todo el trabajo...descentralización al máximo.
Y sin pérdida alguna de funcionalidad, ya que podemos enviar, recibir e interactuar con DApps sin problemas.
Conclusiones
Tal como puedes ver, Docker es un software con una utilidad tremenda para este tipo de cosas. Si eres un desarrollador o piensas desarrollar aplicaciones descentralizadas sobre Ethereum, un nodo Geth local es una herramienta básica para este tipo de acciones, ya que te permite realizar pruebas, desplegar contratos e interactuar con tu DApp sin mayores dificultades, tal como has podido ver en este artículo.
Adicional, seguramente te habrás imaginado que este tipo de acciones son las que permite por ejemplo que los exchanges funcionen enviando y recibiendo dinero de la red. Detrás de toda aquella interfaz gráfica pensada en los usuarios, está esto, servicios que corren en máquinas y que buscan ofrecernos todas las herramientas que necesitamos.
Sin embargo, la utilidad de instalar un nodo propio no solo se detiene allí. Si usas un computador con un VPN o Tor, este tipo de instalaciones pueden ayudarte a proteger aún más tu privacidad mientras haces uso de los servicios de Ethereum sin correr riesgos, manteniendo el control en todo momento de tu interacción en la red. Al final todo se centra en descentralización, seguridad, privacidad y libertad, los pilares de la tecnología blockchain y su grandiosa comunidad.