En el universo de Ethereum, los clientes son herramientas escenciales para interactuar con la blockchain. Estos clientes, que son piezas de software diseñadas para conectarse y operar entre sí, ofrecen una variedad de características y funcionalidades que satisfacen las necesidades de diferentes usuarios y aplicaciones.
En este artículo, exploraremos exhaustivamente los diversos clientes de Ethereum disponibles en el mercado actual, con el objetivo de proporcionar una visión detallada de sus características, opciones y usos prácticos en el contexto del desarrollo de aplicaciones descentralizadas, la validación de transacciones y la participación en la red Ethereum.
Un cliente es una implementación de Ethereum que verifica los datos con las reglas del protocolo y mantiene la red segura. Un nodo tiene que ejecutar dos clientes: un cliente de consenso y un cliente de ejecución.
Los clientes facilitan la validación de transacciones, la ejecución de contratos inteligentes y la comunicación con otros nodos en la red, lo que es fundamental para mantener la integridad y la seguridad de la red Ethereum en su conjunto.
En la actualidad, existen varios clientes de Ethereum desarrollados por diferentes equipos y organizaciones. Algunos de los clientes más populares incluyen:
Geth (go-ethereum) es una implementación de Go en Ethereum. Fue una de las implementaciones originales de Ethereum, lo que lo convierte en el cliente más probado y experimentado.
DocsGeth se controla principalmente mediante la línea de comandos. Se inicia Geth utilizando el comando geth. Se detiene presionando ctrl+c.
Podes configurar Geth utilizando opciones de línea de comandos (también conocidas como flags). Geth también tiene subcomandos, que se pueden utilizar para invocar funcionalidades como la consola o la importación/exportación de la blockchain.
Para poder ver la lista de comandos en cualquier momento desde tu propia instancia de Geth ejecutamos:
geth --help
Como la lista de comandos es MUY extensa, vamos a describir un poco la estructura de las opciones que nos deja ejecturar geth:
Primero el uso es el siguiente:
geth [global options] command [command options] [arguments...]
Tenemos muchisimas opciones, estos son solo algunos reelevantes:
Ademas de estos, geth nos brinda Opciones Globales muy utiles que se estructuran de la siguiente forma:
Tambien dentro del mundo de Geth nos encontramos con varias herramientas que pueden ser de nuestro interes:
Clef es una herramienta para firmar transacciones y datos de manera segura en un entorno local. Permite gestionar claves de forma independiente a Geth, lo que brinda flexibilidad y seguridad al proceso de firma. Puede utilizarse de manera autónoma o integrarse con Geth, siendo útil para situaciones donde se accede a Ethereum a través de nodos remotos no confiables.
Abigen es una herramienta que facilita la interacción con Ethereum utilizando Go. Genera paquetes Go type-safe a partir de definiciones de smart contracts conocidas como ABIs.
Un ABI es un archivo JSON que especifica cómo codificar y decodificar datos enviados y recibidos por un smart contract. Abigen simplifica la implementación e interacción con smart contracts en aplicaciones Go al abstraer la complejidad de la codificación y decodificación de datos.
Este es un cliente de Ethereum desarrollado en C#/.NET, que destaca por su eficiencia y su enfoque en el desarrollo empresarial y la interoperabilidad.
Sedge es una herramienta de configuración de nodos con “un solo clic” para validadores y nodos de redes/cadenas de Proof of Stake, escrita completamente en el lenguaje de programación Go. Sedge se encarga de toda la configuración del nodo completo localmente, basándose en el cliente elegido y utilizando scripts docker-compose generados según la configuración deseada, está actualmente disponible solo para Linux, macOS y Windows, para arquitecturas amd64 y arm64.
Una vez que uses sedge cli o sedge generate para generar el archivo docker-compose.yml, podrás manejarlo por tu cuenta. Esta guía te mostrará cómo hacerlo.
Existen varias razones por las que necesitarías gestionar la configuración después de usar Sedge para generar los archivos de configuración. Puede que desees modificar el archivo .env o docker-compose.yml para cambiar la configuración de la instalación, o simplemente copiar estos archivos a otra máquina. Actualmente, Sedge ejecuta el stack de docker compose que fue generado usando sedge run. Puedes usar sedge logs y sedge down en cualquier docker-compose.yml.
Podes señalar hacia una ruta (path) generación diferente utilizando la opción --path . Esto es útil si deseas generar los archivos en un directorio distinto, o si quieres generar múltiples configuraciones.
Ejecutar sedge logs obtendrá los registros de contenedores en ejecución utilizando la CLI de docker compose.
$ sedge logs -h
Initializing configuration
Get running container logs using docker-compose CLI. If no services are provided, the logs of all running services will be displayed.
By default will run 'docker compose -f <script> logs --follow <service>'
Usage:
sedge logs [flags] [services]
Flags:
-h, --help help for logs
-p, --path string docker-compose script path (default "./docker-compose-scripts")
-t, --tail int Tail the number of desired logs. If not set, or set to 0, logs are followed.
Global Flags:
--logLevel string Set Log Level (default "info")
Ejecutar sedge down detendrá y eliminará los contenedores utilizando la CLI de Docker Compose.
$ sedge down -h
Shutdown sedge running containers using docker compose CLI. Shortcut for 'docker compose -f <script> down'
Usage:
sedge down [flags]
Flags:
-h, --help help for down
-p, --path string docker-compose script path (default "./docker-compose-scripts")
Global Flags:
--logLevel string Set Log Level (default "info")
La ejecución de sedge down cerrará y eliminará todos los contenedores y redes abiertas utilizadas por Sedge.
$ sedge down
2022-00-00 00:00:00 -- [INFO] [Logger Init] Log level: info
2022-00-00 00:00:00 -- [INFO] You are running the latest version of sedge. Version: v1.3.2
[sudo] password for maceo:
[+] Running 7/7
⠿ Container execution-client Removed 93.8s
⠿ Container validator-client Removed 0.0s
⠿ Container consensus-client Removed 3.8s
⠿ Container validator-import-client Removed 0.0s
⠿ Network docker-compose-scripts_default Removed 0.2s
⠿ Network sedge_network Removed 0.1s
Una vez generado el archivo docker-compose, puedes modificar tanto las variables de entorno en el archivo .env como el docker-compose.yml bajo el directorio sedge-data.
Después de eso, puedes ejecutar el siguiente comando para iniciar la configuración desde el directorio sedge-data:
docker compose up -d
Para detener la configuración, puedes ejecutar el siguiente comando desde el directorio sedge-data:
O bien, puedes ejecutar el siguiente comando desde cualquier directorio, asumiendo que tienes la ruta al directorio sedge-data (llamémoslo <path>):
docker compose -f <path> down
El compose stack está compuesto por varios contenedores de Docker en ejecución.
La configuración para un nodo completo de Ethereum que Sedge aplica consiste en un contenedor para cada nodo (nodo de ejecución, nodo de consenso y nodo validador). Puedes ejecutar el siguiente comando para verificar los registros de un contenedor/nodo específico desde el directorio sedge-data:
docker compose logs <node>
Reemplace <node> con el tipo de nodo, por ejemplo: ejecución, consenso, validador
O bien, puedes ejecutar el siguiente comando desde cualquier directorio, asumiendo que tienes la ruta al directorio sedge-data (llamémoslo <path>):
docker compose -f <path> logs <node>
Para salir del comando docker compose logs presiona ctrl+c o control+c
(Otros comandos: Acá )
Erigon es una implementación eficiente y optimizada de Ethereum, diseñada para ser más rápida y modular.
Utiliza tecnologías avanzadas como la sincronización escalonada y el almacenamiento de estado eficiente. Es un archieve node por defecto y ha sido reescrito completamente para enfocarse en velocidad y ahorro de almacenamiento.
Puede completar la sincronización de un archive node en menos de tres días y con menos de 2 TB de almacenamiento.
En cuanto a lo que podemos hacer con Erigon es similar a los demás clientes, la forma de acceder a los mandos es utilizando la flag ./build/bin/erigon --help donde el uso de estos comandos es el siguiente:
erigon [command] [flags]
Con 5 comandos principales:
Como las flags son un monton, aca dejamos algunas reelevantes:
Otterscan es un explorador de bloques de Ethereum diseñado para ser ejecutado localmente junto con Erigon.
Basado completamente en código fuente abierto (open source code), es extremadamente rápido y totalmente privado, ya que funciona en tu máquina local. La interfaz de usuario es intencionalmente muy similar, pero con muchas mejoras, al explorador de bloques de Ethereum más popular para facilitar la ubicación de la información.
Para instalar Otterscan, sigue las instrucciones en el repositorio oficial de Github: Docs
La elección del cliente de Ethereum dependerá en gran medida de las necesidades y objetivos específicos de cada usuario o proyecto. Es recomendable evaluar las características y capacidades de cada cliente para seleccionar la opción más adecuada según los requisitos de rendimiento, seguridad, facilidad de uso y funcionalidades específicas requeridas. Pero lo mas importante de todo es PROBAR estos clientes y ver que es lo ideal para nosotros.