Pular para o conteúdo
0%

O que é um nó Geth e como rodar um

Alchemy team headshot

Escrito por Alchemy

Publicado em 18 de abril de 20224 min de leitura

Introdução ao Geth e nodes

Nodes Ethereum são computadores que fazem parte da rede blockchain Ethereum. Esses nodes são computadores reais que executam software que verifica, armazena e, às vezes, cria blocos.

"Client" é o nome do software em si. Ele nos permite interagir com a blockchain através de uma API JSON-RPC, ler e verificar a blockchain, e ler ou escrever em smart contracts.

Geth é um desses clients e um dos mais populares. É escrito na linguagem de programação Go e mantido atualizado por um grupo de pessoas que trabalham na Ethereum Foundation e outras pessoas que colaboram.

Algumas características do Geth:

  • Vem com um console JavaScript que você pode executar com "geth console."
  • O client funciona com outros clients JavaScript (web3js).
  • Sepolia e outras testnets já vêm integradas (ou você pode construir sua própria rede Ethereum privada)
  • Geralmente é considerado o padrão para outros nodes Ethereum.

Neste blog mais recente da Alchemy, vamos aprender como instalar e executar um node Geth.

Redes (Mainnet vs testnet) e Geth

Para entender os nodes Geth, precisamos entender as diferentes redes da Ethereum.

A Ethereum possui uma única rede principal (Mainnet) onde todas as transações acontecem, mas também utiliza várias outras redes de teste que foram criadas para testar funcionalidades (Testnet). Considere usar essas blockchains de "teste" para experimentar recursos da blockchain fora do seu localhost.

1. Mainnet

A mainnet da Ethereum é a rede usada para gerar Ethereum. ETH pode ser minerado ou negociado em exchanges, e está sempre disponível.

2. Sepolia

Sepolia é a testnet da Ethereum que os desenvolvedores Geth devem usar atualmente. É uma rede proof-of-stake mantida pelos core developers da Ethereum, e testnets mais antigas como Ropsten, Rinkeby, Kovan, Goerli e Kiln foram descontinuadas.

Para começar a construir na Sepolia, obtenha Sepolia ETH em um faucet.

O que é um node Geth?

Diagrama dos tipos de nó do Geth: nós light, full e archive na Ethereum

Com o Geth, você pode estabelecer sua própria rede Ethereum privada. A blockchain de uma rede Ethereum começa com um bloco raiz conhecido como o genesis block. Não há transações no genesis block.

Existem diferentes tipos de nodes Ethereum, mas os nodes Geth se dividem em três categorias: light nodes, full nodes e archive nodes.

Light nodes

Como não validam todos os blocos, os light nodes não mantêm uma cópia da blockchain Ethereum. Como resultado, dependem de dados de full nodes. Executar light nodes tem várias vantagens, incluindo inicialização mais rápida, menor uso de armazenamento e menores necessidades computacionais/de memória. Light nodes têm um nível de confiança menor e muitas vezes dependem de full nodes, o que pode ser problemático.

Light nodes:

  • Armazenam a cadeia de headers e solicitam o restante.
  • Verificam a validade dos dados em relação aos state roots nos headers dos blocos.
  • Oferecem uma utilidade para dispositivos de baixa capacidade, como dispositivos embarcados ou celulares, que não conseguem armazenar gigabytes de dados da blockchain.

Full nodes

Full nodes verificam se as transações nos blocos seguem os padrões descritos no Ethereum Yellow Paper. Fazem isso para garantir que os blocos transferidos pela rede sejam genuínos. Você pode confiar no trabalho deles. Essa técnica de verificação é usada por full nodes para manter a rede alinhada com os requisitos da Ethereum.

Full nodes:

  • Armazenam todos os dados completos da blockchain.
  • Participam da validação de blocos e verificam todos os blocos e states.
  • Derivam todos os states.
  • Servem a rede e fornecem dados sob demanda.

Archive nodes

Um archive node é um node que salva todo o histórico de transações. A saúde e a estrutura da rede dependem desses nodes.

Archive Nodes:

  • Armazenam tudo o que é mantido no full node e constroem um arquivo de states históricos. Isso é necessário se você quiser consultar saldos de contas ou qualquer dado on-chain, ou simplesmente testar suas próprias transações de forma confiável sem minerá-las usando o OpenEthereum.
  • Fornecem dados que representam unidades de terabytes. Isso os torna menos atraentes para usuários comuns, mas úteis para serviços como block explorers, fornecedores de wallets e análise de chain.
Diagrama de nós Ethereum atingindo consenso proof-of-work na rede
source: https://ethereum.org/en/developers/docs/nodes-and-clients/

‍

Requisitos para instalar o Geth

  • CPU multi-core (7GB+ de RAM)
  • Drive SSD local com pelo menos ~600GB+ de espaço livre
  • OPCIONAL Use 16/32 GB+ de CPU para desempenho otimizado por meio de caching. Usando recursos de caching (ou seja, usando a flag '--cache'), o Geth conseguirá obter o state da memória em vez do seu disco rígido.
  • Homebrew para usuários Mac
  • PPA para Linux/Ubuntu
  • OPCIONAL Parity (para mais informações, aprenda como migrar do parity para o Geth)‍

Métodos de instalação do Geth

Você pode instalar o Geth via gerenciador de pacotes, via homebrew no MacOS ou PPA no Ubuntu, baixá-lo diretamente, executá-lo em um docker, ou até mesmo compilá-lo do zero.

Homebrew usando o terminal do MacOS:

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

Confira uma lista de diferentes comandos úteis aqui (abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, geth, etc.) ou você também pode executar:

text
Copied
$ geth --help

PPA para linux/ubuntu:

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

Instale a versão estável do go-Ethereum:

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

Docker:

Baixe o Docker aqui. Depois execute o seguinte:

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

E então execute:

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

Execute o Geth

Execute este comando em um terminal no local onde descompactamos a pasta Geth/pasta raiz para que possamos executá-lo:

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

Isso nos levará imediatamente ao console do Geth.

Digitando net, podemos ver se temos algum peer. Digitando eth.syncing, podemos ver se o node está sincronizando no momento. É possível que seu node não comece a sincronizar até que você o reinicie.

Por exemplo, executar eth.syncing produzirá o seguinte exemplo de query:

Saída do console do Geth de uma consulta eth.syncing mostrando o progresso da sincronização de blocos

Considerações finais

O Geth já vem incluído na maioria das wallets web/extensão disponíveis para adoção por consumidores (MetaMask, Coinbase, Rainbow, etc).

Mas instalar e executar o Geth vale bastante a pena se você quiser experimentar com mineração ou desenvolver seu próprio software Ethereum personalizado. Também é útil se você simplesmente quiser controlar seu próprio node e a chave da sua wallet (assinando suas próprias transações em vez de depender de software de terceiros). Usando o Geth, você agora pode abrir um mundo inteiro de desenvolvimento Ethereum!

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.