Saltar al contenido
0%

Qué es un nodo Geth y cómo ejecutar uno

Alchemy team headshot

Escrito por Alchemy

Publicado el 18 de abril de 20225 min de lectura

Introducción a Geth y los nodos

Los nodos de Ethereum son computadoras que forman parte de la red blockchain de Ethereum. Estos nodos son computadoras reales que ejecutan software que verifica, almacena y, en algunos casos, crea bloques.

"Cliente" es el nombre del software en sí. Nos permite interactuar con la blockchain a través de una API JSON-RPC, leer y verificar la blockchain, y leer o escribir en contratos inteligentes.

Geth es uno de estos clientes y uno de los más populares. Está escrito en el lenguaje de programación Go y se mantiene actualizado por un grupo de personas que trabajan para la Ethereum Foundation, junto con otros colaboradores.

Algunas características de Geth:

  • Incluye una consola de JavaScript que se puede ejecutar con "geth console".
  • El cliente puede funcionar con otros clientes de JavaScript (web3js).
  • Incluye la red de prueba Rinkeby (o puedes construir tu propia red privada de Ethereum)
  • Suele considerarse el estándar de referencia para otros nodos de Ethereum.

En este blog de Alchemy, veremos cómo instalar y ejecutar un nodo Geth.

Redes (Mainnet vs testnet) y Geth

Para entender los nodos Geth, primero hay que entender las distintas redes de Ethereum.

Ethereum cuenta con una única red principal (Mainnet) donde ocurren todas las transacciones, pero también utiliza una serie de otras redes de prueba creadas para probar funcionalidades (Testnet). Considera usar estas blockchains "de prueba" para experimentar con las capacidades de la blockchain fuera de tu localhost.

1. Mainnet

La mainnet de Ethereum es la red que se usa para generar Ethereum. El ETH se puede minar o comerciar en exchanges, y está disponible en todo momento.

2. Ropsten

Ropsten es una red de prueba que se asemeja mucho a la mainnet. Se basa en el mismo mecanismo de proof of work. Esta red de prueba Ropsten es vulnerable a ataques de spam, ya que el ETH de prueba se mina de la misma forma que el ETH de Mainnet y es fácil de obtener sin ningún valor real.

3. Rinkeby

La testnet de Rinkeby usa proof of authority, lo que significa que no puedes obtener ETH de prueba a menos que puedas demostrar quién eres. Esto se hace vinculando una dirección de Ethereum a una cuenta de red social, como Facebook. Esto dificulta mucho más que alguien ataque la red, ya que obtener una gran cantidad de ETH requiere un esfuerzo considerable. Rinkeby solo se puede acceder mediante nodos Geth.

Para empezar a construir en la testnet de Rinkeby, obtén Rinkeby Ether de un faucet gratuito.

4. Kovan

La principal diferencia es que Kovan solo está disponible en nodos parity, y debes usar GitHub para verificar tu identidad.

5. Goerli

Goerli se implementó bajo el marco de Proof-of-Authority. Utiliza la técnica de consenso Clique, desarrollada originalmente por Chainsafe y Afri Schoedon. La comunidad de Goerli mantiene la red, que cuenta con el respaldo de Geth, Parity, Nethermind y Hyperledger Besu. Goerli tiene un mayor tamaño de red, número de nodos y variedad de clientes que Kovan y Rinkeby.

Aprende cómo obtener Goerli Ether y usa el faucet GoETH de Alchemy para empezar en la red de prueba de Goerli.

6. Kiln

Al momento de escribir esto, muchas de las testnets mencionadas serán descontinuadas o actualizadas debido a que Ethereum avanza a toda velocidad hacia su fusión con proof of stake más adelante este año. Por ahora, la testnet Kiln es la última testnet pública antes del cambio a proof of stake.

Este cambio es un logro importante para la red de Ethereum, que está por experimentar algunos de los cambios más significativos desde su creación. Suponiendo que no haya problemas con Kiln, las testnets actuales de Ethereum (Goerli, Ropsten, etc.) podrán continuar sin interrupciones.

Aprende más sobre la testnet Kiln y obtén Kiln Ether de prueba para empezar a construir en Kiln.

¿Qué es un nodo Geth?

Diagrama de los tipos de nodo de Geth: nodos light, full y archive en Ethereum

Con Geth, puedes establecer tu propia red privada de Ethereum. La blockchain de una red de Ethereum comienza con un bloque raíz conocido como el bloque génesis. No hay transacciones en el bloque génesis.

Existen distintos tipos de nodos de Ethereum, pero los nodos Geth se dividen en tres categorías: light nodes, full nodes y archive nodes.

Light nodes

Dado que no validan cada bloque, los light nodes no mantienen una copia de la blockchain de Ethereum. Como resultado, dependen de los datos de los full nodes. Ejecutar light nodes tiene varias ventajas, entre ellas un inicio más rápido, menor uso de almacenamiento y menores requisitos computacionales/de memoria. Los light nodes tienen un menor nivel de confianza y muchas veces dependen de los full nodes, lo cual puede ser problemático.

Los light nodes:

  • Almacenan la cadena de encabezados y solicitan todo lo demás.
  • Verifican la validez de los datos contra las raíces de estado en los encabezados de los bloques.
  • Ofrecen una alternativa para dispositivos de baja capacidad, como dispositivos embebidos o teléfonos móviles, que no pueden almacenar gigabytes de datos de la blockchain.

Full nodes

Los full nodes verifican que las transacciones en los bloques cumplan con los estándares descritos en el Ethereum Yellow Paper. Hacen esto para garantizar que los bloques transmitidos por la red sean genuinos. Puedes confiar en su trabajo. Esta técnica de verificación es la que usan los full nodes para mantener la red alineada con los requisitos de Ethereum.

Los full nodes:

  • Almacenan todos los datos de la blockchain.
  • Participan en la validación de bloques y verifican todos los bloques y estados.
  • Derivan todos los estados.
  • Sirven a la red y proporcionan datos bajo solicitud.

Archive nodes

Un archive node es un nodo que guarda todo el historial de transacciones. La salud y la estructura de la red dependen de estos nodos.

Los archive nodes:

  • Almacenan todo lo que guarda un full node y construyen un archivo de estados históricos. Esto es necesario si quieres consultar balances de cuentas o cualquier dato on-chain, o simplemente probar tu propio conjunto de transacciones de manera confiable sin minarlas, usando OpenEthereum.
  • Proporcionan datos que representan unidades de terabytes. Esto los hace menos atractivos para usuarios promedio, pero muy útiles para servicios como exploradores de bloques, proveedores de wallets y análisis de cadenas.
Diagrama de nodos de Ethereum alcanzando consenso de proof-of-work en la red
source: https://ethereum.org/en/developers/docs/nodes-and-clients/

Requisitos para instalar Geth

  • CPU multinúcleo (7GB+ de RAM)
  • Unidad SSD local con al menos ~600GB+ de espacio libre
  • OPCIONAL: usar 16/32 GB+ de CPU para un rendimiento optimizado mediante caché. Al usar las funciones de caché (es decir, usando la bandera '--cache'), Geth podrá obtener el estado desde la memoria en lugar de tu disco duro.
  • Homebrew para usuarios de Mac
  • PPA para Linux/Ubuntu
  • OPCIONAL: Parity (para más información, aprende cómo migrar de parity a Geth)‍

Métodos de instalación de Geth

Puedes instalar Geth mediante un gestor de paquetes, ya sea con homebrew en MacOS o PPA en Ubuntu, descargarlo directamente, ejecutarlo en docker, o incluso compilarlo desde cero.

Homebrew usando la terminal de MacOS:

text
Copied
$ brew tap ethereum/ethereum $ brew install ethereum

Consulta una lista de diferentes comandos útiles aquí (abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, geth, etc.) o también puedes ejecutar:

text
Copied
$ geth --help

PPA para linux/ubuntu:

text
Copied
$ sudo add-apt-repository -y ppa:ethereum/ethereum

Instala la versión estable de go-Ethereum:

text
Copied
$ sudo apt-get update $ sudo apt-get install ethereum

Docker:

Descarga Docker aquí. Luego ejecuta lo siguiente:

text
Copied
$ docker pull ethereum/client-go:latest

Y luego ejecuta:

text
Copied
$ docker run ethereum/client-go:latest

Ejecutar Geth

Ejecuta este comando en una terminal, en la ubicación donde descomprimimos la carpeta de Geth/carpeta raíz, para poder ejecutarlo:

text
Copied
$ ./Geth console --testnet --syncmode "light" --rpc --rpcaddr "localhost" --rpcport "8485" --rpccorsdomain "*" --rpcapi="db,eth,net,web3,personal"

Esto nos llevará directamente a la consola de Geth.

Escribiendo net, podemos ver si tenemos algún peer. Escribiendo eth.syncing, podemos ver si el nodo se está sincronizando actualmente. Es posible que tu nodo no comience a sincronizarse hasta que lo reinicies.

Por ejemplo, al ejecutar eth.syncing se obtendrá como salida la siguiente consulta de muestra:

Salida de consola de Geth de una consulta eth.syncing que muestra el progreso de sincronización de bloques

Reflexiones finales

Geth suele venir incluido en la mayoría de las wallets web/extensión disponibles para el público en general (MetaMask, Coinbase, Rainbow, etc).

Sin embargo, instalar y ejecutar Geth vale la pena si quieres experimentar con minería o desarrollar tu propio software personalizado de Ethereum. También es útil si simplemente quieres controlar tu propio nodo y la clave de tu wallet (firmando tus propias transacciones en lugar de depender de software de terceros). Con Geth, puedes acceder a todo un mundo de desarrollo en Ethereum.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.