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 20224 min de lectura

Introducción a Geth y los nodos

Los nodos de Ethereum son computadoras que forman parte de la red de blockchain de Ethereum. Estos nodos son computadoras reales que ejecutan software que verifica, almacena y a veces 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 smart contracts.

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, además de otras personas que colaboran.

Algunas características de Geth:

  • Viene con una consola de JavaScript que se puede ejecutar con "geth console".
  • El cliente puede funcionar con otros clientes de JavaScript (web3js).
  • Sepolia y otras testnets vienen incorporadas (o se puede crear tu propia red privada de Ethereum)
  • Generalmente se considera el estándar para otros nodos de Ethereum.

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

Redes (Mainnet vs testnet) y Geth

Para entender los nodos de Geth, necesitamos entender las distintas redes de Ethereum.

Ethereum cuenta con una única red central (Mainnet) donde ocurren todas las transacciones, pero también utiliza varias otras redes de prueba que se han creado para hacer pruebas (Testnet). Considera usar estas blockchains de "prueba" para experimentar con las capacidades de 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 intercambiar en exchanges, y siempre está disponible.

2. Sepolia

Sepolia es la testnet de Ethereum que los desarrolladores de Geth deberían usar hoy en día. Es una red de proof-of-stake mantenida por los core developers de Ethereum, y testnets más antiguas como Ropsten, Rinkeby, Kovan, Goerli y Kiln han sido descontinuadas.

Para empezar a construir en Sepolia, obtén ETH de Sepolia desde un faucet.

¿Qué es un nodo de 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 bloque génesis. No hay transacciones en el bloque génesis.

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

Light nodes

Como no validan cada bloque, los light nodes no guardan una copia de la blockchain de Ethereum. Por eso, dependen de los datos de los full nodes. Ejecutar light nodes tiene varias ventajas, como un inicio más rápido, menor uso de almacenamiento y menores necesidades de cómputo/memoria. Los light nodes tienen un menor nivel de confianza y muchas veces dependen de los full nodes, lo cual puede ser un problema.

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 utilidad para dispositivos de baja capacidad, como dispositivos embebidos o teléfonos móviles, que no pueden permitirse almacenar gigabytes de datos de blockchain.

Full nodes

Los full nodes verifican que las transacciones en los bloques sigan los estándares descritos en el Ethereum Yellow Paper. Hacen esto para garantizar que los bloques transferidos por la red sean genuinos. Puedes confiar en su trabajo. Esta técnica de verificación es usada por 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 proveen datos bajo solicitud.

Archive nodes

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

Los archive nodes:

  • Almacenan todo lo que guarda el 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 y de forma confiable probar tu propio conjunto de transacciones sin minarlas usando OpenEthereum.
  • Proveen datos que representan unidades de terabytes. Esto los hace menos atractivos para usuarios promedio, pero útiles para servicios como block explorers, proveedores de wallets y análisis de cadena.
Diagrama de nodos de Ethereum alcanzando el consenso de proof-of-work en toda la red
source: https://ethereum.org/en/developers/docs/nodes-and-clients/

‍

Requisitos para instalar Geth

  • CPU multi-nú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 caching. Al usar las funciones de caching (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, mediante Homebrew en MacOS o PPA en Ubuntu, descargarlo directamente, ejecutarlo en un 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 desde aquí. Luego ejecuta lo siguiente:

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

Y luego ejecuta:

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

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

Al escribir net, podemos ver si tenemos peers. Al escribir 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, ejecutar eth.syncing generará la siguiente consulta de muestra:

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

Reflexiones finales

Geth ya suele estar incluido en la mayoría de las wallets web/extensión disponibles para adopción de consumidores (MetaMask, Coinbase, Rainbow, etc).

Pero 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 (firmar tus propias transacciones en lugar de depender de software de terceros). ¡Usando Geth, ahora puedes abrir 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.