Sobre o projeto

Go Ethereum (geth) é a implementação da camada de execução em Go do protocolo Ethereum. Ele fornece um cliente de linha de comando, pacotes de biblioteca e ferramentas para desenvolvedores para executar nós e criar aplicações na mainnet Ethereum, redes de teste ou cadeias privadas. ## Construindo O projeto requer Go 1.23 ou posterior e um compilador C. `make geth` compila o cliente principal, enquanto `make all` compila o conjunto completo de utilitários. Arquivos binários pré-compilados são publicados em geth.ethereum.org/downloads. ## Executáveis O repositório inclui vários comandos no diretório `cmd`. - `geth` – o cliente CLI Ethereum principal. Pode ser executado como nó completo ou nó de arquivo, conecta-se à mainnet, testnets ou redes privadas, e expõe pontos finais JSON‑RPC sobre HTTP, WebSocket e IPC. - `devp2p` – utilitários para interagir com a camada de rede sem executar um blockchain completo. - `abigen` – um gerador de código-fonte que converte ABIs de contratos Ethereum (e opcionalmente fontes Solidity) em pacotes Go tipo-safe em tempo de compilação. - `evm` – uma versão de desenvolvedor da Máquina Virtual Ethereum para executar trechos de bytecode em um ambiente configurável, útil para depuração em nível de opcode. - `rlpdump` – uma ferramenta que converte dumps binários RLP em uma representação hierárquica legível. ## Executando geth O uso típico é `geth console`, que inicia um nó completo sincronizado por snap e fornece um console JavaScript interativo. A flag `--sepolia` conecta à rede de teste Sepolia usando bootnodes separados, ID de rede, estado gênese e diretórios de dados. A configuração também pode ser fornecida por meio de um arquivo TOML com `geth --config`, e as configurações existentes podem ser exportadas com `dumpconfig`. As recomendações mínimas de hardware são 4+ núcleos de CPU, 8 GB de RAM, um SSD de alto desempenho com pelo menos 2 TB de espaço livre e largura de banda de download de 8 Mbit/s; especificações recomendadas são maiores para crescimento a longo prazo. Um início rápido com Docker é fornecido: `docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`. Observe que o acesso RPC de outros hosts requer definir explicitamente `--http.addr 0.0.0.0`. ## Acesso programático geth suporta APIs JSON‑RPC sobre HTTP, WebSocket e IPC. A interface IPC está habilitada por padrão e expõe todas as APIs, enquanto HTTP e WS devem ser habilitados explicitamente e expõem um subconjunto consciente de segurança. Flags comuns incluem `--http`, `--http.addr`, `--http.port`, `--http.api`, `--http.corsdomain`, `--ws`, `--ws.origins`, `--ipcdisable` e `--ipcpath`. O README avisa que expor APIs HTTP/WS publicamente apresenta riscos de segurança, pois agentes maliciosos sondam ativamente nós Ethereum expostos. ## Redes privadas Desde o Merge, executar uma rede privada de nós geth também requer configurar uma cadeia de beacon correspondente. Três alternativas estão documentadas: - Simulated Backend – para testar contratos inteligentes em CI Go. - Modo Dev – um ambiente de nó único conveniente para testes. - Kurtosis – para configurar uma rede de teste com múltiplos nós. ## Contribuição Contribuições são aceitas via pull requests contra a branch `master`. O código deve seguir as diretrizes oficiais de formatação e comentários do Go, e as mensagens de commit devem ser prefixadas com o(s) pacote(s) modificado(s). Alterações mais complexas devem ser discutidas com os desenvolvedores principais no Discord. Contribuições para o site têm como alvo a branch `website`. ## Licença A biblioteca go-ethereum (código fora de `cmd`) está licenciada sob LGPL v3.0; os binários (código dentro de `cmd`) estão licenciados sob GPL v3.0.