Pular para o conteúdo
0%

O que é um nó Geth e como executar um

Alchemy team headshot

Escrito por Alchemy

Publicado em 18 de abril de 20224 min de leitura

Introdução ao Geth e nós

Nós Ethereum são computadores que fazem parte da rede blockchain Ethereum. Esses nós 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 para a Ethereum Foundation e outras que colaboram.

Algumas características do Geth:

  • Vem com um console JavaScript que pode ser executado com "geth console".
  • O client funciona com outros clients JavaScript (web3js).
  • A Sepolia e outras testnets já vêm integradas (ou você pode montar sua própria rede Ethereum privada)
  • Costuma ser considerado o padrão de referência para outros nós Ethereum.

Neste post do blog da Alchemy, vamos aprender a instalar e executar um nó Geth.

Redes (Mainnet vs testnet) e Geth

Para entender os nós Geth, precisamos entender as diferentes redes do Ethereum.

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

1. Mainnet

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

2. Sepolia

Sepolia é a testnet Ethereum que desenvolvedores Geth devem usar hoje. É uma rede proof of stake mantida pelos principais desenvolvedores do Ethereum, e testnets 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 nó Geth?

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

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

Existem diferentes tipos de nós Ethereum, mas os nós 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. Por isso, dependem de dados dos full nodes. Executar light nodes tem várias vantagens, incluindo inicialização mais rápida, menor uso de armazenamento e menos necessidade de processamento/memória. Os light nodes têm um nível de confiança menor e muitas vezes dependem dos full nodes, o que pode ser um problema.

Light nodes:

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

Full nodes

Os 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 transmitidos pela rede sejam genuínos. É possível confiar no trabalho deles. Essa técnica de verificação é usada pelos full nodes para manter a rede em conformidade com os requisitos do Ethereum.

Full nodes:

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

Archive nodes

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

Archive Nodes:

  • Armazenam tudo o que é mantido pelo full node e constroem um arquivo de estados históricos. Isso é necessário se você quiser consultar saldos de contas ou qualquer dado on-chain, ou simplesmente testar seu próprio conjunto de transações de forma confiável sem minerá-las usando o OpenEthereum.
  • Fornecem dados que representam unidades de terabytes. Isso os torna menos atrativos para usuários comuns, mas úteis para serviços como block explorers, fornecedores de wallets e análise de dados on-chain.
Diagrama de nós Ethereum alcançando consenso de 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 CPU com 16/32 GB+ para desempenho otimizado por meio de cache. Ao usar os recursos de cache (ou seja, usando a flag '--cache'), o Geth conseguirá obter o estado a partir da memória em vez do disco rígido.
  • Homebrew para usuários de Mac
  • PPA para Linux/Ubuntu
  • OPCIONAL Parity (para mais informações, saiba 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é compilá-lo a partir 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 do 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á diretamente ao console do Geth.

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

Por exemplo, executar eth.syncing vai gerar a seguinte consulta de exemplo:

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á costuma estar incluído na maioria das wallets web/extensão disponíveis para uso do consumidor (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 nó e a chave da sua wallet (assinando suas próprias transações em vez de depender de software de terceiros). Usando o Geth, você abre 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.