Sobre el proyecto

Go Ethereum (geth) es la implementación de la capa de ejecución en Go del protocolo de Ethereum. Proporciona un cliente de línea de comandos, paquetes de biblioteca y herramientas para desarrolladores para ejecutar nodos y construir aplicaciones en la red principal de Ethereum, redes de prueba o cadenas privadas. ## Compilación El proyecto requiere Go 1.23 o posterior y un compilador C. `make geth` compila el cliente principal, mientras que `make all` compila la suite completa de utilidades. Los archivos binarios precompilados se publican en geth.ethereum.org/downloads. ## Ejecutables El repositorio incluye varios comandos en el directorio `cmd`: - `geth` – el cliente CLI principal de Ethereum. Puede ejecutarse como nodo completo o nodo de archivo, se conecta a la red principal, redes de prueba o redes privadas, y expone puntos finales JSON-RPC sobre HTTP, WebSocket e IPC. - `devp2p` – utilidades para interactuar con la capa de red sin ejecutar una cadena de bloques completa. - `abigen` – un generador de código fuente que convierte los ABIs de contratos de Ethereum (y opcionalmente fuentes de Solidity) en paquetes de Go seguros a nivel de tipos en tiempo de compilación. - `evm` – una versión de desarrollador de la Máquina Virtual de Ethereum para ejecutar fragmentos de código en un entorno configurable, útil para depuración a nivel de opcodes. - `rlpdump` – una herramienta que convierte volcados binarios de RLP en una representación jerárquica legible. ## Ejecución de geth El uso típico es `geth console`, que inicia un nodo completo sincronizado mediante snap y proporciona una consola interactiva de JavaScript. La bandera `--sepolia` se conecta a la red de prueba Sepolia utilizando nodos de arranque, ID de red, estado de génesis y directorios de datos separados. La configuración también puede proporcionarse mediante un archivo TOML con `geth --config`, y las configuraciones existentes pueden exportarse con `dumpconfig`. Las recomendaciones mínimas de hardware son 4+ núcleos de CPU, 8 GB de RAM, un SSD de alto rendimiento con al menos 2 TB de espacio libre y 8 Mbit/s de ancho de banda de descarga; las especificaciones recomendadas son más altas para un crecimiento a largo plazo. Se proporciona un inicio rápido con Docker: `docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`. Tenga en cuenta que el acceso RPC desde otros hosts requiere configurar explícitamente `--http.addr 0.0.0.0`. ## Acceso programático geth admite APIs JSON-RPC sobre HTTP, WebSocket e IPC. La interfaz IPC está habilitada de forma predeterminada y expone todas las APIs, mientras que HTTP y WS deben habilitarse explícitamente y exponen un subconjunto consciente de la seguridad. Las banderas comunes incluyen `--http`, `--http.addr`, `--http.port`, `--http.api`, `--http.corsdomain`, `--ws`, `--ws.origins`, `--ipcdisable` y `--ipcpath`. El README advierte que exponer las APIs HTTP/WS públicamente conlleva riesgos de seguridad, ya que los actores maliciosos exploran activamente los nodos de Ethereum expuestos. ## Redes privadas Desde The Merge, ejecutar una red privada de nodos geth requiere también configurar una cadena de baliza correspondiente. Se documentan tres alternativas: - Simulated Backend – para probar contratos inteligentes en CI de Go. - Dev Mode – un entorno de nodo único conveniente para pruebas. - Kurtosis – para configurar una red de prueba multinodo. ## Contribuciones Se aceptan contribuciones mediante solicitudes de extracción (pull requests) contra la rama `master`. El código debe seguir las pautas oficiales de formato y comentarios de Go, y los mensajes de commit deben ir prefijados con el o los paquetes modificados. Los cambios más complejos deben discutirse con los desarrolladores principales en Discord. Las contribuciones al sitio web se dirigen a la rama `website`. ## Licencia La biblioteca go-ethereum (código fuera de `cmd`) está licenciada bajo LGPL v3.0; los binarios (código dentro de `cmd`) están licenciados bajo GPL v3.0.