Aprende a como instalar un nodo de Ethereum usando Geth y Docker

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:

https://lh5.googleusercontent.com/1HWCS2Of_uY9OHyGs_9d6EwjhtYgLIqsOPx5VdB6lbbF7b9q_M2KH1m-KTAB3xkjfVDHHuIo_d5OGIyhq3nkrG3fOh-PQ_OWHe3od3YyJKzOVo8WvzNQ4EksyTS0ghTSaJM3eDCV

Una vez allí haz clic sobre la imagen de la cmd (icono negro) y podrás entrar a la misma:

https://lh3.googleusercontent.com/VWxP52kLlOjFjT6ZNvVGuemlS3V_gNhaEsUGBnQ2yk-A1K4zKnXZDuOH9F0C_XiPxEMRVR3AlF0bjUraJO3qfbgGaqyRtiUqIqh7pjEpLJSrAmjxrUEL4tpsm_KTNtZjRXxZkcVH

Importante: Si usas “Windows Terminal” o cualquier otra consola en Windows servirá de igual manera, en nuestro caso, seguiremos los ejemplos usando Windows Terminal. 

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. 

Importante: Nunca instales software de fuentes no oficiales, ni ejecutes comandos que no sepas que hacen porque esto puede llevarte a robo de tus criptomonedas o a la infección de tu computador. 

Al ejecutar el comando anterior veremos lo siguiente en nuestra consola:

https://lh4.googleusercontent.com/0rPUmnFIuJCtG9D29ElNPvibzBO46EA64NaBdRGJ5seTX35_c2Oiub_UQZ1pycefdjnZmHGD_4v5CCnrGWqjBDEg3WrbI7kEGuBH4G_WMg8st8qX8Y4KsDkos_0VnDcV4CgbobFL

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: 

https://lh3.googleusercontent.com/jT4Hr09i_riHsLZzM_Ri0SV8ANTfHUUswfPneWeHCam3R8s4z-fm_4rqlDephPBLcxzsCZ8YIRgkIpxSiViR1Xntnk3xtFK5CAh4SOTzhdj-iNIy6JjFuJfYIHjNL94qrHV90DJA

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.

https://lh6.googleusercontent.com/180b2CsckrFryYfDcv88nZ0TK-Hd2k7LlC-H4zJAotqQCqL7kOciUb42WWEsg7HbplGSGedzBt_rTuwymGAv1iNn4AyFRZnuzdllXwXr0WELIcus5cc46C4QPX-YfGMXw8wlphVT

Al hacer clic te aparecerá la siguiente pantalla:

https://lh4.googleusercontent.com/GbrdCZVHXBY2c4QxzMU4pWrrmYKt8VE12OxOQtpbZwRt5u2RpRYFLaIPe_kKOPiOeS-HY267o4jro9Z3mhl_M9qsupmLsgpo6iKv2orDQpSgZr96ZLv1EfJSVT7egSoGtUjlNHU_

En la sección “Containers” del Dashboard de Docker, podrás ver lo siguiente:

https://lh6.googleusercontent.com/tU9kNAV_w0RrQcqwXp-7PecZL6sWqCwKN2NlUSFnrRNS3CLjcAY-9zy7HG-FI-8bNNWgaDm0pL7v6BtRL6l6vdEokZCTi-7ZUf6FE1mijiIwWmILSHiVhsghxjErZKwQVYh2B4h3

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.

https://lh3.googleusercontent.com/yhBtQRaPT7fdZ14wMFDrnxPNH58VOP1GJ7OGZicmp1Mvtvwcg2H7zqWyldpECbKF5sjOon6XlHNV5mAoq7PCb7-Pfhv4qt_JAER9HcaWojoQsy_U6BSNXLqpeuX_g7Qbzt7lkpZ4

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.

https://lh5.googleusercontent.com/IwQxHh_7HFQjV163k7GiBJtjrgRQnRcCmguzBcRRsOyKTRAQzFK8Gueosskj8efOE9gN0ul5OF8R9MFV2KxbLwhUfFNUj-uL14zeWNFD5Je2k47PXnMq1JIuFPrXBfcsZEk0-lYc

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. 

https://lh4.googleusercontent.com/bJwA5VTQA53iNszw9tPaeCn6iielv_TVA9B4G0LcEv2sHFep59wenx616RO8GSHPAaomnpRcXWe7zRrqJQGtF0z3uMnrq5fj0N38qRNHZM5aaP6KAYo2ENIoaAaZjOFDAYc4lkYQ

Los comandos dentro del archivo, para tu conocimiento, ejecutan la siguiente cadena de comandos:

  1. 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. 
  2. 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. 
  3. Abre los puertos 8545 para el sistema RPC, 30303 y 30303/udp para conectar otros wallets e interactuar con nuestro nodo. 
  4. 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. 
  5. 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.

Importante: La configuración de Docker-Compose dada es una configuración de uso personal, no apta para entornos de producción y uso público masivo. Esté al corriente de que existen otras medidas de seguridad que debe tomar si su intención es prestar un servicio de nodo público para otros usos distintos al personal. 

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:

https://lh3.googleusercontent.com/eYNFBXiz7HGWjGk5hprkviupOOIfQRDfc42J47DqqHU5GFXNsEajs0cnZpnPSD41svhPn15GFDA_FUn_zhitHWvcsFjNBtBH9dW2ycjZBfdfnnYGcObupcJlbD7HfylDuydH-iqT

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. 

https://lh4.googleusercontent.com/WIDtzv7rvCetBAqr6gKanuyuZZzKH85t9JsQIoXmg06_DJN_bHJJgPAQcikh9x3n-nN7ZLzvxH1A3py3e9M2vT9CfulOq9NZA7TaTOjJBQ2x-ABk4aLTMWetembA9R6JKS4ocnev

En este punto, si revisamos el Dashboard de Docker veremos a nuestro nodo Geth liviano funcionando sin problemas. 

https://lh6.googleusercontent.com/WrbfkicwK9hwYGqR6OU7L_oPtGLJYGI5SgTJQaFuyBMEYpaqd6FK6R14EZVeIwgWebK2nha6TRfAgH2vYMTlxcdO3tv2BAi1LbVexvPTsZeg1QDMzqSRq2xJ8ORu79aTeD1WOy7V

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.

https://lh3.googleusercontent.com/I81Fhr7Fdu8spKoH4cim2lmPCfzJ913uW-h5GWq82NLJUBOQCDm-OLCSz1BNdh1gWEjDmcL6RtZq2foHPgJotBOGeWLYMZcBBnxaUzvrVw2P3eolrbz8xFiFp7sAr8v-dWAXAH8d

Allí vamos a la sección de Descargas o Download, y descargamos el monedero para nuestro navegador. 

https://lh4.googleusercontent.com/Emkh0EaxV8_PZY1jSf37dnoXO0DD-19rXM6M0Xy8BHNMRLJF-soioi1SnJuhbpkGADOL0CC_Qyh4udWEfLBil9eAFK4fjB8gzzoD67mIzG3V-yqaMzCL3pK4oWbP97qU9YtYjWMw

Al instalar tendremos nuestra wallet lista para ser configurada. 

https://lh6.googleusercontent.com/0EpAYEvIawNqbctANk_Als2OVd4BrOD8clUINHJ7gxI51mqHCBb2z3gQfqEiqLVR3HN2PVftoPxQKzb0IzSd9wyoAk7HnXLu3G1oAFfW8PVqyY4iXOkUdpXx9jtJw-opXrvxwWaY.

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. 

https://lh3.googleusercontent.com/-eCdJVKwyR9RlpnNaQfNljhpTJXHsNOf13GIQyji72o0ZuXalIybWUD1y-Zl3h6R1p7SkgMyGbtX1Dzdm8ILSvYUMMEM6yhSlYmSN93Py6QSG8X8t4yvswlUs_vrB3krz2TlOCkC

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”.

https://lh5.googleusercontent.com/wu8yDz1yV9zw6-OfelvBC8AMrck9T-yrdzDos1p7dnPz6SGE9819BS9WOaGJIB56Kq-EiKB5MR_0zlfErFP6C-12w9vIiEgGWOiP0qeYvcVQJf5fkhSN5jUYCUaedFF6QcPGDsWx

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.

https://lh6.googleusercontent.com/BZCyYLaS8lNYTCl7VtDX73ymaavggqZBn1vNtSntEIbtW4XMYgSVVkMn4-J1KQCsJBy3n0ZczKA6FLlPniBpHRbEVsWf7CgS0Qjqpy4TRIKKHNTD4viUeAbEVoCd8lIRI1cg5JQc

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. 

https://lh6.googleusercontent.com/i-JMLpH33--sXUX6FxkIdgdSf0njbkF5AjcPUhilDep-7nlOOScw-IiqA6Qe56TRPnpGUATI7d3jp9IOQzEItK3aq14sT6z7mEL87pOG5P8SpteFlwoMp7k5FN3HdsSJP2v16iJP

Y sin pérdida alguna de funcionalidad, ya que podemos enviar, recibir e interactuar con DApps sin problemas. 

https://lh5.googleusercontent.com/1EzTK34DSV-A720tlY-ioRy_j9TILPnqDMURAFxlVO62n3vK_ysr7Bgk21FVtduY_SrXJvC0kvluTgZs0OPPvl37qb92UDnc5uE1fyr-f0J7fwlFG5JMg9DLWyIKdjksloeayOwo